mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-15 15:52:21 +00:00
Stop the strict acceptance from waiting for itself
A scenario whose body ran past about 19 s idled until 45 s after its start, and twice one never exited and hit the runner's 300 s timeout after it had passed: something of Chrome outlived Browser.close and kept its stdout and stderr open. - scripts/qa/browser.mjs closes Chrome within 5 s, kills its process group and closes its pipes; the harness then finishes and exits with the scenario's code. QA_EXIT_DIAGNOSTICS=1 keeps the old ending and prints the open handles and Chrome's process tree 5 s after finish. - Every strict page starts with its clock at the 18:30 UTC nearest to the real time, so Navara's sun is up over the test cities whenever the acceptance runs; a scenario can ask for its own instant or the real clock (Wildlife does, for its freshness fixtures). - The runner records a scenario that passed but did not exit as hung, kills the whole process group on a timeout, runs a failed scenario once more and reports one that passes then as flaky, and appends each run to --history=FILE; scripts/report-acceptance-flake.mjs reads it.
This commit is contained in:
1 parent
a913e5466e
commit
ed6ae54ef6
19 files changed
+1039
-104
No files matched your search
@@ -28,6 +28,7 @@
|
||||
// node scripts/qa-strict-soak.mjs http://127.0.0.1:4208 --runs=6 --swaps=50
|
||||
// node scripts/qa-strict-soak.mjs http://127.0.0.1:4208 --runs=1 --swaps=500 --assert
|
||||
|
||||
import { closeBrowser } from './qa/browser.mjs';
|
||||
import assert from 'node:assert/strict';
|
||||
import {
|
||||
createStrict,
|
||||
@@ -311,7 +312,7 @@ for (let run = 1; run <= runs; run++) {
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
await browser.close().catch(() => {});
|
||||
await closeBrowser(browser);
|
||||
}
|
||||
const warm = (to) =>
|
||||
row.swaps
|
||||
@@ -433,8 +434,7 @@ if (strictMode) {
|
||||
report.checks = checks;
|
||||
for (const check of checks)
|
||||
console.log(check.pass ? 'PASS' : 'FAIL', JSON.stringify(check));
|
||||
await strict.finish({
|
||||
await strict.finishAndExit({
|
||||
failed: checks.some((c) => !c.pass) ? 'soak checks failed' : null,
|
||||
});
|
||||
if (checks.some((c) => !c.pass)) process.exitCode = 1;
|
||||
} else await strict.finish();
|
||||
} else await strict.finishAndExit();
|
||||
Reference in new issue
Block a user