diff --git a/.github/workflows/tests_primary.yml b/.github/workflows/tests_primary.yml index 48d4b5b3a8..9283556f8f 100644 --- a/.github/workflows/tests_primary.yml +++ b/.github/workflows/tests_primary.yml @@ -55,6 +55,36 @@ jobs: name: ${{ matrix.browser }}-${{ matrix.os }}-test-results path: test-results + test_linux_chromium_tot: + name: ${{ matrix.os }} (chromium tip-of-tree) + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 + - run: npm i -g npm@8.3 + - run: npm ci + env: + DEBUG: pw:install + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run build + - run: npx playwright install --with-deps chromium-tip-of-tree + - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test -- --project=chromium + env: + PWTEST_CHANNEL: chromium-tip-of-tree + - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + if: always() + - uses: actions/upload-artifact@v1 + if: always() + with: + name: ${{ matrix.browser }}-chromium-tip-of-tree-test-results + path: test-results + test_test_runner: name: Test Runner strategy: diff --git a/.github/workflows/tests_secondary.yml b/.github/workflows/tests_secondary.yml index 7d2847a7ff..ca8626bb19 100644 --- a/.github/workflows/tests_secondary.yml +++ b/.github/workflows/tests_secondary.yml @@ -304,6 +304,83 @@ jobs: name: chrome-stable-mac-test-results path: test-results + chromium_tot_linux: + name: "Chromium TOT (Linux)" + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 + - run: npm i -g npm@8.3 + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run build + - run: npx playwright install --with-deps chromium-tip-of-tree + - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run ctest + env: + PWTEST_CHANNEL: chromium-tip-of-tree + - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + if: always() + - uses: actions/upload-artifact@v1 + if: ${{ always() }} + with: + name: chromium-tot-linux-test-results + path: test-results + + chromium_tot_win: + name: "Chromium TOT (Win)" + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 + - run: npm i -g npm@8.3 + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run build + - run: npx playwright install --with-deps chromium-tip-of-tree + - run: npm run ctest + shell: bash + env: + PWTEST_CHANNEL: chromium-tip-of-tree + - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + if: always() + shell: bash + - uses: actions/upload-artifact@v1 + if: ${{ always() }} + with: + name: chromium-tot-win-test-results + path: test-results + + chromium_tot_mac: + name: "Chromium TOT (Mac)" + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 + - run: npm i -g npm@8.3 + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run build + - run: npx playwright install --with-deps chromium-tip-of-tree + - run: npm run ctest + env: + PWTEST_CHANNEL: chromium-tip-of-tree + - run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json + if: always() + - uses: actions/upload-artifact@v1 + if: ${{ always() }} + with: + name: chromium-tot-mac-test-results + path: test-results + firefox_beta_linux: name: "Firefox Beta (Linux)" runs-on: ubuntu-20.04 diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index 07b73909b3..f26fd57516 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -11,6 +11,11 @@ "revision": "1003", "installByDefault": false }, + { + "name": "chromium-tip-of-tree", + "revision": "1000", + "installByDefault": false + }, { "name": "firefox", "revision": "1322", diff --git a/packages/playwright-core/src/server/registry/index.ts b/packages/playwright-core/src/server/registry/index.ts index 52ef4534f3..19d6a44aea 100644 --- a/packages/playwright-core/src/server/registry/index.ts +++ b/packages/playwright-core/src/server/registry/index.ts @@ -77,6 +77,23 @@ const DOWNLOAD_PATHS = { 'mac12-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip', 'win64': 'builds/chromium/%s/chromium-win64.zip', }, + 'chromium-tip-of-tree': { + '': undefined, + 'generic-linux': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'generic-linux-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', + 'ubuntu18.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'ubuntu20.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'ubuntu18.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', + 'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', + 'mac10.13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip', + 'mac10.14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip', + 'mac10.15': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip', + 'mac11': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip', + 'mac11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip', + 'mac12': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip', + 'mac12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip', + 'win64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip', + }, 'chromium-with-symbols': { '': undefined, 'generic-linux': 'builds/chromium/%s/chromium-with-symbols-linux.zip', @@ -244,9 +261,9 @@ function readDescriptors(browsersJSON: BrowsersJSON) { } export type BrowserName = 'chromium' | 'firefox' | 'webkit'; -type InternalTool = 'ffmpeg' | 'firefox-beta' | 'chromium-with-symbols'; +type InternalTool = 'ffmpeg' | 'firefox-beta' | 'chromium-with-symbols' | 'chromium-tip-of-tree'; type ChromiumChannel = 'chrome' | 'chrome-beta' | 'chrome-dev' | 'chrome-canary' | 'msedge' | 'msedge-beta' | 'msedge-dev' | 'msedge-canary'; -const allDownloadable = ['chromium', 'firefox', 'webkit', 'ffmpeg', 'firefox-beta', 'chromium-with-symbols']; +const allDownloadable = ['chromium', 'firefox', 'webkit', 'ffmpeg', 'firefox-beta', 'chromium-with-symbols', 'chromium-tip-of-tree']; export interface Executable { type: 'browser' | 'tool' | 'channel'; @@ -331,6 +348,22 @@ export class Registry { _isHermeticInstallation: true, }); + const chromiumTipOfTree = descriptors.find(d => d.name === 'chromium-tip-of-tree')!; + const chromiumTipOfTreeExecutable = findExecutablePath(chromiumTipOfTree.dir, 'chromium'); + this._executables.push({ + type: 'tool', + name: 'chromium-tip-of-tree', + browserName: 'chromium', + directory: chromiumTipOfTree.dir, + executablePath: () => chromiumTipOfTreeExecutable, + executablePathOrDie: (sdkLanguage: string) => executablePathOrDie('chromium-tip-of-tree', chromiumTipOfTreeExecutable, chromiumTipOfTree.installByDefault, sdkLanguage), + installType: chromiumTipOfTree.installByDefault ? 'download-by-default' : 'download-on-demand', + validateHostRequirements: (sdkLanguage: string) => this._validateHostRequirements(sdkLanguage, 'chromium', chromiumTipOfTree.dir, ['chrome-linux'], [], ['chrome-win']), + _install: () => this._downloadExecutable(chromiumTipOfTree, chromiumTipOfTreeExecutable, DOWNLOAD_PATHS['chromium-tip-of-tree'][hostPlatform], 'PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST'), + _dependencyGroup: 'chromium', + _isHermeticInstallation: true, + }); + this._executables.push(this._createChromiumChannel('chrome', { 'linux': '/opt/google/chrome/chrome', 'darwin': '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',