diff --git a/frontend-react/e2e/helpers/internal-links.ts b/frontend-react/e2e/helpers/internal-links.ts index 3ad68bb073a..641137fb76b 100644 --- a/frontend-react/e2e/helpers/internal-links.ts +++ b/frontend-react/e2e/helpers/internal-links.ts @@ -56,3 +56,26 @@ export const gettingStartedSideNav = [ path: "/getting-started/receiving-data", }, ]; + +export const developerResourcesApiSideNav = [ + { + name: "ReportStream API", + path: "/developer-resources/api", + }, + { + name: "Getting started", + path: "/developer-resources/api/getting-started", + }, + { + name: "Documentation", + path: "/developer-resources/api/documentation", + }, + { + name: "Responses from ReportStream", + path: "/developer-resources/api/documentation/responses-from-reportstream", + }, + { + name: "Sample payloads and output", + path: "/developer-resources/api/documentation/sample-payloads-and-output", + }, +]; diff --git a/frontend-react/e2e/pages/public/developer-resources/api/documentation/index.ts b/frontend-react/e2e/pages/public/developer-resources/api/documentation/index.ts new file mode 100644 index 00000000000..01facc38faa --- /dev/null +++ b/frontend-react/e2e/pages/public/developer-resources/api/documentation/index.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../../../../BasePage"; + +export class DeveloperResourcesApiDocumentationPage extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/developer-resources/api/documentation", + title: "ReportStream API documentation", + heading: testArgs.page.getByRole("heading", { + name: "Documentation", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/pages/public/developer-resources/api/documentation/responses-from-reportstream.ts b/frontend-react/e2e/pages/public/developer-resources/api/documentation/responses-from-reportstream.ts new file mode 100644 index 00000000000..81724ff952c --- /dev/null +++ b/frontend-react/e2e/pages/public/developer-resources/api/documentation/responses-from-reportstream.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../../../../BasePage"; + +export class ResponsesFromReportStreamPage extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/developer-resources/api/documentation/responses-from-reportstream", + title: "API responses from ReportStream", + heading: testArgs.page.getByRole("heading", { + name: "Responses from ReportStream", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/pages/public/developer-resources/api/documentation/sample-payloads-and-output.ts b/frontend-react/e2e/pages/public/developer-resources/api/documentation/sample-payloads-and-output.ts new file mode 100644 index 00000000000..064141c4f89 --- /dev/null +++ b/frontend-react/e2e/pages/public/developer-resources/api/documentation/sample-payloads-and-output.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../../../../BasePage"; + +export class SamplePayloadsAndOutputs extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/developer-resources/api/documentation/sample-payloads-and-output", + title: "ReportStream API sample payloads and output", + heading: testArgs.page.getByRole("heading", { + name: "Sample payloads and output", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/pages/public/developer-resources/api/getting-started.ts b/frontend-react/e2e/pages/public/developer-resources/api/getting-started.ts new file mode 100644 index 00000000000..818b87b95af --- /dev/null +++ b/frontend-react/e2e/pages/public/developer-resources/api/getting-started.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../../../BasePage"; + +export class DeveloperResourcesApiGettingStartedPage extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/developer-resources/api/getting-started", + title: "Getting started with ReportStream's API", + heading: testArgs.page.getByRole("heading", { + name: "Getting started", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/index.spec.ts b/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/index.spec.ts new file mode 100644 index 00000000000..68f26edaae5 --- /dev/null +++ b/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/index.spec.ts @@ -0,0 +1,56 @@ +import { developerResourcesApiSideNav } from "../../../../../../helpers/internal-links"; +import { DeveloperResourcesApiDocumentationPage } from "../../../../../../pages/public/developer-resources/api/documentation/index"; +import { test as baseTest } from "../../../../../../test"; + +export interface SecurityPageFixtures { + developerResourcesApiDocumentationPage: DeveloperResourcesApiDocumentationPage; +} + +const test = baseTest.extend({ + developerResourcesApiDocumentationPage: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new DeveloperResourcesApiDocumentationPage({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "Developer Resources / API / Documentation / Index page", + { + tag: "@smoke", + }, + () => { + test("has side nav", async ({ developerResourcesApiDocumentationPage }) => { + await developerResourcesApiDocumentationPage.testSidenav(developerResourcesApiSideNav); + }); + + test("has correct title + heading", async ({ developerResourcesApiDocumentationPage }) => { + await developerResourcesApiDocumentationPage.testHeader(); + }); + + test("footer", async ({ developerResourcesApiDocumentationPage }) => { + await developerResourcesApiDocumentationPage.testFooter(); + }); + }, +); diff --git a/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/responses-from-reportstream.spec.ts b/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/responses-from-reportstream.spec.ts new file mode 100644 index 00000000000..caa38df4110 --- /dev/null +++ b/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/responses-from-reportstream.spec.ts @@ -0,0 +1,56 @@ +import { developerResourcesApiSideNav } from "../../../../../../helpers/internal-links"; +import { ResponsesFromReportStreamPage } from "../../../../../../pages/public/developer-resources/api/documentation/responses-from-reportstream"; +import { test as baseTest } from "../../../../../../test"; + +export interface SecurityPageFixtures { + responsesFromReportStreamPage: ResponsesFromReportStreamPage; +} + +const test = baseTest.extend({ + responsesFromReportStreamPage: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new ResponsesFromReportStreamPage({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "Developer Resources / API / Documentation / Responses From ReportStream page", + { + tag: "@smoke", + }, + () => { + test("has side nav", async ({ responsesFromReportStreamPage }) => { + await responsesFromReportStreamPage.testSidenav(developerResourcesApiSideNav); + }); + + test("has correct title + heading", async ({ responsesFromReportStreamPage }) => { + await responsesFromReportStreamPage.testHeader(); + }); + + test("footer", async ({ responsesFromReportStreamPage }) => { + await responsesFromReportStreamPage.testFooter(); + }); + }, +); diff --git a/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/sample-payloads-and-output.spec.ts b/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/sample-payloads-and-output.spec.ts new file mode 100644 index 00000000000..5000be4d748 --- /dev/null +++ b/frontend-react/e2e/spec/all/public/developer-resources/api/documentation/sample-payloads-and-output.spec.ts @@ -0,0 +1,56 @@ +import { developerResourcesApiSideNav } from "../../../../../../helpers/internal-links"; +import { SamplePayloadsAndOutputs } from "../../../../../../pages/public/developer-resources/api/documentation/sample-payloads-and-output"; +import { test as baseTest } from "../../../../../../test"; + +export interface SecurityPageFixtures { + samplePayloadsAndOutputs: SamplePayloadsAndOutputs; +} + +const test = baseTest.extend({ + samplePayloadsAndOutputs: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new SamplePayloadsAndOutputs({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "Developer Resources / API / Documentation / Sample payloads and output page", + { + tag: "@smoke", + }, + () => { + test("has side nav", async ({ samplePayloadsAndOutputs }) => { + await samplePayloadsAndOutputs.testSidenav(developerResourcesApiSideNav); + }); + + test("has correct title + heading", async ({ samplePayloadsAndOutputs }) => { + await samplePayloadsAndOutputs.testHeader(); + }); + + test("footer", async ({ samplePayloadsAndOutputs }) => { + await samplePayloadsAndOutputs.testFooter(); + }); + }, +); diff --git a/frontend-react/e2e/spec/all/public/developer-resources/api/getting-started.spec.ts b/frontend-react/e2e/spec/all/public/developer-resources/api/getting-started.spec.ts new file mode 100644 index 00000000000..b88ff296fee --- /dev/null +++ b/frontend-react/e2e/spec/all/public/developer-resources/api/getting-started.spec.ts @@ -0,0 +1,56 @@ +import { developerResourcesApiSideNav } from "../../../../../helpers/internal-links"; +import { DeveloperResourcesApiGettingStartedPage } from "../../../../../pages/public/developer-resources/api/getting-started"; +import { test as baseTest } from "../../../../../test"; + +export interface SecurityPageFixtures { + developerResourcesApiGettingStartedPage: DeveloperResourcesApiGettingStartedPage; +} + +const test = baseTest.extend({ + developerResourcesApiGettingStartedPage: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new DeveloperResourcesApiGettingStartedPage({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "Developer Resources / API / Getting started page", + { + tag: "@smoke", + }, + () => { + test("has side nav", async ({ developerResourcesApiGettingStartedPage }) => { + await developerResourcesApiGettingStartedPage.testSidenav(developerResourcesApiSideNav); + }); + + test("has correct title + heading", async ({ developerResourcesApiGettingStartedPage }) => { + await developerResourcesApiGettingStartedPage.testHeader(); + }); + + test("footer", async ({ developerResourcesApiGettingStartedPage }) => { + await developerResourcesApiGettingStartedPage.testFooter(); + }); + }, +);