Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch test runner from Jest to Vitest #1609

Merged
merged 16 commits into from
Mar 26, 2023
Merged

Switch test runner from Jest to Vitest #1609

merged 16 commits into from
Mar 26, 2023

Conversation

niccholaspage
Copy link
Contributor

@niccholaspage niccholaspage commented Mar 9, 2023

Summary

This PR switches the test runner from Jest to Vitest. By implementing this change, I was hoping to see some speed improvements in the time it takes to run tests, especially when it comes to tests running in CI. On my MacBook Pro with an M2 Max, I saw a bit of an improvement running the following command before and after this change:
pnpm turbo run test --force

Run Jest (af20f00) Vitest
1 3.097 sec 2.534 sec
2 3.179 sec 2.553 sec
3 3.072 sec 2.547 sec
4 3.13 sec 2.537 sec
5 3.173 sec 2.537 sec
Average 3.1302 sec 2.5416 sec

This is one of my first PRs to an open source project, so please let me know if there is anything I can do or any changes I can make to help with this. I know it's a bit much to digest due to a lot of the changes seen here, and there are some interesting things I did that we might need to work around, like the usage of vite-plugin-solid as a dependency. I am open to making any changes as needed to help increase the viability of this PR. There are a couple of things we can tweak when it comes to running tests in CI as well, especially the threading and isolation settings in Vitest to see if it would speed up a CI run compared to my own computer locally, where it didn't seem to help.

How did you test this change?

I tested this change by making sure all of the tests passed and that Solid still built as expected. I compared the distributable files before and after my changes and made sure that they matched exactly too, to make sure nothing weird was affected when I was doing this migration.

