fix(e2e): reset cycle-gate games in place instead of 240 page reloads
The cycle regression gate did a fresh page.goto() for each of 240 games in one browser context. Around game ~100 the accumulated resources made page.waitForFunction time out (30s), failing the gate on ~88% of runs — a long-standing flaky-CI issue, not a product regression (the 18 e2e tests always pass). Load the page once and reset each game via a new __FERROUS_DEBUG__.newGame(seed, drawThree) bridge method (added to game.js — it was already in play.html). cycle_metrics.js now navigates once, then loops newGame() + runAutoplay with no per-game reload, so the run stays fast and stable. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -994,6 +994,14 @@ window.__FERROUS_DEBUG__ = {
|
||||
serialize() {
|
||||
return game ? game.serialize() : null;
|
||||
},
|
||||
// Reset to a fresh seeded game in place (no page reload). Lets the cycle
|
||||
// regression harness reuse one page across hundreds of games instead of
|
||||
// navigating per game.
|
||||
newGame(seed, drawThreeMode) {
|
||||
drawThree = !!drawThreeMode;
|
||||
startGame(seed ?? randomSeed());
|
||||
return game ? game.state() : null;
|
||||
},
|
||||
applyLegalMove(index) {
|
||||
if (!game) return { ok: false, error: "game_not_ready" };
|
||||
const result = game.debug_apply_legal_move(index);
|
||||
|
||||
Reference in New Issue
Block a user