51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "@suaveplan/testing/runner";
|
|
import { createPwaObservability } from "./observability";
|
|
import type { PwaObservability } from "./observability.types";
|
|
|
|
describe("createPwaObservability", () => {
|
|
it("emits on every documented counter and histogram", {
|
|
timeout: 5000,
|
|
}, () => {
|
|
const obs = createPwaObservability();
|
|
const counters = [
|
|
obs.counters.swInstalledTotal,
|
|
obs.counters.swActivatedTotal,
|
|
obs.counters.swUpdatedTotal,
|
|
obs.counters.syncEnqueuedTotal,
|
|
obs.counters.syncProcessedTotal,
|
|
obs.counters.syncFailedTotal,
|
|
obs.counters.pushSubscribedTotal,
|
|
obs.counters.installPromptTotal,
|
|
];
|
|
for (const c of counters) {
|
|
expect(() => c.add(1, { tenant: "acme" })).not.toThrow();
|
|
}
|
|
expect(() =>
|
|
obs.histograms.syncFlushMs.record(12.3, { kind: "ok" })
|
|
).not.toThrow();
|
|
expect(() =>
|
|
obs.histograms.cacheStrategyMs.record(4.2, {
|
|
strategy: "cacheFirst",
|
|
})
|
|
).not.toThrow();
|
|
});
|
|
|
|
it("passes through a pre-built observability bundle", {
|
|
timeout: 5000,
|
|
}, () => {
|
|
const existing = createPwaObservability();
|
|
const passed: PwaObservability = createPwaObservability({
|
|
observability: existing,
|
|
});
|
|
expect(passed).toBe(existing);
|
|
});
|
|
|
|
it("supplies a default meter and tracer when none are provided", {
|
|
timeout: 5000,
|
|
}, () => {
|
|
const obs = createPwaObservability();
|
|
expect(obs.meter).toBeDefined();
|
|
expect(obs.tracer).toBeDefined();
|
|
});
|
|
});
|