diff --git a/frontend-react/e2e/pages/public/developer-resources/api/api.ts b/frontend-react/e2e/pages/public/developer-resources/api/api.ts new file mode 100644 index 00000000000..2267192ac75 --- /dev/null +++ b/frontend-react/e2e/pages/public/developer-resources/api/api.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../../../BasePage"; + +export class DeveloperResourcesApiPage extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/developer-resources/api", + title: "Guide to connecting with ReportStream's API", + heading: testArgs.page.getByRole("heading", { + name: "ReportStream API", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/pages/public/resources.ts b/frontend-react/e2e/pages/public/developer-resources/resources.ts similarity index 88% rename from frontend-react/e2e/pages/public/resources.ts rename to frontend-react/e2e/pages/public/developer-resources/resources.ts index 5accb844500..30e23a65b85 100644 --- a/frontend-react/e2e/pages/public/resources.ts +++ b/frontend-react/e2e/pages/public/developer-resources/resources.ts @@ -1,4 +1,4 @@ -import { BasePage, BasePageTestArgs } from "../BasePage"; +import { BasePage, BasePageTestArgs } from "../../BasePage"; export class DeveloperResourcesPage extends BasePage { constructor(testArgs: BasePageTestArgs) { diff --git a/frontend-react/e2e/spec/all/public/developer-resources/api/api.spec.ts b/frontend-react/e2e/spec/all/public/developer-resources/api/api.spec.ts new file mode 100644 index 00000000000..16f850ce267 --- /dev/null +++ b/frontend-react/e2e/spec/all/public/developer-resources/api/api.spec.ts @@ -0,0 +1,64 @@ +import { developerResourcesApiSideNav } from "../../../../../helpers/internal-links"; +import { DeveloperResourcesApiPage } from "../../../../../pages/public/developer-resources/api/api"; +import { test as baseTest, expect } from "../../../../../test.js"; + +export interface Fixtures { + developerResourcesApiPage: DeveloperResourcesApiPage; +} + +const test = baseTest.extend({ + developerResourcesApiPage: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new DeveloperResourcesApiPage({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "Developer Resources / API page", + { + tag: "@smoke", + }, + () => { + test("has side nav", async ({ developerResourcesApiPage }) => { + await developerResourcesApiPage.testSidenav(developerResourcesApiSideNav); + }); + + test("pdf file download works", async ({ developerResourcesApiPage }) => { + const downloadPromise = developerResourcesApiPage.page.waitForEvent("download"); + await developerResourcesApiPage.page.getByRole("link", { name: "downloadable PDF" }).click(); + const download = await downloadPromise; + expect(download.suggestedFilename()).toMatch(/^.+\.pdf$/); + await download.cancel(); + }); + + test("has correct title + heading", async ({ developerResourcesApiPage }) => { + await developerResourcesApiPage.testHeader(); + }); + + test("footer", async ({ developerResourcesApiPage }) => { + await developerResourcesApiPage.testFooter(); + }); + }, +); diff --git a/frontend-react/e2e/spec/all/public/resources-page.spec.ts b/frontend-react/e2e/spec/all/public/developer-resources/resources-page.spec.ts similarity index 91% rename from frontend-react/e2e/spec/all/public/resources-page.spec.ts rename to frontend-react/e2e/spec/all/public/developer-resources/resources-page.spec.ts index 1acd4e1883f..02b5003b9b1 100644 --- a/frontend-react/e2e/spec/all/public/resources-page.spec.ts +++ b/frontend-react/e2e/spec/all/public/developer-resources/resources-page.spec.ts @@ -1,5 +1,5 @@ -import { DeveloperResourcesPage } from "../../../pages/public/resources"; -import { test as baseTest } from "../../../test"; +import { DeveloperResourcesPage } from "../../../../pages/public/developer-resources/resources"; +import { test as baseTest } from "../../../../test"; export interface DeveloperResourcesPageFixtures { developerResourcesPage: DeveloperResourcesPage;