-
Notifications
You must be signed in to change notification settings - Fork 130
140 lines (121 loc) Β· 4.61 KB
/
Copy pathplaywright.yml
File metadata and controls
140 lines (121 loc) Β· 4.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
# This workflow runs Playwright tests on pull requests to the master and stable branches.
# It expects the following npm scripts to be defined in package.json:
# - "playwright": runs the Playwright tests
# - "playwright:install-ci": installs the Playwright browsers for CI (optional)
#
# If you only use the "Desktop Chrome" browser with "channel: chrome" in your Playwright config,
# you can skip the "playwright:install-ci" script as the GitHub Actions runner already has Chrome Browser installed.
#
# For merging the reports, it expects a Playwright merge config file at tests/playwright/merge.config.ts.
# You can adjust the path in the "Merge into HTML Report" step if you have a different location for the merge config file.
# The default configuration would look like this:
# ```js
# export default {
# testDir: 'tests/playwright/e2e', // path to your Playwright tests
# reporter: [['html', { open: 'never' }]],
# }
# ```
name: Playwright Tests
on:
pull_request:
branches:
- main
- stable5.4
permissions:
contents: read
concurrency:
group: playwright-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
playwright-setup:
timeout-minutes: 10
name: Playwright setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Read package.json
uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- name: Set up node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ steps.versions.outputs.node-version }}
- name: Set up npm
run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Install dependencies and build
run: |
npm ci
npm run build --if-present
- name: Save context
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
key: playwright-context-${{ github.run_id }}
path: ./
playwright-tests:
needs: [playwright-setup]
timeout-minutes: 30
name: Playwright tests ${{ matrix.shardIndex }} / ${{ matrix.shardTotal }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
shardIndex: [1, 2] # adjust to your needs
shardTotal: [2]
outputs:
node-version: ${{ steps.versions.outputs.node-version }}
package-manager-version: ${{ steps.versions.outputs.package-manager-version }}
steps:
- name: Restore context
id: cache
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
key: playwright-context-${{ github.run_id }}
path: ./
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: steps.cache.outputs.cache-hit != 'true'
with:
persist-credentials: false
- name: Read package.json
uses: nextcloud-libraries/parse-package-engines-action@122ae05d4257008180a514e1ddeb0c1b9d094bdd # v0.1.0
id: versions
- name: Set up node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ steps.versions.outputs.node-version }}
- name: Set up npm
run: npm i -g 'npm@${{ steps.versions.outputs.package-manager-version }}'
- name: Install dependencies and build
if: steps.cache.outputs.cache-hit != 'true'
run: |
npm ci
npm run build --if-present
- name: Install Playwright browsers
run: npm run playwright:install-ci --if-present
- name: Run Playwright tests
run: npm run playwright -- --shard='${{ matrix.shardIndex }}/${{ matrix.shardTotal }}'
- name: Upload blob report to GitHub Actions Artifacts
if: ${{ !cancelled() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: blob-report-${{ matrix.shardIndex }}
path: blob-report
retention-days: 1
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [playwright-tests]
if: always()
name: playwright-test-summary
steps:
- name: Summary status
run: if ${{ needs.playwright-tests.result != 'success' }}; then exit 1; fi