Repository navigation
fix(ci): run browser tests in pinned Playwright containers - #2584
Conversation
Avoid runtime apt mirror dependency installation in SDK browser jobs. Keep image and npm versions aligned, retain failure diagnostics, and use the same provisioning for Studio. Co-authored-by: Mecatl <noreply@mecatl.dev>
Approved implementation plan: Playwright CI provisioning
Research and decisionPrimary sources: Playwright documents two first-class GitHub Actions patterns: host jobs that install JavaScript dependencies and run Use the official Scope and contracts
Correction to initial research: Studio previously installed Chromium without Tasks
Planned verification
No timeout increases, test retries, coverage reductions, custom browser-server arrangement, or custom image build are in scope. No unresolved product decision remains; hosted runtime behavior requires empirical validation. |
Summary
Why
In the latest 100 CI runs examined (October 24–27), 15 of 79 browser-enabled runs had a confirmed 20-minute timeout. All confirmed timeout jobs stopped in SDK Playwright dependency installation before tests started. Sample logs show very slow Ubuntu apt mirror downloads, even with a browser-cache hit; actual SDK browser test steps typically take 6–7 seconds.
This follows the upstream-supported GitHub Actions container pattern and Docker guidance. Upstream discourages browser caching because Linux OS dependencies still require installation. Studio previously downloaded Chromium without
--with-deps; it adopts the same container pattern for consistency, not because it has the identical apt failure.Verification
task test,task test:race,task lint,task lint:actions, andgo run ./cmd/mecademo(tool call, permission ask/approval, result). Aggregate tests used concurrency 2 and race builds usedGOFLAGS=-p=2. Actions lint passed with checksummed disposable cosign tooling after an initial cold-build timeout and missing-tool diagnosis; no unrelated code changes.Approved plan and research archive.
API compatibility
CI/configuration only. No wire, Go source, or stored-data contract changes; no API major or feature change and no operator upgrade steps.
Independent of #2583; that branch is unchanged.