SHA sums for distributable files before changes
d3004f5828921f4d8774799b488ae66636138319  packages/solid-element/dist/index.d.ts
6982d880c12c641061f36228e17426cd7bfdad6b  packages/solid-element/dist/index.js
122496ce27d5daac7d8a34d1ce3cb14bebe3d07c  packages/solid/dist/dev.cjs
2456670e85464922f6b3af99c613359497e3224f  packages/solid/dist/dev.js
9c936e436801b24eca0d5084f599c7fd7808e6fa  packages/solid/dist/server.cjs
82628e45b59d8cb60a7c885aadd51f9813330d52  packages/solid/dist/server.js
0f432c81bc7ce4ac620ee17227d59d6816a594cf  packages/solid/dist/solid.cjs
9fcd63bcf5accdc9e2976181fdb2268208ddfe33  packages/solid/dist/solid.js
91871cdb89291790c4f9e25fcaacd7eb08c8d046  packages/solid/h/dist/h.cjs
bff0b532c65ce80a9d33af8e35b5f52bab51ae36  packages/solid/h/dist/h.js
a3e46e09c1e6e0fac767f0e13ce99d1a7f162164  packages/solid/h/jsx-runtime/dist/jsx.cjs
10839b12aa3b57367077242a674655e458178b7c  packages/solid/h/jsx-runtime/dist/jsx.js
7499b07ae89e32fcc3cebdc6a451f5a27b338eea  packages/solid/html/dist/html.cjs
b434f64175380a20ad2de68aa207edd663229cc8  packages/solid/html/dist/html.js
340bb304ed6bb6dc86772115783b87a531b3d9ef  packages/solid/store/dist/dev.cjs
5fddb3d177d0315f867a374690817b58dd3defe5  packages/solid/store/dist/dev.js
429c5e52fadbe054f9e1e0986a54cc9afb94a362  packages/solid/store/dist/server.cjs
983d5d9f9bef17be83ecbdd903e0d07bd3a5a6af  packages/solid/store/dist/server.js
8a0f61051746e3eda4b3d1dc4b27e763aedeec71  packages/solid/store/dist/store.cjs
dab1e14e6f6a770c391c9b40256a394e1ba851db  packages/solid/store/dist/store.js
47232b1aa9a693fde2ad0c9149b216204fb5909d  packages/solid/universal/dist/dev.cjs
1c821f871705e4d907794d6cdedb04bf68ec62dd  packages/solid/universal/dist/dev.js
47232b1aa9a693fde2ad0c9149b216204fb5909d  packages/solid/universal/dist/universal.cjs
1c821f871705e4d907794d6cdedb04bf68ec62dd  packages/solid/universal/dist/universal.js
fc8976088386cde86fa7da59546d8593f5395a65  packages/solid/web/dist/dev.cjs
36a006665a1eadabf6349f269fc940a39146b6f9  packages/solid/web/dist/dev.js
72044be431d5459a67f2c756c04470febda41f66  packages/solid/web/dist/server.cjs
5f0359283bfa4d4a867a51b20a4ece230f3fbd03  packages/solid/web/dist/server.js
d5133ea6aeb55627e427d646ee442c7700e341c7  packages/solid/web/dist/web.cjs
39dc2e1e273a2b83d60207c6416a26b5f087a3be  packages/solid/web/dist/web.js
SHA sums for distributable files after changes
d3004f5828921f4d8774799b488ae66636138319  packages/solid-element/dist/index.d.ts
6982d880c12c641061f36228e17426cd7bfdad6b  packages/solid-element/dist/index.js
122496ce27d5daac7d8a34d1ce3cb14bebe3d07c  packages/solid/dist/dev.cjs
2456670e85464922f6b3af99c613359497e3224f  packages/solid/dist/dev.js
9c936e436801b24eca0d5084f599c7fd7808e6fa  packages/solid/dist/server.cjs
82628e45b59d8cb60a7c885aadd51f9813330d52  packages/solid/dist/server.js
0f432c81bc7ce4ac620ee17227d59d6816a594cf  packages/solid/dist/solid.cjs
9fcd63bcf5accdc9e2976181fdb2268208ddfe33  packages/solid/dist/solid.js
91871cdb89291790c4f9e25fcaacd7eb08c8d046  packages/solid/h/dist/h.cjs
bff0b532c65ce80a9d33af8e35b5f52bab51ae36  packages/solid/h/dist/h.js
a3e46e09c1e6e0fac767f0e13ce99d1a7f162164  packages/solid/h/jsx-runtime/dist/jsx.cjs
10839b12aa3b57367077242a674655e458178b7c  packages/solid/h/jsx-runtime/dist/jsx.js
7499b07ae89e32fcc3cebdc6a451f5a27b338eea  packages/solid/html/dist/html.cjs
b434f64175380a20ad2de68aa207edd663229cc8  packages/solid/html/dist/html.js
340bb304ed6bb6dc86772115783b87a531b3d9ef  packages/solid/store/dist/dev.cjs
5fddb3d177d0315f867a374690817b58dd3defe5  packages/solid/store/dist/dev.js
429c5e52fadbe054f9e1e0986a54cc9afb94a362  packages/solid/store/dist/server.cjs
983d5d9f9bef17be83ecbdd903e0d07bd3a5a6af  packages/solid/store/dist/server.js
8a0f61051746e3eda4b3d1dc4b27e763aedeec71  packages/solid/store/dist/store.cjs
dab1e14e6f6a770c391c9b40256a394e1ba851db  packages/solid/store/dist/store.js
47232b1aa9a693fde2ad0c9149b216204fb5909d  packages/solid/universal/dist/dev.cjs
1c821f871705e4d907794d6cdedb04bf68ec62dd  packages/solid/universal/dist/dev.js
47232b1aa9a693fde2ad0c9149b216204fb5909d  packages/solid/universal/dist/universal.cjs
1c821f871705e4d907794d6cdedb04bf68ec62dd  packages/solid/universal/dist/universal.js
fc8976088386cde86fa7da59546d8593f5395a65  packages/solid/web/dist/dev.cjs
36a006665a1eadabf6349f269fc940a39146b6f9  packages/solid/web/dist/dev.js
72044be431d5459a67f2c756c04470febda41f66  packages/solid/web/dist/server.cjs
5f0359283bfa4d4a867a51b20a4ece230f3fbd03  packages/solid/web/dist/server.js
d5133ea6aeb55627e427d646ee442c7700e341c7  packages/solid/web/dist/web.cjs
39dc2e1e273a2b83d60207c6416a26b5f087a3be  packages/solid/web/dist/web.js
Expand me to see shell output from running the tests
➜  solid git:(main) pnpm turbo run test --force
• Packages in scope: babel-preset-solid, solid-element, solid-js, solid-ssr, test-integration
• Running test in 5 packages
solid-js:build: cache bypass, force executing 2fa4a869e2e8af89
solid-js:link: cache bypass, force executing a56334fb36af7cf1
babel-preset-solid:test: cache bypass, force executing 532d364b012c2659
solid-js:test: cache bypass, force executing 54466c65a67b82bb
solid-js:test: 
solid-js:test: > solid-js@1.6.12 test /Users/nicholas/projects/node/solid/packages/solid
solid-js:test: > vitest run
solid-js:test: 
solid-js:link: 
solid-js:link: > solid-js@1.6.12 link /Users/nicholas/projects/node/solid/packages/solid
solid-js:link: > symlink-dir . node_modules/solid-js
solid-js:link: 
solid-js:build: 
solid-js:build: > solid-js@1.6.12 build /Users/nicholas/projects/node/solid/packages/solid
solid-js:build: > npm-run-all -nl build:*
solid-js:build: 
babel-preset-solid:test: 
babel-preset-solid:test: > babel-preset-solid@1.6.12 test /Users/nicholas/projects/node/solid/packages/babel-preset-solid
babel-preset-solid:test: > node test.js
babel-preset-solid:test: 
solid-js:build: [build:clean] 
solid-js:build: [build:clean] > solid-js@1.6.12 build:clean /Users/nicholas/projects/node/solid/packages/solid/package.json
solid-js:build: [build:clean] > rimraf dist/ coverage/ store/dist/ web/dist/ h/dist/ h/jsx-runtime/dist html/dist/ 
solid-js:build: [build:clean] 
babel-preset-solid:test: passed
solid-js:build: [build:clean] 
solid-js:build: [build:clean] > solid-js@1.6.12 build:clean /Users/nicholas/projects/node/solid/packages/solid
solid-js:build: [build:clean] > rimraf dist/ coverage/ store/dist/ web/dist/ h/dist/ h/jsx-runtime/dist html/dist/
solid-js:build: [build:clean] 
solid-js:test: 
solid-js:test:  RUN  v0.29.2 /Users/nicholas/projects/node/solid/packages/solid
solid-js:test: 
solid-js:test: (node:96121) ExperimentalWarning: Custom ESM Loaders is an experimental feature and might change at any time
solid-js:test: (Use `node --trace-warnings ...` to show where the warning was created)
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] > solid-js@1.6.12 build:js /Users/nicholas/projects/node/solid/packages/solid/package.json
solid-js:build: [build:js   ] > rollup -c 
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] > solid-js@1.6.12 build:js /Users/nicholas/projects/node/solid/packages/solid
solid-js:build: [build:js   ] > rollup -c
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] src/index.ts → dist/solid.cjs, dist/solid.js...
solid-js:test:  ✓ test/array.spec.ts  (4 tests) 3ms
solid-js:test:  ✓ test/component.spec.ts  (12 tests) 3ms
solid-js:test:  ✓ test/dev.spec.ts  (6 tests) 2ms
solid-js:test:  ✓ test/external-source.spec.ts  (1 test)
solid-js:test:  ✓ test/observable.spec.ts  (6 tests) 1ms
solid-js:test:  ✓ test/resource.spec.ts  (9 tests) 4ms
solid-js:test:  ✓ test/scheduler.spec.ts  (3 tests) 4ms
solid-js:build: [build:js   ] created dist/solid.cjs, dist/solid.js in 348ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] src/server/index.ts → dist/server.cjs, dist/server.js...
solid-js:build: [build:js   ] created dist/server.cjs, dist/server.js in 70ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] src/index.ts → dist/dev.cjs, dist/dev.js...
solid-js:build: [build:js   ] created dist/dev.cjs, dist/dev.js in 149ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] store/src/index.ts → store/dist/store.cjs, store/dist/store.js...
solid-js:build: [build:js   ] created store/dist/store.cjs, store/dist/store.js in 51ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] store/src/server.ts → store/dist/server.cjs, store/dist/server.js...
solid-js:build: [build:js   ] created store/dist/server.cjs, store/dist/server.js in 13ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] store/src/index.ts → store/dist/dev.cjs, store/dist/dev.js...
solid-js:build: [build:js   ] created store/dist/dev.cjs, store/dist/dev.js in 50ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] web/src/index.ts → web/dist/web.cjs, web/dist/web.js...
solid-js:test:  ✓ test/signals.memo.spec.ts  (20 tests) 591ms
solid-js:build: [build:js   ] created web/dist/web.cjs, web/dist/web.js in 71ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] web/server/index.ts → web/dist/server.cjs, web/dist/server.js...
solid-js:build: [build:js   ] created web/dist/server.cjs, web/dist/server.js in 64ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] web/src/index.ts → web/dist/dev.cjs, web/dist/dev.js...
solid-js:test:  ✓ test/signals.spec.ts  (51 tests) 130ms
solid-js:test:  ✓ store/test/modifiers.spec.ts  (21 tests) 3ms
solid-js:build: [build:js   ] created web/dist/dev.cjs, web/dist/dev.js in 60ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] universal/src/index.ts → universal/dist/universal.cjs, universal/dist/universal.js...
solid-js:test:  ✓ store/test/mutable.spec.ts  (21 tests) 24ms
solid-js:build: [build:js   ] created universal/dist/universal.cjs, universal/dist/universal.js in 26ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] universal/src/index.ts → universal/dist/dev.cjs, universal/dist/dev.js...
solid-js:test: stderr | store/test/store.spec.ts > State immutability > Setting a property
solid-js:test: Cannot mutate a Store directly
solid-js:test: 
solid-js:test: stderr | store/test/store.spec.ts > State immutability > Deleting a property
solid-js:test: Cannot mutate a Store directly
solid-js:test: 
solid-js:test: stderr | store/test/store.spec.ts > State immutability > Immutable state is not mutable even inside setter
solid-js:test: Cannot mutate a Store directly
solid-js:test: 
solid-js:build: [build:js   ] created universal/dist/dev.cjs, universal/dist/dev.js in 25ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] html/src/index.ts → html/dist/html.cjs, html/dist/html.js...
solid-js:test:  ✓ store/test/store.spec.ts  (42 tests) 26ms
solid-js:build: [build:js   ] created html/dist/html.cjs, html/dist/html.js in 38ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] h/src/index.ts → h/dist/h.cjs, h/dist/h.js...
solid-js:build: [build:js   ] created h/dist/h.cjs, h/dist/h.js in 16ms
solid-js:build: [build:js   ] 
solid-js:build: [build:js   ] h/jsx-runtime/src/index.ts → h/jsx-runtime/dist/jsx.cjs, h/jsx-runtime/dist/jsx.js...
solid-js:build: [build:js   ] created h/jsx-runtime/dist/jsx.cjs, h/jsx-runtime/dist/jsx.js in 5ms
test-integration:test: cache bypass, force executing 5c380b91d28055b3
solid-js:test:  ✓ web/test/context.spec.tsx  (7 tests) 4ms
solid-js:test:  ✓ web/test/dynamic.spec.tsx  (3 tests) 6ms
solid-js:test:  ✓ web/test/element.spec.tsx  (7 tests) 3ms
solid-js:test: stderr | web/test/errorboundary.spec.tsx > Testing ErrorBoundary control flow > Create an Error
solid-js:test: Error: Failure
solid-js:test:     at Component (/Users/nicholas/projects/node/solid/packages/solid/web/test/errorboundary.spec.tsx:14:11)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1082:16
solid-js:test:     at untrack (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:853:12)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1080:7
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/test/external-source.spec.ts:43:16)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1256:45)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1258:28)
solid-js:test:     at Object.c.fn (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1464:82)
solid-js:test:     at runComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1380:22)
solid-js:test:     at updateComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1355:3)
solid-js:test: 
solid-js:test: stderr | web/test/errorboundary.spec.tsx > Testing ErrorBoundary control flow > Create an Error with null
solid-js:test: Error: Unknown error
solid-js:test:     at castError (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1707:10)
solid-js:test:     at handleError (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1714:9)
solid-js:test:     at runComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1395:12)
solid-js:test:     at updateComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1355:3)
solid-js:test:     at Module.devComponent (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1092:3)
solid-js:test:     at Module.createComponent (/Users/nicholas/projects/node/solid/packages/solid/src/render/component.ts:103:29)
solid-js:test:     at Object.get children [as children] (/Users/nicholas/projects/node/solid/packages/solid/web/test/errorboundary.spec.tsx:46:32)
solid-js:test:     at ErrorBoundary.__vite_ssr_import_0__.createMemo.name (/Users/nicholas/projects/node/solid/packages/solid/src/render/flow.ts:255:20)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/test/external-source.spec.ts:43:16)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1256:45)
solid-js:test: 
solid-js:test: stderr | web/test/errorboundary.spec.tsx > Testing ErrorBoundary control flow > Create an Error global reset
solid-js:test: Error: Failure
solid-js:test:     at Component (/Users/nicholas/projects/node/solid/packages/solid/web/test/errorboundary.spec.tsx:14:11)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1082:16
solid-js:test:     at untrack (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:853:12)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1080:7
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/test/external-source.spec.ts:43:16)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1256:45)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1258:28)
solid-js:test:     at Object.c.fn (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1464:82)
solid-js:test:     at runComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1380:22)
solid-js:test:     at updateComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1355:3)
solid-js:test: Error: Unknown error
solid-js:test:     at castError (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1707:10)
solid-js:test:     at handleError (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1714:9)
solid-js:test:     at runComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1395:12)
solid-js:test:     at updateComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1355:3)
solid-js:test:     at Module.devComponent (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1092:3)
solid-js:test:     at Module.createComponent (/Users/nicholas/projects/node/solid/packages/solid/src/render/component.ts:103:29)
solid-js:test:     at Object.get children [as children] (/Users/nicholas/projects/node/solid/packages/solid/web/test/errorboundary.spec.tsx:46:32)
solid-js:test:     at ErrorBoundary.__vite_ssr_import_0__.createMemo.name (/Users/nicholas/projects/node/solid/packages/solid/src/render/flow.ts:255:20)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/test/external-source.spec.ts:43:16)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1256:45)
solid-js:test: 
solid-js:test: stderr | web/test/errorboundary.spec.tsx > Testing ErrorBoundary control flow > Create an Error in an Error Fallback
solid-js:test: Error: Failure
solid-js:test:     at Component (/Users/nicholas/projects/node/solid/packages/solid/web/test/errorboundary.spec.tsx:14:11)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1082:16
solid-js:test:     at untrack (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:853:12)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1080:7
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/test/external-source.spec.ts:43:16)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1256:45)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1258:28)
solid-js:test:     at Object.c.fn (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1464:82)
solid-js:test:     at runComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1380:22)
solid-js:test:     at updateComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1355:3)
solid-js:test: Error: Failure
solid-js:test:     at Component (/Users/nicholas/projects/node/solid/packages/solid/web/test/errorboundary.spec.tsx:14:11)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1082:16
solid-js:test:     at untrack (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:853:12)
solid-js:test:     at /Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1080:7
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/test/external-source.spec.ts:43:16)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1256:45)
solid-js:test:     at Object.track (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1258:28)
solid-js:test:     at Object.c.fn (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1464:82)
solid-js:test:     at runComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1380:22)
solid-js:test:     at updateComputation (/Users/nicholas/projects/node/solid/packages/solid/src/reactive/signal.ts:1355:3)
solid-js:test: 
solid-js:test:  ✓ web/test/errorboundary.spec.tsx  (7 tests) 12ms
solid-js:test:  ✓ web/test/for.spec.tsx  (50 tests) 13ms
test-integration:test: 
test-integration:test: > test-integration@1.6.12 test /Users/nicholas/projects/node/solid/packages/test-integration
test-integration:test: > npm run test:imports
test-integration:test: 
solid-js:test:  ✓ web/test/index.spec.tsx  (50 tests) 12ms
solid-js:test:  ✓ web/test/portal.spec.tsx  (11 tests) 2ms
solid-js:test:  ✓ web/test/server-mock.spec.tsx  (3 tests) 1ms
solid-js:test:  ✓ web/test/show.spec.tsx  (18 tests) 2ms
solid-js:test:  ✓ web/test/suspense.spec.tsx  (14 tests) 11ms
solid-js:test:  ✓ web/test/switch.spec.tsx  (18 tests) 2ms
solid-js:test: 
solid-js:test:  Test Files  23 passed (23)
solid-js:test:       Tests  384 passed (384)
solid-js:test:    Start at  00:13:54
solid-js:test:    Duration  1.78s (transform 469ms, setup 0ms, collect 591ms, tests 859ms)
solid-js:test: 
test-integration:test: 
test-integration:test: > test-integration@1.6.12 test:imports
test-integration:test: > node test-imports.mjs
test-integration:test: 
test-integration:test: ES Module import test passed.

 Tasks:    5 successful, 5 total
