UNPKG

@allurereport/web-awesome

Version:

The static files for Allure Awesome Report

66 lines (52 loc) 2.08 kB
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; describe("components > TestResult > openPlaywrightTraceInNewTab", () => { beforeEach(() => { vi.resetModules(); vi.useFakeTimers(); }); afterEach(() => { vi.restoreAllMocks(); vi.runOnlyPendingTimers(); vi.useRealTimers(); }); it("returns false when popup is blocked", async () => { const { openPlaywrightTraceInNewTab } = await import("@/components/TestResult/TrPwTraces/openPwTraceInNewTab"); vi.spyOn(window, "open").mockReturnValue(null); const result = openPlaywrightTraceInNewTab(new Blob(["trace"])); expect(result).toBe(false); }); it("sends trace message immediately and retries once", async () => { const { openPlaywrightTraceInNewTab } = await import("@/components/TestResult/TrPwTraces/openPwTraceInNewTab"); const postMessage = vi.fn(); const popup = { postMessage, location: { href: "" }, focus: vi.fn(), closed: false, } as unknown as Window; vi.spyOn(window, "open").mockReturnValue(popup); const result = openPlaywrightTraceInNewTab(new Blob(["trace"])); expect(result).toBe(true); expect(postMessage).toHaveBeenCalledTimes(1); vi.advanceTimersByTime(300); expect(postMessage).toHaveBeenCalledTimes(2); vi.advanceTimersByTime(30_000); expect(postMessage).toHaveBeenCalledTimes(2); }); it("does not send delayed retry when popup is already closed", async () => { const { openPlaywrightTraceInNewTab } = await import("@/components/TestResult/TrPwTraces/openPwTraceInNewTab"); const postMessage = vi.fn(); const popup = { postMessage, location: { href: "" }, focus: vi.fn(), closed: false, } as unknown as Window & { closed: boolean }; vi.spyOn(window, "open").mockReturnValue(popup); openPlaywrightTraceInNewTab(new Blob(["trace"])); expect(postMessage).toHaveBeenCalledTimes(1); popup.closed = true; vi.advanceTimersByTime(300); expect(postMessage).toHaveBeenCalledTimes(1); }); });