-
Notifications
You must be signed in to change notification settings - Fork 786
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
fix: make vitest-pool-workers not crash with scripts that have Workflows #8208
base: main
Are you sure you want to change the base?
Conversation
Because `vitest-pool-workers` uses its runner worker as the entrypoint and not the user provided worker. The user provided worker is loaded AFAICT though eval (`vitest-pool-workers` enables eval) so we need, at startup time, to add the required entrypoints and make them dynamically call the user one. Not only that, if you try to create a workflow instance it would throw a `isolated storage` error - I suspect that is this caused by engine still being active at the end of the test (since workflows are async, not in the request path, and might take undefinite time to complete). In order to fix this, I've bypassed the isolated storage check for workflows internal DOs. I wonder if there might be collisions between test files if there are any concurrency regarding test files (aka `singleWorker` is false) - I think that this is fine to do, the point of this PR is not to make workflows really testable yet but to at least to make `vitest-pool-workers` **not** crash if a user includes a workflow in the worker definition.
🦋 Changeset detectedLatest commit: dce74d6 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
A wrangler prerelease is available for testing. You can install this latest build in your project with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-wrangler-8208 You can reference the automatically updated head of this PR with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/8208/npm-package-wrangler-8208 Or you can use npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-wrangler-8208 dev path/to/script.js Additional artifacts:cloudflare-workers-bindings-extension: wget https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-workers-bindings-extension-8208 -O ./cloudflare-workers-bindings-extension.0.0.0-v8fb8f5f19.vsix && code --install-extension ./cloudflare-workers-bindings-extension.0.0.0-v8fb8f5f19.vsix create-cloudflare: npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-create-cloudflare-8208 --no-auto-update @cloudflare/kv-asset-handler: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-kv-asset-handler-8208 miniflare: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-miniflare-8208 @cloudflare/pages-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-pages-shared-8208 @cloudflare/unenv-preset: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-unenv-preset-8208 @cloudflare/vite-plugin: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-vite-plugin-8208 @cloudflare/vitest-pool-workers: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-vitest-pool-workers-8208 @cloudflare/workers-editor-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-workers-editor-shared-8208 @cloudflare/workers-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-workers-shared-8208 @cloudflare/workflows-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13455342618/npm-package-cloudflare-workflows-shared-8208 Note that these links will no longer work once the GitHub Actions artifact expires.
Please ensure constraints are pinned, and |
Because
vitest-pool-workers
uses its runner worker as the entrypoint and not the user provided worker. The user provided worker is loaded AFAICT though eval (vitest-pool-workers
enables eval) so we need, at startup time, to add the required entrypoints and make them dynamically call the user one.Not only that, if you try to create a workflow instance it would throw a
isolated storage
error - I suspect that is this caused by engine still being active at the end of the test (since workflows are async, not in the request path, and might take undefinite time to complete).In order to fix this, I've bypassed the isolated storage check for workflows internal DOs. I wonder if there might be collisions between test files if there are any concurrency regarding test files (aka
singleWorker
is false) - I think that this is fine to do, the point of this PR is not to make workflows really testable yet but to at least to makevitest-pool-workers
not crash if a user includes a workflow in the worker definition.Fixes #7414.