From eee3ae901b0d6e6dd686d70abfdbf7ac5fc667d0 Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Thu, 29 Aug 2024 14:08:51 -0500 Subject: [PATCH] Create E2E tests for api page (#15709) * Create E2E tests for developer resources index and api pages Fixes #14782 #14781 --- .../public/developer-resources/api/api.ts | 17 +++++ .../{ => developer-resources}/resources.ts | 2 +- .../developer-resources/api/api.spec.ts | 64 +++++++++++++++++++ .../resources-page.spec.ts | 4 +- 4 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 frontend-react/e2e/pages/public/developer-resources/api/api.ts rename frontend-react/e2e/pages/public/{ => developer-resources}/resources.ts (88%) create mode 100644 frontend-react/e2e/spec/all/public/developer-resources/api/api.spec.ts rename frontend-react/e2e/spec/all/public/{ => developer-resources}/resources-page.spec.ts (91%) 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;