130 lines
3.4 KiB
JavaScript
130 lines
3.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Simple deployment test script
|
|
* This script tests the basic functionality of the Cloudflare Pages deployment
|
|
*/
|
|
|
|
const https = require('https');
|
|
const http = require('http');
|
|
|
|
function makeRequest(url, options = {}) {
|
|
return new Promise((resolve, reject) => {
|
|
const client = url.startsWith('https') ? https : http;
|
|
|
|
const req = client.request(url, {
|
|
method: options.method || 'GET',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
...options.headers
|
|
}
|
|
}, (res) => {
|
|
let data = '';
|
|
res.on('data', chunk => data += chunk);
|
|
res.on('end', () => {
|
|
try {
|
|
const jsonData = data ? JSON.parse(data) : null;
|
|
resolve({ status: res.statusCode, data: jsonData, headers: res.headers });
|
|
} catch (e) {
|
|
resolve({ status: res.statusCode, data, headers: res.headers });
|
|
}
|
|
});
|
|
});
|
|
|
|
req.on('error', reject);
|
|
|
|
if (options.body) {
|
|
req.write(JSON.stringify(options.body));
|
|
}
|
|
|
|
req.end();
|
|
});
|
|
}
|
|
|
|
async function testDeployment(baseUrl) {
|
|
console.log(`Testing deployment at: ${baseUrl}`);
|
|
console.log('='.repeat(50));
|
|
|
|
const tests = [
|
|
{
|
|
name: 'Homepage loads',
|
|
test: () => makeRequest(`${baseUrl}/`),
|
|
expected: (result) => result.status === 200
|
|
},
|
|
{
|
|
name: 'Classes API endpoint',
|
|
test: () => makeRequest(`${baseUrl}/api/classes`),
|
|
expected: (result) => result.status === 200 && Array.isArray(result.data)
|
|
},
|
|
{
|
|
name: 'Newsletter API endpoint (POST)',
|
|
test: () => makeRequest(`${baseUrl}/api/newsletter`, {
|
|
method: 'POST',
|
|
body: {
|
|
email: 'test@example.com',
|
|
agreedToTerms: true
|
|
}
|
|
}),
|
|
expected: (result) => result.status === 201 || result.status === 200
|
|
},
|
|
{
|
|
name: 'Contact API endpoint (POST)',
|
|
test: () => makeRequest(`${baseUrl}/api/contact`, {
|
|
method: 'POST',
|
|
body: {
|
|
name: 'Test User',
|
|
email: 'test@example.com',
|
|
message: 'This is a test message'
|
|
}
|
|
}),
|
|
expected: (result) => result.status === 201
|
|
}
|
|
];
|
|
|
|
let passed = 0;
|
|
let failed = 0;
|
|
|
|
for (const test of tests) {
|
|
try {
|
|
console.log(`Testing: ${test.name}...`);
|
|
const result = await test.test();
|
|
|
|
if (test.expected(result)) {
|
|
console.log(`✅ PASSED: ${test.name}`);
|
|
passed++;
|
|
} else {
|
|
console.log(`❌ FAILED: ${test.name}`);
|
|
console.log(` Status: ${result.status}`);
|
|
console.log(` Response: ${JSON.stringify(result.data, null, 2)}`);
|
|
failed++;
|
|
}
|
|
} catch (error) {
|
|
console.log(`❌ ERROR: ${test.name}`);
|
|
console.log(` Error: ${error.message}`);
|
|
failed++;
|
|
}
|
|
console.log('');
|
|
}
|
|
|
|
console.log('='.repeat(50));
|
|
console.log(`Results: ${passed} passed, ${failed} failed`);
|
|
|
|
if (failed === 0) {
|
|
console.log('🎉 All tests passed! Your deployment is working correctly.');
|
|
} else {
|
|
console.log('⚠️ Some tests failed. Please check the deployment.');
|
|
}
|
|
|
|
return failed === 0;
|
|
}
|
|
|
|
// Get URL from command line argument or use default
|
|
const baseUrl = process.argv[2] || 'http://localhost:5173';
|
|
|
|
testDeployment(baseUrl)
|
|
.then(success => process.exit(success ? 0 : 1))
|
|
.catch(error => {
|
|
console.error('Test script error:', error);
|
|
process.exit(1);
|
|
});
|