blog umami fix
This commit is contained in:
64
site/tests/blog-umami-attributes.test.ts
Normal file
64
site/tests/blog-umami-attributes.test.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
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("blog umami event attributes", () => {
|
||||
it("instruments blog secondary nav links", async () => {
|
||||
const src = await read("src/components/BlogSecondaryNav.astro");
|
||||
|
||||
expect(src).toContain('data-umami-event="click"');
|
||||
expect(src).toContain('data-umami-event-target_id="blog.subnav.all"');
|
||||
expect(src).toContain('data-umami-event-target_id="blog.subnav.pages"');
|
||||
expect(src).toContain("data-umami-event-target_id={`blog.subnav.category.${c.slug}`}");
|
||||
expect(src).toContain('data-umami-event-placement="blog.subnav"');
|
||||
expect(src).toContain("data-umami-event-target_url");
|
||||
});
|
||||
|
||||
it("instruments blog post cards with deterministic target_id and placement", async () => {
|
||||
const src = await read("src/components/BlogPostCard.astro");
|
||||
|
||||
expect(src).toContain('data-umami-event="click"');
|
||||
expect(src).toContain("data-umami-event-target_id={targetId}");
|
||||
expect(src).toContain("data-umami-event-placement={placement}");
|
||||
expect(src).toContain("data-umami-event-target_url");
|
||||
});
|
||||
|
||||
it("instruments blog pages list links (and keeps distinct IDs per placement)", async () => {
|
||||
const indexSrc = await read("src/pages/blog/index.astro");
|
||||
expect(indexSrc).toContain('data-umami-event-target_id="blog.index.pages.browse"');
|
||||
expect(indexSrc).toContain("data-umami-event-target_id={`blog.index.pages.link.${p.slug}`}");
|
||||
expect(indexSrc).toContain('data-umami-event-placement="blog.index.pages_preview"');
|
||||
|
||||
const pagesSrc = await read("src/pages/blog/pages.astro");
|
||||
expect(pagesSrc).toContain("data-umami-event-target_id={`blog.pages.link.${p.slug}`}");
|
||||
expect(pagesSrc).toContain('data-umami-event-placement="blog.pages.list"');
|
||||
});
|
||||
|
||||
it("instruments blog detail back links", async () => {
|
||||
const postSrc = await read("src/pages/blog/post/[slug].astro");
|
||||
expect(postSrc).toContain('data-umami-event-target_id="blog.post.back"');
|
||||
expect(postSrc).toContain('data-umami-event-placement="blog.post"');
|
||||
expect(postSrc).toContain('data-umami-event-target_url="/blog"');
|
||||
|
||||
const pageSrc = await read("src/pages/blog/page/[slug].astro");
|
||||
expect(pageSrc).toContain('data-umami-event-target_id="blog.page.back"');
|
||||
expect(pageSrc).toContain('data-umami-event-placement="blog.page"');
|
||||
expect(pageSrc).toContain('data-umami-event-target_url="/blog"');
|
||||
});
|
||||
|
||||
it("uses placement-specific target_id for post cards", async () => {
|
||||
const indexSrc = await read("src/pages/blog/index.astro");
|
||||
expect(indexSrc).toContain("targetId={`blog.index.card.post.${p.slug}`}");
|
||||
expect(indexSrc).toContain('placement="blog.index"');
|
||||
|
||||
const categorySrc = await read("src/pages/blog/category/[slug].astro");
|
||||
expect(categorySrc).toContain("placement={`blog.category.${activeCategory.slug}`}");
|
||||
expect(categorySrc).toContain("targetId={`blog.category.${activeCategory.slug}.card.post.${p.slug}`}");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user