forked from
npmx.dev/npmx.dev
[READ-ONLY]
a fast, modern browser for the npm registry
1name: ci
2
3on:
4 pull_request:
5 branches:
6 - main
7 push:
8 branches:
9 - main
10 merge_group:
11 branches:
12 - main
13
14# cancel in-progress runs on new commits to same PR (gitub.event.number)
15concurrency:
16 group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
17 cancel-in-progress: true
18
19permissions:
20 contents: read
21
22jobs:
23 lint:
24 name: 🔠 Lint project
25 runs-on: ubuntu-24.04-arm
26
27 steps:
28 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
29
30 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
31 with:
32 node-version: lts/*
33
34 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
35 name: 🟧 Install pnpm
36 with:
37 cache: true
38
39 - name: 📦 Install dependencies (root only, no scripts)
40 run: pnpm install --filter . --ignore-scripts
41
42 - name: 🔠 Lint project
43 run: pnpm lint
44
45 types:
46 name: 💪 Type check
47 runs-on: ubuntu-24.04-arm
48
49 steps:
50 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
51
52 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
53 with:
54 node-version: lts/*
55
56 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
57 name: 🟧 Install pnpm
58 with:
59 cache: true
60
61 - name: 📦 Install dependencies
62 run: pnpm install
63
64 - name: 💪 Type check
65 run: pnpm test:types
66
67 unit:
68 name: 🧪 Unit tests
69 runs-on: ubuntu-24.04-arm
70
71 steps:
72 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
73
74 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
75 with:
76 node-version: lts/*
77
78 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
79 name: 🟧 Install pnpm
80 with:
81 cache: true
82
83 - name: 📦 Install dependencies
84 run: pnpm install
85
86 - name: 🧪 Unit tests
87 run: pnpm test:unit run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml
88
89 - name: ⬆︎ Upload test results to Codecov
90 if: ${{ !cancelled() }}
91 uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1
92 with:
93 token: ${{ secrets.CODECOV_TOKEN }}
94
95 test:
96 name: 🧪 Component tests
97 runs-on: ubuntu-24.04-arm
98
99 steps:
100 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
101
102 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
103 with:
104 node-version: lts/*
105
106 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
107 name: 🟧 Install pnpm
108 with:
109 cache: true
110
111 - name: 📦 Install dependencies
112 run: pnpm install
113
114 - name: 🌐 Install browser
115 run: pnpm playwright install chromium-headless-shell
116
117 - name: 🧪 Component tests
118 run: pnpm test:nuxt run --coverage --reporter=default --reporter=junit --outputFile=test-report.junit.xml
119
120 - name: ⬆︎ Upload coverage reports to Codecov
121 uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
122 with:
123 report_type: test_results
124 env:
125 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
126
127 - name: ⬆︎ Upload coverage reports to Codecov
128 uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
129 env:
130 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
131
132 browser:
133 name: 🖥️ Browser tests
134 runs-on: ubuntu-24.04-arm
135 container:
136 image: mcr.microsoft.com/playwright:v1.58.0-noble
137
138 steps:
139 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
140
141 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
142 with:
143 node-version: lts/*
144
145 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
146 name: 🟧 Install pnpm
147 with:
148 cache: true
149
150 - name: 📦 Install dependencies
151 run: pnpm install
152
153 - name: 🏗️ Build project
154 run: pnpm build:test
155 env:
156 VALIDATE_HTML: true
157
158 - name: 🖥️ Test project (browser)
159 run: pnpm test:browser:prebuilt
160
161 a11y:
162 name: ♿ Accessibility audit
163 runs-on: ubuntu-latest # See https://github.com/GoogleChrome/lighthouse/discussions/16834
164 strategy:
165 matrix:
166 mode: [dark, light]
167
168 steps:
169 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
170
171 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
172 with:
173 node-version: lts/*
174
175 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
176 name: 🟧 Install pnpm
177 with:
178 cache: true
179
180 - name: 📦 Install dependencies
181 run: pnpm install
182
183 - name: 🏗️ Build project
184 run: pnpm build:test
185
186 - name: ♿ Accessibility audit (Lighthouse - ${{ matrix.mode }} mode)
187 run: pnpm test:a11y:prebuilt
188 env:
189 LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
190 LIGHTHOUSE_COLOR_MODE: ${{ matrix.mode }}
191
192 knip:
193 name: 🧹 Unused code check
194 runs-on: ubuntu-24.04-arm
195
196 steps:
197 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
198
199 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
200 with:
201 node-version: lts/*
202
203 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
204 name: 🟧 Install pnpm
205 with:
206 cache: true
207
208 - name: 📦 Install dependencies
209 run: pnpm install
210
211 - name: 🧹 Check for unused code
212 run: pnpm knip
213
214 - name: 🧹 Check for unused production code
215 run: pnpm knip --production
216
217 i18n:
218 name: 🌐 i18n validation
219 runs-on: ubuntu-24.04-arm
220
221 steps:
222 - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
223
224 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
225 with:
226 node-version: lts/*
227
228 - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c
229 name: 🟧 Install pnpm
230 with:
231 cache: true
232
233 - name: 📦 Install dependencies (root only, no scripts)
234 run: pnpm install --filter . --ignore-scripts
235
236 - name: 🌐 Check for missing or dynamic i18n keys
237 run: pnpm i18n:report
238
239 - name: 🌐 Check i18n schema is up to date
240 run: |
241 pnpm i18n:schema
242 git diff --exit-code i18n/schema.json