@@ -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,66 @@ 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
36+ # pnpm cache skipped deliberately as the project is not actually installed here
37+
38+ - name : 🔠 Lint project
39+ run : node scripts/lint.ts
40+
41+ types :
42+ name : 💪 Type check
43+ runs-on : ubuntu-24.04-arm
44+
45+ steps :
46+ - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
47+
48+ - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
49+ with :
50+ node-version : lts/*
51+
52+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
53+ name : 🟧 Install pnpm
3554 with :
3655 cache : true
3756
3857 - name : 📦 Install dependencies
3958 run : pnpm install
4059
41- - name : 🔠 Lint project
42- run : pnpm lint
60+ - name : 💪 Type check
61+ run : pnpm test:types
62+
63+ unit :
64+ name : 🧪 Unit tests
65+ runs-on : ubuntu-24.04-arm
66+
67+ steps :
68+ - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
69+
70+ - uses : actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
71+ with :
72+ node-version : lts/*
73+
74+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
75+ name : 🟧 Install pnpm
76+ with :
77+ cache : true
78+
79+ - name : 📦 Install dependencies
80+ run : pnpm install
81+
82+ - name : 🧪 Unit tests
83+ run : pnpm test:unit run --coverage --reporter=junit --outputFile=test-report.junit.xml
84+
85+ - name : ⬆︎ Upload test results to Codecov
86+ if : ${{ !cancelled() }}
87+ uses : codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1
88+ with :
89+ token : ${{ secrets.CODECOV_TOKEN }}
4390
4491 test :
45- runs-on : ubuntu-latest
92+ name : 🧪 Component tests
93+ runs-on : ubuntu-24.04-arm
4694
4795 steps :
4896 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -51,28 +99,34 @@ jobs:
5199 with :
52100 node-version : lts/*
53101
54- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
55- name : Install pnpm
102+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
103+ name : 🟧 Install pnpm
56104 with :
57105 cache : true
58106
59107 - name : 📦 Install dependencies
60108 run : pnpm install
61109
62110 - name : 🌐 Install browser
63- run : pnpm playwright install
111+ run : pnpm playwright install chromium-headless-shell
64112
65- - name : 💪 Type check
66- run : pnpm test:types
113+ - name : 🧪 Component tests
114+ run : pnpm test:nuxt run --coverage --reporter=junit --outputFile=test-report.junit.xml
67115
68- - name : 🧪 Unit test
69- run : pnpm test:unit
116+ - name : ⬆︎ Upload test results to Codecov
117+ if : ${{ !cancelled() }}
118+ uses : codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3 # v1
119+ with :
120+ token : ${{ secrets.CODECOV_TOKEN }}
70121
71- - name : 🏃 Component tests
72- run : pnpm test:nuxt
122+ - name : ⬆︎ Upload coverage reports to Codecov
123+ uses : codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
124+ env :
125+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
73126
74127 browser :
75- runs-on : ubuntu-latest
128+ name : 🖥️ Browser tests
129+ runs-on : ubuntu-24.04-arm
76130 container :
77131 image : mcr.microsoft.com/playwright:v1.58.0-noble
78132
@@ -83,19 +137,26 @@ jobs:
83137 with :
84138 node-version : lts/*
85139
86- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
87- name : Install pnpm
140+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
141+ name : 🟧 Install pnpm
88142 with :
89143 cache : true
90144
91145 - name : 📦 Install dependencies
92146 run : pnpm install
93147
148+ - name : 🏗️ Build project
149+ run : pnpm build:playwright
150+
94151 - name : 🖥️ Test project (browser)
95- run : pnpm test:browser
152+ run : pnpm test:browser:prebuilt
96153
97154 a11y :
98- runs-on : ubuntu-latest
155+ name : ♿ Accessibility audit
156+ runs-on : ubuntu-latest # See https://github.com/GoogleChrome/lighthouse/discussions/16834
157+ strategy :
158+ matrix :
159+ mode : [dark, light]
99160
100161 steps :
101162 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -104,24 +165,26 @@ jobs:
104165 with :
105166 node-version : lts/*
106167
107- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
108- name : Install pnpm
168+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
169+ name : 🟧 Install pnpm
109170 with :
110171 cache : true
111172
112173 - name : 📦 Install dependencies
113174 run : pnpm install
114175
115176 - name : 🏗️ Build project
116- run : pnpm build
177+ run : NODE_ENV=test pnpm build
117178
118- - name : ♿ Accessibility audit (Lighthouse - dark & light mode)
179+ - name : ♿ Accessibility audit (Lighthouse - ${{ matrix.mode }} mode)
119180 run : ./scripts/lighthouse-a11y.sh
120181 env :
121182 LHCI_GITHUB_APP_TOKEN : ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
183+ LIGHTHOUSE_COLOR_MODE : ${{ matrix.mode }}
122184
123185 knip :
124- runs-on : ubuntu-latest
186+ name : 🧹 Unused code check
187+ runs-on : ubuntu-24.04-arm
125188
126189 steps :
127190 - uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
@@ -130,13 +193,16 @@ jobs:
130193 with :
131194 node-version : lts/*
132195
133- - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
134- name : Install pnpm
196+ - uses : pnpm/action-setup@1e1c8eafbd745f64b1ef30a7d7ed7965034c486c # 1e1c8eafbd745f64b1ef30a7d7ed7965034c486c
197+ name : 🟧 Install pnpm
135198 with :
136199 cache : true
137200
138201 - name : 📦 Install dependencies
139202 run : pnpm install
140203
141- - name : 🔍 Check for unused code
142- run : pnpm knip:production
204+ - name : 🧹 Check for unused code
205+ run : pnpm knip
206+
207+ - name : 🧹 Check for unused production code
208+ run : pnpm knip --production
0 commit comments