fix: roll to Chrome 125.0.6422.78 (r1287751) (#12484) #13738
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
# Declare default permissions as read only. | |
permissions: read-all | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: | |
# These are the defaults. See | |
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request | |
- opened | |
- reopened | |
- synchronize | |
# Used for `full-ci` | |
- labeled | |
branches: | |
- '**' | |
concurrency: | |
group: ci-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
inspect-code: | |
name: '[Required] Inspect code' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
with: | |
fetch-depth: 2 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
# Set up GitHub Actions caching for Wireit. | |
- uses: google/wireit@4aad131006ea85c1e42af927534ebb13426dd730 # setup-github-actions-caching/v1.0.2 | |
- name: Check code | |
run: npm run check | |
- name: Validate licenses | |
run: npm run validate-licenses | |
- name: Build every package | |
run: npm run build | |
- name: Tests types | |
run: npm run test-types | |
- name: Lint code | |
run: npm run lint | |
- name: Generate documents | |
run: npm run docs | |
- name: Check if autogenerated docs differ | |
run: | | |
diff_file=$(mktemp doc_diff_XXXXXX) | |
git diff --color > $diff_file | |
if [[ -s $diff_file ]]; then | |
echo "Please update the documentation by running 'npm run docs'. The following was the diff" | |
cat $diff_file | |
rm $diff_file | |
exit 1 | |
fi | |
rm $diff_file | |
check-changes: | |
uses: ./.github/workflows/changed-packages.yml | |
with: | |
check-mergeable-state: true | |
deploy-docs: | |
needs: check-changes | |
name: Deploy docs (if needed) | |
if: ${{ github.event_name != 'pull_request' && contains(fromJSON(needs.check-changes.outputs.changes), 'website') }} | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
working-directory: ./website | |
run: npm ci | |
- name: Build website | |
working-directory: ./website | |
env: | |
NODE_OPTIONS: --max-old-space-size=6144 | |
run: npm run build | |
- name: Deploy to GitHub Pages | |
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./website/build | |
user_name: release-please[bot] | |
user_email: 55107282+release-please[bot]@users.noreply.github.com | |
- name: Test Algolia if Crawler is blocked | |
env: | |
CRAWLER_USER_ID: ${{secrets.ALGOLIA_CRAWLER_USER_ID}} | |
CRAWLER_API_KEY: ${{secrets.ALGOLIA_CRAWLER_API_KEY}} | |
CRAWLER_ID: ${{secrets.ALGOLIA_CRAWLER_ID}} | |
run: | | |
RESPONSE=$(curl -H "Content-Type: application/json" -X GET --user "$CRAWLER_USER_ID:$CRAWLER_API_KEY" \ | |
"https://crawler.algolia.com/api/1/crawlers/$CRAWLER_ID" | grep "\"blocked\":true" || true ); \ | |
if [ ! -z "$RESPONSE" ]; then echo "Please go to https://crawler.algolia.com/" && exit 1; fi | |
- name: Trigger Algolia reindexing | |
env: | |
CRAWLER_USER_ID: ${{secrets.ALGOLIA_CRAWLER_USER_ID}} | |
CRAWLER_API_KEY: ${{secrets.ALGOLIA_CRAWLER_API_KEY}} | |
CRAWLER_ID: ${{secrets.ALGOLIA_CRAWLER_ID}} | |
run: | | |
curl -H "Content-Type: application/json" -X POST --user "$CRAWLER_USER_ID:$CRAWLER_API_KEY" \ | |
"https://crawler.algolia.com/api/1/crawlers/$CRAWLER_ID/reindex" | |
doctest: | |
name: Doctest | |
runs-on: ubuntu-latest | |
needs: check-changes | |
if: ${{ false && contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
- name: Run tests | |
run: npm run doctest | |
chrome-tests: | |
name: ${{ matrix.suite }} (${{ matrix.shard }}) on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
needs: check-changes | |
if: ${{ contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
linux-only: | |
- ${{ github.event_name == 'pull_request' && !contains(github.head_ref, 'release-please') && !contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
suite: | |
- chrome-headless | |
- chrome-headful | |
- chrome-headless-shell | |
- chrome-bidi | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-13 | |
shard: | |
- 1-2 | |
- 2-2 | |
exclude: | |
- linux-only: true | |
os: windows-latest | |
- linux-only: true | |
os: macos-13 | |
- linux-only: true | |
suite: chrome-headful | |
- os: windows-latest | |
suite: chrome-bidi | |
- os: macos-13 | |
suite: chrome-headful | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
# Set up GitHub Actions caching for Wireit. | |
- uses: google/wireit@4aad131006ea85c1e42af927534ebb13426dd730 # setup-github-actions-caching/v1.0.2 | |
- name: Build packages | |
run: npm run build --workspace @puppeteer-test/test | |
- name: Setup cache for Chrome binary | |
if: ${{ matrix.suite != 'chrome-bidi' }} | |
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ~/.cache/puppeteer/chrome | |
key: Chrome-${{ runner.os }}-${{ hashFiles('packages/puppeteer-core/src/revisions.ts') }}-${{ hashFiles('packages/puppeteer/src/node/install.ts') }} | |
- name: Install Chrome | |
if: ${{ matrix.suite != 'chrome-bidi' }} | |
run: npm run postinstall | |
- name: Configure permissions | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: icacls $HOME/.cache/puppeteer/chrome /grant "ALL APPLICATION PACKAGES:(OI)(CI)(RX)" | |
- name: Setup cache for Chrome Canary binary | |
if: ${{ matrix.suite == 'chrome-bidi' }} | |
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ~/.cache/puppeteer/chrome-canary | |
key: Chrome-Canary-${{ runner.os }}-${{ hashFiles('package.json') }} | |
- name: Install Chrome Canary | |
if: ${{ matrix.suite == 'chrome-bidi' }} | |
id: browser | |
run: node tools/download_chrome_bidi.mjs $HOME/.cache/puppeteer/chrome-canary | |
- name: Configure permissions | |
if: ${{ matrix.suite == 'chrome-bidi' && matrix.os == 'windows-latest' }} | |
run: icacls $HOME/.cache/puppeteer/chrome-canary /grant "ALL APPLICATION PACKAGES:(OI)(CI)(RX)" | |
- name: Run all tests (for non-Linux) | |
if: ${{ matrix.os != 'ubuntu-latest' }} | |
run: npm run test -- --shard '${{ matrix.shard }}' --test-suite ${{ matrix.suite }} --save-stats-to /tmp/artifacts/${{ github.event_name }}_INSERTID.json | |
env: | |
PUPPETEER_EXECUTABLE_PATH: ${{ steps.browser.outputs.executablePath }} | |
- name: Run all tests (for Linux) | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: xvfb-run --auto-servernum npm run test -- --shard '${{ matrix.shard }}' --test-suite ${{ matrix.suite }} --save-stats-to /tmp/artifacts/${{ github.event_name }}_INSERTID.json | |
env: | |
PUPPETEER_EXECUTABLE_PATH: ${{ steps.browser.outputs.executablePath }} | |
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 | |
if: always() | |
with: | |
name: test-results-${{ matrix.os }}-${{ matrix.suite }}-${{ matrix.shard }} | |
path: /tmp/artifacts/*.json | |
chrome-tests-required: | |
name: '[Required] Chrome tests' | |
needs: [check-changes, chrome-tests] | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
steps: | |
- if: ${{ needs.chrome-tests.result != 'success' && contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
run: 'exit 1' | |
- run: 'exit 0' | |
firefox-tests: | |
name: ${{ matrix.suite }} (${{ matrix.shard }}) on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
needs: check-changes | |
if: ${{ contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
linux-only: | |
- ${{ github.event_name == 'pull_request' && !contains(github.head_ref, 'release-please') && !contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
suite: | |
- firefox-bidi | |
- firefox-headful | |
- firefox-headless | |
os: | |
- ubuntu-latest | |
- macos-13 | |
- windows-latest | |
shard: | |
- 1-4 | |
- 2-4 | |
- 3-4 | |
- 4-4 | |
exclude: | |
- linux-only: true | |
os: windows-latest | |
- linux-only: true | |
os: macos-13 | |
- os: macos-13 | |
suite: firefox-headful | |
- os: macos-13 | |
suite: firefox-headless | |
- os: windows-latest | |
suite: firefox-headful | |
- os: windows-latest | |
suite: firefox-headless | |
steps: | |
- name: Checkout | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
# Set up GitHub Actions caching for Wireit. | |
- uses: google/wireit@4aad131006ea85c1e42af927534ebb13426dd730 # setup-github-actions-caching/v1.0.2 | |
- name: Build packages | |
run: npm run build --workspace @puppeteer-test/test | |
- name: Setup cache for Firefox binary | |
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ~/.cache/puppeteer/firefox | |
key: Firefox-${{ runner.os }}-${{ hashFiles('packages/puppeteer-core/src/revisions.ts') }}-${{ hashFiles('packages/puppeteer/src/node/install.ts') }} | |
- name: Install Firefox | |
env: | |
PUPPETEER_PRODUCT: firefox | |
run: npm run postinstall | |
- name: Run all tests (for non-Linux) | |
if: ${{ matrix.os != 'ubuntu-latest' }} | |
run: npm run test -- --shard '${{ matrix.shard }}' --test-suite ${{ matrix.suite }} --save-stats-to /tmp/artifacts/${{ github.event_name }}_INSERTID.json | |
- name: Run all tests (for Linux) | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: xvfb-run --auto-servernum npm run test -- --shard '${{ matrix.shard }}' --test-suite ${{ matrix.suite }} --save-stats-to /tmp/artifacts/${{ github.event_name }}_INSERTID.json | |
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 | |
if: always() | |
with: | |
name: test-results-${{ matrix.os }}-${{ matrix.suite }}-${{ matrix.shard }} | |
path: /tmp/artifacts/*.json | |
firefox-tests-required: | |
name: '[Required] Firefox tests' | |
needs: [check-changes, firefox-tests] | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
steps: | |
- if: ${{ needs.firefox-tests.result != 'success' && contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
run: 'exit 1' | |
- run: 'exit 0' | |
installation-test: | |
name: ${{ matrix.pkg_manager }} installation on ${{ matrix.os }} | |
needs: check-changes | |
if: ${{ !startsWith(github.ref_name, 'release-please') && contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
linux-only: | |
- ${{ github.event_name == 'pull_request' && !contains(github.head_ref, 'release-please') && !contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
pkg_manager: | |
- npm | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-13 | |
exclude: | |
- linux-only: true | |
os: windows-latest | |
- linux-only: true | |
os: macos-13 | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
# Set up GitHub Actions caching for Wireit. | |
- uses: google/wireit@4aad131006ea85c1e42af927534ebb13426dd730 # setup-github-actions-caching/v1.0.2 | |
- name: Build packages | |
run: npm run build --workspace @puppeteer-test/test | |
- name: Setup cache for Chrome binary | |
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ~/.cache/puppeteer/chrome | |
key: Chrome-${{ runner.os }}-${{ hashFiles('packages/puppeteer-core/src/revisions.ts') }}-${{ hashFiles('packages/puppeteer/src/node/install.ts') }} | |
- name: Install Chrome | |
run: npm run postinstall | |
- name: Build installation test | |
run: npm run build --workspace @puppeteer-test/installation | |
- name: Test install | |
env: | |
PKG_MANAGER: ${{ matrix.pkg_manager }} | |
run: ${{ matrix.pkg_manager }} run test-install | |
installation-test-required: | |
name: '[Required] Installation tests' | |
needs: [check-changes, installation-test] | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
steps: | |
- if: ${{ needs.installation-test.result != 'success' && contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
run: 'exit 1' | |
- run: 'exit 0' | |
docker-tests: | |
name: '[Required] Docker image test' | |
runs-on: ubuntu-latest | |
needs: check-changes | |
if: ${{ contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
with: | |
fetch-depth: 2 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
- name: Build packages | |
run: npm run build --workspace puppeteer | |
- name: Pack packages | |
run: docker/pack.sh | |
- name: Build docker image | |
working-directory: ./docker | |
run: | | |
docker build -t puppeteer-test-image . | |
- name: Run smoke test | |
working-directory: ./docker | |
run: | | |
docker run -i --init --cap-add=SYS_ADMIN --rm puppeteer-test-image node -e "`cat test/smoke-test.js`" | |
unit-tests: | |
name: '[Required] Puppeteer Unit tests' | |
runs-on: ubuntu-latest | |
needs: check-changes | |
if: ${{ contains(fromJSON(needs.check-changes.outputs.changes), 'puppeteer') }} | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
- name: Run unit tests | |
run: | | |
npm run unit -w puppeteer-core -w puppeteer --if-present | |
ng-schematics-unit: | |
name: '[Required] Angular Schematics tests' | |
runs-on: ubuntu-latest | |
needs: check-changes | |
if: ${{ contains(fromJSON(needs.check-changes.outputs.changes), 'ng-schematics') }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
- name: Run tests | |
run: npm run unit --workspace @puppeteer/ng-schematics | |
ng-schematics-smoke-tests: | |
name: Angular Schematics smoke tests on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
needs: check-changes | |
if: ${{ contains(fromJSON(needs.check-changes.outputs.changes), 'ng-schematics') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
linux-only: | |
- ${{ github.event_name == 'pull_request' && !contains(github.head_ref, 'release-please') && !contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-13 | |
exclude: | |
- linux-only: true | |
os: windows-latest | |
- linux-only: true | |
os: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
- name: Setup cache for Chrome binary | |
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 | |
with: | |
path: ~/.cache/puppeteer/chrome | |
key: Chrome-${{ runner.os }}-${{ hashFiles('packages/puppeteer-core/src/revisions.ts') }}-${{ hashFiles('packages/puppeteer/src/node/install.ts') }} | |
- name: Install Chrome | |
run: npm run postinstall | |
- name: Build Schematics | |
run: npm run build -w @puppeteer/ng-schematics | |
- name: Run tests | |
run: node tools/smoke.mjs | |
working-directory: ./packages/ng-schematics | |
ng-schematics-smoke-tests-required: | |
name: '[Required] Angular Schematics smoke tests' | |
needs: [check-changes, ng-schematics-smoke-tests] | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
steps: | |
- if: ${{ needs.ng-schematics-smoke-tests.result != 'success' && contains(fromJSON(needs.check-changes.outputs.changes), 'ng-schematics') }} | |
run: 'exit 1' | |
- run: 'exit 0' | |
browsers-tests: | |
name: Browsers tests on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
needs: check-changes | |
if: ${{ contains(fromJSON(needs.check-changes.outputs.changes), 'browsers') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
linux-only: | |
- ${{ github.event_name == 'pull_request' && !contains(github.head_ref, 'release-please') && !contains(github.event.pull_request.labels.*.name, 'full-ci') }} | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-13 | |
exclude: | |
- linux-only: true | |
os: windows-latest | |
- linux-only: true | |
os: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- name: Set up Node.js | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
with: | |
cache: npm | |
node-version-file: '.nvmrc' | |
- name: Install dependencies | |
run: npm ci | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
- name: Run tests | |
run: npm run test --workspace @puppeteer/browsers | |
browsers-tests-required: | |
name: '[Required] Test the browsers packages' | |
needs: [check-changes, browsers-tests] | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
steps: | |
- if: ${{ needs.browsers-tests.result != 'success' && contains(fromJSON(needs.check-changes.outputs.changes), 'browsers') }} | |
run: 'exit 1' | |
- run: 'exit 0' |