Compressed size for `tests 1` blob report is 19Mb whil uncompressed one is 211Mb. Also according to [GitHub policy](https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts ) it is uncompressed size that is used for billing: "Artifacts are uploaded during a workflow run, and you can view an artifact's name and size in the UI. When an artifact is downloaded using the GitHub UI, all files that were individually uploaded as part of the artifact get zipped together into a single file. This means that billing is calculated based on the size of the uploaded artifact and not the size of the zip file."
260 lines
8.5 KiB
YAML
260 lines
8.5 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: Zip blob report
|
|
if: always() && github.event_name == 'pull_request'
|
|
shell: bash
|
|
run: |
|
|
cd test-results
|
|
zip -r ${{ github.workspace }}/blob-report.zip 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: blob-report.zip
|
|
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: Zip blob report
|
|
if: always() && github.event_name == 'pull_request'
|
|
shell: bash
|
|
run: |
|
|
cd test-results
|
|
zip -r ${{ github.workspace }}/blob-report.zip 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: blob-report.zip
|
|
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
|
|
|