[!IMPORTANT]
This release is a BREAKING CHANGE. Please follow the Migration guidelines to upgrade. This release took a lot of effort to make, and I expect a bit of that effort on your part while upgrading. Most of the changes are mechanical, and a simple Find/Replace All will get you a long way. For the rest of it, you will learn how to handle requests and responses using the standard JavaScript API. Thank you!
Breaking changes
Drops support for Node.js 16. Please upgrade to Node.js 18 or later to use the global Fetch API.
Drops support for TypeScript < 4.7.
All browser-side exports, like setupWorker, SetupWorkerApi, etc., must be imported from msw/browser now.
Renames the rest object to http (rest.get -> http.get).
Response resolver call signature is no longer (req, res, ctx) => res() but instead ({ request }) => new Response().
The following exports are removed due to no longer being needed:
response
context and related exports (defaultContext, restContext, graphqlContext).
compose and createResponseComposition
res.once() is removed in favor of the { once: boolean } option on the request handler.
Replaces the .printHandlers() method with .listHandlers().
Removes the NetworkError class in favor of the standard Response.error().
Moves request error handling from the worker thread to the client thread.
Changes the call signature of the Life-cycle Events API to accept a single object argument.
Uses crypto.randomUUID() instead of Math.random() in the worker.
For the full list of changes and detailed instructions on how to upgrade please see the Migration guidelines.
Features
Adopts Fetch API primitives. Represent intercepted requests and mocked responses as Request and Response instances respectively.
Supports Node.js v18.
Supports ReadableStream as a mocked response body.
Supports reading the intercepted request body as FormData.
Supports FormData as a mocked response body.
Uses File polyfill in Node.js.
Supports XMLHttpRequest “upload” events when responding with a mocked stream response.
Allows mocking a network error once using the { once: true } request handler option.
Makes the RequestHandler API public.
Bug fixes
Fixes the issue where the request body couldn’t be properly read as FormData.
Fixes a set of issues related to response patching when using the FormData response body.
Fixes the issue where URLSearchParams as the request body couldn’t be read.
Fixes the issue where a bypassed request’s referrerPolicy was reset to a different value than the original.
Fixes the wrong order of XMLHttpRequest events and readyState changes.
Fixes the issue when reading an XMLHttpRequest body of responseType equal to "arraybuffer" as an incorrect buffer (previously, always assumed to be a string).
Fixes the order of XMLHttpRequest events when the request fails.
Keeps XMLHttpRequest status equal to 0 until the request actually resolves.
Fixes the issue when the onload event callback was called twice for XMLHttpRequest.
Various improvements in Node.js network behavior compliance.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps msw from 1.3.2 to 2.0.0.
Release notes
Sourced from msw's releases.
Commits
873b996
chore(release): v2.0.03ec3cc9
chore: remove dry release1033f65
feat!: adopt the global Fetch API (#1436)61c220c
chore: set dry run releaseDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show