Files
fusion/packages/dashboard/app/utils/__tests__/dashboardTraceBuffer.test.ts
2026-05-17 19:11:59 -07:00

48 lines
1.3 KiB
TypeScript

/**
* @vitest-environment jsdom
*/
import { beforeEach, describe, expect, it } from "vitest";
import { clearTraces, getTraces, pushTrace } from "../dashboardTraceBuffer";
describe("dashboardTraceBuffer", () => {
beforeEach(() => {
clearTraces();
});
it("appends trace entries", () => {
pushTrace("versionCheck", "mismatch", { local: "a", remote: "b" });
const traces = getTraces();
expect(traces).toHaveLength(1);
expect(traces[0]).toMatchObject({
source: "versionCheck",
event: "mismatch",
detail: { local: "a", remote: "b" },
});
expect(typeof traces[0].ts).toBe("string");
});
it("caps entries at 200 and drops oldest", () => {
for (let i = 0; i < 205; i += 1) {
pushTrace("sse-bus", "event", { idx: i });
}
const traces = getTraces();
expect(traces).toHaveLength(200);
expect(traces[0]?.detail).toEqual({ idx: 5 });
expect(traces[199]?.detail).toEqual({ idx: 204 });
});
it("exposes traces via window.__fusionDebug.dashboardTraces.get", () => {
pushTrace("useTasks", "dropped-stale-event", { count: 1 });
const debugApi = window.__fusionDebug?.dashboardTraces;
expect(debugApi).toBeDefined();
expect(debugApi?.get()).toHaveLength(1);
expect(debugApi?.get()[0]).toMatchObject({
source: "useTasks",
event: "dropped-stale-event",
});
});
});