Skip to content

Commit 23b59e2

Browse files
CCM-12065: Component tests
1 parent 4d10378 commit 23b59e2

6 files changed

+216
-0
lines changed

tests/test-team/template-mgmt-component-tests/email/template-mgmt-create-email-page.component.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,5 +338,39 @@ test.describe('Create Email message template Page', () => {
338338

339339
await expect(createEmailTemplatePage.messageTextArea).toBeFocused();
340340
});
341+
342+
test('when user submits form with an http link, then an error is displayed', async ({
343+
page,
344+
}) => {
345+
const errorMessage =
346+
'The message includes an insecure http:// link. All links must use https://';
347+
348+
const createEmailTemplatePage = new TemplateMgmtCreateEmailPage(page);
349+
350+
await createEmailTemplatePage.loadPage();
351+
352+
await createEmailTemplatePage.nameInput.fill('template-name');
353+
354+
await createEmailTemplatePage.subjectLineInput.fill(
355+
'template-subject-line'
356+
);
357+
358+
await createEmailTemplatePage.messageTextArea.fill(
359+
'http://www.example.com'
360+
);
361+
362+
await createEmailTemplatePage.clickSaveAndPreviewButton();
363+
364+
const emailMessageErrorLink =
365+
createEmailTemplatePage.errorSummary.locator(
366+
'[href="#emailTemplateMessage"]'
367+
);
368+
369+
await expect(emailMessageErrorLink).toHaveText(errorMessage);
370+
371+
await emailMessageErrorLink.click();
372+
373+
await expect(createEmailTemplatePage.messageTextArea).toBeFocused();
374+
});
341375
});
342376
});

tests/test-team/template-mgmt-component-tests/email/template-mgmt-edit-email-page.component.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,5 +419,39 @@ test.describe('Edit Email message template Page', () => {
419419

420420
await expect(editEmailTemplatePage.messageTextArea).toBeFocused();
421421
});
422+
423+
test('when user submits form with an http link, then an error is displayed', async ({
424+
page,
425+
}) => {
426+
const errorMessage =
427+
'The message includes an insecure http:// link. All links must use https://';
428+
429+
const createEmailTemplatePage = new TemplateMgmtEditEmailPage(page);
430+
431+
await createEmailTemplatePage.loadPage(templates.valid.id);
432+
433+
await createEmailTemplatePage.nameInput.fill('template-name');
434+
435+
await createEmailTemplatePage.subjectLineInput.fill(
436+
'template-subject-line'
437+
);
438+
439+
await createEmailTemplatePage.messageTextArea.fill(
440+
'http://www.example.com'
441+
);
442+
443+
await createEmailTemplatePage.clickSaveAndPreviewButton();
444+
445+
const emailMessageErrorLink =
446+
createEmailTemplatePage.errorSummary.locator(
447+
'[href="#emailTemplateMessage"]'
448+
);
449+
450+
await expect(emailMessageErrorLink).toHaveText(errorMessage);
451+
452+
await emailMessageErrorLink.click();
453+
454+
await expect(createEmailTemplatePage.messageTextArea).toBeFocused();
455+
});
422456
});
423457
});

tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-create-nhs-app-template-page.component.spec.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,52 @@ test.describe('Create NHS App Template Page', () => {
156156
expect(messageContent).toHaveLength(5000);
157157
});
158158

