Minor Changes
-
#11632
a6ddbdbThanks @penalosa! - Support Vitest 4 in@cloudflare/vitest-pool-workers.This a breaking change to the
@cloudflare/vitest-pool-workersintegration in order to support Vitest v4. Along with supporting Vitest v4 (and dropping support for Vitest v2 and v3), we've made a number of changes that may require changes to your tests. Our aim has been to improve stability & the foundations of@cloudflare/vitest-pool-workersas we move towards a v1 release of the package.We've made a codemod to make the migration easier, which will make the required changes to your config file:
npx jscodeshift -t node_modules/@cloudflare/vitest-pool-workers/dist/codemods/vitest-v3-to-v4.mjs vitest.config.ts
Or, without installing the package first:
npx jscodeshift -t https://unpkg.com/@cloudflare/vitest-pool-workers/dist/codemods/vitest-v3-to-v4.mjs --parser=ts vitest.config.ts
-
Config API:
defineWorkersProjectanddefineWorkersConfigfrom@cloudflare/vitest-pool-workers/confighave been replaced with acloudflareTest()Vite plugin exported from@cloudflare/vitest-pool-workers. Thetest.poolOptions.workersoptions are now passed directly tocloudflareTest():Before:
import { defineWorkersProject } from "@cloudflare/vitest-pool-workers/config"; export default defineWorkersProject({ test: { poolOptions: { workers: { wrangler: { configPath: "./wrangler.jsonc" }, }, }, }, });
After:
import { cloudflareTest } from "@cloudflare/vitest-pool-workers"; import { defineConfig } from "vitest/config"; export default defineConfig({ plugins: [ cloudflareTest({ wrangler: { configPath: "./wrangler.jsonc" }, }), ], });
-
isolatedStorage&singleWorker: These have been removed in favour of a simpler isolation model that more closely matches Vitest. Storage isolation is now on a per test file basis, and you can make your test files share the same storage by using the Vitest flags--max-workers=1 --no-isolate -
import { env, SELF } from "cloudflare:test": These have been removed in favour ofimport { env, exports } from "cloudflare:workers".exports.default.fetch()has the same behaviour asSELF.fetch(), except that it doesn't expose Assets. To test your assets, write an integration test usingstartDevWorker() -
import { fetchMock } from "cloudflare:test": This has been removed. Instead, mockglobalThis.fetchor use ecosystem libraries like MSW (recommended). -
Vitest peer dependency:
@cloudflare/vitest-pool-workersnow requiresvitest@^4.1.0.
-