summaryrefslogtreecommitdiff
path: root/tests/testdata/workers/worker_doest_stall_event_loop.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testdata/workers/worker_doest_stall_event_loop.ts')
-rw-r--r--tests/testdata/workers/worker_doest_stall_event_loop.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/testdata/workers/worker_doest_stall_event_loop.ts b/tests/testdata/workers/worker_doest_stall_event_loop.ts
new file mode 100644
index 000000000..bfddee2ec
--- /dev/null
+++ b/tests/testdata/workers/worker_doest_stall_event_loop.ts
@@ -0,0 +1,29 @@
+const moduleCode = `
+console.log('module start');
+const hash = await crypto.subtle.digest('SHA-1', new TextEncoder().encode('data'));
+const __default = {};
+export { __default as default };
+console.log('module finish');
+`;
+
+const workerCode = `
+ console.log('worker!');
+
+ globalThis.onmessage = (msg) => {
+ const { moduleCode } = msg.data;
+ (async () => {
+ console.log('before import');
+ await import(URL.createObjectURL(new Blob([ moduleCode ])));
+ console.log('after import');
+ self.postMessage('thanks');
+ })();
+ }
+`;
+const worker = new Worker(URL.createObjectURL(new Blob([workerCode])), {
+ type: "module",
+});
+worker.onmessage = () => {
+ console.log("worker.terminate");
+ worker.terminate();
+};
+worker.postMessage({ moduleCode });