Files
astro-website/site/tests/umami-attributes.test.ts
Santhosh Janardhanan 5d07e57256
Some checks failed
ci / site (push) Has been cancelled
publish-image / publish (push) Has been cancelled
reduce bounce rate
2026-02-10 17:36:34 -05:00

47 lines
1.9 KiB
TypeScript

import { readFile } from "node:fs/promises";
import path from "node:path";
import { describe, expect, it } from "vitest";
async function read(rel: string) {
return await readFile(path.join(process.cwd(), rel), "utf8");
}
describe("umami event attributes", () => {
it("instruments nav links using data-umami-event", async () => {
const src = await read("src/layouts/BaseLayout.astro");
expect(src).toContain('data-umami-event="click"');
expect(src).toContain('data-umami-event-target_id="nav.videos"');
expect(src).toContain('data-umami-event-placement="nav"');
});
it("instruments CTAs using data-umami-event and unique target_id", async () => {
const src = await read("src/components/CtaLink.astro");
expect(src).toContain('data-umami-event="cta_click"');
expect(src).toContain("data-umami-event-target_id");
expect(src).toContain("data-umami-event-placement");
});
it("instruments youtube/podcast content cards using media_preview", async () => {
const src = await read("src/components/ContentCard.astro");
expect(src).toContain('"data-umami-event": "media_preview"');
expect(src).toContain("data-umami-event-target_id");
expect(src).toContain("data-umami-event-source");
});
it("instruments other content cards using outbound_click", async () => {
const src = await read("src/components/ContentCard.astro");
expect(src).toContain('"data-umami-event": "outbound_click"');
expect(src).toContain("data-umami-event-target_id");
expect(src).toContain("data-umami-event-domain");
});
it("instruments modal CTAs with correct attributes", async () => {
const src = await read("src/components/MediaModal.astro");
expect(src).toContain('"cta_click"');
expect(src).toContain('"data-umami-event-target_id"');
expect(src).toContain('"data-umami-event-placement", "media_modal"');
expect(src).toContain('"data-umami-event-platform"');
});
});