c3e8628680
Right now it's fairly easy to encounter a situation when a tab coming online wouldn't recognise that the connection can now be reestablished for a while. This PR cleans up reconnection logic, reenables tests, and makes sure we get online as robustly as possible. ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Check that reconnection works as expected - [x] End to end tests --------- Co-authored-by: David Sheldrick <d.j.sheldrick@gmail.com>
25 lines
1 KiB
JavaScript
25 lines
1 KiB
JavaScript
// HACK: `ws` has an import map mapping browser context to a dummy implementation that just
|
|
// throws an error, because it's impossible to create a websocket server in the browser
|
|
// and `ws` tries to be helpful. Unfortunately, it doesn't work well in our tests:
|
|
// we run Jest in jsdom context, because we test browser APIs, but this causes Jest
|
|
// to select the browser version of the package, which makes it impossible to run a test
|
|
// websocket server.
|
|
//
|
|
// The solution is to override `ws` exports in the Jest resolver to point to the node version
|
|
// regardless.
|
|
//
|
|
// An additional complication is that Jest seems to expect the resolver to be a CommonJS module,
|
|
// so this module is CommonJS despite the rest of the codebase being ESM.
|
|
//
|
|
// see https://jestjs.io/docs/configuration#resolver-string for docs
|
|
module.exports = function jestResolver(path, options) {
|
|
return options.defaultResolver(path, {
|
|
...options,
|
|
packageFilter: (pkg) => {
|
|
if (path === 'ws') {
|
|
pkg.exports['.']['browser'] = './index.js'
|
|
}
|
|
return pkg
|
|
},
|
|
})
|
|
}
|