159+
test('Validate error messages on the create NHS App message template page with http url in message', async ({
160+
page,
161+
}) => {
162+
const createTemplatePage = new TemplateMgmtCreateNhsAppPage(page);
163+
164+
await createTemplatePage.loadPage();
165+
await expect(createTemplatePage.pageHeading).toHaveText(
166+
'Create NHS App message template'
167+
);
168+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
169+
await page
170+
.locator('[id="nhsAppTemplateMessage"]')
171+
.fill('http://www.example.com');
172+
await createTemplatePage.clickSaveAndPreviewButton();
173+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
174+
175+
await expect(
176+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
177+
).toHaveText([
178+
'The message includes an insecure http:// link. All links must use https://',
179+
]);
180+
});
181+
182+
test('Validate error messages on the create NHS App message template page with angle brackets in linked url', async ({
183+
page,
184+
}) => {
185+
const createTemplatePage = new TemplateMgmtCreateNhsAppPage(page);
186+
187+
await createTemplatePage.loadPage();
188+
await expect(createTemplatePage.pageHeading).toHaveText(
189+
'Create NHS App message template'
190+
);
191+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
192+
await page
193+
.locator('[id="nhsAppTemplateMessage"]')
194+
.fill('[example](http://www.example.com/<>)');
195+
await createTemplatePage.clickSaveAndPreviewButton();
196+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
197+
198+
await expect(
199+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
200+
).toHaveText([
201+
'The message includes a link that contains an angle bracket character. They must be removed or URL encoded',
202+
]);
203+
});
204+
159205
const detailsSections = [
160206
'pds-personalisation-fields',
161207
'custom-personalisation-fields',

tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-edit-nhs-app-template-page.component.spec.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,52 @@ test.describe('Edit NHS App Template Page', () => {
217217
expect(messageContent).toHaveLength(5000);
218218
});
219219

220+
test('Validate error messages on the edit NHS App message template page with http url in message', async ({
221+
page,
222+
}) => {
223+
const createTemplatePage = new TemplateMgmtEditNhsAppPage(page);
224+
225+
await createTemplatePage.loadPage(templates.valid.id);
226+
await expect(createTemplatePage.pageHeading).toHaveText(
227+
'Create NHS App message template'
228+
);
229+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
230+
await page
231+
.locator('[id="nhsAppTemplateMessage"]')
232+
.fill('http://www.example.com');
233+
await createTemplatePage.clickSaveAndPreviewButton();
234+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
235+
236+
await expect(
237+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
238+
).toHaveText([
239+
'The message includes an insecure http:// link. All links must use https://',
240+
]);
241+
});
242+
243+
test('Validate error messages on the edit NHS App message template page with angle brackets in linked url', async ({
244+
page,
245+
}) => {
246+
const createTemplatePage = new TemplateMgmtEditNhsAppPage(page);
247+
248+
await createTemplatePage.loadPage(templates.valid.id);
249+
await expect(createTemplatePage.pageHeading).toHaveText(
250+
'Create NHS App message template'
251+
);
252+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
253+
await page
254+
.locator('[id="nhsAppTemplateMessage"]')
255+
.fill('[example](http://www.example.com/<>)');
256+
await createTemplatePage.clickSaveAndPreviewButton();
257+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
258+
259+
await expect(
260+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
261+
).toHaveText([
262+
'The message includes a link that contains an angle bracket character. They must be removed or URL encoded',
263+
]);
264+
});
265+
220266
const detailsSections = [
221267
'pds-personalisation-fields',
222268
'custom-personalisation-fields',

tests/test-team/template-mgmt-component-tests/sms/template-mgmt-create-sms-page.component.spec.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,5 +311,33 @@ test.describe('Create SMS message template Page', () => {
311311

312312
await expect(createSmsTemplatePage.messageTextArea).toBeFocused();
313313
});
314+
315+
test('when user submits form with an http link, then an error is displayed', async ({
316+
page,
317+
}) => {
318+
const errorMessage =
319+
'The message includes an insecure http:// link. All links must use https://';
320+
321+
const createSmsTemplatePage = new TemplateMgmtCreateSmsPage(page);
322+
323+
await createSmsTemplatePage.loadPage();
324+
325+
await createSmsTemplatePage.nameInput.fill('template-name');
326+
await createSmsTemplatePage.messageTextArea.fill(
327+
'http://www.example.com'
328+
);
329+
330+
await createSmsTemplatePage.clickSaveAndPreviewButton();
331+
332+
const smsMessageErrorLink = createSmsTemplatePage.errorSummary.locator(
333+
'[href="#smsTemplateMessage"]'
334+
);
335+
336+
await expect(smsMessageErrorLink).toHaveText(errorMessage);
337+
338+
await smsMessageErrorLink.click();
339+
340+
await expect(createSmsTemplatePage.messageTextArea).toBeFocused();
341+
});
314342
});
315343
});

tests/test-team/template-mgmt-component-tests/sms/template-mgmt-edit-sms-page.component.spec.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,5 +387,33 @@ test.describe('Edit SMS message template Page', () => {
387387

388388
await expect(editSmsTemplatePage.messageTextArea).toBeFocused();
389389
});
390+
391+
test('when user submits form with an http link, then an error is displayed', async ({
392+
page,
393+
}) => {
394+
const errorMessage =
395+
'The message includes an insecure http:// link. All links must use https://';
396+
397+
const createSmsTemplatePage = new TemplateMgmtEditSmsPage(page);
398+
399+
await createSmsTemplatePage.loadPage(templates.valid.id);
400+
401+
await createSmsTemplatePage.nameInput.fill('template-name');
402+
await createSmsTemplatePage.messageTextArea.fill(
403+
'http://www.example.com'
404+
);
405+
406+
await createSmsTemplatePage.clickSaveAndPreviewButton();
407+
408+
const smsMessageErrorLink = createSmsTemplatePage.errorSummary.locator(
409+
'[href="#smsTemplateMessage"]'
410+
);
411+
412+
await expect(smsMessageErrorLink).toHaveText(errorMessage);
413+
414+
await smsMessageErrorLink.click();
415+
416+
await expect(createSmsTemplatePage.messageTextArea).toBeFocused();
417+
});
390418
});
391419
});

0 commit comments

Comments
 (0)