mswjs / source

Generate MSW request handlers from various sources (HAR files, OpenAPI documents, etc).
https://source.mswjs.io
134 stars 5 forks source link

Traffic: [Status 101] - The status provided (101) is outside the range [200, 599] #54

Open JeanDamien opened 2 months ago

JeanDamien commented 2 months ago

Description

If the user uses a .har file that contained a websocket entry , this package will throw an exception:

Uncaught (in promise) RangeError: Failed to construct 'Response': The status provided (101) is outside the range [200, 599].
    at toResponse (@mswjs_source_traffic.js)
    at fromTraffic (@mswjs_source_traffic.js)

https://github.com/mswjs/source/blob/main/src/traffic/utils/har-utils.ts#L40

Reproduction steps

HAR file

test/traffic/fixtures/archives/entry-with-ws.har

Test template

  it(
    'does not throw an exception given an HAR file with a websocket entry',
    () => {
      const traffic = readArchive(
        'test/traffic/fixtures/archives/entry-with-ws.har',
      )
      expect(() => fromTraffic(traffic)).not.toThrow()
    },
  )

Expected behavior

It would be ideal if the library didn't throw an exception, or if we could add an entry in the documentation advising users to filter those entries in HAR before using it.

Workaround

fromTraffic(traffic, (entry) => {
  if (entry._resourceType === 'websocket') {
    return
  }
  return entry
})