Spaces:
Running
Running
| /** | |
| * Test Runner | |
| * | |
| * Runs all tests in sequence and reports results. | |
| * Usage: node tests/run-all.cjs | |
| */ | |
| const { spawn } = require('child_process'); | |
| const path = require('path'); | |
| const tests = [ | |
| { name: 'Account Selection Strategies', file: 'test-strategies.cjs' }, | |
| { name: 'Cache Control Stripping', file: 'test-cache-control.cjs' }, | |
| { name: 'Thinking Signatures', file: 'test-thinking-signatures.cjs' }, | |
| { name: 'Multi-turn Tools (Non-Streaming)', file: 'test-multiturn-thinking-tools.cjs' }, | |
| { name: 'Multi-turn Tools (Streaming)', file: 'test-multiturn-thinking-tools-streaming.cjs' }, | |
| { name: 'Interleaved Thinking', file: 'test-interleaved-thinking.cjs' }, | |
| { name: 'Image Support', file: 'test-images.cjs' }, | |
| { name: 'Prompt Caching', file: 'test-caching-streaming.cjs' }, | |
| { name: 'Cross-Model Thinking', file: 'test-cross-model-thinking.cjs' }, | |
| { name: 'OAuth No-Browser Mode', file: 'test-oauth-no-browser.cjs' }, | |
| { name: 'Empty Response Retry', file: 'test-empty-response-retry.cjs' }, | |
| { name: 'Schema Sanitizer', file: 'test-schema-sanitizer.cjs' }, | |
| { name: 'Streaming Whitespace', file: 'test-streaming-whitespace.cjs' }, | |
| { name: '403 Account Rotation (Unit)', file: 'test-403-account-rotation.cjs' }, | |
| { name: '403 Account Rotation (Integration)', file: 'test-403-integration.cjs' }, | |
| { name: 'Version Detection', file: 'test-version-detection.js' } | |
| ]; | |
| async function runTest(test) { | |
| return new Promise((resolve) => { | |
| const testPath = path.join(__dirname, test.file); | |
| const child = spawn('node', [testPath], { | |
| stdio: 'inherit' | |
| }); | |
| child.on('close', (code) => { | |
| resolve({ ...test, passed: code === 0 }); | |
| }); | |
| child.on('error', (err) => { | |
| console.error(`Error running ${test.name}:`, err); | |
| resolve({ ...test, passed: false }); | |
| }); | |
| }); | |
| } | |
| async function main() { | |
| console.log('ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ'); | |
| console.log('β ANTIGRAVITY PROXY TEST SUITE β'); | |
| console.log('ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ'); | |
| console.log(''); | |
| console.log('Make sure the server is running on port 8080 before running tests.'); | |
| console.log(''); | |
| // Check if running specific test | |
| const specificTest = process.argv[2]; | |
| let testsToRun = tests; | |
| if (specificTest) { | |
| testsToRun = tests.filter(t => | |
| t.file.includes(specificTest) || t.name.toLowerCase().includes(specificTest.toLowerCase()) | |
| ); | |
| if (testsToRun.length === 0) { | |
| console.log(`No test found matching: ${specificTest}`); | |
| console.log('\nAvailable tests:'); | |
| tests.forEach(t => console.log(` - ${t.name} (${t.file})`)); | |
| process.exit(1); | |
| } | |
| } | |
| const results = []; | |
| for (const test of testsToRun) { | |
| console.log('\n'); | |
| console.log('β' + 'β'.repeat(60) + 'β'); | |
| console.log('β Running: ' + test.name.padEnd(50) + 'β'); | |
| console.log('β' + 'β'.repeat(60) + 'β'); | |
| console.log(''); | |
| const result = await runTest(test); | |
| results.push(result); | |
| console.log('\n'); | |
| } | |
| // Summary | |
| console.log('ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ'); | |
| console.log('β FINAL RESULTS β'); | |
| console.log('β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£'); | |
| let allPassed = true; | |
| for (const result of results) { | |
| const status = result.passed ? 'β PASS' : 'β FAIL'; | |
| const statusColor = result.passed ? '' : ''; | |
| console.log(`β ${status.padEnd(8)} ${result.name.padEnd(50)} β`); | |
| if (!result.passed) allPassed = false; | |
| } | |
| console.log('β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£'); | |
| const overallStatus = allPassed ? 'β ALL TESTS PASSED' : 'β SOME TESTS FAILED'; | |
| console.log(`β ${overallStatus.padEnd(60)} β`); | |
| console.log('ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ'); | |
| process.exit(allPassed ? 0 : 1); | |
| } | |
| main().catch(err => { | |
| console.error('Test runner failed:', err); | |
| process.exit(1); | |
| }); | |