Skip to content
Closed
11 changes: 11 additions & 0 deletions .hallmark/log.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[
{
"date": "2026-06-05",
"macrostructure": "Workbench",
"theme": "custom",
"theme_axes": "dark / mono / cool",
"vibe": "nautical terminal, ocean-deep navy, marine-cyan accent",
"enrichment": "none",
"brief": "Nautical terminal-forward homepage redesign"
}
]
7 changes: 7 additions & 0 deletions .hallmark/preflight.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"fonts": "Geist + JetBrains Mono (next/font/google, apps/www/app/layout.tsx L10, L14)",
"palette": "HSL & Hex custom properties (apps/www/app/styles/theme/light.css :root)",
"motion": "no framework motion library detected (package.json)",
"spacing": "Tailwind spacing (apps/www/app/styles/theme/light.css)",
"framework": "Next.js 16 (app router)"
}
20 changes: 11 additions & 9 deletions apps/playwright-www/tests/homepage.test.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
import { expect, test } from "@playwright/test";

test.describe("Homepage Interactivity", () => {
test("should have functional 'Quickstart' button", async ({ page }) => {
test("should have functional docs link", async ({ page }) => {
await page.goto("/");
const sailButton = page.locator("a[href='/docs/arkenv/quickstart']");
await expect(sailButton).toBeVisible();
const docsLink = page.locator("a[href='/docs/arkenv']").first();
await expect(docsLink).toBeVisible();

await Promise.all([
page.waitForURL("**/docs/arkenv/quickstart", { timeout: 30000 }),
sailButton.click(),
page.waitForURL("**/docs/arkenv", { timeout: 30000 }),
docsLink.click(),
]);
await expect(page).toHaveURL("/docs/arkenv/quickstart");
await expect(page).toHaveURL("/docs/arkenv");
});

test("should have GitHub star link with correct security attributes", async ({
test("should have GitHub link with correct security attributes", async ({
page,
}) => {
await page.goto("/");
await page.waitForLoadState("networkidle");

// On desktop, the header GitHub action is visible; mobile CTA is hidden (`sm:hidden`).
const githubLink = page.getByRole("link", { name: /^GitHub$/i });
// Header has desktop + menu GitHub actions; assert the first visible one.
const githubLink = page
.getByRole("link", { name: "GitHub", exact: true })
.first();

await expect(githubLink).toBeVisible();
await expect(githubLink).toHaveAttribute("target", "_blank");
Expand Down
Loading
Loading