Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,25 @@ exports[`ChooseMessageOrderPage 1`] = `
NHS App, Email, Text message, Letter
</label>
</div>
<div
class="nhsuk-radios__item"
>
<input
class="nhsuk-radios__input"
data-testid="email-radio"
id="messageOrder-email"
name="messageOrder"
type="radio"
value="EMAIL"
/>
<label
class="nhsuk-label nhsuk-radios__label"
for="messageOrder-email"
id="messageOrder-email--label"
>
Email only
</label>
</div>
<div
class="nhsuk-radios__item"
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,17 @@ const MESSAGE_ORDER_SCENARIOS: [MessageOrder, CascadeItem[]][] = [
},
],
],
[
'EMAIL',
[
{
cascadeGroups: ['standard'],
channel: 'EMAIL',
channelType: 'primary',
defaultTemplateId: null,
},
],
],
[
'LETTER',
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,25 @@ exports[`Choose message order page Client-side validation triggers - invalid for
NHS App, Email, Text message, Letter
</label>
</div>
<div
class="nhsuk-radios__item"
>
<input
class="nhsuk-radios__input"
data-testid="email-radio"
id="messageOrder-email"
name="messageOrder"
type="radio"
value="EMAIL"
/>
<label
class="nhsuk-label nhsuk-radios__label"
for="messageOrder-email"
id="messageOrder-email--label"
>
Email only
</label>
</div>
<div
class="nhsuk-radios__item"
>
Expand Down Expand Up @@ -450,6 +469,25 @@ exports[`Choose message order page Client-side validation triggers - valid form
NHS App, Email, Text message, Letter
</label>
</div>
<div
class="nhsuk-radios__item"
>
<input
class="nhsuk-radios__input"
data-testid="email-radio"
id="messageOrder-email"
name="messageOrder"
type="radio"
value="EMAIL"
/>
<label
class="nhsuk-label nhsuk-radios__label"
for="messageOrder-email"
id="messageOrder-email--label"
>
Email only
</label>
</div>
<div
class="nhsuk-radios__item"
>
Expand Down Expand Up @@ -704,6 +742,25 @@ exports[`Choose message order page renders error component 1`] = `
NHS App, Email, Text message, Letter
</label>
</div>
<div
class="nhsuk-radios__item"
>
<input
class="nhsuk-radios__input"
data-testid="email-radio"
id="messageOrder-email"
name="messageOrder"
type="radio"
value="EMAIL"
/>
<label
class="nhsuk-label nhsuk-radios__label"
for="messageOrder-email"
id="messageOrder-email--label"
>
Email only
</label>
</div>
<div
class="nhsuk-radios__item"
>
Expand Down Expand Up @@ -933,6 +990,25 @@ exports[`Choose message order page renders form 1`] = `
NHS App, Email, Text message, Letter
</label>
</div>
<div
class="nhsuk-radios__item"
>
<input
class="nhsuk-radios__input"
data-testid="email-radio"
id="messageOrder-email"
name="messageOrder"
type="radio"
value="EMAIL"
/>
<label
class="nhsuk-label nhsuk-radios__label"
for="messageOrder-email"
id="messageOrder-email--label"
>
Email only
</label>
</div>
<div
class="nhsuk-radios__item"
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ test.each([
option: 'NHSAPP,EMAIL,SMS,LETTER',
label: 'NHS App, Email, Text message, Letter',
},
{
option: 'EMAIL',
label: 'Email only',
},
{
option: 'LETTER',
label: 'Letter only',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ function messageOrderToInitialCascade(
INITIAL_CASCADE_ITEMS['SMS'],
INITIAL_CASCADE_ITEMS['LETTER'],
],
EMAIL: [INITIAL_CASCADE_ITEMS['EMAIL']],
LETTER: [INITIAL_CASCADE_ITEMS['LETTER']],
} satisfies Record<MessageOrder, CascadeItem[]>
)[messageOrder];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export const messageOrderDisplayMappings: Record<MessageOrder, string> = {
'NHSAPP,SMS,EMAIL': 'NHS App, Text message, Email',
'NHSAPP,SMS,LETTER': 'NHS App, Text message, Letter',
'NHSAPP,EMAIL,SMS,LETTER': 'NHS App, Email, Text message, Letter',
EMAIL: 'Email only',
LETTER: 'Letter only',
};

Expand Down
5 changes: 5 additions & 0 deletions tests/test-team/helpers/enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export const MESSAGE_ORDERS = [
'NHSAPP,SMS,EMAIL',
'NHSAPP,SMS,LETTER',
'NHSAPP,EMAIL,SMS,LETTER',
'EMAIL',
'LETTER',
] as const;

Expand Down Expand Up @@ -43,6 +44,10 @@ export const ROUTING_CONFIG_MESSAGE_ORDER_OPTION_MAPPINGS: Array<{
messageOrder: 'NHSAPP,EMAIL,SMS,LETTER',
label: 'NHS App, Email, Text message, Letter',
},
{
messageOrder: 'EMAIL',
label: 'Email only',
},
{
messageOrder: 'LETTER',
label: 'Letter only',
Expand Down
10 changes: 8 additions & 2 deletions tests/test-team/pages/routing/choose-message-order-page.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Locator, type Page } from '@playwright/test';
import { TemplateMgmtBasePage } from '../template-mgmt-base-page';
import { MessageOrder } from 'helpers/enum';

export class RoutingChooseMessageOrderPage extends TemplateMgmtBasePage {
static readonly pathTemplate = '/message-plans/choose-message-order';
Expand All @@ -16,8 +17,13 @@ export class RoutingChooseMessageOrderPage extends TemplateMgmtBasePage {
});
}

async checkRadioButton(radioButtonLabel: string) {
await this.page.getByLabel(radioButtonLabel, { exact: true }).check();
getRadioButton(messageOrder: MessageOrder): Locator {
const testId = messageOrder.toLowerCase().split(',').join('-');
return this.page.getByTestId(`${testId}-radio`);
}

async checkRadioButton(messageOrder: MessageOrder) {
await this.getRadioButton(messageOrder).check();
}

async clickContinueButton() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Locator, Page } from '@playwright/test';
import { TemplateMgmtBasePage } from 'pages/template-mgmt-base-page';

export abstract class TemplateMgmtChooseTemplateForMessagePlanBasePage extends TemplateMgmtBasePage {
export abstract class RoutingChooseTemplateForMessagePlanBasePage extends TemplateMgmtBasePage {
readonly messagePlanName: Locator;

readonly tableHintText: Locator;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TemplateMgmtChooseTemplateForMessagePlanBasePage } from 'pages/template-mgmt-choose-template-base-page';
import { RoutingChooseTemplateForMessagePlanBasePage } from 'pages/routing/choose-template-base-page';

export class RoutingChooseEmailTemplatePage extends TemplateMgmtChooseTemplateForMessagePlanBasePage {
export class RoutingChooseEmailTemplatePage extends RoutingChooseTemplateForMessagePlanBasePage {
static readonly pathTemplate =
'/message-plans/choose-email-template/:messagePlanId';
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TemplateMgmtChooseTemplateForMessagePlanBasePage } from 'pages/template-mgmt-choose-template-base-page';
import { RoutingChooseTemplateForMessagePlanBasePage } from 'pages/routing/choose-template-base-page';

export class RoutingChooseLargePrintLetterTemplatePage extends TemplateMgmtChooseTemplateForMessagePlanBasePage {
export class RoutingChooseLargePrintLetterTemplatePage extends RoutingChooseTemplateForMessagePlanBasePage {
static readonly pathTemplate =
'/message-plans/choose-large-print-letter-template/:messagePlanId';
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Locator, type Page } from '@playwright/test';
import { TemplateMgmtChooseTemplateForMessagePlanBasePage } from 'pages/template-mgmt-choose-template-base-page';
import { RoutingChooseTemplateForMessagePlanBasePage } from 'pages/routing/choose-template-base-page';

export class RoutingChooseOtherLanguageLetterTemplatePage extends TemplateMgmtChooseTemplateForMessagePlanBasePage {
export class RoutingChooseOtherLanguageLetterTemplatePage extends RoutingChooseTemplateForMessagePlanBasePage {
static readonly pathTemplate =
'/message-plans/choose-other-language-letter-template/:messagePlanId';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TemplateMgmtChooseTemplateForMessagePlanBasePage } from 'pages/template-mgmt-choose-template-base-page';
import { RoutingChooseTemplateForMessagePlanBasePage } from 'pages/routing/choose-template-base-page';

export class RoutingChooseStandardLetterTemplatePage extends TemplateMgmtChooseTemplateForMessagePlanBasePage {
export class RoutingChooseStandardLetterTemplatePage extends RoutingChooseTemplateForMessagePlanBasePage {
static readonly pathTemplate =
'/message-plans/choose-standard-english-letter-template/:messagePlanId';
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TemplateMgmtChooseTemplateForMessagePlanBasePage } from 'pages/template-mgmt-choose-template-base-page';
import { RoutingChooseTemplateForMessagePlanBasePage } from 'pages/routing/choose-template-base-page';

export class RoutingChooseNhsAppTemplatePage extends TemplateMgmtChooseTemplateForMessagePlanBasePage {
export class RoutingChooseNhsAppTemplatePage extends RoutingChooseTemplateForMessagePlanBasePage {
static readonly pathTemplate =
'/message-plans/choose-nhs-app-template/:messagePlanId';
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { TemplateMgmtChooseTemplateForMessagePlanBasePage } from 'pages/template-mgmt-choose-template-base-page';
import { RoutingChooseTemplateForMessagePlanBasePage } from 'pages/routing/choose-template-base-page';

export class RoutingChooseTextMessageTemplatePage extends TemplateMgmtChooseTemplateForMessagePlanBasePage {
export class RoutingChooseTextMessageTemplatePage extends RoutingChooseTemplateForMessagePlanBasePage {
static readonly pathTemplate =
'/message-plans/choose-text-message-template/:messagePlanId';
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,21 @@ test.describe('Choose Message Order Page', () => {
await assertBackLinkTopNotPresent(props);
});

test('should display correct number of radio button options', async ({
page,
}) => {
test('should display correct radio button options', async ({ page }) => {
const chooseMessageOrderPage = new RoutingChooseMessageOrderPage(page);

await chooseMessageOrderPage.loadPage();

await expect(chooseMessageOrderPage.radioButtons).toHaveCount(8);
await expect(chooseMessageOrderPage.radioButtons).toHaveCount(9);

for (const {
messageOrder,
label,
} of ROUTING_CONFIG_MESSAGE_ORDER_OPTION_MAPPINGS) {
const radioButton = chooseMessageOrderPage.getRadioButton(messageOrder);
await expect(radioButton).toBeVisible();
await expect(radioButton).toHaveAccessibleName(label);
}
});

test('should display error if no message order option selected and continue button clicked', async ({
Expand All @@ -79,14 +86,14 @@ test.describe('Choose Message Order Page', () => {
label,
messageOrder,
} of ROUTING_CONFIG_MESSAGE_ORDER_OPTION_MAPPINGS)
test(`when the ${label} message order is selected, nagivates to the create-message-plan page with the correct query parameter`, async ({
test(`when the ${label} message order is selected, navigates to the create-message-plan page with the correct query parameter`, async ({
page,
baseURL,
}) => {
const chooseMessageOrderPage = new RoutingChooseMessageOrderPage(page);

await chooseMessageOrderPage.loadPage();
await chooseMessageOrderPage.checkRadioButton(label);
await chooseMessageOrderPage.checkRadioButton(messageOrder);
await chooseMessageOrderPage.clickContinueButton();

await expect(page).toHaveURL(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { test, expect } from '@playwright/test';
import { TemplateMgmtChooseTemplateForMessagePlanBasePage } from '../pages/template-mgmt-choose-template-base-page';
import { RoutingChooseTemplateForMessagePlanBasePage } from '../pages/routing/choose-template-base-page';

type ChooseTemplatePageProps = {
page: TemplateMgmtChooseTemplateForMessagePlanBasePage;
page: RoutingChooseTemplateForMessagePlanBasePage;
};

export function assertChooseTemplatePageWithTemplatesAvailable({
Expand Down
1 change: 1 addition & 0 deletions utils/utils/src/enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,7 @@ export const MESSAGE_ORDER_OPTIONS_LIST = [
'NHSAPP,SMS,EMAIL',
'NHSAPP,SMS,LETTER',
'NHSAPP,EMAIL,SMS,LETTER',
'EMAIL',
'LETTER',
] as const;

Expand Down
Loading