← back to Cypress Awards

frontend/src/test-api.html

108 lines

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>API Test - CyPresAwards</title>
    <style>
        body { font-family: Arial, sans-serif; padding: 20px; max-width: 1200px; margin: 0 auto; }
        .success { color: green; background: #e8f5e9; padding: 10px; margin: 10px 0; border-radius: 5px; }
        .error { color: red; background: #ffebee; padding: 10px; margin: 10px 0; border-radius: 5px; }
        .info { background: #e3f2fd; padding: 10px; margin: 10px 0; border-radius: 5px; }
        pre { background: #f5f5f5; padding: 10px; overflow-x: auto; border-radius: 5px; }
        button { padding: 10px 20px; margin: 5px; cursor: pointer; background: #2196F3; color: white; border: none; border-radius: 5px; }
    </style>
</head>
<body>
    <h1>🔬 CyPresAwards API Diagnostic Test</h1>
    <div class="info">
        <strong>Testing from:</strong> <span id="origin"></span><br>
        <strong>API Base URL:</strong> <span id="apiUrl"></span>
    </div>

    <button onclick="testStats()">Test /api/stats</button>
    <button onclick="testOrganizations()">Test /api/organizations</button>
    <button onclick="testCategories()">Test /api/categories</button>
    <button onclick="testAll()">Run All Tests</button>
    <button onclick="clearResults()">Clear Results</button>

    <div id="results"></div>

    <script>
        const API_BASE_URL = window.location.origin + '/api';
        document.getElementById('origin').textContent = window.location.origin;
        document.getElementById('apiUrl').textContent = API_BASE_URL;

        const resultsDiv = document.getElementById('results');

        function addResult(html) {
            resultsDiv.innerHTML += html;
        }

        function clearResults() {
            resultsDiv.innerHTML = '';
        }

        async function testStats() {
            addResult('<h2>Testing /api/stats</h2>');
            try {
                const url = `${API_BASE_URL}/stats`;
                addResult(`<div class="info">Fetching: ${url}</div>`);

                const response = await fetch(url);
                addResult(`<div class="info">Response status: ${response.status} ${response.statusText}</div>`);

                const data = await response.json();
                addResult(`<div class="success">✅ Success! Data received:</div>`);
                addResult(`<pre>${JSON.stringify(data, null, 2)}</pre>`);
            } catch (error) {
                addResult(`<div class="error">❌ Error: ${error.message}</div>`);
                addResult(`<pre>${error.stack}</pre>`);
            }
        }

        async function testOrganizations() {
            addResult('<h2>Testing /api/organizations</h2>');
            try {
                const url = `${API_BASE_URL}/organizations?limit=3&offset=0`;
                addResult(`<div class="info">Fetching: ${url}</div>`);

                const response = await fetch(url);
                addResult(`<div class="info">Response status: ${response.status} ${response.statusText}</div>`);

                const data = await response.json();
                addResult(`<div class="success">✅ Success! Received ${data.data.length} organizations</div>`);
                addResult(`<pre>${JSON.stringify(data, null, 2)}</pre>`);
            } catch (error) {
                addResult(`<div class="error">❌ Error: ${error.message}</div>`);
                addResult(`<pre>${error.stack}</pre>`);
            }
        }

        async function testCategories() {
            addResult('<h2>Testing /api/categories</h2>');
            try {
                const url = `${API_BASE_URL}/categories`;
                addResult(`<div class="info">Fetching: ${url}</div>`);

                const response = await fetch(url);
                addResult(`<div class="info">Response status: ${response.status} ${response.statusText}</div>`);

                const data = await response.json();
                addResult(`<div class="success">✅ Success! Received ${data.data.length} categories</div>`);
                addResult(`<pre>${JSON.stringify(data, null, 2)}</pre>`);
            } catch (error) {
                addResult(`<div class="error">❌ Error: ${error.message}</div>`);
                addResult(`<pre>${error.stack}</pre>`);
            }
        }

        async function testAll() {
            clearResults();
            await testStats();
            await testOrganizations();
            await testCategories();
        }
    </script>
</body>
</html>