diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 9914533f7be..3d126e389c6 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -53,7 +53,7 @@ jobs: run: npm run build --workspace @puppeteer-test/test - name: Install Chrome Canary id: browser - run: node tools/download_chrome_bidi.mjs $HOME/.cache/puppeteer/chrome-canary + run: node tools/download_chrome_canary.mjs $HOME/.cache/puppeteer/chrome-canary - 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 diff --git a/tools/download_chrome_canary.mjs b/tools/download_chrome_canary.mjs new file mode 100644 index 00000000000..9f523aea2a5 --- /dev/null +++ b/tools/download_chrome_canary.mjs @@ -0,0 +1,51 @@ +/** + * @license + * Copyright 2024 Google Inc. + * SPDX-License-Identifier: Apache-2.0 + */ + +/* eslint-disable no-console */ + +/** + * @fileoverview Installs the latest Chrome Canary using + * `@puppeteer/browsers` to the directory provided as the first argument + * (default: cwd). The executable path is written to the `executablePath` output + * param for GitHub actions. + * + * Examples: + * + * - `node tools/download_chrome_canary.mjs` + * - `node tools/download_chrome_canary.mjs /tmp/cache` + */ +import actions from '@actions/core'; + +import { + Browser, + computeExecutablePath, + install, + resolveBuildId, + detectBrowserPlatform, +} from '@puppeteer/browsers'; + +try { + const cacheDir = process.argv[2] || process.cwd(); + const browser = Browser.CHROME; + const platform = detectBrowserPlatform(); + const buildId = await resolveBuildId(browser, platform, 'canary'); + await install({ + browser, + buildId, + cacheDir, + }); + const executablePath = computeExecutablePath({ + cacheDir, + browser, + buildId, + }); + if (process.argv.indexOf('--shell') === -1) { + actions.setOutput('executablePath', executablePath); + } + console.log(executablePath); +} catch (err) { + actions.setFailed(`Failed to download the browser: ${err.message}`); +}