summaryrefslogtreecommitdiff
path: root/tests/specs/run/worker_event_handler_test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/specs/run/worker_event_handler_test')
-rw-r--r--tests/specs/run/worker_event_handler_test/__test__.jsonc4
-rw-r--r--tests/specs/run/worker_event_handler_test/worker_event_handler_test.js5
-rw-r--r--tests/specs/run/worker_event_handler_test/worker_event_handler_test.js.out11
-rw-r--r--tests/specs/run/worker_event_handler_test/worker_event_handlers.js26
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();
+});