Cached:    0 cached, 5 total
  Time:    2.503s 

➜  solid git:(main) 

@changeset-bot
Copy link

changeset-bot bot commented Mar 9, 2023

🦋 Changeset detected

Latest commit: 5aacf14

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
solid-js Patch
test-integration Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@atk
Copy link
Contributor

atk commented Mar 9, 2023

Instead of importing from vitest, you can use globals.

@thetarnav
Copy link
Contributor

thetarnav commented Mar 9, 2023

Instead of importing from vitest, you can use globals.

this way you pollute the global namespace with vitest types though

@atk
Copy link
Contributor

atk commented Mar 9, 2023

Which is what jest did before, so it's not too much of an issue, is it?

@niccholaspage
Copy link
Contributor Author

I am happy to switch to using globals if we can come to a consensus on it! The globals were used before, yes. Vitest by default has globals off, but they can be enabled in the config easily. I will be resolving the merge conflicts related to changes upstream shortly.

@atk
Copy link
Contributor

atk commented Mar 12, 2023

I'm for switching them on to keep the impact of this PR low. If at some point we should decide to remove globals again, the PR for that will be simpler.

@niccholaspage
Copy link
Contributor Author

That sounds like a great idea for me. I've went ahead and pushed out commits to enable globals and removed all of the vitest imports. This PR is a bit more manageable now.

