Skip to content

Commit 3410902

Browse files
committed
CCM-8864 Merge in main
2 parents b15b9b4 + 70ee486 commit 3410902

File tree

193 files changed

+5811
-12267
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

193 files changed

+5811
-12267
lines changed

.github/CODEOWNERS

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# NHS Notify Code Owners
22

3-
* @NHSDigital/nhs-notify-web-template-management
3+
* @NHSDigital/nhs-notify-web-template-management
44

5-
/.github/ @NHSDigital/nhs-notify-web-template-management-admins
6-
*.code-workspace @NHSDigital/nhs-notify-web-template-management-admins
7-
/docs/ @NHSDigital/nhs-notify-web-template-management
8-
/docs/testing/ @NHSDigital/nhs-notify-web-template-management-testers
9-
/tests/test-team/ @NHSDigital/nhs-notify-web-template-management-testers
5+
/.github/ @NHSDigital/nhs-notify-web-template-management-admins
6+
*.code-workspace @NHSDigital/nhs-notify-web-template-management-admins
7+
/docs/ @NHSDigital/nhs-notify-web-template-management
8+
/docs/testing/ @NHSDigital/nhs-notify-web-template-management-testers
9+
/tests/test-team/ @NHSDigital/nhs-notify-web-template-management-testers
10+
/infrastructure/terraform/ @NHSDigital/nhs-notify-platform
1011

1112
# Codeowners must be final check
12-
/.github/CODEOWNERS @NHSDigital/nhs-notify-code-owners
13-
/CODEOWNERS @NHSDigital/nhs-notify-code-owners
13+
/.github/CODEOWNERS @NHSDigital/nhs-notify-code-owners
14+
/CODEOWNERS @NHSDigital/nhs-notify-code-owners
1415

1516

1617
# Each NHS Notify repository should have clear code owners set.

.github/workflows/stage-4-acceptance.yaml

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
uses: aws-actions/configure-aws-credentials@v4
5555
with:
5656
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ASSUME_ROLE_NAME }}
57-
role-session-name: deployInfra
57+
role-session-name: templates-ci-sandbox-setup
5858
aws-region: ${{ env.AWS_REGION }}
5959
- name: "Get normalized branch name"
6060
id: normalize_branch_name
@@ -108,7 +108,7 @@ jobs:
108108
uses: aws-actions/configure-aws-credentials@v4
109109
with:
110110
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ASSUME_ROLE_NAME }}
111-
role-session-name: deployInfra
111+
role-session-name: templates-ci-accessibility-tests
112112
aws-region: eu-west-2
113113
- name: "Run accessibility test"
114114
run: make test-accessibility
@@ -143,7 +143,7 @@ jobs:
143143
uses: aws-actions/configure-aws-credentials@v4
144144
with:
145145
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ASSUME_ROLE_NAME }}
146-
role-session-name: deployInfra
146+
role-session-name: templates-ci-component-tests
147147
aws-region: eu-west-2
148148
- name: "Run ui component test"
149149
run: |
@@ -179,7 +179,7 @@ jobs:
179179
uses: aws-actions/configure-aws-credentials@v4
180180
with:
181181
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ASSUME_ROLE_NAME }}
182-
role-session-name: deployInfra
182+
role-session-name: templates-ci-api-tests
183183
aws-region: eu-west-2
184184
- name: "Run API test"
185185
run: |
@@ -190,7 +190,43 @@ jobs:
190190
with:
191191
name: API test report
192192
path: "tests/test-team/playwright-report"
193-
193+
test-e2e:
194+
name: "E2E test"
195+
runs-on: ubuntu-latest
196+
needs: [sandbox-set-up]
197+
environment: dev
198+
timeout-minutes: 10
199+
steps:
200+
- name: "Checkout code"
201+
uses: actions/checkout@v4
202+
- uses: actions/download-artifact@v4
203+
with:
204+
name: sandbox_tf_outputs.json
205+
path: ./
206+
- uses: actions/download-artifact@v4
207+
with:
208+
name: amplify_outputs.json
209+
path: ./frontend
210+
- name: "Repo setup"
211+
run: |
212+
npm ci
213+
- name: Install Playwright Browsers
214+
run: npx playwright install --with-deps
215+
- name: Configure AWS credentials
216+
uses: aws-actions/configure-aws-credentials@v4
217+
with:
218+
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ASSUME_ROLE_NAME }}
219+
role-session-name: templates-ci-e2e-tests
220+
aws-region: eu-west-2
221+
- name: "Run E2E test"
222+
run:
223+
npm -w tests/test-team run test:e2e
224+
- name: Archive e2e test results
225+
if: success() || failure()
226+
uses: actions/upload-artifact@v4
227+
with:
228+
name: e2e test report
229+
path: "tests/test-team/playwright-report"
194230
sandbox-tear-down:
195231
name: "Sandbox tear down"
196232
if: success() || failure()
@@ -199,6 +235,7 @@ jobs:
199235
- test-accessibility
200236
- test-ui-component
201237
- test-api
238+
- test-e2e
202239
environment: dev
203240
steps:
204241
- uses: hashicorp/setup-terraform@v3
@@ -209,7 +246,7 @@ jobs:
209246
uses: aws-actions/configure-aws-credentials@v4
210247
with:
211248
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ASSUME_ROLE_NAME }}
212-
role-session-name: deployInfra
249+
role-session-name: templates-ci-sandbox-teardown
213250
aws-region: eu-west-2
214251
- name: "Get normalized branch name"
215252
id: normalize_branch_name

