Files
wehub-resource-sync 7a0da7932b
Backwards Compatibility / Verify Encryption Constants (push) Waiting to run
Backwards Compatibility / PyPI Version Compatibility (push) Waiting to run
Backwards Compatibility / Database Migration Tests (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
CodeQL Advanced / Analyze (python) (push) Waiting to run
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-form] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-metrics] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-workflow] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-core] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-pages] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [history-news] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [library] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [link-analytics] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [mobile] (push) Blocked by required conditions
Docker Tests (Consolidated) / detect-changes (push) Waiting to run
Docker Tests (Consolidated) / Build Test Image (push) Waiting to run
Docker Tests (Consolidated) / All Pytest Tests + Coverage (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [accessibility] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [api-crud] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-login] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-pages] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-register] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-core] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-lifecycle] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) [error-benchmark] (push) Blocked by required conditions
Docker Tests (Consolidated) / UI Tests (Puppeteer) (push) Blocked by required conditions
Docker Tests (Consolidated) / Accessibility Tests (push) Blocked by required conditions
Docker Tests (Consolidated) / LLM Unit Tests (push) Blocked by required conditions
Docker Tests (Consolidated) / LLM Example Tests (push) Blocked by required conditions
Docker Tests (Consolidated) / Production Image Smoke Test (push) Blocked by required conditions
Docker Tests (Consolidated) / Infrastructure Tests (push) Blocked by required conditions
OSSF Scorecard / OSSF Security Scorecard Analysis (push) Waiting to run
OSV-Scanner (Scheduled) / scan-scheduled (push) Failing after 0s
Create Release / test-gate (push) Has been cancelled
Create Release / release-gate (push) Has been cancelled
Create Release / ci-gate (push) Has been cancelled
Create Release / version-check (push) Has been cancelled
Create Release / e2e-test-gate (push) Has been cancelled
Create Release / responsive-test-gate (push) Has been cancelled
Create Release / compat-test-gate (push) Has been cancelled
Create Release / compose-integration-gate (push) Has been cancelled
Create Release / vulture-gate (push) Has been cancelled
Create Release / build (push) Has been cancelled
Create Release / provenance (push) Has been cancelled
Create Release / prerelease-docker (push) Has been cancelled
Create Release / publish-docker (push) Has been cancelled
Create Release / create-release (push) Has been cancelled
Create Release / cleanup-changelog (push) Has been cancelled
Create Release / trigger-pypi (push) Has been cancelled
Create Release / monitor-pypi (push) Has been cancelled
Create Release / Clean up orphan prerelease tags and signatures (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:08:55 +08:00

123 lines
3.2 KiB
JavaScript

/**
* Main Test Suite Runner
* Organizes and runs all UI tests in a structured manner
*/
const { spawn } = require('child_process');
const path = require('path');
// Test suite organization
const TEST_SUITES = {
'Core': [
'test_auth_flow.js',
'test_research_simple.js',
'test_research_complete.js'
],
'UI/Responsive': [
'test_responsive_ui_comprehensive.js', // Covers all viewports
'test_critical_ui.js'
],
'Features': [
'test_api_key_comprehensive.js',
'test_metrics_full_flow.js',
'test_history_page.js',
'test_news_subscription.js',
'test_settings_page.js'
],
'Advanced': [
'test_followup_research.js',
'test_queue_processing.js',
'test_cost_tracking.js'
]
};
async function runTest(testFile) {
return new Promise((resolve) => {
console.log(` Running: ${testFile}`);
const testPath = path.join(__dirname, testFile);
const child = spawn('node', [testPath], {
env: { ...process.env },
stdio: 'inherit'
});
child.on('close', (code) => {
if (code !== 0) {
console.log(` ❌ ${testFile} failed with code ${code}`);
resolve(false);
} else {
console.log(` ✅ ${testFile} passed`);
resolve(true);
}
});
child.on('error', (err) => {
console.error(` ❌ ${testFile} error:`, err);
resolve(false);
});
});
}
async function runSuite(suiteName, tests) {
console.log(`\n${'='.repeat(60)}`);
console.log(`📦 ${suiteName} Test Suite`);
console.log('='.repeat(60));
let passed = 0;
let failed = 0;
for (const test of tests) {
const result = await runTest(test);
if (result) {
passed++;
} else {
failed++;
}
}
console.log(`\nSuite Results: ✅ ${passed} passed, ❌ ${failed} failed`);
return failed === 0;
}
async function main() {
const args = process.argv.slice(2);
const specificSuite = args[0];
console.log('\n🧪 LDR UI Test Suite Runner\n');
let allPassed = true;
if (specificSuite && TEST_SUITES[specificSuite]) {
// Run specific suite
const result = await runSuite(specificSuite, TEST_SUITES[specificSuite]);
allPassed = result;
} else if (specificSuite) {
console.error(`Unknown suite: ${specificSuite}`);
console.log('Available suites:', Object.keys(TEST_SUITES).join(', '));
process.exit(1);
} else {
// Run all suites
for (const [suiteName, tests] of Object.entries(TEST_SUITES)) {
const result = await runSuite(suiteName, tests);
if (!result) allPassed = false;
}
}
console.log('\n' + '='.repeat(60));
if (allPassed) {
console.log('🎉 All tests passed!');
} else {
console.log('❌ Some tests failed');
process.exit(1);
}
}
if (require.main === module) {
main().catch(error => {
console.error('Test runner failed:', error);
process.exit(1);
});
}
module.exports = { TEST_SUITES };