@@ -21,7 +21,8 @@ permissions:
2121
2222jobs :
2323 lint :
24- runs-on : ubuntu-latest
24+ name : 🔠 Lint project
25+ runs-on : ubuntu-24.04-arm
2526
2627 steps :
2728 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -30,19 +31,70 @@ jobs:
3031 with :
3132 node-version : lts/*
3233
33- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
34- name : Install pnpm
34+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
35+ name : 🟧 Install pnpm
3536 with :
3637 cache : true
3738
38- - name : 📦 Install dependencies
39- run : pnpm install
39+ - name : 📦 Install dependencies (root only, no scripts)
40+ run : pnpm install --filter . --ignore-scripts
4041
4142 - name : 🔠 Lint project
4243 run : pnpm lint
4344
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@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
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@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
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=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+
4495 test :
45- runs-on : ubuntu-latest
96+ name : 🧪 Component tests
97+ runs-on : ubuntu-24.04-arm
4698
4799 steps :
48100 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -51,28 +103,35 @@ jobs:
51103 with :
52104 node-version : lts/*
53105
54- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
55- name : Install pnpm
106+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
107+ name : 🟧 Install pnpm
56108 with :
57109 cache : true
58110
59111 - name : 📦 Install dependencies
60112 run : pnpm install
61113
62114 - name : 🌐 Install browser
63- run : pnpm playwright install
115+ run : pnpm playwright install chromium-headless-shell
64116
65- - name : 💪 Type check
66- run : pnpm test:types
117+ - name : 🧪 Component tests
118+ run : pnpm test:nuxt run --coverage --reporter=junit --outputFile=test-report.junit.xml
67119
68- - name : 🧪 Unit test
69- run : pnpm test:unit
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 }}
70126
71- - name : 🏃 Component tests
72- run : pnpm test:nuxt
127+ - name : ⬆︎ Upload coverage reports to Codecov
128+ uses : codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
129+ env :
130+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
73131
74132 browser :
75- runs-on : ubuntu-latest
133+ name : 🖥️ Browser tests
134+ runs-on : ubuntu-24.04-arm
76135 container :
77136 image : mcr.microsoft.com/playwright:v1.58.0-noble
78137
@@ -83,19 +142,28 @@ jobs:
83142 with :
84143 node-version : lts/*
85144
86- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
87- name : Install pnpm
145+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
146+ name : 🟧 Install pnpm
88147 with :
89148 cache : true
90149
91150 - name : 📦 Install dependencies
92151 run : pnpm install
93152
153+ - name : 🏗️ Build project
154+ run : pnpm build:test
155+ env :
156+ VALIDATE_HTML : true
157+
94158 - name : 🖥️ Test project (browser)
95- run : pnpm test:browser
159+ run : pnpm test:browser:prebuilt
96160
97161 a11y :
98- runs-on : ubuntu-latest
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]
99167
100168 steps :
101169 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -104,24 +172,26 @@ jobs:
104172 with :
105173 node-version : lts/*
106174
107- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
108- name : Install pnpm
175+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
176+ name : 🟧 Install pnpm
109177 with :
110178 cache : true
111179
112180 - name : 📦 Install dependencies
113181 run : pnpm install
114182
115183 - name : 🏗️ Build project
116- run : pnpm build
184+ run : pnpm build:test
117185
118- - name : ♿ Accessibility audit (Lighthouse - dark & light mode)
119- run : ./scripts/lighthouse- a11y.sh
186+ - name : ♿ Accessibility audit (Lighthouse - ${{ matrix.mode }} mode)
187+ run : pnpm test: a11y:prebuilt
120188 env :
121189 LHCI_GITHUB_APP_TOKEN : ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
190+ LIGHTHOUSE_COLOR_MODE : ${{ matrix.mode }}
122191
123192 knip :
124- runs-on : ubuntu-latest
193+ name : 🧹 Unused code check
194+ runs-on : ubuntu-24.04-arm
125195
126196 steps :
127197 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -130,13 +200,38 @@ jobs:
130200 with :
131201 node-version : lts/*
132202
133- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
134- name : Install pnpm
203+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
204+ name : 🟧 Install pnpm
135205 with :
136206 cache : true
137207
138208 - name : 📦 Install dependencies
139209 run : pnpm install
140210
141- - name : 🔍 Check for unused code
211+ - name : 🧹 Check for unused code
142212 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@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
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
0 commit comments