Releases: mswjs/msw
Releases · mswjs/msw
v0.20.0
Breaking changes
-import { composeMocks, rest } from 'msw'
-composeMocks(rest.get(...))
+import { setupWorker, rest } from 'msw'
+setupWorker(rest.get(...))
Features
import { setupServer } from 'msw/native'
import { rest } from 'msw'
const server = setupServer(
rest.get('/user', (req, res, ctx) => {
return res(ctx.json({ firstName: 'John' })
})
)
The
setupServer
API for React Native is the exact mirror of the same API for NodeJS. Read more in the documentation: https://mswjs.io/docs/api/setup-server
- Adds support for binary response types (#221, #224, Binary response type recipe).
- Adds an option to warn/error/execute arbitrary logic on unmatched request (#191,
setupWorker
docs,setupServer
docs).
const server = setupServer(
rest.get('/books', (req, res, ctx) => res())
)
server.listen({
onUnhandledRequest: 'error'
})
fetch('/user') // ERROR! Unhandled request.
- Adds a
req.cookies
property to access a request’s cookies (#199, #261, Accessing request cookies recipe). - Adds support for network error emulation (#253,
res.networkError
API):
rest.post('/login', (req, res, ctx) => {
return res.networkError('Custom error message')
})
Bug fixes
- Fixes an issue that resulted into a "global is not defined" error being thrown in a browser (#255).
- Fixes an issue that resulted into the worker listeners being established multiple times after repetitive calls to
worker.start()
or Hot Reload (#244). - Fixes an issue that failed response patching in NodeJS (#264, #266).
- Fixes an issue that resulted into the
XMLHttpRequest.prototype.addEventListener
events being ignored (#267). - Fixes an issue that resulted into timeout in POST requests with a body in NodeJS (#277).
- Fixes an invalidly typed
req.body
in case of GraphQL request (#297, #302). - Updates library's dependencies (#306).
v0.19.5
Features
- Adds a warning when using redundant query parameters in a request handler URL (#231, #233).
- Throws an exception when running
setupWorker
in a NodeJS environment (#219). - Throws an exception when running
setupServer
in a browser environment (#214, #219). - Adds a custom error message when calling
worker.start()
and the worker script doesn’t exist (#237, #242). - Exports GraphQL type annotations for
GraphQLMockedRequest
,GraphQLMockedContext
,GraphQLRequestPayload
,GraphQLResponseResolver
types (#213, #241).
Bug fixes
- Sets the default realistic response time of
ctx.delay()
to 5ms when run in Node environment (including jsdom) (#205). - Fixes an issue that resulted into the response Promise to never resolve when using
jest.useFakeTimers()
in your tests (#243). - Fixes a bug that resulted into a request handler URL with query parameters to produce a false negative match with the identical actual request URL. Query parameters and hashes in a request handler URL no longer affect the matching process.
v0.19.4
Internal
- Updates the repository's homepage and README.
v0.19.3
v0.19.2
v0.19.1
v0.19.0
Features
- The library now defers all the client-side requests that happen between calling
worker.start()
and successful worker activation. This eliminates race condition between the two, and now comes as the default behavior. (#190, #196)
The behavior of deferring requests can be configured using the waitUntilReady: boolean
option on worker.start()
:
import { setupWorker, rest } from 'msw'
const worker = setupWorker(/* request handlers */)
worker.start({
// You can opt-out of the deferred network requests behavior.
waitUntilReady: false
})
v0.18.1
v0.18.0
Features
- Adds support for declaring runtime request handlers (#128, #187):
.use()
to prepend any request handlers. Any prepended request handlers take priority over existing ones, if their predicate match..restoreHandlers()
to mark any used one-time request handlers as unused, allowing them to affect network again..resetHandlers()
to remove any request handlers added on runtime. Optionally accepts a list of next request handlers that replace the initial handlers passed tosetupServer
/setupWorker
call.
- Adds support for one-time request handlers using
res.once()
. Such handles will respond with a given mocked response only once upon request match:
rest.get('/books', (req, res, ctx) => {
return res.once(ctx.json([1, 2, 3]))
})
Bug fixes
TS7016: Could not find a declaration file for module 'cookie'
- Fixes an outdated GitHub repository link in the
mockServiceWorker.js
file.