Skip to content

Releases: mswjs/msw

v0.20.0

30 Jul 12:58
Compare
Choose a tag to compare

Breaking changes

  • composeMocks function has been removed (#236, #239). Please use setupWorker instead.
-import { composeMocks, rest } from 'msw'
-composeMocks(rest.get(...))

+import { setupWorker, rest } from 'msw'
+setupWorker(rest.get(...))

Features

  • Adds React Native support (#203, #269).
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

const server = setupServer(
  rest.get('/books', (req, res, ctx) => res())
)

server.listen({
  onUnhandledRequest: 'error'
})

fetch('/user') // ERROR! Unhandled request.
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

24 Jun 07:11
Compare
Choose a tag to compare

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

20 Jun 17:14
Compare
Choose a tag to compare

Internal

  • Updates the repository's homepage and README.

v0.19.3

13 Jun 15:40
Compare
Choose a tag to compare

Bug fixes

  • Fixes an issue that resulted into GraphQL requests issued using a GET method not being intercepted (#210, #212).

v0.19.2

13 Jun 09:58
Compare
Choose a tag to compare

Bug fixes

  • Fixes an issue that resulted into TypeError [ERR_INVALID_URL]: Invalid URL: undefined//undefined exception when using third-party request issuing libraries in Node (#209, #211).

v0.19.1

12 Jun 12:26
Compare
Choose a tag to compare

Features

  • Calling ctx.delay() without any arguments now simulates a random realistic server response time in a range between 100-400ms (#192, #198). Responses in Node are instantaneous.

Bug fixes

  • Fixes an issue that resulted into Uncaught (in promise) SyntaxError: Unexpected end of input exception when processing a request. Internally, a request’s body is now always retrieved as text, parsing it as JSON is delegated to the client side (based on the Content-Type header) (#200, #201).

v0.19.0

04 Jun 13:26
Compare
Choose a tag to compare

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

04 Jun 08:06
Compare
Choose a tag to compare

Bug fixes

  • Fixes an outdated repository URL in the Service Worker activation message.
  • Fixes an issue that resulted into ReferenceError: location is not defined error when using a request handler with a relative URL in setupServer (#193)

v0.18.0

30 May 11:36
Compare
Choose a tag to compare

Features

rest.get('/books', (req, res, ctx) => {
  return res.once(ctx.json([1, 2, 3]))
})

Bug fixes

  • Fixes an issue that resulted into the following TypeScript error when installing msw (#185, #186 ):
TS7016: Could not find a declaration file for module 'cookie'
  • Fixes an outdated GitHub repository link in the mockServiceWorker.js file.

v0.17.2

25 May 15:50
Compare
Choose a tag to compare

Bug fixes

  • Fixes an issue that caused an empty non-JSON request body being parsed as JSON (#175, #179)