mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
This reverts commit a1cdae6bffcea5fd16c5bc56633e0949bfcc6315. The problem with this approach is that each job overwrites the zip artifact whereas previously it was merging all reports in the same directory. We are going to zip .jsonl files instead.
248 lines
8.1 KiB
YAML
248 lines
8.1 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: [16]
|
|
include:
|
|
- os: ubuntu-22.04
|
|
node-version: 18
|
|
browser: chromium
|
|
- os: ubuntu-22.04
|
|
node-version: 20
|
|
browser: chromium
|
|
runs-on: ${{ matrix.os }}
|
|
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 }}
|
|
env:
|
|
PWTEST_BLOB_REPORT: 1
|
|
PWTEST_BLOB_SUFFIX: "-${{ matrix.os }}-node${{ matrix.node-version }}"
|
|
- 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 to Azure
|
|
if: always() && github.event_name == 'push'
|
|
run: az storage blob upload-batch -s test-results/blob-report -d '$web/run-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.sha }}' --connection-string "${{ secrets.AZURE_CONNECTION_STRING_FOR_BLOB_REPORT }}"
|
|
- name: Upload blob report to GitHub
|
|
uses: actions/upload-artifact@v3
|
|
if: always() && github.event_name == 'pull_request'
|
|
with:
|
|
name: blob-report-${{ github.run_attempt }}
|
|
path: test-results/blob-report
|
|
retention-days: 30
|
|
- name: Write the pull request number in an file
|
|
if: always() && github.event_name == 'pull_request'
|
|
run: echo '${{ github.event.number }}' > pull_request_number.txt;
|
|
- name: Upload artifact with pull request number
|
|
uses: actions/upload-artifact@v3
|
|
if: always() && github.event_name == 'pull_request'
|
|
with:
|
|
name: pull-request
|
|
path: pull_request_number.txt
|
|
|
|
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@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16
|
|
- 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()
|
|
shell: bash
|
|
|
|
test_test_runner:
|
|
name: Test Runner
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
node-version: [16]
|
|
shard: [1/2, 2/2]
|
|
include:
|
|
- os: ubuntu-latest
|
|
node-version: 18
|
|
shard: 1/2
|
|
- os: ubuntu-latest
|
|
node-version: 18
|
|
shard: 2/2
|
|
- os: ubuntu-latest
|
|
node-version: 20
|
|
shard: 1/2
|
|
- os: ubuntu-latest
|
|
node-version: 20
|
|
shard: 2/2
|
|
runs-on: ${{ matrix.os }}
|
|
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.shard }}
|
|
env:
|
|
PWTEST_BLOB_REPORT: 1
|
|
PWTEST_BLOB_SUFFIX: "-${{ matrix.os }}-node${{ matrix.node-version }}"
|
|
if: matrix.os != 'ubuntu-latest'
|
|
- run: xvfb-run npm run ttest -- --shard ${{ matrix.shard }}
|
|
env:
|
|
PWTEST_BLOB_REPORT: 1
|
|
PWTEST_BLOB_SUFFIX: "-${{ matrix.os }}-node${{ matrix.node-version }}"
|
|
if: matrix.os == 'ubuntu-latest'
|
|
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
|
|
if: always()
|
|
shell: bash
|
|
- name: Upload blob report to Azure
|
|
if: always() && github.event_name == 'push'
|
|
run: az storage blob upload-batch -s test-results/blob-report -d '$web/run-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.sha }}' --connection-string "${{ secrets.AZURE_CONNECTION_STRING_FOR_BLOB_REPORT }}"
|
|
- name: Upload blob report to GitHub
|
|
uses: actions/upload-artifact@v3
|
|
if: always() && github.event_name == 'pull_request'
|
|
with:
|
|
name: blob-report-${{ github.run_attempt }}
|
|
path: test-results/blob-report
|
|
retention-days: 30
|
|
- name: Write the pull request number in an file
|
|
if: always() && github.event_name == 'pull_request'
|
|
run: echo '${{ github.event.number }}' > pull_request_number.txt;
|
|
- name: Upload artifact with pull request number
|
|
uses: actions/upload-artifact@v3
|
|
if: always() && github.event_name == 'pull_request'
|
|
with:
|
|
name: pull-request
|
|
path: pull_request_number.txt
|
|
|
|
test_web_components:
|
|
name: Web Components
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16
|
|
- run: npm ci
|
|
env:
|
|
DEBUG: pw:install
|
|
- run: npm run build
|
|
- run: npx playwright install --with-deps
|
|
- run: npm run test-html-reporter
|
|
- run: npm run test-web
|
|
if: always()
|
|
|
|
test_vscode_extension:
|
|
name: VSCode Extension
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16
|
|
- 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
|
|
|
|
test-package-installations:
|
|
name: "Installation Test ${{ matrix.os }}"
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16
|
|
- run: npm ci
|
|
env:
|
|
DEBUG: pw:install
|
|
- run: npm run build
|
|
- run: npx playwright install-deps
|
|
- 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
|
|
|