Skip to content

Commit 34c0bbc

Browse files
VIA-630 Run snapshot tests on age based hub pages
1 parent 8d5172e commit 34c0bbc

File tree

3 files changed

+48
-26
lines changed

3 files changed

+48
-26
lines changed

e2e/constants.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { AgeGroup } from "@src/models/ageBasedHub";
2+
13
type PoliciesPageName = "cookies-policy" | "accessibility-statement";
24
type VaccinePageName =
35
| "rsv-older-adults"
@@ -229,6 +231,20 @@ export const AppPageDetails: Record<PageName, PageDetails> = {
229231
},
230232
};
231233

234+
type AgeBasedTestUser = {
235+
ageGroup: AgeGroup;
236+
userSession: string;
237+
};
238+
239+
export const AgeBasedHubTestUsers: AgeBasedTestUser[] = [
240+
// { ageGroup: AgeGroup.AGE_12_to_16, userSession: "12-16-age-range"}, // user 34
241+
// { ageGroup: AgeGroup.AGE_17_to_24, userSession: "eligibility-error-400"}, // user 16
242+
// { ageGroup: AgeGroup.AGE_25_to_64, userSession: "actionable-with-other-setting-suitability-rule"}, // user 12
243+
{ ageGroup: AgeGroup.AGE_65_to_74, userSession: "actionable-with-booking-link" }, // user 19
244+
// { ageGroup: AgeGroup.AGE_75_to_80, userSession: "actionable-with-booking-button"}, // user 21
245+
// { ageGroup: AgeGroup.AGE_81_PLUS, userSession: "actionable-with-infotext-action"}, //user 01
246+
];
247+
232248
export const BOOKING_PAGE_URL_REGEX =
233249
/^https:\/\/.+nhs\.uk\/book-an-rsv-vaccination\/app-start-page\?wt\.mc_id=vita-RSV-booking$/;
234250
export const BOOKING_PAGE_TITLE_REGEX = /Book an RSV vaccination - NHS$/;

e2e/general/agedBasedHub.spec.ts

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,26 @@
11
import { TestInfo, expect, test } from "@playwright/test";
2-
import { AppPageDetails, MAX_AVG_LCP_DURATION_MS } from "@project/e2e/constants";
2+
import { AgeBasedHubTestUsers, AppPageDetails, MAX_AVG_LCP_DURATION_MS } from "@project/e2e/constants";
33
import { accessibilityCheck, benchmarkIfChromium } from "@project/e2e/helpers";
4-
import { AgeBasedHubInfo, AgeGroup } from "@src/models/ageBasedHub";
4+
import { AgeBasedHubInfo } from "@src/models/ageBasedHub";
55

66
test.describe.configure({ mode: "parallel", retries: 1 });
77

8-
type AgeBasedTestUser = {
9-
ageGroup: AgeGroup;
10-
userSession: string;
11-
};
12-
13-
const AgeBasedHubTestUsers: AgeBasedTestUser[] = [
14-
// { ageGroup: AgeGroup.AGE_12_to_16, userSession: "12-16-age-range"}, // user 34
15-
// { ageGroup: AgeGroup.AGE_17_to_24, userSession: "eligibility-error-400"}, // user 16
16-
// { ageGroup: AgeGroup.AGE_25_to_64, userSession: "actionable-with-other-setting-suitability-rule"}, // user 12
17-
{ ageGroup: AgeGroup.AGE_65_to_74, userSession: "actionable-with-booking-link" }, // user 19
18-
// { ageGroup: AgeGroup.AGE_75_to_80, userSession: "actionable-with-booking-button"}, // user 21
19-
// { ageGroup: AgeGroup.AGE_81_PLUS, userSession: "actionable-with-infotext-action"}, //user 01
20-
];
21-
228
test.describe("Age-Based Hub", () => {
239
AgeBasedHubTestUsers.forEach(({ ageGroup, userSession }) => {
24-
test.use({ storageState: `./e2e/.auth/${userSession}.json` });
10+
test.describe(`for ${ageGroup}`, () => {
11+
test.use({ storageState: `./e2e/.auth/${userSession}.json` });
2512

26-
test(`should render hub page for ${ageGroup}`, async ({ page }, testInfo: TestInfo) => {
27-
const hubPageDetails = AppPageDetails["vaccine-hub"];
13+
test(`should render hub page for ${ageGroup}`, async ({ page }, testInfo: TestInfo) => {
14+
const hubPageDetails = AppPageDetails["vaccine-hub"];
2815

29-
await page.goto(hubPageDetails.url);
30-
await expect(page).toHaveTitle(hubPageDetails.title);
31-
await expect(page.getByRole("heading", { level: 1, name: hubPageDetails.heading })).toBeVisible();
32-
await expect(page.getByRole("heading", { level: 2, name: AgeBasedHubInfo[ageGroup]?.heading })).toBeVisible();
16+
await page.goto(hubPageDetails.url);
17+
await expect(page).toHaveTitle(hubPageDetails.title);
18+
await expect(page.getByRole("heading", { level: 1, name: hubPageDetails.heading })).toBeVisible();
19+
await expect(page.getByRole("heading", { level: 2, name: AgeBasedHubInfo[ageGroup]?.heading })).toBeVisible();
3320

34-
await accessibilityCheck(page);
35-
await benchmarkIfChromium(page, hubPageDetails.url, MAX_AVG_LCP_DURATION_MS, testInfo);
21+
await accessibilityCheck(page);
22+
await benchmarkIfChromium(page, hubPageDetails.url, MAX_AVG_LCP_DURATION_MS, testInfo);
23+
});
3624
});
3725
});
3826
});

e2e/snapshot/app.snapshot.spec.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Page, TestInfo, expect, test } from "@playwright/test";
2-
import { AppPageDetails, type PageDetails } from "@project/e2e/constants";
2+
import { AgeBasedHubTestUsers, AppPageDetails, type PageDetails } from "@project/e2e/constants";
33
import { getEnv, openExpandersIfPresent, pathForCustomScreenshots } from "@project/e2e/helpers";
44

55
const currentDatetime = getEnv("CURRENT_DATETIME");
@@ -39,3 +39,21 @@ test.describe(`Snapshot Testing - ${currentDatetime}-${checkoutRef}`, () => {
3939
});
4040
});
4141
});
42+
43+
test.describe(`Snapshot Testing - Age-Based Hub - ${currentDatetime}-${checkoutRef}`, () => {
44+
AgeBasedHubTestUsers.forEach(({ ageGroup, userSession }) => {
45+
test.describe(`for ${ageGroup}`, () => {
46+
test.use({ storageState: `./e2e/.auth/${userSession}.json` });
47+
48+
test(`Testing snapshot for ${ageGroup} hub page`, async ({ page }, testInfo: TestInfo) => {
49+
const hubPageDetails = AppPageDetails["vaccine-hub"];
50+
hubPageDetails.snapshotFilename = hubPageDetails.snapshotFilename.replace("default", ageGroup);
51+
52+
const projectName = testInfo.project.name;
53+
const testFileName = testInfo.file.split("/").pop()!;
54+
55+
await testPageSnapshot(page, hubPageDetails, testFileName, projectName);
56+
});
57+
});
58+
});
59+
});

0 commit comments

Comments
 (0)