What is wrong
CI never runs the BrowserAdapter integration suite. .github/workflows/ci.yml's test step sets:
- name: test
env:
SKIP_BROWSER_INTEGRATION: "1"
with the stated reason:
bun test runs test files in parallel by default. The low-level BrowserAdapter integration suite
flakes under the runner's parallel 2-vCPU load (its own Bun.serve fixture refuses connections) —
skip it here; the e2e suite covers the real browser→findings path in CI. It runs in full locally.
The diagnosis is right: the flake is parallel load, not the suite. But the remedy throws the suite
away on every CI run rather than removing the contention, so a regression in the adapter's own
seam only ever surfaces on someone's laptop.
Why now, specifically
The reason to skip it was partly budget: the job could not afford a slow serial suite. That
constraint is gone. As of #77 the job runs in roughly 35 seconds end to end (it previously
timed out at 20 minutes on the Chromium dependency install), against a timeout-minutes: 20
ceiling. There is now ample room to run this suite properly.
What to do
Run the browser integration suite in CI without the parallelism that makes it flake, rather
than skipping it — for example by giving that suite its own serial test invocation while the rest
of the suite keeps running in parallel. Do not simply drop SKIP_BROWSER_INTEGRATION and hope: the
contention it works around is real, and re-introducing a flaky required check is worse than the
current honest gap.
Whatever shape you choose, the fixture's port binding should not depend on tests not racing each
other — a fixture that only works when nothing else is running is the underlying fragility.
Acceptance criteria
Notes
Related but distinct: #58 is about a unit test launching a real browser to assert on file
contents. This issue is about the integration suite being excluded from CI entirely.
Found while repairing this repo's CI in #77 (developerz.ai#3400).
What is wrong
CI never runs the
BrowserAdapterintegration suite..github/workflows/ci.yml's test step sets:with the stated reason:
The diagnosis is right: the flake is parallel load, not the suite. But the remedy throws the suite
away on every CI run rather than removing the contention, so a regression in the adapter's own
seam only ever surfaces on someone's laptop.
Why now, specifically
The reason to skip it was partly budget: the job could not afford a slow serial suite. That
constraint is gone. As of #77 the job runs in roughly 35 seconds end to end (it previously
timed out at 20 minutes on the Chromium dependency install), against a
timeout-minutes: 20ceiling. There is now ample room to run this suite properly.
What to do
Run the browser integration suite in CI without the parallelism that makes it flake, rather
than skipping it — for example by giving that suite its own serial test invocation while the rest
of the suite keeps running in parallel. Do not simply drop
SKIP_BROWSER_INTEGRATIONand hope: thecontention it works around is real, and re-introducing a flaky required check is worse than the
current honest gap.
Whatever shape you choose, the fixture's port binding should not depend on tests not racing each
other — a fixture that only works when nothing else is running is the underlying fragility.
Acceptance criteria
BrowserAdapterintegration suite executes in CI — it is no longer skipped wholesaleOne green run does not distinguish a fix from a lucky scheduling order
timeout-minutes: 20; state the new wall-clock in the PRNotes
Related but distinct: #58 is about a unit test launching a real browser to assert on file
contents. This issue is about the integration suite being excluded from CI entirely.
Found while repairing this repo's CI in #77 (developerz.ai#3400).