summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/node_compat_tests.rs14
-rw-r--r--tests/testdata/node/events_order.out12
-rw-r--r--tests/testdata/node/events_order.ts25
-rw-r--r--tests/testdata/node/process_beforeexit_exit_events.out2
-rw-r--r--tests/testdata/node/process_beforeexit_exit_events.ts9
5 files changed, 62 insertions, 0 deletions
diff --git a/tests/integration/node_compat_tests.rs b/tests/integration/node_compat_tests.rs
index c4c4ba1fa..9dfd07ab4 100644
--- a/tests/integration/node_compat_tests.rs
+++ b/tests/integration/node_compat_tests.rs
@@ -21,3 +21,17 @@ itest!(node_test_module_no_sanitizers {
// exit_code: 123,
http_server: true,
});
+
+itest!(
+ node_process_beforeexit_exit_events_emitted_without_listeners {
+ args: "run node/process_beforeexit_exit_events.ts",
+ output: "node/process_beforeexit_exit_events.out",
+ exit_code: 0,
+ }
+);
+
+itest!(web_node_events_dispatched_in_correct_order {
+ args: "run node/events_order.ts",
+ output: "node/events_order.out",
+ exit_code: 0,
+});
diff --git a/tests/testdata/node/events_order.out b/tests/testdata/node/events_order.out
new file mode 100644
index 000000000..270384d8d
--- /dev/null
+++ b/tests/testdata/node/events_order.out
@@ -0,0 +1,12 @@
+beforeunload emitted from addEventListener
+beforeunload emitted from addEventListener
+beforeunload emitted from addEventListener
+beforeExit emitted from process.on
+more work done! 1
+beforeunload emitted from addEventListener
+beforeExit emitted from process.on
+more work done! 2
+beforeunload emitted from addEventListener
+beforeExit emitted from process.on
+unload emitted from addEventListener
+exit emitted from process.on
diff --git a/tests/testdata/node/events_order.ts b/tests/testdata/node/events_order.ts
new file mode 100644
index 000000000..263f46b4c
--- /dev/null
+++ b/tests/testdata/node/events_order.ts
@@ -0,0 +1,25 @@
+import process from "node:process";
+
+let count = 0;
+process.on("beforeExit", () => {
+ if (count === 0 || count === 1) {
+ setTimeout(() => console.log("more work done!", count), 10);
+ }
+ count++;
+ console.log("beforeExit emitted from process.on");
+});
+process.on("exit", () => console.log("exit emitted from process.on"));
+
+let countWeb = 0;
+addEventListener("beforeunload", (event) => {
+ if (countWeb == 0 || countWeb == 1) {
+ event.preventDefault();
+ }
+ countWeb++;
+ console.log("beforeunload emitted from addEventListener");
+});
+
+addEventListener(
+ "unload",
+ () => console.log("unload emitted from addEventListener"),
+);
diff --git a/tests/testdata/node/process_beforeexit_exit_events.out b/tests/testdata/node/process_beforeexit_exit_events.out
new file mode 100644
index 000000000..740ef6ffb
--- /dev/null
+++ b/tests/testdata/node/process_beforeexit_exit_events.out
@@ -0,0 +1,2 @@
+beforeExit emitted from processEmit
+exit emitted from processEmit
diff --git a/tests/testdata/node/process_beforeexit_exit_events.ts b/tests/testdata/node/process_beforeexit_exit_events.ts
new file mode 100644
index 000000000..a4c87f27e
--- /dev/null
+++ b/tests/testdata/node/process_beforeexit_exit_events.ts
@@ -0,0 +1,9 @@
+import process from "node:process";
+
+const originalEmit = process.emit;
+process.emit = function (event, ...args) {
+ if (event === "exit" || event === "beforeExit") {
+ console.log(`${event} emitted from processEmit`);
+ }
+ return originalEmit.call(this, event, ...args);
+};