Files
WRNexusJS/packages/dev-server/test/hmr.test.ts
2026-07-29 12:51:10 +05:30

19 lines
923 B
TypeScript

import { expect, test } from "bun:test";
import { HMR_CLIENT_JS } from "../src/runtime.ts";
test("HMR client syncs fresh HTML over the websocket", () => {
expect(HMR_CLIENT_JS).toContain('send({ type: "sync"');
expect(HMR_CLIENT_JS).toContain('msg.type === "html"');
expect(HMR_CLIENT_JS).toContain("applyHtml(msg.html)");
expect(HMR_CLIENT_JS).not.toContain("fetch(location.href");
expect(HMR_CLIENT_JS).not.toContain("location.reload()");
});
test("HMR replaces hydrated components when their server signature changes", () => {
expect(HMR_CLIENT_JS).toContain('from.getAttribute("data-wrn-hydration")');
expect(HMR_CLIENT_JS).toContain('from.getAttribute("data-wrn-behavior")');
expect(HMR_CLIENT_JS).toContain('from.getAttribute("data-scope")');
expect(HMR_CLIENT_JS).toContain("window.__wrnexusDisposeBehaviors(from)");
expect(HMR_CLIENT_JS).toContain("from.replaceWith(to.cloneNode(true))");
});