3.2 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec |
|---|---|---|---|---|---|---|
| 01-cache-host-runner-browsers | Cache host-runner Playwright browsers | in_progress | 1 | plan.md | ../../specs/platform/requirements/e2e-duration-aware-sharding.md |
Task 01: Cache host-runner Playwright browsers
Outcome
Remove repeat browser provisioning from warm container-backed E2E jobs while preserving the current pinned-image path as a correctness-safe fallback.
Requirements and design
REQ-PLATFORM-E2E-DURATION-AWARE-SHARDING-002AC-PLATFORM-E2E-DURATION-AWARE-SHARDING-002.1AC-PLATFORM-E2E-DURATION-AWARE-SHARDING-002.2docs/specs/platform/system-design/e2e-duration-aware-sharding.md, Browser cache contract and Observability sectionsdocs/decisions/2026-08-30-e2e-browser-cache.md
Acceptance
- The existing host-runner container jobs resolve the runtime image to an
immutable digest and restore
/tmp/ms-playwrightusing a digest-scoped restore prefix plus a run-specific primary key. A verified exact or prefix hit skips the Docker pull/copy step. - A cache miss, stale or unavailable entry, cache action error, or failed browser verification runs the digest-pinned image extraction and smoke check. A successful fallback uses a new primary key so a rejected cache entry is not repeatedly selected. Cache operations cannot fail a healthy fallback or change the test manifest, retries, timeout, or worker count.
- Each container job reports cache state, browser verification, and setup timing. Workflow contract tests protect the key, conditional fallback, and existing container setup.
Likely files
.github/workflows/e2e-tests.yml.github/scripts/e2e-tests-workflow-contract_test.pyapps/web/e2e/README.mdwhen the local/CI setup documentation needs the cache and fallback behavior recorded
Verification
python3 .github/scripts/e2e-tests-workflow-contract_test.py
python3 .github/scripts/lint-action-pinning_test.py
python3 .github/scripts/lint-action-pinning.py
git diff --check
After the branch workflow is available, inspect one cache-hit and one forced miss run. The hit must omit the browser pull/copy step. The miss must complete the existing extraction and E2E smoke path. Record restore, verification, fallback, and test-start durations in the parent plan.
Dependencies and parallelism
No implementation dependency. Execute sequentially in the primary session so the workflow contract and fallback behavior are reviewed as one change.
Exclusions
Do not change the runtime image's browser source, the normal E2E job, the matrix sizes, or Docker resource ownership. Do not make cache availability a required external service.
Results
The workflow contract, action-pinning tests, targeted workflow security scan, YAML parse, and diff checks pass locally. PR #3163 passed all container shards; run 33325045980 restored a digest-scoped prefix cache, verified Chromium, and skipped image extraction in a reported setup interval of about 9 seconds. The workflow also retries transient immutable-image metadata lookup failures three times. A forced-miss fallback run and the post-merge three-run comparison remain pending for rollout validation.