fix: retain session failures across recovery surfaces (#3669)

This commit is contained in:
Carlos Florêncio
2026-09-15 09:36:47 +01:00
committed by GitHub
parent 54e2e21f32
commit eeeb6f5586
101 changed files with 4057 additions and 1704 deletions
@@ -6,11 +6,17 @@ import { TaskLaunchErrorProvider, useTaskLaunchErrorContext } from "./task-launc
const { toastMock } = vi.hoisted(() => ({
toastMock: vi.fn(),
}));
const { statusSummaryMock } = vi.hoisted(() => ({
statusSummaryMock: vi.fn(),
}));
vi.mock("@/components/toast-provider", () => ({
useToast: () => ({ toast: toastMock }),
}));
vi.mock("@/lib/i18n", () => ({ t: (key: string) => key }));
vi.mock("@/hooks/domains/task/use-task-status-summary", () => ({
useTaskStatusSummary: statusSummaryMock,
}));
const initialSummary: TaskStatusSummary = {
revision: 1,
@@ -46,6 +52,10 @@ afterEach(() => {
beforeEach(() => {
toastMock.mockReset();
statusSummaryMock.mockReset();
statusSummaryMock.mockImplementation(
(_taskId: string, detail: TaskStatusSummary | null | undefined) => detail,
);
});
describe("TaskLaunchErrorProvider", () => {
@@ -72,4 +82,20 @@ describe("TaskLaunchErrorProvider", () => {
expect(screen.getByTestId("summary-stamp").textContent).toBe("initial");
});
it("replaces the hydrated summary with a live task projection", () => {
const liveSummary: TaskStatusSummary = {
...initialSummary,
active_error: {
...initialSummary.active_error!,
stamp: "live",
},
};
statusSummaryMock.mockReturnValue(liveSummary);
renderProvider(initialSummary);
expect(screen.getByTestId("summary-stamp").textContent).toBe("live");
expect(statusSummaryMock).toHaveBeenCalledWith("task-1", initialSummary);
});
});