11import { test , expect } from '@playwright/test' ;
22import { TemplateStorageHelper } from '../../helpers/db/template-storage-helper' ;
33import { TemplateMgmtCreateEmailPage } from '../../pages/email/template-mgmt-create-email-page' ;
4- import { TemplateFactory } from '../../helpers/factories/template-factory' ;
54import {
65 assertFooterLinks ,
76 assertGoBackLink ,
87 assertLogoutLink ,
9- assertGoBackLinkNotPresent ,
108 assertNotifyBannerLink ,
119 assertSkipToMainContent ,
1210} from '../template-mgmt-common.steps' ;
13- import { TemplateType } from '../../helpers/types' ;
1411import {
1512 createAuthHelper ,
13+ TestUser ,
1614 TestUserId ,
1715} from '../../helpers/auth/cognito-auth-helper' ;
1816
19- function createTemplates ( owner : string ) {
20- return {
21- empty : TemplateFactory . createEmailTemplate ( 'empty-email-template' , owner ) ,
22- submit : TemplateFactory . createEmailTemplate ( 'submit-email-template' , owner ) ,
23- submitAndReturn : TemplateFactory . createEmailTemplate (
24- 'submit-and-return-create-email-template' ,
25- owner
26- ) ,
27- goBackAndReturn : TemplateFactory . createEmailTemplate (
28- 'go-back-email-template' ,
29- owner
30- ) ,
31- noEmailTemplateType : TemplateFactory . create ( {
32- id : 'no-email-template-type-template' ,
33- templateType : TemplateType . NHS_APP ,
34- owner,
35- } ) ,
36- previousData : {
37- ...TemplateFactory . createEmailTemplate (
38- 'previous-data-email-template' ,
39- owner
40- ) ,
41- name : 'previous-data-email-template' ,
42- subject : 'previous-data-email-template-subject-line' ,
43- message : 'previous-data-email-template-message' ,
44- } ,
45- } ;
46- }
47-
4817test . describe ( 'Create Email message template Page' , ( ) => {
49- let templates : ReturnType < typeof createTemplates > ;
5018 const templateStorageHelper = new TemplateStorageHelper ( ) ;
19+ let user : TestUser ;
5120
5221 test . beforeAll ( async ( ) => {
53- const user = await createAuthHelper ( ) . getTestUser ( TestUserId . User1 ) ;
54- templates = createTemplates ( user . userId ) ;
55- await templateStorageHelper . seedTemplateData ( Object . values ( templates ) ) ;
22+ user = await createAuthHelper ( ) . getTestUser ( TestUserId . User1 ) ;
5623 } ) ;
5724
5825 test . afterAll ( async ( ) => {
59- await templateStorageHelper . deleteSeededTemplates ( ) ;
26+ await templateStorageHelper . deleteAdHocTemplates ( ) ;
6027 } ) ;
6128
6229 test ( 'when user visits page, then page is loaded' , async ( {
@@ -65,10 +32,10 @@ test.describe('Create Email message template Page', () => {
6532 } ) => {
6633 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
6734
68- await createEmailTemplatePage . loadPage ( templates . empty . id ) ;
35+ await createEmailTemplatePage . loadPage ( ) ;
6936
7037 await expect ( page ) . toHaveURL (
71- `${ baseURL } /templates/edit -email-template/ ${ templates . empty . id } `
38+ `${ baseURL } /templates/create -email-template`
7239 ) ;
7340
7441 expect ( await createEmailTemplatePage . pageHeader . textContent ( ) ) . toBe (
@@ -93,40 +60,12 @@ test.describe('Create Email message template Page', () => {
9360 } ) ;
9461 } ) ;
9562
96- test ( 'edit page has no go back link' , async ( { page, baseURL } ) => {
97- const props = {
98- page : new TemplateMgmtCreateEmailPage ( page ) ,
99- id : templates . empty . id ,
100- baseURL,
101- } ;
102-
103- await assertGoBackLinkNotPresent ( props ) ;
104- } ) ;
105-
106- test ( 'when user visits page with previous data, then form fields retain previous data' , async ( {
107- page,
108- } ) => {
109- const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
110-
111- await createEmailTemplatePage . loadPage ( templates . previousData . id ) ;
112-
113- await expect ( createEmailTemplatePage . nameInput ) . toHaveValue (
114- templates . previousData . name
115- ) ;
116- await expect ( createEmailTemplatePage . subjectLineInput ) . toHaveValue (
117- templates . previousData . subject
118- ) ;
119- await expect ( createEmailTemplatePage . messageTextArea ) . toHaveValue (
120- templates . previousData . message
121- ) ;
122- } ) ;
123-
12463 test ( 'when user clicks "Personalisation" tool tips, then tool tips are displayed' , async ( {
12564 page,
12665 } ) => {
12766 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
12867
129- await createEmailTemplatePage . loadPage ( templates . goBackAndReturn . id ) ;
68+ await createEmailTemplatePage . loadPage ( ) ;
13069
13170 await createEmailTemplatePage . personalisationFields . click ( ) ;
13271
@@ -140,7 +79,7 @@ test.describe('Create Email message template Page', () => {
14079 } ) => {
14180 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
14281
143- await createEmailTemplatePage . loadPage ( templates . empty . id ) ;
82+ await createEmailTemplatePage . loadPage ( ) ;
14483
14584 await createEmailTemplatePage . messageFormatting . assertDetailsOpen ( [
14685 createEmailTemplatePage . messageFormatting . lineBreaksAndParagraphs ,
@@ -188,7 +127,7 @@ test.describe('Create Email message template Page', () => {
188127 } ) => {
189128 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
190129
191- await createEmailTemplatePage . loadPage ( templates . empty . id ) ;
130+ await createEmailTemplatePage . loadPage ( ) ;
192131
193132 await createEmailTemplatePage . namingYourTemplate . click ( {
194133 position : { x : 0 , y : 0 } ,
@@ -199,12 +138,11 @@ test.describe('Create Email message template Page', () => {
199138 } ) ;
200139
201140 test ( 'when user submits form with valid data, then the next page is displayed' , async ( {
202- baseURL,
203141 page,
204142 } ) => {
205143 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
206144
207- await createEmailTemplatePage . loadPage ( templates . submit . id ) ;
145+ await createEmailTemplatePage . loadPage ( ) ;
208146
209147 await createEmailTemplatePage . nameInput . fill (
210148 'This is an email template name'
@@ -220,41 +158,30 @@ test.describe('Create Email message template Page', () => {
220158
221159 await createEmailTemplatePage . clickSubmitButton ( ) ;
222160
161+ const previewPageRegex = "\\/templates\\/preview-email-template\\/([0-9a-fA-F-]+)(?:\\?from=edit)?$" ;
162+
223163 await expect ( page ) . toHaveURL (
224- ` ${ baseURL } /templates/preview-email-template/ ${ templates . submit . id } ?from=edit`
164+ RegExp ( previewPageRegex )
225165 ) ;
226- } ) ;
227- } ) ;
228166
229- test . describe ( 'Error handling' , ( ) => {
230- test ( 'when user visits page with mismatched template journey, then an invalid template error is displayed' , async ( {
231- baseURL,
232- page,
233- } ) => {
234- const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
167+ const previewPageParts = page . url ( ) . match ( previewPageRegex ) ;
235168
236- await createEmailTemplatePage . loadPage ( templates . noEmailTemplateType . id ) ;
237-
238- await expect ( page ) . toHaveURL ( `${ baseURL } /templates/invalid-template` ) ;
239- } ) ;
169+ expect ( previewPageParts ?. length ) . toEqual ( 2 ) ;
240170
241- test ( 'when user visits page with a fake template, then an invalid template error is displayed' , async ( {
242- baseURL,
243- page,
244- } ) => {
245- const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
246-
247- await createEmailTemplatePage . loadPage ( '/fake-template-id' ) ;
248-
249- await expect ( page ) . toHaveURL ( `${ baseURL } /templates/invalid-template` ) ;
171+ templateStorageHelper . addAdHocTemplateKey ( {
172+ id : previewPageParts ! [ 1 ] ,
173+ owner : user . userId ,
174+ } ) ;
250175 } ) ;
176+ } ) ;
251177
178+ test . describe ( 'Error handling' , ( ) => {
252179 test ( 'when user submits form with no data, then errors are displayed' , async ( {
253180 page,
254181 } ) => {
255182 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
256183
257- await createEmailTemplatePage . loadPage ( templates . empty . id ) ;
184+ await createEmailTemplatePage . loadPage ( ) ;
258185
259186 await createEmailTemplatePage . clickSubmitButton ( ) ;
260187
@@ -290,7 +217,7 @@ test.describe('Create Email message template Page', () => {
290217
291218 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
292219
293- await createEmailTemplatePage . loadPage ( templates . empty . id ) ;
220+ await createEmailTemplatePage . loadPage ( ) ;
294221
295222 await createEmailTemplatePage . subjectLineInput . fill (
296223 'template-subject-line'
@@ -318,7 +245,7 @@ test.describe('Create Email message template Page', () => {
318245
319246 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
320247
321- await createEmailTemplatePage . loadPage ( templates . empty . id ) ;
248+ await createEmailTemplatePage . loadPage ( ) ;
322249
323250 await createEmailTemplatePage . nameInput . fill ( 'template-name' ) ;
324251
@@ -345,7 +272,7 @@ test.describe('Create Email message template Page', () => {
345272
346273 const createEmailTemplatePage = new TemplateMgmtCreateEmailPage ( page ) ;
347274
348- await createEmailTemplatePage . loadPage ( templates . empty . id ) ;
275+ await createEmailTemplatePage . loadPage ( ) ;
349276
350277 await createEmailTemplatePage . nameInput . fill ( 'template-name' ) ;
351278
0 commit comments