Skip to content

Commit

Permalink
feat: add support for shared workers
Browse files Browse the repository at this point in the history
  • Loading branch information
mucsi96 committed Nov 3, 2022
1 parent 409512b commit 34e90c3
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/mockServiceWorker.js
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ async function handleRequest(event, requestId) {
async function resolveMainClient(event) {
const client = await self.clients.get(event.clientId)

if (client.frameType === 'top-level') {
if (client?.frameType === 'top-level') {
return client
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { setupWorker } from 'msw'

const worker = setupWorker()

worker.start()
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import * as path from 'path'
import { pageWith } from 'page-with'
import { waitFor } from '../../../../support/waitFor'

function createRuntime() {
return pageWith({
example: path.resolve(__dirname, 'shared-worker.mocks.ts'),
contentBase: path.resolve(__dirname),
})
}

test('supports shared workers', async () => {
const { page, consoleSpy } = await createRuntime()

await page.evaluate(() => {
const worker = new SharedWorker('/worker.js')
worker.addEventListener('error', () =>
console.error('There is an error with worker'),
)
worker.port.onmessage = (e) => {
console.log(e.data)
}
worker.port.postMessage('Message posted to worker')
})
await waitFor(() => {
expect(consoleSpy.get('error')).toBeUndefined()
expect(consoleSpy.get('log')).toContain('Message received from worker')
})
})
6 changes: 6 additions & 0 deletions test/msw-api/setup-worker/scenarios/shared-worker/worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
onconnect = (event) => {
const port = event.ports[0]

port.onmessage = (e) =>
port.postMessage(e.data.replace('posted to', 'received from'))
}

0 comments on commit 34e90c3

Please sign in to comment.