diff --git a/tests/rss-autodiscovery.test.ts b/tests/rss-autodiscovery.test.ts
new file mode 100644
index 0000000..06ec806
--- /dev/null
+++ b/tests/rss-autodiscovery.test.ts
@@ -0,0 +1,30 @@
+import { expect, test } from '@playwright/test'
+
+const RSS_LINK =
+ 'head > link[rel="alternate"][type="application/rss+xml"][href="/blog/rss.xml"]'
+
+// Regression test for the site-wide RSS autodiscovery link (issue
+// encryption4all/postguard-business#58). The autodiscovery lives in the
+// marketing layout head, so every public page must advertise the blog feed
+// exactly once — including non-blog pages and blog pages, which must not carry
+// a leftover per-page duplicate.
+for (const path of ['/', '/about/', '/blog/']) {
+ test(`RSS autodiscovery link is present exactly once on ${path}`, async ({
+ page,
+ }) => {
+ await page.goto(path)
+ await expect(page.locator(RSS_LINK)).toHaveCount(1)
+ })
+}
+
+test('RSS autodiscovery link is present exactly once on a blog post page', async ({
+ page,
+}) => {
+ await page.goto('/blog/')
+ const firstPost = page.locator('a.post-card').first()
+ const href = await firstPost.getAttribute('href')
+ expect(href, 'expected at least one blog post link on /blog/').toBeTruthy()
+
+ await page.goto(href as string)
+ await expect(page.locator(RSS_LINK)).toHaveCount(1)
+})
diff --git a/tests/test.ts b/tests/test.ts
deleted file mode 100644
index 1ce937c..0000000
--- a/tests/test.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { expect, test } from '@playwright/test'
-
-test('index page has expected h1', async ({ page }) => {
- await page.goto('/')
- expect(await page.textContent('h1')).toBe('Welcome to SvelteKit')
-})