From 491288160eb30539995590e1f02e25a36bee55a0 Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Mon, 26 Aug 2024 13:13:09 -0500 Subject: [PATCH 1/7] Create E2E tests for the Release Notes, Case Studies, Roadmap pages Fixes #14777 #14775 #14774 --- .../e2e/pages/about/case-studies.ts | 17 +++++ .../e2e/pages/about/release-notes.ts | 17 +++++ frontend-react/e2e/pages/about/roadmap.ts | 17 +++++ .../e2e/spec/all/about/case-studies.spec.ts | 68 ++++++++++++++++++ .../e2e/spec/all/about/release-notes.spec.ts | 70 +++++++++++++++++++ .../e2e/spec/all/about/roadmap.spec.ts | 68 ++++++++++++++++++ 6 files changed, 257 insertions(+) create mode 100644 frontend-react/e2e/pages/about/case-studies.ts create mode 100644 frontend-react/e2e/pages/about/release-notes.ts create mode 100644 frontend-react/e2e/pages/about/roadmap.ts create mode 100644 frontend-react/e2e/spec/all/about/case-studies.spec.ts create mode 100644 frontend-react/e2e/spec/all/about/release-notes.spec.ts create mode 100644 frontend-react/e2e/spec/all/about/roadmap.spec.ts diff --git a/frontend-react/e2e/pages/about/case-studies.ts b/frontend-react/e2e/pages/about/case-studies.ts new file mode 100644 index 00000000000..9cb8e2fa030 --- /dev/null +++ b/frontend-react/e2e/pages/about/case-studies.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../BasePage"; + +export class AboutCaseStudiesPage extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/about/case-studies", + title: "ReportStream case studies", + heading: testArgs.page.getByRole("heading", { + name: "Case studies", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/pages/about/release-notes.ts b/frontend-react/e2e/pages/about/release-notes.ts new file mode 100644 index 00000000000..fddbf7f0c5e --- /dev/null +++ b/frontend-react/e2e/pages/about/release-notes.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../BasePage"; + +export class AboutReleaseNotesPage extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/about/release-notes", + title: "ReportStream release notes", + heading: testArgs.page.getByRole("heading", { + name: "Release notes", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/pages/about/roadmap.ts b/frontend-react/e2e/pages/about/roadmap.ts new file mode 100644 index 00000000000..7550a7c94e2 --- /dev/null +++ b/frontend-react/e2e/pages/about/roadmap.ts @@ -0,0 +1,17 @@ +import { BasePage, BasePageTestArgs } from "../BasePage"; + +export class AboutRoadmapPage extends BasePage { + constructor(testArgs: BasePageTestArgs) { + super( + { + url: "/about/roadmap", + title: "ReportStream roadmap", + heading: testArgs.page.getByRole("heading", { + name: "Roadmap", + exact: true, + }), + }, + testArgs, + ); + } +} diff --git a/frontend-react/e2e/spec/all/about/case-studies.spec.ts b/frontend-react/e2e/spec/all/about/case-studies.spec.ts new file mode 100644 index 00000000000..3bd667c672c --- /dev/null +++ b/frontend-react/e2e/spec/all/about/case-studies.spec.ts @@ -0,0 +1,68 @@ +import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; +import { AboutCaseStudiesPage } from "../../../pages/about/case-studies"; +import { test as baseTest, expect } from "../../../test"; + +export interface Fixtures { + aboutCaseStudiesPage: AboutCaseStudiesPage; +} + +const test = baseTest.extend({ + aboutCaseStudiesPage: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new AboutCaseStudiesPage({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "About / Case Studies page", + { + tag: "@smoke", + }, + () => { + test("has correct title", async ({ aboutCaseStudiesPage }) => { + await expect(aboutCaseStudiesPage.page).toHaveTitle(aboutCaseStudiesPage.title); + await expect(aboutCaseStudiesPage.heading).toBeVisible(); + }); + + test("has side nav", async ({ aboutCaseStudiesPage }) => { + await expect(aboutCaseStudiesPage.page.getByRole("navigation", { name: "side-navigation " })).toBeVisible(); + }); + + test.describe("Footer", () => { + test("has footer", async ({ aboutCaseStudiesPage }) => { + await expect(aboutCaseStudiesPage.footer).toBeAttached(); + }); + + test("explicit scroll to footer and then scroll to top", async ({ aboutCaseStudiesPage }) => { + await expect(aboutCaseStudiesPage.footer).not.toBeInViewport(); + await scrollToFooter(aboutCaseStudiesPage.page); + await expect(aboutCaseStudiesPage.footer).toBeInViewport(); + await expect(aboutCaseStudiesPage.page.getByTestId("govBanner")).not.toBeInViewport(); + await scrollToTop(aboutCaseStudiesPage.page); + await expect(aboutCaseStudiesPage.page.getByTestId("govBanner")).toBeInViewport(); + }); + }); + }, +); diff --git a/frontend-react/e2e/spec/all/about/release-notes.spec.ts b/frontend-react/e2e/spec/all/about/release-notes.spec.ts new file mode 100644 index 00000000000..deba34b1217 --- /dev/null +++ b/frontend-react/e2e/spec/all/about/release-notes.spec.ts @@ -0,0 +1,70 @@ +import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; +import { AboutReleaseNotesPage } from "../../../pages/about/release-notes"; +import { test as baseTest, expect } from "../../../test"; + +export interface Fixtures { + aboutReleaseNotesPage: AboutReleaseNotesPage; +} + +const test = baseTest.extend({ + aboutReleaseNotesPage: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new AboutReleaseNotesPage({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "About / Release Notes page", + { + tag: "@smoke", + }, + () => { + test("has correct title", async ({ aboutReleaseNotesPage }) => { + await expect(aboutReleaseNotesPage.page).toHaveTitle(aboutReleaseNotesPage.title); + await expect(aboutReleaseNotesPage.heading).toBeVisible(); + }); + + test("has side nav", async ({ aboutReleaseNotesPage }) => { + await expect( + aboutReleaseNotesPage.page.getByRole("navigation", { name: "side-navigation " }), + ).toBeVisible(); + }); + + test.describe("Footer", () => { + test("has footer", async ({ aboutReleaseNotesPage }) => { + await expect(aboutReleaseNotesPage.footer).toBeAttached(); + }); + + test("explicit scroll to footer and then scroll to top", async ({ aboutReleaseNotesPage }) => { + await expect(aboutReleaseNotesPage.footer).not.toBeInViewport(); + await scrollToFooter(aboutReleaseNotesPage.page); + await expect(aboutReleaseNotesPage.footer).toBeInViewport(); + await expect(aboutReleaseNotesPage.page.getByTestId("govBanner")).not.toBeInViewport(); + await scrollToTop(aboutReleaseNotesPage.page); + await expect(aboutReleaseNotesPage.page.getByTestId("govBanner")).toBeInViewport(); + }); + }); + }, +); diff --git a/frontend-react/e2e/spec/all/about/roadmap.spec.ts b/frontend-react/e2e/spec/all/about/roadmap.spec.ts new file mode 100644 index 00000000000..02251252131 --- /dev/null +++ b/frontend-react/e2e/spec/all/about/roadmap.spec.ts @@ -0,0 +1,68 @@ +import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; +import { AboutRoadmapPage } from "../../../pages/about/roadmap"; +import { test as baseTest, expect } from "../../../test"; + +export interface Fixtures { + aboutRoadmapPage: AboutRoadmapPage; +} + +const test = baseTest.extend({ + aboutRoadmapPage: async ( + { + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }, + use, + ) => { + const page = new AboutRoadmapPage({ + page: _page, + isMockDisabled, + adminLogin, + senderLogin, + receiverLogin, + storageState, + isFrontendWarningsLog, + frontendWarningsLogPath, + }); + await page.goto(); + await use(page); + }, +}); + +test.describe( + "About / Release Notes page", + { + tag: "@smoke", + }, + () => { + test("has correct title", async ({ aboutRoadmapPage }) => { + await expect(aboutRoadmapPage.page).toHaveTitle(aboutRoadmapPage.title); + await expect(aboutRoadmapPage.heading).toBeVisible(); + }); + + test("has side nav", async ({ aboutRoadmapPage }) => { + await expect(aboutRoadmapPage.page.getByRole("navigation", { name: "side-navigation " })).toBeVisible(); + }); + + test.describe("Footer", () => { + test("has footer", async ({ aboutRoadmapPage }) => { + await expect(aboutRoadmapPage.footer).toBeAttached(); + }); + + test("explicit scroll to footer and then scroll to top", async ({ aboutRoadmapPage }) => { + await expect(aboutRoadmapPage.footer).not.toBeInViewport(); + await scrollToFooter(aboutRoadmapPage.page); + await expect(aboutRoadmapPage.footer).toBeInViewport(); + await expect(aboutRoadmapPage.page.getByTestId("govBanner")).not.toBeInViewport(); + await scrollToTop(aboutRoadmapPage.page); + await expect(aboutRoadmapPage.page.getByTestId("govBanner")).toBeInViewport(); + }); + }); + }, +); From e595a9b1f017040c36e9903507f86187bdb4ae9e Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Mon, 26 Aug 2024 14:04:37 -0500 Subject: [PATCH 2/7] remove dupe, organize --- .../{ => about}/about-side-navigation.ts | 0 frontend-react/e2e/pages/{ => about}/about.ts | 2 +- .../e2e/pages/{ => about}/our-network.ts | 0 frontend-react/e2e/pages/about/roadmap.ts | 21 +--- frontend-react/e2e/pages/roadmap.ts | 8 -- .../spec/all/{ => about}/about-page.spec.ts | 0 .../all/{ => about}/our-network-page.spec.ts | 4 +- .../e2e/spec/all/about/roadmap.spec.ts | 106 +++++++++--------- .../e2e/spec/all/{ => about}/security.spec.ts | 6 +- frontend-react/e2e/spec/all/homepage.spec.ts | 30 ++--- frontend-react/e2e/spec/all/roadmap.spec.ts | 72 ------------ 11 files changed, 75 insertions(+), 174 deletions(-) rename frontend-react/e2e/pages/{ => about}/about-side-navigation.ts (100%) rename frontend-react/e2e/pages/{ => about}/about.ts (86%) rename frontend-react/e2e/pages/{ => about}/our-network.ts (100%) delete mode 100644 frontend-react/e2e/pages/roadmap.ts rename frontend-react/e2e/spec/all/{ => about}/about-page.spec.ts (100%) rename frontend-react/e2e/spec/all/{ => about}/our-network-page.spec.ts (92%) rename frontend-react/e2e/spec/all/{ => about}/security.spec.ts (95%) delete mode 100644 frontend-react/e2e/spec/all/roadmap.spec.ts diff --git a/frontend-react/e2e/pages/about-side-navigation.ts b/frontend-react/e2e/pages/about/about-side-navigation.ts similarity index 100% rename from frontend-react/e2e/pages/about-side-navigation.ts rename to frontend-react/e2e/pages/about/about-side-navigation.ts diff --git a/frontend-react/e2e/pages/about.ts b/frontend-react/e2e/pages/about/about.ts similarity index 86% rename from frontend-react/e2e/pages/about.ts rename to frontend-react/e2e/pages/about/about.ts index 2189c703f39..1e854c0236d 100644 --- a/frontend-react/e2e/pages/about.ts +++ b/frontend-react/e2e/pages/about/about.ts @@ -1,4 +1,4 @@ -import { BasePage, BasePageTestArgs } from "./BasePage"; +import { BasePage, BasePageTestArgs } from "../BasePage"; export class AboutPage extends BasePage { constructor(testArgs: BasePageTestArgs) { diff --git a/frontend-react/e2e/pages/our-network.ts b/frontend-react/e2e/pages/about/our-network.ts similarity index 100% rename from frontend-react/e2e/pages/our-network.ts rename to frontend-react/e2e/pages/about/our-network.ts diff --git a/frontend-react/e2e/pages/about/roadmap.ts b/frontend-react/e2e/pages/about/roadmap.ts index 7550a7c94e2..af49e5aefa5 100644 --- a/frontend-react/e2e/pages/about/roadmap.ts +++ b/frontend-react/e2e/pages/about/roadmap.ts @@ -1,17 +1,8 @@ -import { BasePage, BasePageTestArgs } from "../BasePage"; +import { Page } from "@playwright/test"; -export class AboutRoadmapPage extends BasePage { - constructor(testArgs: BasePageTestArgs) { - super( - { - url: "/about/roadmap", - title: "ReportStream roadmap", - heading: testArgs.page.getByRole("heading", { - name: "Roadmap", - exact: true, - }), - }, - testArgs, - ); - } +export const URL_ROADMAP = "/about/roadmap"; +export async function goto(page: Page) { + await page.goto(URL_ROADMAP, { + waitUntil: "domcontentloaded", + }); } diff --git a/frontend-react/e2e/pages/roadmap.ts b/frontend-react/e2e/pages/roadmap.ts deleted file mode 100644 index af49e5aefa5..00000000000 --- a/frontend-react/e2e/pages/roadmap.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Page } from "@playwright/test"; - -export const URL_ROADMAP = "/about/roadmap"; -export async function goto(page: Page) { - await page.goto(URL_ROADMAP, { - waitUntil: "domcontentloaded", - }); -} diff --git a/frontend-react/e2e/spec/all/about-page.spec.ts b/frontend-react/e2e/spec/all/about/about-page.spec.ts similarity index 100% rename from frontend-react/e2e/spec/all/about-page.spec.ts rename to frontend-react/e2e/spec/all/about/about-page.spec.ts diff --git a/frontend-react/e2e/spec/all/our-network-page.spec.ts b/frontend-react/e2e/spec/all/about/our-network-page.spec.ts similarity index 92% rename from frontend-react/e2e/spec/all/our-network-page.spec.ts rename to frontend-react/e2e/spec/all/about/our-network-page.spec.ts index d8345618291..89810e11f3c 100644 --- a/frontend-react/e2e/spec/all/our-network-page.spec.ts +++ b/frontend-react/e2e/spec/all/about/our-network-page.spec.ts @@ -1,7 +1,7 @@ import { expect, test } from "@playwright/test"; -import * as sideNav from "../../pages/about-side-navigation"; -import * as ourNetwork from "../../pages/our-network"; +import * as sideNav from "../../../pages/about/about-side-navigation"; +import * as ourNetwork from "../../../pages/about/our-network"; test.describe( "Our network page", { diff --git a/frontend-react/e2e/spec/all/about/roadmap.spec.ts b/frontend-react/e2e/spec/all/about/roadmap.spec.ts index 02251252131..69f6ad64139 100644 --- a/frontend-react/e2e/spec/all/about/roadmap.spec.ts +++ b/frontend-react/e2e/spec/all/about/roadmap.spec.ts @@ -1,67 +1,71 @@ -import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; -import { AboutRoadmapPage } from "../../../pages/about/roadmap"; -import { test as baseTest, expect } from "../../../test"; +import { expect, test } from "@playwright/test"; -export interface Fixtures { - aboutRoadmapPage: AboutRoadmapPage; -} - -const test = baseTest.extend({ - aboutRoadmapPage: async ( - { - page: _page, - isMockDisabled, - adminLogin, - senderLogin, - receiverLogin, - storageState, - isFrontendWarningsLog, - frontendWarningsLogPath, - }, - use, - ) => { - const page = new AboutRoadmapPage({ - page: _page, - isMockDisabled, - adminLogin, - senderLogin, - receiverLogin, - storageState, - isFrontendWarningsLog, - frontendWarningsLogPath, - }); - await page.goto(); - await use(page); - }, -}); +import * as internalLinks from "../../../helpers/internal-links"; +import * as sideNav from "../../../pages/about/about-side-navigation"; +import * as roadmap from "../../../pages/about/roadmap"; +import { URL_ROADMAP } from "../../../pages/about/roadmap"; test.describe( - "About / Release Notes page", + "Product roadmap page", { tag: "@smoke", }, () => { - test("has correct title", async ({ aboutRoadmapPage }) => { - await expect(aboutRoadmapPage.page).toHaveTitle(aboutRoadmapPage.title); - await expect(aboutRoadmapPage.heading).toBeVisible(); + test.beforeEach(async ({ page }) => { + await roadmap.goto(page); + }); + + test("has correct title", async ({ page }) => { + await expect(page).toHaveURL(URL_ROADMAP); + await expect(page).toHaveTitle(/Product roadmap/); }); - test("has side nav", async ({ aboutRoadmapPage }) => { - await expect(aboutRoadmapPage.page.getByRole("navigation", { name: "side-navigation " })).toBeVisible(); + test.describe("Side navigation", () => { + test("has Our network link", async ({ page }) => { + await sideNav.clickNetwork(page); + await expect(page).toHaveURL(/.*about\/our-network/); + }); + + test("has Product roadmap link", async ({ page }) => { + await sideNav.clickRoadmap(page); + await expect(page).toHaveURL(/.*about\/roadmap/); + }); + + test("has News link", async ({ page }) => { + await sideNav.clickNews(page); + await expect(page).toHaveURL(/.*about\/news/); + }); + + test("has Case studies link", async ({ page }) => { + await sideNav.clickCaseStudies(page); + await expect(page).toHaveURL(/.*about\/case-studies/); + }); + + test("has Security link", async ({ page }) => { + await sideNav.clickSecurity(page); + await expect(page).toHaveURL(/.*about\/security/); + }); + + test("has Release notes link", async ({ page }) => { + await sideNav.clickReleaseNotes(page); + await expect(page).toHaveURL(/.*about\/release-notes/); + }); }); - test.describe("Footer", () => { - test("has footer", async ({ aboutRoadmapPage }) => { - await expect(aboutRoadmapPage.footer).toBeAttached(); + test.describe("Additional resources Links", () => { + test("has News", async ({ page }) => { + await internalLinks.clickOnInternalLink("div", "CardGroup", "News", page); + await expect(page).toHaveURL(/.*about\/news/); + }); + + test("has Release notes", async ({ page }) => { + await internalLinks.clickOnInternalLink("div", "CardGroup", "Release notes", page); + await expect(page).toHaveURL(/.*about\/release-notes/); }); - test("explicit scroll to footer and then scroll to top", async ({ aboutRoadmapPage }) => { - await expect(aboutRoadmapPage.footer).not.toBeInViewport(); - await scrollToFooter(aboutRoadmapPage.page); - await expect(aboutRoadmapPage.footer).toBeInViewport(); - await expect(aboutRoadmapPage.page.getByTestId("govBanner")).not.toBeInViewport(); - await scrollToTop(aboutRoadmapPage.page); - await expect(aboutRoadmapPage.page.getByTestId("govBanner")).toBeInViewport(); + test("has Developer resources", async ({ page }) => { + await internalLinks.clickOnInternalLink("div", "CardGroup", "Developer resources", page); + await expect(page).toHaveURL(/.*developer-resources/); }); }); }, diff --git a/frontend-react/e2e/spec/all/security.spec.ts b/frontend-react/e2e/spec/all/about/security.spec.ts similarity index 95% rename from frontend-react/e2e/spec/all/security.spec.ts rename to frontend-react/e2e/spec/all/about/security.spec.ts index a22b9b5c737..f1b02e0e670 100644 --- a/frontend-react/e2e/spec/all/security.spec.ts +++ b/frontend-react/e2e/spec/all/about/security.spec.ts @@ -1,6 +1,6 @@ -import { scrollToFooter, scrollToTop } from "../../helpers/utils"; -import { SecurityPage } from "../../pages/security"; -import { test as baseTest, expect } from "../../test"; +import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; +import { SecurityPage } from "../../../pages/security"; +import { test as baseTest, expect } from "../../../test"; const URL_SECURITY = "/about/security"; diff --git a/frontend-react/e2e/spec/all/homepage.spec.ts b/frontend-react/e2e/spec/all/homepage.spec.ts index 6d1b4bb9d08..e32adda2463 100644 --- a/frontend-react/e2e/spec/all/homepage.spec.ts +++ b/frontend-react/e2e/spec/all/homepage.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; import { scrollToFooter, scrollToTop } from "../../helpers/utils"; +import * as ourNetwork from "../../pages/about/our-network"; import * as header from "../../pages/header"; import * as homepage from "../../pages/homepage"; import * as managingYourConnection from "../../pages/managing-your-connection"; -import * as ourNetwork from "../../pages/our-network"; import * as security from "../../pages/security"; test.describe( @@ -18,17 +18,11 @@ test.describe( }); test("has correct title", async ({ page }) => { - await expect(page).toHaveTitle( - /ReportStream - CDC's free, interoperable data transfer platform/, - ); + await expect(page).toHaveTitle(/ReportStream - CDC's free, interoperable data transfer platform/); }); - test("opens the Security page on 'security of your data' click", async ({ - page, - }) => { - await page - .getByRole("link", { name: "security of your data" }) - .click(); + test("opens the Security page on 'security of your data' click", async ({ page }) => { + await page.getByRole("link", { name: "security of your data" }).click(); await security.onLoad(page); // Go back to the homepage await header.clickOnHome(page); @@ -36,9 +30,7 @@ test.describe( expect(true).toBe(true); }); - test("opens the managing-your-connection page on 'our tools' click", async ({ - page, - }) => { + test("opens the managing-your-connection page on 'our tools' click", async ({ page }) => { await page.getByRole("link", { name: "our tools" }).click(); await managingYourConnection.onLoad(page); // Go back to the homepage @@ -47,12 +39,8 @@ test.describe( expect(true).toBe(true); }); - test("opens Our Network page on 'See our full network' click", async ({ - page, - }) => { - await page - .getByRole("link", { name: "See our full network" }) - .click(); + test("opens Our Network page on 'See our full network' click", async ({ page }) => { + await page.getByRole("link", { name: "See our full network" }).click(); await ourNetwork.onLoad(page); // Go back to the homepage await header.clickOnHome(page); @@ -69,9 +57,7 @@ test.describe( expect(true).toBe(true); }); - test("explicit scroll to footer and then scroll to top", async ({ - page, - }) => { + test("explicit scroll to footer and then scroll to top", async ({ page }) => { await expect(page.locator("footer")).not.toBeInViewport(); await scrollToFooter(page); await expect(page.locator("footer")).toBeInViewport(); diff --git a/frontend-react/e2e/spec/all/roadmap.spec.ts b/frontend-react/e2e/spec/all/roadmap.spec.ts deleted file mode 100644 index a2905db3ce5..00000000000 --- a/frontend-react/e2e/spec/all/roadmap.spec.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { expect, test } from "@playwright/test"; - -import * as internalLinks from "../../helpers/internal-links"; -import * as sideNav from "../../pages/about-side-navigation"; -import * as roadmap from "../../pages/roadmap"; -import { URL_ROADMAP } from "../../pages/roadmap"; - -test.describe( - "Product roadmap page", - { - tag: "@smoke", - }, - () => { - test.beforeEach(async ({ page }) => { - await roadmap.goto(page); - }); - - test("has correct title", async ({ page }) => { - await expect(page).toHaveURL(URL_ROADMAP); - await expect(page).toHaveTitle(/Product roadmap/); - }); - - test.describe("Side navigation", () => { - test("has Our network link", async ({ page }) => { - await sideNav.clickNetwork(page); - await expect(page).toHaveURL(/.*about\/our-network/); - }); - - test("has Product roadmap link", async ({ page }) => { - await sideNav.clickRoadmap(page); - await expect(page).toHaveURL(/.*about\/roadmap/); - }); - - test("has News link", async ({ page }) => { - await sideNav.clickNews(page); - await expect(page).toHaveURL(/.*about\/news/); - }); - - test("has Case studies link", async ({ page }) => { - await sideNav.clickCaseStudies(page); - await expect(page).toHaveURL(/.*about\/case-studies/); - }); - - test("has Security link", async ({ page }) => { - await sideNav.clickSecurity(page); - await expect(page).toHaveURL(/.*about\/security/); - }); - - test("has Release notes link", async ({ page }) => { - await sideNav.clickReleaseNotes(page); - await expect(page).toHaveURL(/.*about\/release-notes/); - }); - }); - - test.describe("Additional resources Links", () => { - test("has News", async ({ page }) => { - await internalLinks.clickOnInternalLink("div", "CardGroup", "News", page); - await expect(page).toHaveURL(/.*about\/news/); - }); - - test("has Release notes", async ({ page }) => { - await internalLinks.clickOnInternalLink("div", "CardGroup", "Release notes", page); - await expect(page).toHaveURL(/.*about\/release-notes/); - }); - - test("has Developer resources", async ({ page }) => { - await internalLinks.clickOnInternalLink("div", "CardGroup", "Developer resources", page); - await expect(page).toHaveURL(/.*developer-resources/); - }); - }); - }, -); From f313ea47beb9e3b9baec259338e0158aea9c9790 Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Mon, 26 Aug 2024 14:15:08 -0500 Subject: [PATCH 3/7] fix --- frontend-react/e2e/spec/all/about/about-page.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend-react/e2e/spec/all/about/about-page.spec.ts b/frontend-react/e2e/spec/all/about/about-page.spec.ts index bf32d2b158b..ce6c6fdaa34 100644 --- a/frontend-react/e2e/spec/all/about/about-page.spec.ts +++ b/frontend-react/e2e/spec/all/about/about-page.spec.ts @@ -1,6 +1,6 @@ -import { scrollToFooter, scrollToTop } from "../../helpers/utils"; -import { AboutPage } from "../../pages/about"; -import { test as baseTest, expect } from "../../test"; +import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; +import { AboutPage } from "../../../pages/about/about"; +import { test as baseTest, expect } from "../../../test"; const URL_ABOUT = "/about"; From f8e70cb1d433cda54a473f3a3bace8532bc40efe Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:01:27 -0500 Subject: [PATCH 4/7] merge fixes --- frontend-react/e2e/pages/about/about.ts | 16 -- .../pages/{ => public}/about/case-studies.ts | 2 +- .../pages/{ => public}/about/release-notes.ts | 2 +- .../e2e/spec/all/about/about-page.spec.ts | 163 ------------------ .../e2e/spec/all/about/security.spec.ts | 98 ----------- .../{ => public}/about/case-studies.spec.ts | 6 +- .../{ => public}/about/release-notes.spec.ts | 6 +- 7 files changed, 8 insertions(+), 285 deletions(-) delete mode 100644 frontend-react/e2e/pages/about/about.ts rename frontend-react/e2e/pages/{ => public}/about/case-studies.ts (87%) rename frontend-react/e2e/pages/{ => public}/about/release-notes.ts (87%) delete mode 100644 frontend-react/e2e/spec/all/about/about-page.spec.ts delete mode 100644 frontend-react/e2e/spec/all/about/security.spec.ts rename frontend-react/e2e/spec/all/{ => public}/about/case-studies.spec.ts (91%) rename frontend-react/e2e/spec/all/{ => public}/about/release-notes.spec.ts (91%) diff --git a/frontend-react/e2e/pages/about/about.ts b/frontend-react/e2e/pages/about/about.ts deleted file mode 100644 index 1e854c0236d..00000000000 --- a/frontend-react/e2e/pages/about/about.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { BasePage, BasePageTestArgs } from "../BasePage"; - -export class AboutPage extends BasePage { - constructor(testArgs: BasePageTestArgs) { - super( - { - url: "/about", - title: "About ReportStream", - heading: testArgs.page.getByRole("heading", { - name: "About", - }), - }, - testArgs, - ); - } -} diff --git a/frontend-react/e2e/pages/about/case-studies.ts b/frontend-react/e2e/pages/public/about/case-studies.ts similarity index 87% rename from frontend-react/e2e/pages/about/case-studies.ts rename to frontend-react/e2e/pages/public/about/case-studies.ts index 9cb8e2fa030..d856cd823e3 100644 --- a/frontend-react/e2e/pages/about/case-studies.ts +++ b/frontend-react/e2e/pages/public/about/case-studies.ts @@ -1,4 +1,4 @@ -import { BasePage, BasePageTestArgs } from "../BasePage"; +import { BasePage, BasePageTestArgs } from "../../BasePage"; export class AboutCaseStudiesPage extends BasePage { constructor(testArgs: BasePageTestArgs) { diff --git a/frontend-react/e2e/pages/about/release-notes.ts b/frontend-react/e2e/pages/public/about/release-notes.ts similarity index 87% rename from frontend-react/e2e/pages/about/release-notes.ts rename to frontend-react/e2e/pages/public/about/release-notes.ts index fddbf7f0c5e..b5de124a158 100644 --- a/frontend-react/e2e/pages/about/release-notes.ts +++ b/frontend-react/e2e/pages/public/about/release-notes.ts @@ -1,4 +1,4 @@ -import { BasePage, BasePageTestArgs } from "../BasePage"; +import { BasePage, BasePageTestArgs } from "../../BasePage"; export class AboutReleaseNotesPage extends BasePage { constructor(testArgs: BasePageTestArgs) { diff --git a/frontend-react/e2e/spec/all/about/about-page.spec.ts b/frontend-react/e2e/spec/all/about/about-page.spec.ts deleted file mode 100644 index 9f14d073aa9..00000000000 --- a/frontend-react/e2e/spec/all/about/about-page.spec.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { AboutPage } from "../../../pages/about/about"; -import { test as baseTest, expect } from "../../../test"; - -const URL_ABOUT = "/about"; - -export interface AboutPageFixtures { - aboutPage: AboutPage; -} - -const test = baseTest.extend({ - aboutPage: async ( - { - page: _page, - isMockDisabled, - adminLogin, - senderLogin, - receiverLogin, - storageState, - isFrontendWarningsLog, - frontendWarningsLogPath, - }, - use, - ) => { - const page = new AboutPage({ - page: _page, - isMockDisabled, - adminLogin, - senderLogin, - receiverLogin, - storageState, - isFrontendWarningsLog, - frontendWarningsLogPath, - }); - await page.goto(); - await use(page); - }, -}); - -test.describe("About page", () => { - test.describe("Header", () => { - test("has correct title + heading", async ({ aboutPage }) => { - await aboutPage.testHeader(); - }); - }); - - test("nav contains the 'About' dropdown with 'About Reportstream' option", async ({ aboutPage }) => { - const navItems = aboutPage.page.locator(".usa-nav li"); - await expect(navItems).toContainText(["About"]); - - await aboutPage.page.getByTestId("header").getByTestId("navDropDownButton").getByText("About").click(); - - await aboutPage.page.getByTestId("header").getByRole("link", { name: "About ReportStream" }).click(); - await expect(aboutPage.page).toHaveURL(URL_ABOUT); - }); - - test.describe("In this section", () => { - test("has 'Our network' link", async ({ aboutPage }) => { - await aboutPage.page.getByRole("link", { name: /Our network/ }).click(); - await expect(aboutPage.page).toHaveURL(/.*about\/our-network/); - }); - - test("has 'Product roadmap' link", async ({ aboutPage }) => { - await aboutPage.page - .getByRole("link", { name: /Product roadmap/ }) - .first() - .click(); - await expect(aboutPage.page).toHaveURL(/.*about\/roadmap/); - }); - - test("has 'News' link", async ({ aboutPage }) => { - await aboutPage.page.getByRole("link", { name: /News/ }).click(); - await expect(aboutPage.page).toHaveURL(/.*about\/news/); - }); - - test("has 'Case studies' link", async ({ aboutPage }) => { - await aboutPage.page.getByRole("link", { name: /Case studies/ }).click(); - await expect(aboutPage.page).toHaveURL(/.*about\/case-studies/); - }); - - test("has 'Security' link", async ({ aboutPage }) => { - await aboutPage.page.getByRole("link", { name: /Security/ }).click(); - await expect(aboutPage.page).toHaveURL(/.*about\/security/); - }); - - test("has 'Release notes' link", async ({ aboutPage }) => { - await aboutPage.page - .locator("div") - .filter({ hasText: /^Release notes$/ }) - .getByRole("link") - .click(); - await expect(aboutPage.page).toHaveURL(/.*about\/release-notes/); - }); - }); - - test.describe("Values section", () => { - test("Accordion sections expand", async ({ aboutPage }) => { - const accordionCol = [ - "We meet our partners where they are.", - "We are free to use.", - "We put better faster data into the hands of public health entities.", - "We reduce disparities in healthcare monitoring and surveillance.", - ]; - - for (let i = 0; i < accordionCol.length; i++) { - const accordionItem = `accordionItem_${i + 1}--content`; - await expect(aboutPage.page.getByTestId(accordionItem)).toBeHidden(); - - await aboutPage.page - .getByRole("button", { - name: accordionCol[i], - }) - .click(); - - await expect(aboutPage.page.getByTestId(accordionItem)).toBeVisible(); - - await aboutPage.page - .getByRole("button", { - name: accordionCol[i], - }) - .click(); - - await expect(aboutPage.page.getByTestId(accordionItem)).toBeHidden(); - } - }); - }); - - test.describe("Recommended Resources", () => { - test("Card navigation", async ({ aboutPage }) => { - const cardLinks = [ - { - name: "ReportStream overview PDF", - url: "", - }, - { - name: "Product roadmap", - url: "/about/roadmap", - }, - { - name: "ReportStream API", - url: "/developer-resources/api", - }, - ]; - - for (const cardLink of cardLinks) { - await aboutPage.page.getByTestId("CardGroup").getByRole("link", { name: cardLink.name }).click(); - - if (cardLink.url.length) { - await expect(aboutPage.page).toHaveURL(cardLink.url); - } - - await aboutPage.page.goto(URL_ABOUT, { - waitUntil: "domcontentloaded", - }); - } - }); - }); - - test.describe("Footer", () => { - test("has footer and explicit scroll to footer and scroll to top", async ({ aboutPage }) => { - await aboutPage.testFooter(); - }); - }); -}); diff --git a/frontend-react/e2e/spec/all/about/security.spec.ts b/frontend-react/e2e/spec/all/about/security.spec.ts deleted file mode 100644 index 8dc4ba0c019..00000000000 --- a/frontend-react/e2e/spec/all/about/security.spec.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { SecurityPage } from "../../../pages/public/about/security"; -import { test as baseTest, expect } from "../../../test"; - -const URL_SECURITY = "/about/security"; - -export interface SecurityPageFixtures { - securityPage: SecurityPage; -} - -const test = baseTest.extend({ - securityPage: async ( - { - page: _page, - isMockDisabled, - adminLogin, - senderLogin, - receiverLogin, - storageState, - isFrontendWarningsLog, - frontendWarningsLogPath, - }, - use, - ) => { - const page = new SecurityPage({ - page: _page, - isMockDisabled, - adminLogin, - senderLogin, - receiverLogin, - storageState, - isFrontendWarningsLog, - frontendWarningsLogPath, - }); - await page.goto(); - await use(page); - }, -}); - -test.describe( - "Security page", - { - tag: "@smoke", - }, - () => { - test.describe("Header", () => { - test("has correct title + heading", async ({ securityPage }) => { - await securityPage.testHeader(); - }); - }); - - test("nav contains the 'About' dropdown with 'Security Reportstream' option", async ({ securityPage }) => { - const navItems = securityPage.page.locator(".usa-nav li"); - await expect(navItems).toContainText(["About"]); - - await securityPage.page.getByTestId("header").getByTestId("navDropDownButton").getByText("About").click(); - - await securityPage.page.getByTestId("header").getByRole("link", { name: "Security" }).click(); - await expect(securityPage.page).toHaveURL(URL_SECURITY); - }); - - test.describe("Security section", () => { - test("Accordion sections expand", async ({ securityPage }) => { - // Not necessary to test all expansions. - const accordionCol = [ - "Does ReportStream comply with the Federal Information Security Modernization Act (FISMA)?", - "Is ReportStream FedRAMP approved?", - ]; - - for (let i = 0; i < accordionCol.length; i++) { - const accordionItem = `accordionItem_${i + 1}--content`; - await expect(securityPage.page.getByTestId(accordionItem)).toBeHidden(); - - await securityPage.page - .getByRole("button", { - name: accordionCol[i], - }) - .click(); - - await expect(securityPage.page.getByTestId(accordionItem)).toBeVisible(); - - await securityPage.page - .getByRole("button", { - name: accordionCol[i], - }) - .click(); - - await expect(securityPage.page.getByTestId(accordionItem)).toBeHidden(); - } - }); - }); - - test.describe("Footer", () => { - test("has footer + test bottom-to-top page scroll", async ({ securityPage }) => { - await securityPage.testFooter(); - }); - }); - }, -); diff --git a/frontend-react/e2e/spec/all/about/case-studies.spec.ts b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts similarity index 91% rename from frontend-react/e2e/spec/all/about/case-studies.spec.ts rename to frontend-react/e2e/spec/all/public/about/case-studies.spec.ts index 3bd667c672c..44fd54f35d5 100644 --- a/frontend-react/e2e/spec/all/about/case-studies.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts @@ -1,6 +1,6 @@ -import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; -import { AboutCaseStudiesPage } from "../../../pages/about/case-studies"; -import { test as baseTest, expect } from "../../../test"; +import { scrollToFooter, scrollToTop } from "../../../../helpers/utils"; +import { AboutCaseStudiesPage } from "../../../../pages/about/case-studies"; +import { test as baseTest, expect } from "../../../../test"; export interface Fixtures { aboutCaseStudiesPage: AboutCaseStudiesPage; diff --git a/frontend-react/e2e/spec/all/about/release-notes.spec.ts b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts similarity index 91% rename from frontend-react/e2e/spec/all/about/release-notes.spec.ts rename to frontend-react/e2e/spec/all/public/about/release-notes.spec.ts index deba34b1217..300b1f711f7 100644 --- a/frontend-react/e2e/spec/all/about/release-notes.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts @@ -1,6 +1,6 @@ -import { scrollToFooter, scrollToTop } from "../../../helpers/utils"; -import { AboutReleaseNotesPage } from "../../../pages/about/release-notes"; -import { test as baseTest, expect } from "../../../test"; +import { scrollToFooter, scrollToTop } from "../../../../helpers/utils"; +import { AboutReleaseNotesPage } from "../../../../pages/about/release-notes"; +import { test as baseTest, expect } from "../../../../test"; export interface Fixtures { aboutReleaseNotesPage: AboutReleaseNotesPage; From eb73918ff33bb9ecfdc35212b9a24253094ee33a Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:25:00 -0500 Subject: [PATCH 5/7] fixes --- frontend-react/e2e/spec/all/public/about/case-studies.spec.ts | 2 +- frontend-react/e2e/spec/all/public/about/release-notes.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts index 44fd54f35d5..7efdbc1c610 100644 --- a/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts @@ -1,5 +1,5 @@ import { scrollToFooter, scrollToTop } from "../../../../helpers/utils"; -import { AboutCaseStudiesPage } from "../../../../pages/about/case-studies"; +import { AboutCaseStudiesPage } from "../../../../pages/public/about/case-studies"; import { test as baseTest, expect } from "../../../../test"; export interface Fixtures { diff --git a/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts index 300b1f711f7..7ca4672052d 100644 --- a/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts @@ -1,5 +1,5 @@ import { scrollToFooter, scrollToTop } from "../../../../helpers/utils"; -import { AboutReleaseNotesPage } from "../../../../pages/about/release-notes"; +import { AboutReleaseNotesPage } from "../../../../pages/public/about/release-notes"; import { test as baseTest, expect } from "../../../../test"; export interface Fixtures { From 3eb841c7a01c9c5012e001e4d3d96e4d742b5be3 Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Tue, 27 Aug 2024 16:18:33 -0500 Subject: [PATCH 6/7] fix test pattern --- .../spec/all/public/about/case-studies.spec.ts | 18 +++++------------- .../all/public/about/release-notes.spec.ts | 18 +++++------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts index 7efdbc1c610..c605af0da0b 100644 --- a/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts @@ -1,4 +1,3 @@ -import { scrollToFooter, scrollToTop } from "../../../../helpers/utils"; import { AboutCaseStudiesPage } from "../../../../pages/public/about/case-studies"; import { test as baseTest, expect } from "../../../../test"; @@ -50,19 +49,12 @@ test.describe( await expect(aboutCaseStudiesPage.page.getByRole("navigation", { name: "side-navigation " })).toBeVisible(); }); - test.describe("Footer", () => { - test("has footer", async ({ aboutCaseStudiesPage }) => { - await expect(aboutCaseStudiesPage.footer).toBeAttached(); - }); + test("has correct title + heading", async ({ aboutCaseStudiesPage }) => { + await aboutCaseStudiesPage.testHeader(); + }); - test("explicit scroll to footer and then scroll to top", async ({ aboutCaseStudiesPage }) => { - await expect(aboutCaseStudiesPage.footer).not.toBeInViewport(); - await scrollToFooter(aboutCaseStudiesPage.page); - await expect(aboutCaseStudiesPage.footer).toBeInViewport(); - await expect(aboutCaseStudiesPage.page.getByTestId("govBanner")).not.toBeInViewport(); - await scrollToTop(aboutCaseStudiesPage.page); - await expect(aboutCaseStudiesPage.page.getByTestId("govBanner")).toBeInViewport(); - }); + test("footer", async ({ aboutCaseStudiesPage }) => { + await aboutCaseStudiesPage.testFooter(); }); }, ); diff --git a/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts index 7ca4672052d..52ff93b975c 100644 --- a/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts @@ -1,4 +1,3 @@ -import { scrollToFooter, scrollToTop } from "../../../../helpers/utils"; import { AboutReleaseNotesPage } from "../../../../pages/public/about/release-notes"; import { test as baseTest, expect } from "../../../../test"; @@ -52,19 +51,12 @@ test.describe( ).toBeVisible(); }); - test.describe("Footer", () => { - test("has footer", async ({ aboutReleaseNotesPage }) => { - await expect(aboutReleaseNotesPage.footer).toBeAttached(); - }); + test("has correct title + heading", async ({ aboutReleaseNotesPage }) => { + await aboutReleaseNotesPage.testHeader(); + }); - test("explicit scroll to footer and then scroll to top", async ({ aboutReleaseNotesPage }) => { - await expect(aboutReleaseNotesPage.footer).not.toBeInViewport(); - await scrollToFooter(aboutReleaseNotesPage.page); - await expect(aboutReleaseNotesPage.footer).toBeInViewport(); - await expect(aboutReleaseNotesPage.page.getByTestId("govBanner")).not.toBeInViewport(); - await scrollToTop(aboutReleaseNotesPage.page); - await expect(aboutReleaseNotesPage.page.getByTestId("govBanner")).toBeInViewport(); - }); + test("footer", async ({ aboutReleaseNotesPage }) => { + await aboutReleaseNotesPage.testFooter(); }); }, ); From aa2db1677be3447240db3f27c7c4385845464bfd Mon Sep 17 00:00:00 2001 From: Joseph Andersen <12385932+jpandersen87@users.noreply.github.com> Date: Tue, 27 Aug 2024 18:01:42 -0500 Subject: [PATCH 7/7] remove redundant tests --- .../e2e/spec/all/public/about/case-studies.spec.ts | 10 +++------- .../e2e/spec/all/public/about/release-notes.spec.ts | 12 +++--------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts index c605af0da0b..32c47edccdb 100644 --- a/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/case-studies.spec.ts @@ -1,5 +1,6 @@ +import { aboutSideNav } from "../../../../helpers/internal-links"; import { AboutCaseStudiesPage } from "../../../../pages/public/about/case-studies"; -import { test as baseTest, expect } from "../../../../test"; +import { test as baseTest } from "../../../../test"; export interface Fixtures { aboutCaseStudiesPage: AboutCaseStudiesPage; @@ -40,13 +41,8 @@ test.describe( tag: "@smoke", }, () => { - test("has correct title", async ({ aboutCaseStudiesPage }) => { - await expect(aboutCaseStudiesPage.page).toHaveTitle(aboutCaseStudiesPage.title); - await expect(aboutCaseStudiesPage.heading).toBeVisible(); - }); - test("has side nav", async ({ aboutCaseStudiesPage }) => { - await expect(aboutCaseStudiesPage.page.getByRole("navigation", { name: "side-navigation " })).toBeVisible(); + await aboutCaseStudiesPage.testSidenav(aboutSideNav); }); test("has correct title + heading", async ({ aboutCaseStudiesPage }) => { diff --git a/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts index 52ff93b975c..2793f47c7f0 100644 --- a/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts +++ b/frontend-react/e2e/spec/all/public/about/release-notes.spec.ts @@ -1,5 +1,6 @@ +import { aboutSideNav } from "../../../../helpers/internal-links"; import { AboutReleaseNotesPage } from "../../../../pages/public/about/release-notes"; -import { test as baseTest, expect } from "../../../../test"; +import { test as baseTest } from "../../../../test"; export interface Fixtures { aboutReleaseNotesPage: AboutReleaseNotesPage; @@ -40,15 +41,8 @@ test.describe( tag: "@smoke", }, () => { - test("has correct title", async ({ aboutReleaseNotesPage }) => { - await expect(aboutReleaseNotesPage.page).toHaveTitle(aboutReleaseNotesPage.title); - await expect(aboutReleaseNotesPage.heading).toBeVisible(); - }); - test("has side nav", async ({ aboutReleaseNotesPage }) => { - await expect( - aboutReleaseNotesPage.page.getByRole("navigation", { name: "side-navigation " }), - ).toBeVisible(); + await aboutReleaseNotesPage.testSidenav(aboutSideNav); }); test("has correct title + heading", async ({ aboutReleaseNotesPage }) => {