-
Notifications
You must be signed in to change notification settings - Fork 47
163 lines (156 loc) · 6.09 KB
/
Copy pathtest-ui.yml
File metadata and controls
163 lines (156 loc) · 6.09 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
name: "Test UI"
on:
workflow_dispatch:
inputs:
coverage:
description: "Run the Chromium component coverage workflow"
required: true
default: false
type: boolean
push:
branches:
- "main"
- "release-*"
pull_request:
paths:
- "*"
- ".github/workflows/test-ui.yml"
- "vuu-ui/**"
jobs:
lint-and-typecheck:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
- name: Install Node & dependencies
uses: ./.github/actions/setup-vuu-ui
- run: cd ./vuu-ui && npm run build:worker
- run: cd ./vuu-ui && npm run lint
- run: cd ./vuu-ui && npm run typecheck
vitest:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
- name: Install Node & dependencies
uses: ./.github/actions/setup-vuu-ui
- run: cd ./vuu-ui && npm run test:vite
playwright-gallery-build:
runs-on: ubuntu-latest
name: playwright-gallery-build
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
- name: Install Node & dependencies
uses: ./.github/actions/setup-vuu-ui
- name: Build Worker
run: cd ./vuu-ui && npm run build:worker
- name: Build Playwright gallery
env:
PLAYWRIGHT_COVERAGE: ${{ inputs.coverage == true && '1' || '0' }}
run: cd ./vuu-ui && npm run playwright:gallery:build
- name: Upload Playwright gallery
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: playwright-gallery
path: vuu-ui/playwright/gallery/dist/
retention-days: 1
playwright-component:
runs-on: ubuntu-latest
name: playwright-component (${{ matrix.browser }}, shard ${{ matrix.shard }}/2)
needs: playwright-gallery-build
strategy:
matrix:
browser: [chromium, firefox, webkit]
shard: [1, 2]
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
- name: Install Node & dependencies
uses: ./.github/actions/setup-vuu-ui
- name: Download Playwright gallery
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
name: playwright-gallery
path: vuu-ui/playwright/gallery/dist
- name: Build Worker
run: cd ./vuu-ui && npm run build:worker
- name: Install Playwright Browser
run: cd ./vuu-ui && npm exec -- playwright install --with-deps ${{ matrix.browser }}
- name: Run Playwright component tests
env:
PLAYWRIGHT_COVERAGE: ${{ inputs.coverage == true && matrix.browser == 'chromium' && '1' || '0' }}
run: cd ./vuu-ui && npm exec -- playwright test --config=playwright.config.ts --project=components-${{ matrix.browser }} --shard=${{ matrix.shard }}/2
- name: Upload blob report to GitHub Actions Artifacts
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
if: always()
with:
name: blob-report-${{ matrix.browser }}-${{ matrix.shard }}-of-2
path: vuu-ui/blob-report/
retention-days: 10
- name: Upload Chromium coverage data
if: always() && inputs.coverage == true && matrix.browser == 'chromium'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: coverage-data-${{ matrix.browser }}-${{ matrix.shard }}-of-2
path: vuu-ui/playwright/coverage-data/
retention-days: 10
playwright-merge-reports:
runs-on: ubuntu-latest
needs: playwright-component
if: always()
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
- name: Download blob reports from GitHub Actions Artifacts
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
path: all-blob-reports
pattern: blob-report-*
merge-multiple: true
- name: Download Chromium coverage data
if: inputs.coverage == true
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
path: all-coverage-data
pattern: coverage-data-*
merge-multiple: true
- name: Install Node & dependencies
uses: ./.github/actions/setup-vuu-ui
- name: Merge into HTML and JSON Reports
run: PLAYWRIGHT_JSON_OUTPUT_FILE=playwright-report/test-results.json npx playwright merge-reports --reporter html,json ./all-blob-reports
- name: Generate Playwright coverage report
if: inputs.coverage == true
run: |
mkdir -p ./vuu-ui/playwright/coverage-data
cp ./all-coverage-data/*.json ./vuu-ui/playwright/coverage-data/
cd ./vuu-ui && npm run playwright:coverage 2>&1 | tee -a "$GITHUB_STEP_SUMMARY"
- name: Upload Playwright coverage report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
if: always() && inputs.coverage == true
with:
name: playwright-coverage
path: vuu-ui/playwright/coverage/
retention-days: 10
- name: Upload Merged Playwright Report
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 10
- name: Add Playwright Results to Summary
if: always()
run: ./.github/scripts/generate-playwright-summary.sh playwright-report/test-results.json >> $GITHUB_STEP_SUMMARY
# ensure the vuu example still builds
vuu-app-build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
- name: Install Node & dependencies
uses: ./.github/actions/setup-vuu-ui
- name: Build Vuu Libraries
run: cd ./vuu-ui && npm run build
- name: Build Vuu app
run: cd ./vuu-ui && npm run build:mf