Skip to content

Commit

Permalink
refactor: worker test
Browse files Browse the repository at this point in the history
  • Loading branch information
poyoho committed Mar 16, 2022
1 parent a167395 commit df56fa3
Show file tree
Hide file tree
Showing 15 changed files with 134 additions and 141 deletions.
4 changes: 2 additions & 2 deletions packages/playground/worker/__tests__/worker.spec.ts
Expand Up @@ -55,7 +55,7 @@ test('worker emitted', async () => {
await untilUpdated(() => page.textContent('.nested-worker'), 'pong')
await untilUpdated(
() => page.textContent('.nested-worker-dynamic-import'),
'{"msg":"module","msg1":"module1","msg2":"module2","msg3":"module3"}'
'{"msg1":"module1","msg2":"module2","msg3":"module3"}'
)
})

Expand All @@ -64,7 +64,7 @@ if (isBuild) {
// assert correct files
test('inlined code generation', async () => {
const files = fs.readdirSync(assetsDir)
expect(files.length).toBe(15)
expect(files.length).toBe(14)
const index = files.find((f) => f.includes('index'))
const content = fs.readFileSync(path.resolve(assetsDir, index), 'utf-8')
const worker = files.find((f) => f.includes('my-worker'))
Expand Down
33 changes: 3 additions & 30 deletions packages/playground/worker/classic-worker.js
@@ -1,32 +1,5 @@
// prettier-ignore
function text(el, text) {
document.querySelector(el).textContent = text
}
importScripts('/classic.js')

let classicWorker = new Worker(
new URL('./newUrl/classic-worker.js', import.meta.url) /* , */ ,
// test comment

)

// just test for case: ') ... ,' mean no worker options parmas
classicWorker = new Worker(new URL('./newUrl/classic-worker.js', import.meta.url))

classicWorker.addEventListener('message', ({ data }) => {
text('.classic-worker', JSON.stringify(data))
})
classicWorker.postMessage('ping')

const classicSharedWorker = new SharedWorker(
new URL('./newUrl/classic-shared-worker.js', import.meta.url),
{
type: 'classic'
}
)
classicSharedWorker.port.addEventListener('message', (ev) => {
text(
'.classic-shared-worker',
JSON.stringify(ev.data)
)
self.addEventListener('message', () => {
self.postMessage(self.constant)
})
classicSharedWorker.port.start()
105 changes: 8 additions & 97 deletions packages/playground/worker/index.html
Expand Up @@ -21,15 +21,14 @@
</div>

<p>
new Worker(new Url('./newUrl/url-worker.js', import.meta.url), { type:
'module' })
new Worker(new Url('./url-worker.js', import.meta.url), { type: 'module' })
<span class="classname">.worker-import-meta-url</span>
</p>
<code class="worker-import-meta-url"></code>

<p>
new SharedWorker(new Url('./newUrl/url-shared-worker.js', import.meta.url), {
type: 'module' })
new SharedWorker(new Url('./url-shared-worker.js', import.meta.url), { type:
'module' })
<span class="classname">.shared-worker-import-meta-url</span>
</p>
<code class="shared-worker-import-meta-url"></code>
Expand All @@ -48,14 +47,14 @@
<code class="nested-worker-dynamic-import"></code>

<p>
new Worker(new Url('./newUrl/classic-worker.js', import.meta.url))
new Worker(new Url('./classic-worker.js', import.meta.url))
<span class="classname">.classic-worker</span>
</p>
<code class="classic-worker"></code>

<p>
new SharedWorker(new Url('./newUrl/classic-shared-worker.js',
import.meta.url), { type: 'classic' })
new SharedWorker(new Url('./classic-shared-worker.js', import.meta.url), {
type: 'classic' })
<span class="classname">.classic-shared-worker</span>
</p>
<code class="classic-shared-worker"></code>
Expand All @@ -67,93 +66,5 @@
color: green;
}
</style>
<script type="module">
import myWorker from './my-worker?worker'
import InlineWorker from './my-worker?worker&inline'
import mySharedWorker from './my-shared-worker?sharedworker&name=shared'
import TSOutputWorker from './possible-ts-output-worker?worker'
import NestedWorker from './worker-nested-worker?worker'
import { mode } from './workerImport'
import './classic-worker'

function text(el, text) {
document.querySelector(el).textContent = text
}

document.querySelector('.mode-true').textContent = mode

const worker = new myWorker()
worker.addEventListener('message', (e) => {
text('.pong', e.data.msg)
text('.mode', e.data.mode)
text('.bundle-with-plugin', e.data.bundleWithPlugin)
})

document.querySelector('.ping').addEventListener('click', () => {
worker.postMessage('ping')
})

const inlineWorker = new InlineWorker()
inlineWorker.addEventListener('message', (e) => {
text('.pong-inline', e.data.msg)
})

document.querySelector('.ping-inline').addEventListener('click', () => {
inlineWorker.postMessage('ping')
})

const sharedWorker = new mySharedWorker()
document.querySelector('.tick-shared').addEventListener('click', () => {
sharedWorker.port.postMessage('tick')
})

sharedWorker.port.addEventListener('message', (event) => {
text('.tick-count', event.data)
})

sharedWorker.port.start()

const tsOutputWorker = new TSOutputWorker()
tsOutputWorker.addEventListener('message', (e) => {
text('.pong-ts-output', e.data.msg)
})

document.querySelector('.ping-ts-output').addEventListener('click', () => {
tsOutputWorker.postMessage('ping')
})

const workerOptions = { type: 'module' }
// url import worker
const w = new Worker(
new URL('./newUrl/url-worker.js', import.meta.url),
/* @vite-ignore */ workerOptions
)
w.addEventListener('message', (ev) =>
text('.worker-import-meta-url', JSON.stringify(ev.data))
)

const genWorkerName = () => 'module'
const w2 = new SharedWorker(
new URL('./newUrl/url-shared-worker.js', import.meta.url),
{
/* @vite-ignore */
name: genWorkerName(),
type: 'module'
}
)
w2.port.addEventListener('message', (ev) => {
text('.shared-worker-import-meta-url', JSON.stringify(ev.data))
})
w2.port.start()

const nestedWorker = new NestedWorker()
nestedWorker.addEventListener('message', (ev) => {
console.log(ev)
if (typeof ev.data === 'string') {
text('.nested-worker', JSON.stringify(ev.data))
} else {
text('.nested-worker-dynamic-import', JSON.stringify(ev.data))
}
})
nestedWorker.postMessage('ping')
</script>
<script type="module" src="./worker/module.js"></script>
<script type="module" src="./worker/classic.js"></script>
2 changes: 1 addition & 1 deletion packages/playground/worker/modules/module.js
@@ -1 +1 @@
export const msg = 'module'
export default 'A string'
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions packages/playground/worker/my-worker.ts
@@ -1,5 +1,5 @@
import { msg, mode } from './workerImport'
import { bundleWithPlugin } from './test-plugin'
import { msg, mode } from './modules/workerImport'
import { bundleWithPlugin } from './modules/test-plugin'

self.onmessage = (e) => {
if (e.data === 'ping') {
Expand Down
5 changes: 0 additions & 5 deletions packages/playground/worker/newUrl/classic-worker.js

This file was deleted.

1 change: 0 additions & 1 deletion packages/playground/worker/newUrl/module.js

This file was deleted.

2 changes: 1 addition & 1 deletion packages/playground/worker/possible-ts-output-worker.mjs
@@ -1,4 +1,4 @@
import { msg, mode } from './workerImport'
import { msg, mode } from './modules/workerImport'

self.onmessage = (e) => {
if (e.data === 'ping') {
Expand Down
@@ -1,4 +1,4 @@
import constant from './module'
import constant from './modules/module'

self.onconnect = (event) => {
const port = event.ports[0]
Expand Down
@@ -1,3 +1,3 @@
import('./module').then((module) => {
import('./modules/module').then((module) => {
self.postMessage(module.default + import.meta.env.BASE_URL)
})
28 changes: 28 additions & 0 deletions packages/playground/worker/worker/classic.js
@@ -0,0 +1,28 @@
// prettier-ignore
function text(el, text) {
document.querySelector(el).textContent = text
}

let classicWorker = new Worker(
new URL('../classic-worker.js', import.meta.url) /* , */
// test comment
)

// just test for case: ') ... ,' mean no worker options parmas
classicWorker = new Worker(new URL('../classic-worker.js', import.meta.url))

classicWorker.addEventListener('message', ({ data }) => {
text('.classic-worker', JSON.stringify(data))
})
classicWorker.postMessage('ping')

const classicSharedWorker = new SharedWorker(
new URL('../classic-shared-worker.js', import.meta.url),
{
type: 'classic'
}
)
classicSharedWorker.port.addEventListener('message', (ev) => {
text('.classic-shared-worker', JSON.stringify(ev.data))
})
classicSharedWorker.port.start()
87 changes: 87 additions & 0 deletions packages/playground/worker/worker/module.js
@@ -0,0 +1,87 @@
import myWorker from '../my-worker?worker'
import InlineWorker from '../my-worker?worker&inline'
import mySharedWorker from '../my-shared-worker?sharedworker&name=shared'
import TSOutputWorker from '../possible-ts-output-worker?worker'
import NestedWorker from '../worker-nested-worker?worker'
import { mode } from '../modules/workerImport'

function text(el, text) {
document.querySelector(el).textContent = text
}

document.querySelector('.mode-true').textContent = mode

const worker = new myWorker()
worker.addEventListener('message', (e) => {
text('.pong', e.data.msg)
text('.mode', e.data.mode)
text('.bundle-with-plugin', e.data.bundleWithPlugin)
})

document.querySelector('.ping').addEventListener('click', () => {
worker.postMessage('ping')
})

const inlineWorker = new InlineWorker()
inlineWorker.addEventListener('message', (e) => {
text('.pong-inline', e.data.msg)
})

document.querySelector('.ping-inline').addEventListener('click', () => {
inlineWorker.postMessage('ping')
})

const sharedWorker = new mySharedWorker()
document.querySelector('.tick-shared').addEventListener('click', () => {
sharedWorker.port.postMessage('tick')
})

sharedWorker.port.addEventListener('message', (event) => {
text('.tick-count', event.data)
})

sharedWorker.port.start()

const tsOutputWorker = new TSOutputWorker()
tsOutputWorker.addEventListener('message', (e) => {
text('.pong-ts-output', e.data.msg)
})

document.querySelector('.ping-ts-output').addEventListener('click', () => {
tsOutputWorker.postMessage('ping')
})

const nestedWorker = new NestedWorker()
nestedWorker.addEventListener('message', (ev) => {
console.log(ev)
if (typeof ev.data === 'string') {
text('.nested-worker', JSON.stringify(ev.data))
} else {
text('.nested-worker-dynamic-import', JSON.stringify(ev.data))
}
})
nestedWorker.postMessage('ping')

const workerOptions = { type: 'module' }
// url import worker
const w = new Worker(
new URL('../url-worker.js', import.meta.url),
/* @vite-ignore */ workerOptions
)
w.addEventListener('message', (ev) =>
text('.worker-import-meta-url', JSON.stringify(ev.data))
)

const genWorkerName = () => 'module'
const w2 = new SharedWorker(
new URL('../url-shared-worker.js', import.meta.url),
{
/* @vite-ignore */
name: genWorkerName(),
type: 'module'
}
)
w2.port.addEventListener('message', (ev) => {
text('.shared-worker-import-meta-url', JSON.stringify(ev.data))
})
w2.port.start()

0 comments on commit df56fa3

Please sign in to comment.