diff --git a/src/browser/js/Env.zig b/src/browser/js/Env.zig index 45452ffc..1fa807f8 100644 --- a/src/browser/js/Env.zig +++ b/src/browser/js/Env.zig @@ -620,7 +620,7 @@ test "Env: Worker context " { const frame = try session.createPage(); defer session.removePage(); - const worker = try @import("../webapi/Worker.zig").init("http://localhost:9582/src/browser/tests/testing.js", frame); + const worker = try @import("../webapi/Worker.zig").init("http://localhost:9582/src/browser/tests/testing.js", null, frame); var ls: js.Local.Scope = undefined; worker._worker_scope.js.localScope(&ls); diff --git a/src/browser/tests/worker/module-worker.js b/src/browser/tests/worker/module-worker.js new file mode 100644 index 00000000..1b1aa7b6 --- /dev/null +++ b/src/browser/tests/worker/module-worker.js @@ -0,0 +1,25 @@ +// A module worker (`new Worker(url, { type: "module" })`). Unlike a classic +// worker, the entry script may use top-level static `import`/`export`, and +// `importScripts()` is not supported (it throws a TypeError). +import { baseValue } from './modules/base.js'; +import { importedValue, localValue } from './modules/importer.js'; + +export const exported = 'top-level-export-ok'; + +let importScriptsError = null; +try { + importScripts('./import-script1.js'); +} catch (e) { + importScriptsError = e.constructor.name; +} + +onmessage = function (event) { + postMessage({ + echo: event.data, + baseValue: baseValue, + importedValue: importedValue, + localValue: localValue, + importScriptsError: importScriptsError, + from: 'module-worker', + }); +}; diff --git a/src/browser/tests/worker/worker.html b/src/browser/tests/worker/worker.html index cabe5d14..881c6b6c 100644 --- a/src/browser/tests/worker/worker.html +++ b/src/browser/tests/worker/worker.html @@ -380,6 +380,29 @@ } + +