From df56fa31b2f409b1f1aa652b30eec549ed413ccd Mon Sep 17 00:00:00 2001 From: yoho Date: Wed, 16 Mar 2022 10:46:33 +0800 Subject: [PATCH] refactor: worker test --- .../worker/__tests__/worker.spec.ts | 4 +- .../{newUrl => }/classic-shared-worker.js | 0 packages/playground/worker/classic-worker.js | 33 +----- packages/playground/worker/index.html | 105 ++---------------- packages/playground/worker/modules/module.js | 2 +- .../worker/{ => modules}/test-plugin.tsx | 0 .../worker/{ => modules}/workerImport.js | 0 packages/playground/worker/my-worker.ts | 4 +- .../worker/newUrl/classic-worker.js | 5 - packages/playground/worker/newUrl/module.js | 1 - .../worker/possible-ts-output-worker.mjs | 2 +- .../worker/{newUrl => }/url-shared-worker.js | 2 +- .../worker/{newUrl => }/url-worker.js | 2 +- packages/playground/worker/worker/classic.js | 28 +++++ packages/playground/worker/worker/module.js | 87 +++++++++++++++ 15 files changed, 134 insertions(+), 141 deletions(-) rename packages/playground/worker/{newUrl => }/classic-shared-worker.js (100%) rename packages/playground/worker/{ => modules}/test-plugin.tsx (100%) rename packages/playground/worker/{ => modules}/workerImport.js (100%) delete mode 100644 packages/playground/worker/newUrl/classic-worker.js delete mode 100644 packages/playground/worker/newUrl/module.js rename packages/playground/worker/{newUrl => }/url-shared-worker.js (69%) rename packages/playground/worker/{newUrl => }/url-worker.js (58%) create mode 100644 packages/playground/worker/worker/classic.js create mode 100644 packages/playground/worker/worker/module.js diff --git a/packages/playground/worker/__tests__/worker.spec.ts b/packages/playground/worker/__tests__/worker.spec.ts index 6d205eaac2d5ec..e56e8159fe8883 100644 --- a/packages/playground/worker/__tests__/worker.spec.ts +++ b/packages/playground/worker/__tests__/worker.spec.ts @@ -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"}' ) }) @@ -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')) diff --git a/packages/playground/worker/newUrl/classic-shared-worker.js b/packages/playground/worker/classic-shared-worker.js similarity index 100% rename from packages/playground/worker/newUrl/classic-shared-worker.js rename to packages/playground/worker/classic-shared-worker.js diff --git a/packages/playground/worker/classic-worker.js b/packages/playground/worker/classic-worker.js index 410e222614b23d..865810c76fbf85 100644 --- a/packages/playground/worker/classic-worker.js +++ b/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() diff --git a/packages/playground/worker/index.html b/packages/playground/worker/index.html index fb6bdee8010b4d..7e086d29250cfe 100644 --- a/packages/playground/worker/index.html +++ b/packages/playground/worker/index.html @@ -21,15 +21,14 @@

- 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' }) .worker-import-meta-url

- 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' }) .shared-worker-import-meta-url

@@ -48,14 +47,14 @@

- new Worker(new Url('./newUrl/classic-worker.js', import.meta.url)) + new Worker(new Url('./classic-worker.js', import.meta.url)) .classic-worker

- 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' }) .classic-shared-worker

@@ -67,93 +66,5 @@ color: green; } - + + diff --git a/packages/playground/worker/modules/module.js b/packages/playground/worker/modules/module.js index 5f32c65818e82d..8b84d26d5c74f3 100644 --- a/packages/playground/worker/modules/module.js +++ b/packages/playground/worker/modules/module.js @@ -1 +1 @@ -export const msg = 'module' +export default 'A string' diff --git a/packages/playground/worker/test-plugin.tsx b/packages/playground/worker/modules/test-plugin.tsx similarity index 100% rename from packages/playground/worker/test-plugin.tsx rename to packages/playground/worker/modules/test-plugin.tsx diff --git a/packages/playground/worker/workerImport.js b/packages/playground/worker/modules/workerImport.js similarity index 100% rename from packages/playground/worker/workerImport.js rename to packages/playground/worker/modules/workerImport.js diff --git a/packages/playground/worker/my-worker.ts b/packages/playground/worker/my-worker.ts index 550382be72c331..dd6061885128c7 100644 --- a/packages/playground/worker/my-worker.ts +++ b/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') { diff --git a/packages/playground/worker/newUrl/classic-worker.js b/packages/playground/worker/newUrl/classic-worker.js deleted file mode 100644 index 865810c76fbf85..00000000000000 --- a/packages/playground/worker/newUrl/classic-worker.js +++ /dev/null @@ -1,5 +0,0 @@ -importScripts('/classic.js') - -self.addEventListener('message', () => { - self.postMessage(self.constant) -}) diff --git a/packages/playground/worker/newUrl/module.js b/packages/playground/worker/newUrl/module.js deleted file mode 100644 index 8b84d26d5c74f3..00000000000000 --- a/packages/playground/worker/newUrl/module.js +++ /dev/null @@ -1 +0,0 @@ -export default 'A string' diff --git a/packages/playground/worker/possible-ts-output-worker.mjs b/packages/playground/worker/possible-ts-output-worker.mjs index 2bcce3faa8a50e..25f1a447617cd9 100644 --- a/packages/playground/worker/possible-ts-output-worker.mjs +++ b/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') { diff --git a/packages/playground/worker/newUrl/url-shared-worker.js b/packages/playground/worker/url-shared-worker.js similarity index 69% rename from packages/playground/worker/newUrl/url-shared-worker.js rename to packages/playground/worker/url-shared-worker.js index f52de169243056..3535d5c277ec84 100644 --- a/packages/playground/worker/newUrl/url-shared-worker.js +++ b/packages/playground/worker/url-shared-worker.js @@ -1,4 +1,4 @@ -import constant from './module' +import constant from './modules/module' self.onconnect = (event) => { const port = event.ports[0] diff --git a/packages/playground/worker/newUrl/url-worker.js b/packages/playground/worker/url-worker.js similarity index 58% rename from packages/playground/worker/newUrl/url-worker.js rename to packages/playground/worker/url-worker.js index 0efa9afda70aee..f96e0b15d26497 100644 --- a/packages/playground/worker/newUrl/url-worker.js +++ b/packages/playground/worker/url-worker.js @@ -1,3 +1,3 @@ -import('./module').then((module) => { +import('./modules/module').then((module) => { self.postMessage(module.default + import.meta.env.BASE_URL) }) diff --git a/packages/playground/worker/worker/classic.js b/packages/playground/worker/worker/classic.js new file mode 100644 index 00000000000000..4ef7776a56876e --- /dev/null +++ b/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() diff --git a/packages/playground/worker/worker/module.js b/packages/playground/worker/worker/module.js new file mode 100644 index 00000000000000..757a5ae4453e1e --- /dev/null +++ b/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()