48 lines
1.3 KiB
TypeScript
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",
|
|
});
|
|
});
|
|
});
|