`actions/upload-artifact@v4` comes with the following [breaking change](https://github.com/actions/upload-artifact?tab=readme-ov-file#breaking-changes): "Due to how Artifacts are created in this new version, it is no longer possible to upload to the same named Artifact multiple times. You must either split the uploads into multiple Artifacts with different names, or only upload once. Otherwise you will encounter an error." Due to that we cannot copy multiple blob report folders into the same artifact name and rely on the action to merge them. Instead, as suggested by their migration guide, we upload each blob report into a uniquely named artifact with prefix `blob-report-` and then download all of them into same directory. This version change also affects how we store pull_request_number.txt into an artifact. Previously we relied on the fact that uploading artifact with the same name would silently override existing one, but now it's an error. To overcome that, we upload PR number file into uniquely named artifacts `pull-request-*` and later extract them into same location with `unzip -n` which will never override existing file, so we end up with single `pull_request_number.txt`. Reference #28800
266 lines
8 KiB
YAML
266 lines
8 KiB
YAML
name: "tests 1"
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- release-*
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'browser_patches/**'
|
|
- 'docs/**'
|
|
branches:
|
|
- main
|
|
- release-*
|
|
|
|
concurrency:
|
|
# For pull requests, cancel all currently-running jobs for this workflow
|
|
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
# Force terminal colors. @see https://www.npmjs.com/package/colors
|
|
FORCE_COLOR: 1
|
|
FLAKINESS_CONNECTION_STRING: ${{ secrets.FLAKINESS_CONNECTION_STRING }}
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
|
|
|
|
jobs:
|
|
test_linux:
|
|
name: ${{ matrix.os }} (${{ matrix.browser }} - Node.js ${{ matrix.node-version }})
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
browser: [chromium, firefox, webkit]
|
|
os: [ubuntu-22.04]
|
|
node-version: [18]
|
|
include:
|
|
- os: ubuntu-22.04
|
|
node-version: 16
|
|
browser: chromium
|
|
- os: ubuntu-22.04
|
|
node-version: 20
|
|
browser: chromium
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
PWTEST_BOT_NAME: "${{ matrix.browser }}-${{ matrix.os }}-node${{ matrix.node-version }}"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
- run: npm ci
|
|
env:
|
|
DEBUG: pw:install
|
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
|
- run: npm run build
|
|
- run: npx playwright install --with-deps ${{ matrix.browser }} chromium
|
|
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test -- --project=${{ matrix.browser }}
|
|
- run: node tests/config/checkCoverage.js ${{ matrix.browser }}
|
|
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
|
|
if: always()
|
|
shell: bash
|
|
- name: Upload blob report
|
|
if: always()
|
|
uses: ./.github/actions/upload-blob-report
|
|
with:
|
|
report_dir: blob-report
|
|
job_name: ${{ env.PWTEST_BOT_NAME }}
|
|
|
|
test_linux_chromium_tot:
|
|
name: ${{ matrix.os }} (chromium tip-of-tree)
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-20.04]
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
PWTEST_BOT_NAME: "${{ matrix.os }}-chromium-tip-of-tree"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- 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
|
|
PWTEST_BOT_NAME: "${{ matrix.os }}-chromium-tip-of-tree"
|
|
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
|
|
if: always()
|
|
shell: bash
|
|
- name: Upload blob report
|
|
if: always()
|
|
uses: ./.github/actions/upload-blob-report
|
|
with:
|
|
report_dir: blob-report
|
|
job_name: ${{ env.PWTEST_BOT_NAME }}
|
|
|
|
test_test_runner:
|
|
name: Test Runner
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
node-version: [18]
|
|
shardIndex: [1, 2]
|
|
shardTotal: [2]
|
|
include:
|
|
- os: ubuntu-latest
|
|
node-version: 16
|
|
shardIndex: 1
|
|
shardTotal: 2
|
|
- os: ubuntu-latest
|
|
node-version: 16
|
|
shardIndex: 2
|
|
shardTotal: 2
|
|
- os: ubuntu-latest
|
|
node-version: 20
|
|
shardIndex: 1
|
|
shardTotal: 2
|
|
- os: ubuntu-latest
|
|
node-version: 20
|
|
shardIndex: 2
|
|
shardTotal: 2
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
PWTEST_BOT_NAME: "${{ matrix.os }}-node${{ matrix.node-version }}-${{ matrix.shardIndex }}"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{matrix.node-version}}
|
|
- run: npm ci
|
|
env:
|
|
DEBUG: pw:install
|
|
- run: npm run build
|
|
- run: npx playwright install --with-deps
|
|
- run: npm run ttest -- --shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
|
|
if: matrix.os != 'ubuntu-latest'
|
|
- run: xvfb-run npm run ttest -- --shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
|
|
if: matrix.os == 'ubuntu-latest'
|
|
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
|
|
if: always()
|
|
shell: bash
|
|
- name: Upload blob report
|
|
if: always()
|
|
uses: ./.github/actions/upload-blob-report
|
|
with:
|
|
report_dir: blob-report
|
|
job_name: ${{ env.PWTEST_BOT_NAME }}
|
|
|
|
test_web_components:
|
|
name: Web Components
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- run: npm ci
|
|
env:
|
|
DEBUG: pw:install
|
|
- run: npm run build
|
|
|
|
- run: npx playwright install --with-deps
|
|
- run: npm run test-html-reporter
|
|
env:
|
|
PWTEST_BOT_NAME: "web-components-html-reporter"
|
|
- name: Upload blob report
|
|
if: always()
|
|
uses: ./.github/actions/upload-blob-report
|
|
with:
|
|
report_dir: packages/html-reporter/blob-report
|
|
job_name: "web-components-html-reporter"
|
|
|
|
- run: npm run test-web
|
|
if: always()
|
|
env:
|
|
PWTEST_BOT_NAME: "web-components-web"
|
|
- name: Upload blob report
|
|
if: always()
|
|
uses: ./.github/actions/upload-blob-report
|
|
with:
|
|
report_dir: packages/web/blob-report
|
|
job_name: "web-components-web"
|
|
|
|
test_vscode_extension:
|
|
name: VSCode Extension
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
PWTEST_BOT_NAME: "vscode-extension"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- run: npm ci
|
|
env:
|
|
DEBUG: pw:install
|
|
- run: npm run build
|
|
- run: npx playwright install chromium
|
|
- name: Checkout extension
|
|
run: git clone https://github.com/microsoft/playwright-vscode.git
|
|
- name: Print extension revision
|
|
run: git rev-parse HEAD
|
|
working-directory: ./playwright-vscode
|
|
- name: Remove @playwright/test from extension dependencies
|
|
run: node -e "const p = require('./package.json'); delete p.devDependencies['@playwright/test']; fs.writeFileSync('./package.json', JSON.stringify(p, null, 2));"
|
|
working-directory: ./playwright-vscode
|
|
- name: Build extension
|
|
run: npm install && npm run build
|
|
working-directory: ./playwright-vscode
|
|
- name: Run extension tests
|
|
run: npm run test -- --workers=1
|
|
working-directory: ./playwright-vscode
|
|
- name: Upload blob report
|
|
if: always()
|
|
uses: ./.github/actions/upload-blob-report
|
|
with:
|
|
report_dir: playwright-vscode/blob-report
|
|
job_name: ${{ env.PWTEST_BOT_NAME }}
|
|
|
|
test_package_installations:
|
|
name: "Installation Test ${{ matrix.os }}"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 30
|
|
env:
|
|
PWTEST_BOT_NAME: "package-installations-${{ matrix.os }}"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- run: npm ci
|
|
env:
|
|
DEBUG: pw:install
|
|
- run: npm run build
|
|
- run: npx playwright install --with-deps
|
|
- run: npm install -g yarn@1
|
|
- run: npm install -g pnpm@8
|
|
- run: npm run itest
|
|
if: matrix.os != 'ubuntu-latest'
|
|
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run itest
|
|
if: matrix.os == 'ubuntu-latest'
|
|
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
|
|
if: always()
|
|
shell: bash
|
|
- name: Upload blob report
|
|
if: always()
|
|
uses: ./.github/actions/upload-blob-report
|
|
with:
|
|
report_dir: blob-report
|
|
job_name: ${{ env.PWTEST_BOT_NAME }}
|