Merge pull request #6335 from nextcloud-libraries/backport/6259/next #262
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors | |
# SPDX-License-Identifier: MIT | |
name: Playwright Tests | |
on: | |
push: | |
branches: [ main, next ] | |
pull_request: | |
branches: [ main, next ] | |
jobs: | |
playwright-tests: | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
shardIndex: [1, 2] | |
shardTotal: [2] | |
outputs: | |
nodeVersion: ${{ steps.versions.outputs.nodeVersion }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Read package.json node and npm engines version | |
uses: skjnldsv/read-package-engines-version-actions@v3 | |
id: versions | |
with: | |
fallbackNode: '^20' | |
fallbackNpm: '^10' | |
- name: Set up node ${{ steps.versions.outputs.nodeVersion }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ steps.versions.outputs.nodeVersion }} | |
- name: Set up npm ${{ steps.versions.outputs.npmVersion }} | |
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" | |
- name: Install dependencies | |
run: npm ci | |
- name: Install Playwright browsers | |
run: npx playwright install --with-deps | |
- name: Run Playwright tests | |
run: npm run test:component -- --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} | |
- name: Upload blob report to GitHub Actions Artifacts | |
if: ${{ !cancelled() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: blob-report-${{ matrix.shardIndex }} | |
path: blob-report | |
retention-days: 1 | |
merge-reports: | |
# Merge reports after playwright-tests, even if some shards have failed | |
if: ${{ !cancelled() }} | |
needs: [playwright-tests] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ needs.playwright-tests.outputs.nodeVersion }} | |
- name: Install dependencies | |
run: npm ci | |
- name: Download blob reports from GitHub Actions Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: all-blob-reports | |
pattern: blob-report-* | |
merge-multiple: true | |
- name: Merge into HTML Report | |
run: npx playwright merge-reports --reporter html,github ./all-blob-reports | |
- name: Upload HTML report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: html-report--attempt-${{ github.run_attempt }} | |
path: playwright-report | |
retention-days: 7 | |
- name: Show the logs | |
run: | | |
echo 'To view the report:' | |
echo ' 1. Extract the folder from the zip file' | |
echo ' 2. run "npx playwright show-report name-of-my-extracted-playwright-report"' | |
summary: | |
permissions: | |
contents: none | |
runs-on: ubuntu-latest | |
needs: [playwright-tests] | |
if: always() | |
name: playwright-test-summary | |
steps: | |
- name: Summary status | |
run: if ${{ needs.playwright-tests.result != 'success' }}; then exit 1; fi |