From c43ba1c8af89c73c58f5f66167e4db8e3678b4dc Mon Sep 17 00:00:00 2001 From: leonace924 Date: Mon, 5 Jan 2026 20:04:58 -0500 Subject: [PATCH] feat: add rss testing --- test/e2e/specs/status-page.spec.js | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/test/e2e/specs/status-page.spec.js b/test/e2e/specs/status-page.spec.js index 360fa464a..456322817 100644 --- a/test/e2e/specs/status-page.spec.js +++ b/test/e2e/specs/status-page.spec.js @@ -283,4 +283,78 @@ test.describe("Status Page", () => { expect(rssContent).toContain(""); }); + test("RSS feed uses custom title and status page title", async ({ page }, testInfo) => { + test.setTimeout(60000); + + const statusPageTitle = "My Service Status"; + const customRssTitle = "Custom RSS Feed Title"; + + await page.goto("./add"); + await login(page); + + // Create a monitor + await expect(page.getByTestId("monitor-type-select")).toBeVisible(); + await page.getByTestId("monitor-type-select").selectOption("http"); + await page.getByTestId("friendly-name-input").fill("Test Monitor"); + await page.getByTestId("url-input").fill("https://example.com"); + await page.getByTestId("save-button").click(); + await page.waitForURL("/dashboard/*"); + + // Create a status page with a title + await page.goto("./add-status-page"); + await page.getByTestId("name-input").fill(statusPageTitle); + await page.getByTestId("slug-input").fill("rss-test"); + await page.getByTestId("submit-button").click(); + await page.waitForURL("/status/rss-test?edit"); + + // Add a group and monitor + await page.getByTestId("add-group-button").click(); + await page.getByTestId("group-name").fill("Test Group"); + await page.getByTestId("monitor-select").click(); + await page.getByTestId("monitor-select").getByRole("option", { name: "Test Monitor" }).click(); + + // Save without custom RSS title first + await page.getByTestId("save-button").click(); + await expect(page.getByTestId("edit-sidebar")).toHaveCount(0); + + // Fetch RSS feed - should use status page title + let rssResponse = await page.request.get("/status/rss-test/rss"); + expect(rssResponse.status()).toBe(200); + let rssContent = await rssResponse.text(); + + // Verify RSS feed uses status page title as fallback + expect(rssContent).toContain(`<![CDATA[${statusPageTitle} RSS Feed]]>`); + + // Verify RSS link uses the correct domain (not localhost hardcoded) + expect(rssContent).toContain("http://"); + expect(rssContent).toContain("/status/rss-test"); + + await testInfo.attach("rss-feed-default-title.xml", { + body: rssContent, + contentType: "application/xml" + }); + + // Now set a custom RSS title + await page.getByTestId("edit-button").click(); + await expect(page.getByTestId("edit-sidebar")).toHaveCount(1); + await page.getByTestId("rss-title-input").fill(customRssTitle); + await page.getByTestId("save-button").click(); + await expect(page.getByTestId("edit-sidebar")).toHaveCount(0); + + // Fetch RSS feed again - should use custom RSS title + rssResponse = await page.request.get("/status/rss-test/rss"); + expect(rssResponse.status()).toBe(200); + rssContent = await rssResponse.text(); + + // Verify RSS feed uses custom title + expect(rssContent).toContain(`<![CDATA[${customRssTitle}]]>`); + + await testInfo.attach("rss-feed-custom-title.xml", { + body: rssContent, + contentType: "application/xml" + }); + + await screenshot(testInfo, page); + }); + });