mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: add a Keep it free sponsor button to the top nav (#427)
Adds a prominent Keep it free sponsor button to the top nav, linking to https://github.com/sponsors/snapotter-hq. Solid orange pill on desktop (left of the avatar), orange heart icon on mobile. Opens in a new tab with rel=noopener noreferrer, so no referrer or user data leaks, and it adds no passive network activity (offline-mode compatible). Fires an opt-in, property-less sponsor_clicked analytics event. Adds sidebar.sponsor and a11y.sponsorLink across all 21 locales. Claude-Session: https://claude.ai/code/session_01DnYLLA5z4Uf1GDeEPENVgr
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import { expect, test } from "./helpers";
|
||||
|
||||
const SPONSOR_URL = "https://github.com/sponsors/snapotter-hq";
|
||||
|
||||
test.describe("Sponsor button", () => {
|
||||
// Pin a desktop viewport so the full pill (with visible text) renders,
|
||||
// not the mobile icon-only form.
|
||||
test.use({ viewport: { width: 1280, height: 720 } });
|
||||
|
||||
test("top nav links to GitHub Sponsors with safe rel", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
const link = page.locator(`a[href="${SPONSOR_URL}"]`);
|
||||
await expect(link).toBeVisible();
|
||||
await expect(link).toHaveAttribute("target", "_blank");
|
||||
await expect(link).toHaveAttribute("rel", "noopener noreferrer");
|
||||
await expect(link).toContainText(/keep it free/i);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user