From 60f10bcb95058b9bd30c34eb1c3bfd1b833ad2f0 Mon Sep 17 00:00:00 2001 From: Lou Cyx Date: Sun, 14 Dec 2025 18:19:27 -0600 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20dependency=20upgrade.=20?= =?UTF-8?q?=E2=9C=85=20update=20tests.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- @simulcast/preact/tests/useBroadcast.test.tsx | 8 ++++---- @simulcast/react/tests/useBroadcast.test.tsx | 8 ++++---- deno.json | 10 +++++----- test/mockDOM.ts | 11 +++++++---- test/setupTests.ts | 1 + 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/@simulcast/preact/tests/useBroadcast.test.tsx b/@simulcast/preact/tests/useBroadcast.test.tsx index 5642dae..536efc9 100644 --- a/@simulcast/preact/tests/useBroadcast.test.tsx +++ b/@simulcast/preact/tests/useBroadcast.test.tsx @@ -2,10 +2,10 @@ import { broadcast, type EventRegistry } from "@simulcast/core"; import { useBroadcast } from "@simulcast/preact"; import { assertStrictEquals } from "@std/assert"; -import { type ComponentProps, render, type TargetedMouseEvent } from "preact"; -import { useState } from "preact/hooks"; import { mockDOM } from "@test/mockDOM.ts"; import { timeout } from "@test/timeout.ts"; +import { type ComponentProps, render, type TargetedMouseEvent } from "preact"; +import { useState } from "preact/hooks"; const CountComponent = (properties: ComponentProps<"button">) => { const [count, setCount] = useState(0); @@ -78,9 +78,9 @@ Deno.test( ) as HTMLButtonElement; addButton.click(); // Click button that will re-render once - await timeout(); + await timeout(10); addButton.click(); // Click button that will re-render twice - await timeout(); + await timeout(10); broadcastButton.click(); // Click broadcast button once assertStrictEquals(state.calledTimes, 1); // State should be updated once assertStrictEquals(addButton.textContent, "2"); // Even when it re-rendered twice diff --git a/@simulcast/react/tests/useBroadcast.test.tsx b/@simulcast/react/tests/useBroadcast.test.tsx index 1d6c574..92ba5ce 100644 --- a/@simulcast/react/tests/useBroadcast.test.tsx +++ b/@simulcast/react/tests/useBroadcast.test.tsx @@ -2,10 +2,10 @@ import { broadcast, type EventRegistry } from "@simulcast/core"; import { useBroadcast } from "@simulcast/react"; import { assertStrictEquals } from "@std/assert"; -import { type ComponentProps, type MouseEvent, useState } from "react"; -import { createRoot } from "react-dom/client"; import { mockDOM } from "@test/mockDOM.ts"; import { timeout } from "@test/timeout.ts"; +import { type ComponentProps, type MouseEvent, useState } from "react"; +import { createRoot } from "react-dom/client"; const CountComponent = (properties: ComponentProps<"button">) => { const [count, setCount] = useState(0); @@ -69,7 +69,7 @@ Deno.test( ), ); - await timeout(3); + await timeout(10); const addButton = document.querySelector( "button.add", @@ -131,7 +131,7 @@ Deno.test("Broadcast's on handler is removed when unmounted", async () => { root.render(); - await timeout(1); + await timeout(10); const toggleButton = document.querySelector( "button.toggle", diff --git a/deno.json b/deno.json index 3541330..4e173a8 100644 --- a/deno.json +++ b/deno.json @@ -44,11 +44,11 @@ "@types/react": "npm:@types/react@^19.2.7", "@types/react-dom": "npm:@types/react-dom@^19.2.3", "@vue/test-utils": "npm:@vue/test-utils@^2.4.6", - "linkedom": "npm:linkedom@^0.18.12", - "preact": "npm:preact@~10.27.2", - "preact-render-to-string": "npm:preact-render-to-string@~6.6.3", - "react": "npm:react@^19.2.0", - "react-dom": "npm:react-dom@^19.2.0", + "happy-dom": "npm:happy-dom@^20.0.11", + "preact": "npm:preact@~10.28.0", + "preact-render-to-string": "npm:preact-render-to-string@~6.6.4", + "react": "npm:react@^19.2.3", + "react-dom": "npm:react-dom@^19.2.3", "vue": "npm:vue@^3.5.25" }, "lint": { diff --git a/test/mockDOM.ts b/test/mockDOM.ts index 10fd4d7..c9e1595 100644 --- a/test/mockDOM.ts +++ b/test/mockDOM.ts @@ -1,4 +1,5 @@ -import { parseHTML } from "linkedom/worker"; +// deno-coverage-ignore-file +import { Window } from "happy-dom"; Error.stackTraceLimit = Infinity; @@ -8,7 +9,7 @@ const properties = [ "SVGElement", "document", "window", -] as const satisfies ReadonlyArray>; +] as const satisfies ReadonlyArray>; /** * Sets a global mocked DOM or resets it if it's already set. @@ -30,10 +31,12 @@ export const mockDOM = ( template?: string; } = {}, ): void => { - const parsed = parseHTML(template); + const window = new Window(); + + window.document.body.innerHTML = template; properties.forEach((property) => - Object.assign(globalThis, { [property]: parsed[property] }) + Object.assign(globalThis, { [property]: window[property] }) ); if (fakeTimers) { diff --git a/test/setupTests.ts b/test/setupTests.ts index 6082e2d..8290c84 100644 --- a/test/setupTests.ts +++ b/test/setupTests.ts @@ -1,3 +1,4 @@ +// deno-coverage-ignore-file import { mockDOM } from "./mockDOM.ts"; mockDOM();