@@ -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,34 @@ 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 test results to Codecov
121+ if : ${{ !cancelled() }}
122+ uses : codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1
123+ with :
124+ token : ${{ secrets.CODECOV_TOKEN }}
70125
71- - name : 🏃 Component tests
72- run : pnpm test:nuxt
126+ - name : ⬆︎ Upload coverage reports to Codecov
127+ uses : codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
128+ env :
129+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
73130
74131 browser :
75- runs-on : ubuntu-latest
132+ name : 🖥️ Browser tests
133+ runs-on : ubuntu-24.04-arm
76134 container :
77135 image : mcr.microsoft.com/playwright:v1.58.0-noble
78136
@@ -83,19 +141,26 @@ jobs:
83141 with :
84142 node-version : lts/*
85143
86- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
87- name : Install pnpm
144+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
145+ name : 🟧 Install pnpm
88146 with :
89147 cache : true
90148
91149 - name : 📦 Install dependencies
92150 run : pnpm install
93151
152+ - name : 🏗️ Build project
153+ run : pnpm build:playwright
154+
94155 - name : 🖥️ Test project (browser)
95- run : pnpm test:browser
156+ run : pnpm test:browser:prebuilt
96157
97158 a11y :
98- runs-on : ubuntu-latest
159+ name : ♿ Accessibility audit
160+ runs-on : ubuntu-latest # See https://github.com/GoogleChrome/lighthouse/discussions/16834
161+ strategy :
162+ matrix :
163+ mode : [dark, light]
99164
100165 steps :
101166 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -104,24 +169,26 @@ jobs:
104169 with :
105170 node-version : lts/*
106171
107- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
108- name : Install pnpm
172+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
173+ name : 🟧 Install pnpm
109174 with :
110175 cache : true
111176
112177 - name : 📦 Install dependencies
113178 run : pnpm install
114179
115180 - name : 🏗️ Build project
116- run : pnpm build
181+ run : NODE_ENV=test pnpm build
117182
118- - name : ♿ Accessibility audit (Lighthouse - dark & light mode)
183+ - name : ♿ Accessibility audit (Lighthouse - ${{ matrix.mode }} mode)
119184 run : ./scripts/lighthouse-a11y.sh
120185 env :
121186 LHCI_GITHUB_APP_TOKEN : ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
187+ LIGHTHOUSE_COLOR_MODE : ${{ matrix.mode }}
122188
123189 knip :
124- runs-on : ubuntu-latest
190+ name : 🧹 Unused code check
191+ runs-on : ubuntu-24.04-arm
125192
126193 steps :
127194 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -130,13 +197,16 @@ jobs:
130197 with :
131198 node-version : lts/*
132199
133- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
134- name : Install pnpm
200+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
201+ name : 🟧 Install pnpm
135202 with :
136203 cache : true
137204
138205 - name : 📦 Install dependencies
139206 run : pnpm install
140207
141- - name : 🔍 Check for unused code
208+ - name : 🧹 Check for unused code
142209 run : pnpm knip
210+
211+ - name : 🧹 Check for unused production code
212+ run : pnpm knip --production
0 commit comments