This update introduces a caching mechanism for Chromium binaries in the GitHub Actions workflow. The installation of Chromium will now only occur if it is not already cached, reducing unnecessary downloads and speeding up the CI process. This change aims to optimize the workflow efficiency, particularly during parallel test runs.
The built-in astral-sh/setup-uv cache wasn't working properly,
causing 2m+ downloads of Python packages on every test run.
Added explicit ~/.cache/uv caching keyed on uv.lock hash.
Before: 2m 9s downloading packages (numpy, oci, imageio-ffmpeg, etc)
After: ~5s restoring from cache
Saves ~2 minutes per test job × 40 parallel jobs = 80 runner-minutes saved
Prevents 40 parallel runners from racing to install chromium simultaneously on cache miss.
Before: 40 runners × 2min = 80 runner-minutes wasted on first run
After: 1 runner installs (2min), then 40 runners use cached version (10s each)
Savings on cache miss: ~78 runner-minutes per workflow run
- Add timeout-minutes to prevent jobs from hanging indefinitely
- Force fresh checkout with fetch-depth: 1 to avoid cache issues
- Add file existence check to handle renamed/deleted tests gracefully
- Add debug output to track test discovery process
- Updated test.yaml to use uvx playwright install chromium --with-deps --no-shell
- Removed Chrome stable installation and patchright dependencies
- Updated Dockerfile to use uvx playwright temporarily for browser installation
- Updated chromium Dockerfile to use uvx playwright without permanent dependency
- Simplified CI pipeline while maintaining browser functionality