import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { describe, expect, test, beforeEach, afterEach } from "bun:test"; import React, { useState } from "react"; import { renderToString } from "react-dom/server"; import { hydrateRoot } from "react-dom/client"; import { GlobalWindow } from "happy-dom"; // A mock application component to test hydration function App() { const [count, setCount] = useState(0); return (_jsxs("div", { id: "app-root", children: [_jsx("h1", { children: "Test Hydration" }), _jsxs("p", { "data-testid": "count", children: ["Count: ", count] }), _jsx("button", { "data-testid": "btn", onClick: () => setCount(c => c + 1), children: "Increment" })] })); } describe("React Hydration", () => { let window; let document; beforeEach(() => { window = new GlobalWindow(); document = window.document; global.window = window; global.document = document; global.navigator = { userAgent: "node.js" }; }); afterEach(() => { // Clean up global mocks delete global.window; delete global.document; delete global.navigator; window.close(); }); test("hydrates a server-rendered component and binds events", async () => { // 1. Server-side render const html = renderToString(_jsx(App, {})); // 2. Setup DOM as it would be delivered to the client document.body.innerHTML = `