@niccholaspage
Copy link
Contributor Author

Hmm, I see my changes for Vitest globals broke type testing. I will take a look. Thanks for letting the check run!

@niccholaspage
Copy link
Contributor Author

This has been fixed - I believe the checks should pass this time around.

@niccholaspage
Copy link
Contributor Author

niccholaspage commented Mar 17, 2023

I added the @vitest/coverage-istanbul package and ran the coverage command locally, and it seems to be working now. I picked istanbul to mirror the same coverage provider Jest uses by default, and made sure to enable the lcov reporter. Hopefully, I've gotten everything right this time, haha.

EDIT: The code coverage percentage is really off in Vitest compared to the results from Jest. Will take a look later and see why that is.

@niccholaspage
Copy link
Contributor Author

Good news! Switching to c8 instead of instanbul has actually fixed the coverage issues I was seeing! We are getting 95.79%
coverage on all files, which seems close enough to before! I think this is good for you to run checks on again!

@atk
Copy link
Contributor

atk commented Mar 24, 2023

Just switching from cjs to esm changes the coverage slightly, so that looks okay to me.

@coveralls
Copy link

coveralls commented Mar 24, 2023

Pull Request Test Coverage Report for Build 4522497044

Warning: This coverage report may be inaccurate.

This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

Details

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • 96 unchanged lines in 12 files lost coverage.
  • Overall coverage increased (+5.9%) to 94.186%

