Menu
popagent
publicLatest change a0a40d29a3e84c0bd33b702d3da3a62c5456d005 - Release 1.0.52: embedding batch sizing for the local embedder by AkurAI Build
import { describe, expect, test } from "bun:test";
import { renderToStaticMarkup } from "react-dom/server";
import { ChangelogTimeline, parseChangelog } from "./ChangelogPage";
import changelogMarkdown from "../../CHANGELOG.md" with { type: "text" };
const markdown = `# Changelog\n\n## [Unreleased]\n\n### Added\n\n- Shipped the timeline.\n- Kept the force-push button untouched.\n\n## [1.0.0] - 2026-08-15\n\n### Fixed\n\n- Fixed a tiny gremlin.\n`;
describe("changelog presentation", () => {
test("parses releases, categories, and bullet entries", () => {
expect(parseChangelog(markdown)).toEqual([
{ title: "Unreleased", date: undefined, groups: [{ title: "Added", items: ["Shipped the timeline.", "Kept the force-push button untouched."] }] },
{ title: "1.0.0", date: "2026-08-15", groups: [{ title: "Fixed", items: ["Fixed a tiny gremlin."] }] },
]);
});
test("parses Bun's production Markdown module output", () => {
const bundled = `<h1>Changelog</h1>
<h2>[1.2.3] - 2026-08-15</h2>
<h3>Fixed</h3>
<ul>
<li>Preserved <code>older</code> release entries.</li>
</ul>`;
expect(parseChangelog(bundled)).toEqual([
{ title: "1.2.3", date: "2026-08-15", groups: [{ title: "Fixed", items: ["Preserved `older` release entries."] }] },
]);
});
test("bundles released versions instead of unreleased changes", () => {
const releases = parseChangelog(changelogMarkdown);
expect(releases[0]?.title).toBe("1.0.52");
expect(releases.some((release) => release.title === "Unreleased")).toBe(false);
expect(releases.map((release) => release.title)).toEqual(["1.0.52", "1.0.51", "1.0.50", "1.0.49", "1.0.48", "1.0.47", "1.0.46", "1.0.45", "1.0.44", "1.0.43", "1.0.42", "1.0.41", "1.0.40", "1.0.39", "1.0.38", "1.0.37", "1.0.36", "1.0.35", "1.0.34", "1.0.33", "1.0.32", "1.0.31", "1.0.30", "1.0.29", "1.0.28", "1.0.27", "1.0.26", "1.0.25", "1.0.24", "1.0.23", "1.0.22", "1.0.21", "1.0.20", "1.0.19", "1.0.18", "1.0.17", "1.0.16", "1.0.15", "1.0.14", "1.0.13", "1.0.12", "1.0.11", "1.0.10", "1.0.9", "1.0.8", "1.0.7", "1.0.6", "1.0.5", "1.0.4", "1.0.3", "1.0.2", "1.0.1", "1.0.0"]);
});
test("renders a repository timeline with release semantics", () => {
const html = renderToStaticMarkup(<ChangelogTimeline markdown={markdown} />);
expect(html).toContain("Release feed");
expect(html).toContain("Unreleased");
expect(html).toContain("1.0.0");
expect(html).toContain("page-content");
expect(html).not.toContain("max-w-5xl");
expect(html).toContain("Fixed a tiny gremlin.");
});
});