The pixels fade, the tests turn red, Old screenshots haunt us from the dead. A branch is born, a label placed, And golden images are replaced. The shards spin up, four workers strong, To right what rendering got wrong. When CI turns green, the deed is done— New expectations, freshly won. --------- Co-authored-by: Amp <amp@ampcode.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: github-actions <github-actions@github.com>
2.5 KiB
name, description
| name | description |
|---|---|
| regenerating-screenshots | Creates a PR to regenerate Playwright screenshot expectations. Use when screenshot tests are failing on main or PRs due to stale golden images. Triggers on: regen screenshots, regenerate screenshots, update expectations, fix screenshot tests. |
Regenerating Playwright Screenshot Expectations
Automates the process of triggering the PR: Update Playwright Expectations
GitHub Action by creating a labeled PR from origin/main.
Steps
-
Fetch latest main
git fetch origin main -
Create a timestamped branch from
origin/mainFormat:
regen-screenshots/YYYY-MM-DDTHH(hour resolution, local time)git checkout -b regen-screenshots/<datetime> origin/main -
Create an empty commit
git commit --allow-empty -m "test: regenerate screenshot expectations" -
Push the branch
git push origin regen-screenshots/<datetime> -
Generate a poem about regenerating screenshots. Be creative — a new, unique poem every time. Short (4–8 lines). Can be funny, wistful, epic, haiku-style, limerick, sonnet fragment — vary the form.
-
Create the PR with the poem as the body (no label yet).
Write the poem to a temp file and use
--body-file:# Write poem to temp file # Create PR: gh pr create \ --base main \ --head regen-screenshots/<datetime> \ --title "test: regenerate screenshot expectations" \ --body-file <temp-file> -
Add the label as a separate step to trigger the GitHub Action.
The
labeledevent only fires when a label is added after PR creation, not when applied during creation via--label.Use the GitHub API directly (
gh pr edit --add-labelfails due to deprecated Projects Classic GraphQL errors):gh api repos/{owner}/{repo}/issues/<pr-number>/labels \ -f "labels[]=New Browser Test Expectations" --method POST -
Report the result to the user:
- PR URL
- Branch name
- Note that the GitHub Action will run automatically and commit updated screenshots to the branch.
Notes
- The
New Browser Test Expectationslabel triggers thepr-update-playwright-expectations.yamlworkflow. - The workflow runs Playwright with
--update-snapshots, commits results back to the PR branch, then removes the label. - This is fire-and-forget — no need to wait for or monitor the Action.
- Always return to the original branch/worktree state after pushing.