Files with Coverage Reduction New Missed Lines %
packages/solid/src/reactive/array.ts 1 98.1%
packages/solid/web/src/index.ts 1 93.96%
packages/solid/src/reactive/observable.ts 2 95.83%
packages/solid/src/render/flow.ts 2 94.94%
packages/solid/src/index.ts 3 94.85%
packages/solid/store/src/mutable.ts 3 92.78%
packages/solid/store/src/store.ts 5 98.54%
packages/solid/src/render/hydration.ts 6 68.0%
packages/solid/src/render/Suspense.ts 6 87.82%
packages/solid/src/render/component.ts 17 87.84%
Totals Coverage Status
Change from base Build 4441656855: 5.9%
Covered Lines: 4165
Relevant Lines: 4348

💛 - Coveralls

@ryansolid ryansolid merged commit 620c763 into solidjs:main Mar 26, 2023
@ryansolid
Copy link
Member

Thank you so much. Awesome work.

@ryansolid
Copy link
Member

ryansolid commented Mar 27, 2023

Hmm.. merging into next branch all the solid-js/web tests are failing. Any ideas? I guess it pulls in babel-preset-solid externally. So when I'm working on new stuff this is sort of awkward.

EDIT: It looks to be related to the external source test actually.

@niccholaspage
Copy link
Contributor Author

I spent some time playing with this issue this morning and I think it might have something to do with vite-plugin-solid bringing in babel-preset-solid:

➜  solid git:(next) ✗ pnpm why babel-preset-solid
Legend: production dependency, optional only, dev only

solid-js@1.0.0 /Users/nicholas/projects/node/solid

devDependencies:
vite-plugin-solid 2.7.0-beta.0
└── babel-preset-solid 1.7.0-beta.4

I haven't identified a solution yet, but later today I'm going to try to see if I can get rid of that external dependency somehow and just have it use the babel-preset-solid package in the repository to take care of things.

@niccholaspage
Copy link
Contributor Author

niccholaspage commented Mar 28, 2023

I'm at a bit of a loss with this issue at the moment. I tried as a test to add configuration to the package.json to override the babel-preset-solid dependency with the one from the workspace, like so:

  "pnpm": {
    "overrides": {
      "babel-preset-solid": "workspace:*"
    }
  }

And yet this didn't actually do anything to help resolve this issue. Still doing a bit of digging here, but just wanted to give a quick update. Such an odd issue.

@ryansolid
Copy link
Member

Amazing thank you.

@niccholaspage
Copy link
Contributor Author

This is fixed in this PR: #1654

Let me know if you have any questions!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants