Conversation
Co-authored-by: hudson-newey <33742269+hudson-newey@users.noreply.github.com>
Co-authored-by: hudson-newey <33742269+hudson-newey@users.noreply.github.com>
| name: blob-report-${{ matrix.os }}-${{ matrix.shard }} | ||
| path: blob-report/ |
There was a problem hiding this comment.
Revert blob-report name change.
| name: blob-report-${{ matrix.os }}-${{ matrix.shard }} | |
| path: blob-report/ | |
| name: test-report-${{ matrix.os }}-${{ matrix.shard }} | |
| path: test-report/ |
There was a problem hiding this comment.
Changed the artifact name back to test-report-${{ matrix.os }}-${{ matrix.shard }} and updated path to test-report/ as requested. Commit 5ecd98a
| path: all-blob-reports/ | ||
| pattern: blob-report-* |
There was a problem hiding this comment.
| path: all-blob-reports/ | |
| pattern: blob-report-* | |
| path: all-test-reports/ | |
| pattern: test-report-* |
There was a problem hiding this comment.
Updated to use path: all-test-reports/ and pattern: test-report-* as suggested. Commit 5ecd98a
| path: all-blob-reports/ | ||
| pattern: blob-report-* | ||
|
|
||
| - name: Merge Blob Reports |
There was a problem hiding this comment.
| - name: Merge Blob Reports | |
| - name: Merge Test Reports |
There was a problem hiding this comment.
Renamed to "Merge Test Reports" for clarity. Commit 5ecd98a
| - recursive: true | ||
| - args: [--frozen-lockfile] | ||
|
|
||
| - name: Download All Blob Reports |
There was a problem hiding this comment.
| - name: Download All Blob Reports | |
| - name: Download All Test Reports |
There was a problem hiding this comment.
Renamed to "Download All Test Reports" for clarity. Commit 5ecd98a
| pattern: blob-report-* | ||
|
|
||
| - name: Merge Blob Reports | ||
| run: pnpm exec playwright merge-reports --reporter=html,github all-blob-reports/ |
There was a problem hiding this comment.
| run: pnpm exec playwright merge-reports --reporter=html,github all-blob-reports/ | |
| run: pnpm exec playwright merge-reports --reporter=html,github all-test-reports/ |
There was a problem hiding this comment.
Updated run command to use all-test-reports/ directory. Commit 5ecd98a
| reporter: process.env.PLAYWRIGHT_SHARD | ||
| ? [ | ||
| ["blob"], | ||
| ["github"], | ||
| ] | ||
| : [ | ||
| // create a HTML report of the test results | ||
| // this is the best way to debug why tests are failing locally | ||
| [ | ||
| "html", | ||
| { | ||
| outputFolder: "test-report", | ||
| open: "never", | ||
| }, | ||
| ], | ||
| // print the test results out to the console. | ||
| // this can be useful for seeing why a test has failed in CI | ||
| isCi ? ["github"] : ["list"], | ||
| ], |
There was a problem hiding this comment.
This is a TypeScript file.
Extract this out to a function
There was a problem hiding this comment.
Extracted the reporter configuration logic into a getPlaywrightReporters() function to improve code organization in the TypeScript file. Commit 5ecd98a
|
@copilot Address review feedback |
…ction Co-authored-by: hudson-newey <33742269+hudson-newey@users.noreply.github.com>
|
Good starter. I might have to do some minor formatting changes, but copilot seems to have (almost) nailed it |
|
@copilot Instead of cloning and pnpm installing dependencies on each testing shard, can you use a common base workflow task to set up the environment and use that as the base for all subsequent tests |
Co-authored-by: hudson-newey <33742269+hudson-newey@users.noreply.github.com>
Added a Setup job that runs once to prepare the environment and shared dependency cache across all test matrix jobs. Enhanced caching for both pnpm dependencies and Playwright browsers per OS. This reduces redundant setup work while maintaining the cross-platform testing matrix. Commit b5c7e9b |
Agent-Logs-Url: https://github.com/ecoacoustics/web-components/sessions/5d982afb-3c7d-443e-8d05-be38e62146a8 Co-authored-by: atruskie <1452968+atruskie@users.noreply.github.com>
Done in commit a45c388. The matrix now has three dimensions —
Other changes bundled in:
|
|
@copilot there are still failures, all the windows CI jobs fail. Diagnose and fix |
…s corruption on Windows Agent-Logs-Url: https://github.com/ecoacoustics/web-components/sessions/29aedfea-1f31-4e10-9dc7-fb1bcdbb4e09 Co-authored-by: atruskie <1452968+atruskie@users.noreply.github.com>
Root cause found and fixed in commit 455a74e. The The cache key Fixes (commit 455a74e):
|
|
@copilot fix the issue in the merge test results job in the CI |
…blob reports across OSes Agent-Logs-Url: https://github.com/ecoacoustics/web-components/sessions/dd990fe3-d358-43fc-9190-0578bf89a6c6 Co-authored-by: atruskie <1452968+atruskie@users.noreply.github.com>
Fixed in commit 5d5b7a8. Root cause: The Playwright blob reporter names files as Fix: Removed |
|
@copilot diagnose and fix the issue in the CI |
Agent-Logs-Url: https://github.com/ecoacoustics/web-components/sessions/c5d9c4cf-e666-4dd2-8341-b49bb946941b Co-authored-by: atruskie <1452968+atruskie@users.noreply.github.com>
Fixed in commit 449ea7b. This was a cycle between two broken states:
Root fix: make blob report filenames OS-unique before upload so there are never any collisions. The blob reporter's
All unique. |
|
@copilot diagnose the issue with the CI and fix it |
…names OS-unique Agent-Logs-Url: https://github.com/ecoacoustics/web-components/sessions/289da6df-8d43-4d05-9199-033c75af5b38 Co-authored-by: atruskie <1452968+atruskie@users.noreply.github.com>
Fixed in commit d49e16c. The previous From the Playwright 1.53.1 source (
Fix: Set
No collisions → Also reverted the invalid |
|
@copilot investigate why the CI is failing and fix the issue |
…testDir paths Agent-Logs-Url: https://github.com/ecoacoustics/web-components/sessions/1e359ed6-a026-4ba1-b60a-93d7c9da3c3b Co-authored-by: atruskie <1452968+atruskie@users.noreply.github.com>
Fixed in commit 11ea1a8. The zip naming collision was resolved (all 28 blob reports extract cleanly now), but Each OS records its own absolute Fix: Added |
This PR implements test sharding for Playwright tests across multiple OS platforms and browsers to significantly reduce CI build time. The implementation includes:
Key Features
Technical Implementation
PLAYWRIGHT_SHARDenvironment variable to enable blob reporting modegetPlaywrightReporters()function inplaywright.config.tsplaywright.config.ts— WebKit is excluded on Ubuntu and Windows (AudioContext not available on the WebKit/Windows build)playwright install --with-deps ${{ matrix.browser }}playwright-$os-$browser-$hash) prevent cross-browser cache pollutionBenefits
The workflow now runs a Setup job once to prepare cached dependencies, then executes up to 28 parallel test jobs (Ubuntu: 2 browsers × 4 shards, Windows: 2 browsers × 4 shards, macOS: 3 browsers × 4 shards) that leverage the shared cache, followed by a merge job that combines all test reports into a unified result.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.