diff options
Diffstat (limited to 'tests/specs/run/worker_event_handler_test')
4 files changed, 46 insertions, 0 deletions
diff --git a/tests/specs/run/worker_event_handler_test/__test__.jsonc b/tests/specs/run/worker_event_handler_test/__test__.jsonc new file mode 100644 index 000000000..c07fca97c --- /dev/null +++ b/tests/specs/run/worker_event_handler_test/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "run --quiet --reload --allow-read worker_event_handler_test.js", + "output": "worker_event_handler_test.js.out" +} diff --git a/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js new file mode 100644 index 000000000..91c5ba946 --- /dev/null +++ b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js @@ -0,0 +1,5 @@ +const w = new Worker( + import.meta.resolve("./worker_event_handlers.js"), + { type: "module" }, +); +w.postMessage({}); diff --git a/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js.out b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js.out new file mode 100644 index 000000000..b3eed7f6c --- /dev/null +++ b/tests/specs/run/worker_event_handler_test/worker_event_handler_test.js.out @@ -0,0 +1,11 @@ +Target from self.onmessage: [object DedicatedWorkerGlobalScope] +Target from message event listener: [object DedicatedWorkerGlobalScope] +Arguments from self.onerror: [ + "Uncaught Error: Some error message", + "[WILDCARD]/worker_event_handlers.js", + 9, + 9, + Error: Some error message + at [WILDCARD] +] +Is event canceled?: true diff --git a/tests/specs/run/worker_event_handler_test/worker_event_handlers.js b/tests/specs/run/worker_event_handler_test/worker_event_handlers.js new file mode 100644 index 000000000..5e457cd2e --- /dev/null +++ b/tests/specs/run/worker_event_handler_test/worker_event_handlers.js @@ -0,0 +1,26 @@ +self.onmessage = (evt) => { + console.log("Target from self.onmessage:", String(evt.target)); +}; + +self.addEventListener("message", (evt) => { + console.log("Target from message event listener:", String(evt.target)); + + // Throw an error here so the global's error event will fire. + throw new Error("Some error message"); +}); + +self.onerror = (...args) => { + // Take the last 100 characters so the filename doesn't get truncated + // depending on the dev's FS structure. + args = args.map((v) => typeof v == "string" ? v.slice(-100) : v); + console.log("Arguments from self.onerror:", args); + return true; +}; + +self.addEventListener("error", (evt) => { + // Returning true from self.onerror means that subsequent event listeners + // should see the event as canceled. + console.log("Is event canceled?:", evt.defaultPrevented); + + self.close(); +}); |