12import { afterEach, describe, expect, it, vi } from "vitest";3import { renderView } from "./view-test-utils";4import { InitialSyncView } from "./InitialSyncView";56describe("InitialSyncView", () => {7 let dispose: (() => void) | undefined;89 afterEach(() => {10 dispose?.();11 dispose = undefined;12 });1314 it("explains that pairing succeeded while the vault is still arriving", () => {15 const view = renderView(() => (16 <InitialSyncView slow={false} onRetry={() => {}} />17 ));18 dispose = view.dispose;1920 expect(view.container.textContent).toContain("PAIRING COMPLETE");21 expect(view.container.textContent).toContain("Getting your vault ready");22 expect(view.container.textContent).toContain("securely receiving your vault");23 expect(view.container.textContent).not.toContain("Retry initial sync");24 });2526 it("offers a retry when the first sync takes longer than expected", () => {27 const retry = vi.fn();28 const view = renderView(() => <InitialSyncView slow onRetry={retry} />);29 dispose = view.dispose;3031 const button = Array.from(view.container.querySelectorAll("button")).find(32 (candidate) => candidate.textContent?.includes("Retry initial sync"),33 );34 expect(button).toBeTruthy();35 button?.click();36 expect(retry).toHaveBeenCalledOnce();37 });38});