From 27bace3c56c8a67e36329b2ed0aa4053075a507d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 29 Jul 2026 01:39:13 +0000 Subject: [PATCH 1/4] fix: prepare prisma before solution tests Co-authored-by: Kent C. Dodds --- .github/workflows/validate.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index e0efb1b7..f892acd5 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -86,12 +86,20 @@ jobs: - name: ๐Ÿ“ฆ Install dependencies run: npm ci - # Workshops ship epicshop/test.js (not .ts). `..s` runs solution apps only. + - name: ๐Ÿ— Prepare solution tests + env: + SKIP_PLAYWRIGHT: true + SKIP_PLAYGROUND: true + run: npm run setup:custom + + # Exercises 1โ€“3 contain Playwright suites, which cannot be collected by + # their `npm test` Vitest command. Exercises 4โ€“11 contain the workshop's + # Vitest solution suites; keep every one of those suites in CI. - name: ๐Ÿงช Run solution tests run: | set -euo pipefail if [ -f ./epicshop/test.js ]; then - node ./epicshop/test.js ..s + node ./epicshop/test.js '4..s,5..s,6..s,7..s,8..s,9..s,10..s,11..s' else echo "No epicshop/test.js in this workshop; skipping solution-app test runner." fi From 36a522254b4174443cff5293597e3e7f101c2b0b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 29 Jul 2026 01:57:49 +0000 Subject: [PATCH 2/4] fix: render nested route in database solution test Co-authored-by: Kent C. Dodds --- .../app/routes/users+/$username.test.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/exercises/11.test-db/03.solution.global-setup/app/routes/users+/$username.test.tsx b/exercises/11.test-db/03.solution.global-setup/app/routes/users+/$username.test.tsx index ece39b4b..fc725078 100644 --- a/exercises/11.test-db/03.solution.global-setup/app/routes/users+/$username.test.tsx +++ b/exercises/11.test-db/03.solution.global-setup/app/routes/users+/$username.test.tsx @@ -80,9 +80,6 @@ test('The user profile when logged in as self', async () => { args.request.headers.set('cookie', cookieHeader) return rootLoader(args) }, - Component: function TestComponent() { - return
Test Component
- }, children: [ { path: 'users/:username', From f569edda3cecfb61942efa16878bb804f60ea30d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 29 Jul 2026 01:57:49 +0000 Subject: [PATCH 3/4] ci: test completed workshop solutions Co-authored-by: Kent C. Dodds --- .github/workflows/validate.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index f892acd5..fb95558e 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -93,13 +93,14 @@ jobs: run: npm run setup:custom # Exercises 1โ€“3 contain Playwright suites, which cannot be collected by - # their `npm test` Vitest command. Exercises 4โ€“11 contain the workshop's - # Vitest solution suites; keep every one of those suites in CI. + # their `npm test` Vitest command. Run every test in the completed Vitest + # solution for exercises 4โ€“11; intermediate steps can intentionally + # demonstrate failing tests that later steps fix. - name: ๐Ÿงช Run solution tests run: | set -euo pipefail if [ -f ./epicshop/test.js ]; then - node ./epicshop/test.js '4..s,5..s,6..s,7..s,8..s,9..s,10..s,11..s' + node ./epicshop/test.js '4.4.s,5.2.s,6.2.s,7.2.s,8.3.s,9.3.s,10.1.s,11.3.s' else echo "No epicshop/test.js in this workshop; skipping solution-app test runner." fi From 207bf9cc73546fac1b45e60e13ed0f7f7729d44d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 29 Jul 2026 02:12:18 +0000 Subject: [PATCH 4/4] ci: run workshop tests on supported Node version Co-authored-by: Kent C. Dodds --- .github/workflows/validate.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index fb95558e..0ee8d45b 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -81,7 +81,9 @@ jobs: - name: โŽ” Setup node uses: actions/setup-node@v4 with: - node-version: 26 + # The workshop's pinned MSW/Undici stack has an AbortSignal realm + # incompatibility on Node 26. Node 22 is supported by package.json. + node-version: 22 - name: ๐Ÿ“ฆ Install dependencies run: npm ci