diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 733c878..4d710c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,6 +44,12 @@ jobs: - name: Release contract regression tests if: matrix.go == '1.27.x' run: make release-recipe-check + - name: Browser runner diagnostic regression tests (offline) + if: matrix.go == '1.27.x' + run: | + python3 -m unittest scripts/stealth-browser/test_run_cover.py + python3 scripts/stealth-browser/run_cover.py --self-test + python3 scripts/stealth-campaign.py --self-test - name: Test with coverage run: go test -shuffle=on -count=1 -covermode=atomic -coverprofile=coverage.out ./... - name: Upload coverage diff --git a/.gitignore b/.gitignore index 383517d..8a1c29d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ /bin/ /dist/ /artifacts/ +/output/playwright/ /testdata/stealth/pcaps/ /coverage.out *.prof diff --git a/scripts/browser-connection-fixture/DIAGNOSTIC-2026-09-22.md b/scripts/browser-connection-fixture/DIAGNOSTIC-2026-09-22.md new file mode 100644 index 0000000..5380d16 --- /dev/null +++ b/scripts/browser-connection-fixture/DIAGNOSTIC-2026-09-22.md @@ -0,0 +1,72 @@ +# Chrome connection reuse: bounded local diagnostic + +## Scope + +This is a six-trial, macOS arm64 loopback diagnostic, not a formal corpus, +packet-fingerprint comparison, production benchmark or proof of +indistinguishability. No AutoCAR client/proxy traffic was generated. The normal +WebDriver workload and historical samples were not changed. + +Before paired collection, Chrome readiness passed with H3 navigation and fetch. +Playwright Firefox 156.0 (build 1549) failed two separately recorded readiness +attempts with `NS_ERROR_CONNECTION_REFUSED`, first at the fixture's explicit +port and then with a default-port origin. Firefox was excluded **before** the +paired plan was frozen; it supplies no usable samples or conclusion here. Its +failure cause remains unresolved. + +## Fixed procedure + +- Google Chrome **153.0.8010.52**, headless, controlled by Playwright CLI + **0.1.21**, with a fresh isolated session for every trial. +- Same H3-only fixture, certificate, origin (`https://127.0.0.1:53223`) and + browser configuration throughout. No TCP/H2 fallback or cookies set. +- Chrome lab flags: `--enable-quic`, `--origin-to-force-quic-on=127.0.0.1:53223`, + the certificate-specific `--ignore-certificate-errors-spki-list`, and + `--no-proxy-server`; no global trust-store change. +- Navigate to `/` and await load, then make one immediate fetch to + `/probe?trial=