From eae2a4d0567511a2435f96cb067b8b816984c874 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Wed, 9 Sep 2026 04:51:14 +0000 Subject: [PATCH] fix(test): drive the DOM hygiene test through Playwright Chromium directly Under the six-shard CI free suite the test's private browse daemon never answered its health probe (two minutes of retries), failed the shard, and starved two unrelated test files into failing before the runner's timeout. The test now launches the same Chromium through playwright-core and calls the dump function with page.evaluate, the way Aside's pg.evaluate does: no state file, no daemon, no health window. It self-skips when the Playwright Chromium bundle is absent. Two more hygiene rules are pinned along the way (print sheets keep their @media, alternate sheets are dropped). Co-Authored-By: Claude Fable 5.1 --- test/dom-dump-hygiene.test.ts | 61 +++++++++++++---------------------- 1 file changed, 23 insertions(+), 38 deletions(-) diff --git a/test/dom-dump-hygiene.test.ts b/test/dom-dump-hygiene.test.ts index f7af19c2f..a496db3ce 100644 --- a/test/dom-dump-hygiene.test.ts +++ b/test/dom-dump-hygiene.test.ts @@ -1,33 +1,34 @@ /** - * lib/dom-dump.js hygiene, exercised in a real browser through gstack's own - * browse binary (`$B eval --out --raw`, the same fallback path - * /design-review renders). Self-skips when no browse binary is built - * (`bun run build:gates`), like the other render gates. + * lib/dom-dump.js hygiene, exercised in a real Chromium page. The script is the + * arrow function Aside runs through `pg.evaluate` and the fallback engine runs + * through `$B js`; here Playwright's `page.evaluate` calls it the same way. + * Chromium is driven directly through playwright-core (the engine the browse + * daemon wraps) rather than through the daemon: no state file, no health + * window, nothing to starve under a sharded CI run. Self-skips when the + * Playwright Chromium bundle is not installed (`npx playwright install chromium`). * * Pins the rules the DOM dump promises before a page leaves the browser: * input values dropped, long data: URLs replaced (attributes, inlined CSS, and * existing