frontend/src/__tests__/app/choose-a-template-type/__snapshots__/page.test.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ exports[`ChooseATemplateTypePage - LETTER option is hidden when feature flag is
77
>
88
<a
99
class="nhsuk-back-link__link"
10-
href="/templates/manage-templates"
10+
href="/templates/message-templates"
1111
>
1212
<svg
1313
aria-hidden="true"
@@ -165,7 +165,7 @@ exports[`ChooseATemplateTypePage 1`] = `
165165
>
166166
<a
167167
class="nhsuk-back-link__link"
168-
href="/templates/manage-templates"
168+
href="/templates/message-templates"
169169
>
170170
<svg
171171
aria-hidden="true"

frontend/src/__tests__/app/create-and-submit-templates/__snapshots__/page.test.tsx.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ exports[`matches the snapshot 1`] = `
6464
aria-disabled="false"
6565
class="nhsuk-button"
6666
draggable="false"
67-
href="/templates/manage-templates"
67+
href="/templates/message-templates"
6868
role="button"
6969
>
7070
Start now

frontend/src/__tests__/app/delete-template/page.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ describe('PreviewEmailTemplatePage', () => {
7777
expect(redirectMock).toHaveBeenCalledWith('/invalid-template', 'replace');
7878
});
7979

80-
test('should redirect to manage-templates when template is already deleted', async () => {
80+
test('should redirect to message-templates when template is already deleted', async () => {
8181
getTemplateMock.mockResolvedValueOnce({
8282
id: 'template-id',
8383
templateStatus: 'DELETED',
@@ -94,6 +94,6 @@ describe('PreviewEmailTemplatePage', () => {
9494
}),
9595
});
9696

97-
expect(redirectMock).toHaveBeenCalledWith('/manage-templates', 'push');
97+
expect(redirectMock).toHaveBeenCalledWith('/message-templates', 'push');
9898
});
9999
});

frontend/src/__tests__/app/manage-templates/page.test.tsx renamed to frontend/src/__tests__/app/message-templates/page.test.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import '@testing-library/jest-dom';
22
import { render, screen } from '@testing-library/react';
3-
import ManageTemplatesPage, {
3+
import MessageTemplatesPage, {
44
generateMetadata,
5-
} from '@app/manage-templates/page';
5+
} from '@app/message-templates/page';
66
import content from '@content/content';
77
import { getTemplates } from '@utils/form-actions';
88
import { TemplateDto } from 'nhs-notify-backend-client';
99

10-
const manageTemplatesContent = content.pages.manageTemplates;
10+
const messageTemplatesContent = content.pages.messageTemplates;
1111

1212
const mockTemplates: TemplateDto[] = [
1313
{
@@ -23,43 +23,43 @@ const mockTemplates: TemplateDto[] = [
2323

2424
jest.mock('@utils/form-actions');
2525

26-
describe('ManageTemplatesPage', () => {
26+
describe('MessageTemplatesPage', () => {
2727
beforeEach(() => {
2828
jest.resetAllMocks();
2929
});
3030
test('renders the page without templates', async () => {
31-
render(await ManageTemplatesPage());
31+
render(await MessageTemplatesPage());
3232

3333
expect(await generateMetadata()).toEqual({
34-
title: manageTemplatesContent.pageTitle,
34+
title: messageTemplatesContent.pageTitle,
3535
});
3636
expect(screen.getByTestId('page-content-wrapper')).toBeInTheDocument();
3737
expect(screen.getByTestId('page-heading')).toBeInTheDocument();
3838
expect(screen.getByRole('button')).toBeInTheDocument();
3939
expect(screen.getByRole('button')).toHaveAttribute(
4040
'href',
41-
manageTemplatesContent.createTemplateButton.url
41+
messageTemplatesContent.createTemplateButton.url
4242
);
4343
expect(screen.getByRole('button')).toHaveTextContent(
44-
manageTemplatesContent.createTemplateButton.text
44+
messageTemplatesContent.createTemplateButton.text
4545
);
4646

4747
expect(screen.getByTestId('no-templates-available')).toBeInTheDocument();
4848
});
4949

5050
test('renders the page with templates', async () => {
5151
jest.mocked(getTemplates).mockResolvedValue(mockTemplates);
52-
render(await ManageTemplatesPage());
52+
render(await MessageTemplatesPage());
5353

5454
expect(screen.getByTestId('page-content-wrapper')).toBeInTheDocument();
5555
expect(screen.getByTestId('page-heading')).toBeInTheDocument();
5656
expect(screen.getByRole('button')).toBeInTheDocument();
5757
expect(screen.getByRole('button')).toHaveAttribute(
5858
'href',
59-
manageTemplatesContent.createTemplateButton.url
59+
messageTemplatesContent.createTemplateButton.url
6060
);
6161
expect(screen.getByRole('button')).toHaveTextContent(
62-
manageTemplatesContent.createTemplateButton.text
62+
messageTemplatesContent.createTemplateButton.text
6363
);
6464

6565
expect(screen.getByTestId('manage-template-table')).toBeInTheDocument();

frontend/src/__tests__/app/preview-letter-template/page.test.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22
* @jest-environment node
33
*/
44
import PreviewLetterTemplatePage from '@app/preview-letter-template/[templateId]/page';
5-
import { PreviewLetterTemplate } from '@forms/PreviewLetterTemplate/PreviewLetterTemplate';
65
import { type LetterTemplate } from 'nhs-notify-web-template-management-utils';
76
import { redirect } from 'next/navigation';
87
import { getTemplate } from '@utils/form-actions';
98
import { Language, LetterType, TemplateDto } from 'nhs-notify-backend-client';
109
import { EMAIL_TEMPLATE, NHS_APP_TEMPLATE, SMS_TEMPLATE } from '../../helpers';
10+
import { PreviewLetterTemplate } from '@organisms/PreviewLetterTemplate/PreviewLetterTemplate';
1111

1212
jest.mock('@utils/form-actions');
1313
jest.mock('next/navigation');
14-
jest.mock('@forms/PreviewLetterTemplate/PreviewLetterTemplate');
1514

1615
const redirectMock = jest.mocked(redirect);
1716
const getTemplateMock = jest.mocked(getTemplate);
@@ -59,9 +58,7 @@ describe('PreviewLetterTemplatePage', () => {
5958
}),
6059
});
6160

62-
expect(page).toEqual(
63-
<PreviewLetterTemplate initialState={letterTemplate} />
64-
);
61+
expect(page).toEqual(<PreviewLetterTemplate template={letterTemplate} />);
6562
});
6663

6764
it('should redirect to invalid-template when no template is found', async () => {

frontend/src/__tests__/app/view-submitted-email-template/page.test.tsx renamed to frontend/src/__tests__/app/preview-submitted-email-template/page.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44
import ViewSubmittedEmailTemplatePage, {
55
generateMetadata,
6-
} from '@app/view-submitted-email-template/[templateId]/page';
6+
} from '@app/preview-submitted-email-template/[templateId]/page';
77
import { ViewEmailTemplate } from '@molecules/ViewEmailTemplate/ViewEmailTemplate';
88
import { EmailTemplate } from 'nhs-notify-web-template-management-utils';
99
import { getTemplate } from '@utils/form-actions';

frontend/src/__tests__/app/view-submitted-nhs-app-template/page.test.tsx renamed to frontend/src/__tests__/app/preview-submitted-nhs-app-template/page.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44
import ViewSubmittedNHSAppTemplatePage, {
55
generateMetadata,
6-
} from '@app/view-submitted-nhs-app-template/[templateId]/page';
6+
} from '@app/preview-submitted-nhs-app-template/[templateId]/page';
77
import { ViewNHSAppTemplate } from '@molecules/ViewNHSAppTemplate/ViewNHSAppTemplate';
88
import { NHSAppTemplate } from 'nhs-notify-web-template-management-utils';
99
import { getTemplate } from '@utils/form-actions';

frontend/src/__tests__/app/view-submitted-text-message-template/page.test.tsx renamed to frontend/src/__tests__/app/preview-submitted-text-message-template/page.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44
import ViewSubmittedSMSTemplatePage, {
55
generateMetadata,
6-
} from '@app/view-submitted-text-message-template/[templateId]/page';
6+
} from '@app/preview-submitted-text-message-template/[templateId]/page';
77
import { ViewSMSTemplate } from '@molecules/ViewSMSTemplate/ViewSMSTemplate';
88
import { SMSTemplate } from 'nhs-notify-web-template-management-utils';
99
import { getTemplate } from '@utils/form-actions';

0 commit comments

Comments
 (0)