|
| 1 | +// const fs = require('node:fs') |
| 2 | +// const process = require('node:process') |
| 3 | + |
| 4 | +import fs from 'node:fs' |
| 5 | +import process from 'node:process' |
| 6 | + |
| 7 | +const BASELINE_FILE = './test/v0-baseline-test-results.json' |
| 8 | +const CURRENT_FILE = './test/v0-test-results.json' |
| 9 | + |
| 10 | +if (!fs.existsSync(BASELINE_FILE)) { |
| 11 | + console.error('🚨 Baseline file not found. Run Jest and save it first!') |
| 12 | + process.exit(1) |
| 13 | +} |
| 14 | + |
| 15 | +// Load test results |
| 16 | +const baseline = JSON.parse(fs.readFileSync(BASELINE_FILE, 'utf8')) |
| 17 | +const current = JSON.parse(fs.readFileSync(CURRENT_FILE, 'utf8')) |
| 18 | + |
| 19 | +// Extract test statuses |
| 20 | +function getTestStatus(results) { |
| 21 | + const statusMap = new Map() |
| 22 | + results.testResults.forEach((testFile) => { |
| 23 | + testFile.assertionResults.forEach((test) => { |
| 24 | + statusMap.set(test.fullName, test.status) |
| 25 | + }) |
| 26 | + }) |
| 27 | + return statusMap |
| 28 | +} |
| 29 | + |
| 30 | +const baselineStatus = getTestStatus(baseline) |
| 31 | +const currentStatus = getTestStatus(current) |
| 32 | + |
| 33 | +let failed = false |
| 34 | + |
| 35 | +baselineStatus.forEach((oldStatus, testName) => { |
| 36 | + const newStatus = currentStatus.get(testName) |
| 37 | + |
| 38 | + if (oldStatus === 'passed' && newStatus !== 'passed') { |
| 39 | + console.error(`🚨 Regression: "${testName}" was passing but now fails!`) |
| 40 | + failed = true |
| 41 | + } |
| 42 | + |
| 43 | + if (oldStatus === 'failed' && newStatus === 'passed') { |
| 44 | + console.error(`🎉 Fixed: "${testName}" was failing but now passes.`) |
| 45 | + failed = true |
| 46 | + } |
| 47 | +}) |
| 48 | + |
| 49 | +if (failed) { |
| 50 | + console.error('❌ V0 test results changed unexpectedly.') |
| 51 | + process.exit(1) |
| 52 | +} |
| 53 | +else { |
| 54 | + // eslint-disable-next-line no-console |
| 55 | + console.log('✅ V0 test results match the expected state.') |
| 56 | +} |
0 commit comments