All of the mid-session and step-up auth work

This commit is contained in:
Bob Dickinson 2026-07-02 16:35:31 -07:00
commit 562bdd00f1

View file

@ -0,0 +1,44 @@
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import {
isBrowserTabVisible,
onBrowserTabVisible,
} from "./browserTabVisibility.js";
describe("browserTabVisibility", () => {
beforeEach(() => {
vi.stubGlobal("document", {
visibilityState: "visible",
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
});
});
afterEach(() => {
vi.unstubAllGlobals();
});
it("isBrowserTabVisible reflects document.visibilityState", () => {
expect(isBrowserTabVisible()).toBe(true);
(document as { visibilityState: string }).visibilityState = "hidden";
expect(isBrowserTabVisible()).toBe(false);
});
it("onBrowserTabVisible invokes callback when becoming visible", () => {
let handler: (() => void) | undefined;
vi.mocked(document.addEventListener).mockImplementation((_event, fn) => {
handler = fn as () => void;
});
const callback = vi.fn();
onBrowserTabVisible(callback);
expect(handler).toBeDefined();
(document as { visibilityState: string }).visibilityState = "hidden";
handler!();
expect(callback).not.toHaveBeenCalled();
(document as { visibilityState: string }).visibilityState = "visible";
handler!();
expect(callback).toHaveBeenCalledOnce();
});
});