Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/skills/dev/roll.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Nothing is written when blocked: the merges with conflict markers go to `.roll/c

- `.github/workflows/upstream-roll.yml` runs daily: detects a newer, old-enough `patchright-core`, rolls it on `roll_<version>`, runs the full CI matrix on that branch (the reusable `ci.yml`), and opens the PR with the report. `safe` + green CI is merged automatically; `review` waits for a human (label `needs-review`); `blocked` opens an issue (label `upstream-blocked`) with the report and the conflicted merges and writes nothing; scheduled runs skip that version while the issue is open. Manual runs take a version, `dry_run` (report only) and `force`.
- `.github/workflows/upstream-playwright-cli.yml` runs weekly with the same verdicts for `microsoft/playwright-cli` (`npm run watch:playwright-cli`, `--apply` to take a clean merge).
- Both workflows need Issues enabled on the repository (a fork has them off by default) for the `blocked` verdict to land anywhere; without them the lookup only warns, but a blocked roll fails the job with the report in the summary and the artifact.
- The automatic merge uses the workflow token: keep the repository setting "Allow GitHub Actions to create and approve pull requests" on, and do not require reviews from branch protection for `roll_*` branches, or the merge step only leaves a comment and the PR waits.

## Start of a session
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/upstream-playwright-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,17 @@ jobs:
run: |
gh label create upstream-blocked --description "upstream roll needs a manual port" --color B60205 2>/dev/null || true
short="${{ steps.watch.outputs.head }}"; short="${short:0:7}"
n=$(gh issue list --label upstream-blocked --state open --search "in:title \"playwright-cli $short\"" --json number --jq 'length')
# Issues can be off (a fork disables them by default): then nothing is on file yet.
n=$(gh issue list --label upstream-blocked --state open --search "in:title \"playwright-cli $short\"" --json number --jq 'length' 2>&1) || {
echo "::warning::Could not list issues ($n); assuming none is open for this commit."
n=0
}
if [ "${n:-0}" = "0" ]; then
{ cat .roll/playwright-cli-report.md; for f in .roll/conflicts/*.merged; do [ -f "$f" ] && { printf '\n### %s\n\n```\n' "$(basename "$f")"; head -300 "$f"; printf '```\n'; }; done; } > issue.md
gh issue create --title "upstream: playwright-cli $short conflicts with our test port" --body-file issue.md --label upstream-blocked
gh issue create --title "upstream: playwright-cli $short conflicts with our test port" --body-file issue.md --label upstream-blocked || {
echo "::error::The merge is blocked and the issue could not be opened (are issues enabled on this repository?). The report is in the job summary and the playwright-cli-report artifact."
exit 1
}
fi
- name: Apply, commit and push
id: push
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/upstream-roll.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
run: |
n=$(gh issue list --label upstream-blocked --state open --search "in:title \"patchright-core ${{ steps.check.outputs.target }}\"" --json number --jq 'length')
# Issues can be off (a fork disables them by default): then no version is blocked.
n=$(gh issue list --label upstream-blocked --state open --search "in:title \"patchright-core ${{ steps.check.outputs.target }}\"" --json number --jq 'length' 2>&1) || {
echo "::warning::Could not list issues ($n); assuming no blocked issue for this version."
n=0
}
echo "open_issue=$([ "${n:-0}" != "0" ] && echo true || echo false)" >> "$GITHUB_OUTPUT"

roll:
Expand Down Expand Up @@ -119,7 +123,10 @@ jobs:
done
printf '\nResolve by hand: `npm run roll -- %s --dry-run` reproduces the merge; fix src/, then `npm run roll -- %s`.\n' "${{ needs.detect.outputs.target }}" "${{ needs.detect.outputs.target }}"
} > issue.md
gh issue create --title "upstream: patchright-core ${{ needs.detect.outputs.target }} needs a manual port" --body-file issue.md --label upstream-blocked
gh issue create --title "upstream: patchright-core ${{ needs.detect.outputs.target }} needs a manual port" --body-file issue.md --label upstream-blocked || {
echo "::error::The roll is blocked and the issue could not be opened (are issues enabled on this repository?). The report is in the job summary and the roll-report artifact."
exit 1
}
- name: Commit and push the roll branch
id: push
if: steps.roll.outputs.classification != 'blocked' && !inputs.dry_run
Expand Down
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ All notable changes to this project are documented here. The format follows [Kee

## [Unreleased]

Nothing yet.
### Fixed
- Upstream roll: a repository with issues disabled (a fork has them off by default) no longer fails the `detect` job. The blocked-issue lookup warns and continues, and a blocked roll that cannot open an issue says so with the report in the job summary and the artifact.
- `npm pack` from a working tree no longer picks up the ignored `skills/patchright-cli-workspace/` evaluation runs: `files` names `skills/patchright-cli` instead of `skills`. Release tarballs, built from a clean checkout, are unchanged.

## [0.2.0] - 2026-09-05

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"files": [
"bin",
"lib",
"skills",
"skills/patchright-cli",
"README.md",
"LICENSE",
"NOTICE",
Expand Down
Loading