Skip to content

Commit 9b9006d

Browse files
committed
Restructure typetests to reduce duplication
- Only run on push on master - Change React matrix to do 18 for edge TS versions, 19 for all - Change portability matrix to do Node for edge TS versions, Bundler for all
1 parent 28bf7f9 commit 9b9006d

File tree

1 file changed

+138
-36
lines changed

1 file changed

+138
-36
lines changed

.github/workflows/tests.yml

Lines changed: 138 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
name: CI
2-
on: [push, pull_request]
2+
on:
3+
push:
4+
branches: [master]
5+
pull_request:
36
defaults:
47
run:
58
working-directory: ./packages/toolkit
@@ -70,18 +73,12 @@ jobs:
7073
matrix:
7174
node: ['24.x']
7275
react:
73-
[
74-
{
75-
version: '^18',
76-
types: ^18,
77-
react-dom: { version: '^18', types: '^18' },
78-
},
79-
{
80-
version: '^19',
81-
types: '^19',
82-
react-dom: { version: '^19', types: '^19' },
83-
},
84-
]
76+
- version: '^18'
77+
types: '^18'
78+
react-dom: { version: '^18', types: '^18' }
79+
- version: '^19'
80+
types: '^19'
81+
react-dom: { version: '^19', types: '^19' }
8582

8683
steps:
8784
- name: Checkout repo
@@ -137,21 +134,90 @@ jobs:
137134
strategy:
138135
fail-fast: false
139136
matrix:
140-
node: ['24.x']
141-
ts: ['5.4', '5.5', '5.6', '5.7', '5.8', '5.9', 'next']
142-
react:
143-
[
144-
{
145-
version: '^18',
146-
types: ^18,
147-
react-dom: { version: '^18', types: '^18' },
148-
},
149-
{
150-
version: '^19',
151-
types: '^19',
152-
react-dom: { version: '^19', types: '^19' },
153-
},
154-
]
137+
# Sparse matrix: All TS versions with React 19, boundary TS versions with React 18
138+
include:
139+
# React 19 × all TS versions
140+
- node: '24.x'
141+
ts: '5.4'
142+
react:
143+
{
144+
version: '^19',
145+
types: '^19',
146+
react-dom: { version: '^19', types: '^19' },
147+
}
148+
- node: '24.x'
149+
ts: '5.5'
150+
react:
151+
{
152+
version: '^19',
153+
types: '^19',
154+
react-dom: { version: '^19', types: '^19' },
155+
}
156+
- node: '24.x'
157+
ts: '5.6'
158+
react:
159+
{
160+
version: '^19',
161+
types: '^19',
162+
react-dom: { version: '^19', types: '^19' },
163+
}
164+
- node: '24.x'
165+
ts: '5.7'
166+
react:
167+
{
168+
version: '^19',
169+
types: '^19',
170+
react-dom: { version: '^19', types: '^19' },
171+
}
172+
- node: '24.x'
173+
ts: '5.8'
174+
react:
175+
{
176+
version: '^19',
177+
types: '^19',
178+
react-dom: { version: '^19', types: '^19' },
179+
}
180+
- node: '24.x'
181+
ts: '5.9'
182+
react:
183+
{
184+
version: '^19',
185+
types: '^19',
186+
react-dom: { version: '^19', types: '^19' },
187+
}
188+
- node: '24.x'
189+
ts: 'next'
190+
react:
191+
{
192+
version: '^19',
193+
types: '^19',
194+
react-dom: { version: '^19', types: '^19' },
195+
}
196+
# React 18 × boundary TS versions only (5.4, 5.8, next)
197+
- node: '24.x'
198+
ts: '5.4'
199+
react:
200+
{
201+
version: '^18',
202+
types: '^18',
203+
react-dom: { version: '^18', types: '^18' },
204+
}
205+
- node: '24.x'
206+
ts: '5.8'
207+
react:
208+
{
209+
version: '^18',
210+
types: '^18',
211+
react-dom: { version: '^18', types: '^18' },
212+
}
213+
- node: '24.x'
214+
ts: 'next'
215+
react:
216+
{
217+
version: '^18',
218+
types: '^18',
219+
react-dom: { version: '^18', types: '^18' },
220+
}
155221

156222
steps:
157223
- name: Checkout repo
@@ -313,14 +379,50 @@ jobs:
313379
strategy:
314380
fail-fast: false
315381
matrix:
316-
node: ['24.x']
317-
ts: ['5.4', '5.5', '5.6', '5.7', '5.8', '5.9', 'next']
318-
example:
319-
[
320-
{ name: 'bundler', moduleResolution: 'Bundler' },
321-
{ name: 'nodenext-cjs', moduleResolution: 'NodeNext' },
322-
{ name: 'nodenext-esm', moduleResolution: 'NodeNext' },
323-
]
382+
# Sparse matrix: All TS versions with bundler, boundary TS versions with nodenext
383+
include:
384+
# bundler × all TS versions
385+
- node: '24.x'
386+
ts: '5.4'
387+
example: { name: 'bundler', moduleResolution: 'Bundler' }
388+
- node: '24.x'
389+
ts: '5.5'
390+
example: { name: 'bundler', moduleResolution: 'Bundler' }
391+
- node: '24.x'
392+
ts: '5.6'
393+
example: { name: 'bundler', moduleResolution: 'Bundler' }
394+
- node: '24.x'
395+
ts: '5.7'
396+
example: { name: 'bundler', moduleResolution: 'Bundler' }
397+
- node: '24.x'
398+
ts: '5.8'
399+
example: { name: 'bundler', moduleResolution: 'Bundler' }
400+
- node: '24.x'
401+
ts: '5.9'
402+
example: { name: 'bundler', moduleResolution: 'Bundler' }
403+
- node: '24.x'
404+
ts: 'next'
405+
example: { name: 'bundler', moduleResolution: 'Bundler' }
406+
# nodenext-cjs × boundary TS versions only (5.4, 5.8, next)
407+
- node: '24.x'
408+
ts: '5.4'
409+
example: { name: 'nodenext-cjs', moduleResolution: 'NodeNext' }
410+
- node: '24.x'
411+
ts: '5.8'
412+
example: { name: 'nodenext-cjs', moduleResolution: 'NodeNext' }
413+
- node: '24.x'
414+
ts: 'next'
415+
example: { name: 'nodenext-cjs', moduleResolution: 'NodeNext' }
416+
# nodenext-esm × boundary TS versions only (5.4, 5.8, next)
417+
- node: '24.x'
418+
ts: '5.4'
419+
example: { name: 'nodenext-esm', moduleResolution: 'NodeNext' }
420+
- node: '24.x'
421+
ts: '5.8'
422+
example: { name: 'nodenext-esm', moduleResolution: 'NodeNext' }
423+
- node: '24.x'
424+
ts: 'next'
425+
example: { name: 'nodenext-esm', moduleResolution: 'NodeNext' }
324426
steps:
325427
- name: Checkout repo
326428
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5

0 commit comments

Comments
 (0)