name: Roll Browser into Playwright on: repository_dispatch: types: [roll_into_pw] workflow_dispatch: inputs: browser: description: 'Browser name, e.g. chromium' required: true type: string revision: description: 'Browser revision without v prefix, e.g. 1234' required: true type: string env: ELECTRON_SKIP_BINARY_DOWNLOAD: 1 BROWSER: ${{ github.event.client_payload.browser || github.event.inputs.browser }} REVISION: ${{ github.event.client_payload.revision || github.event.inputs.revision }} permissions: contents: write jobs: roll: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 18 - run: npm ci - run: npm run build - name: Install dependencies run: npx playwright install-deps - name: Roll to new revision run: | ./utils/roll_browser.js $BROWSER $REVISION npm run build - name: Prepare branch id: prepare-branch run: | BRANCH_NAME="roll-into-pw-${BROWSER}/${REVISION}" echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_OUTPUT git config --global user.name github-actions git config --global user.email 41898282+github-actions[bot]@users.noreply.github.com git checkout -b "$BRANCH_NAME" git add . git commit -m "feat(${BROWSER}): roll to r${REVISION}" git push origin $BRANCH_NAME --force - name: Create Pull Request uses: actions/github-script@v7 with: github-token: ${{ secrets.REPOSITORY_DISPATCH_PERSONAL_ACCESS_TOKEN }} script: | const response = await github.rest.pulls.create({ owner: 'microsoft', repo: 'playwright', head: 'microsoft:${{ steps.prepare-branch.outputs.BRANCH_NAME }}', base: 'main', title: 'feat(${{ env.BROWSER }}): roll to r${{ env.REVISION }}', }); await github.rest.issues.addLabels({ owner: 'microsoft', repo: 'playwright', issue_number: response.data.number, labels: ['CQ1'], });