pwf-website-new/test-deployment.js

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);
});