Skip to content

Commit 49c1719

Browse files
VIA-598 Refactor build and deploy workflows to use action.yaml for e2e and contract tests
1 parent 1a0a364 commit 49c1719

File tree

4 files changed

+61
-92
lines changed

4 files changed

+61
-92
lines changed

.github/workflows/cicd-1-pull-request.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,5 @@ jobs:
123123
with:
124124
environment: "dev"
125125
checkout_ref: "${{ github.sha }}"
126+
release: "Latest main tag"
126127
secrets: inherit

.github/workflows/cicd-3-deploy.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ on:
77
description: 'Environment to deploy to'
88
type: environment
99
required: true
10+
release:
11+
description: 'Run assurance tests based on Hub URL for'
12+
type: choice
13+
options:
14+
- R1
15+
- Latest main
1016

1117
env:
1218
AWS_REGION: eu-west-2
@@ -74,4 +80,5 @@ jobs:
7480
with:
7581
environment: ${{ github.event.inputs.environment}}
7682
checkout_ref: ${{ needs.metadata.outputs.tag }}
83+
release: ${{ inputs.release }}
7784
secrets: inherit

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

Lines changed: 52 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ on:
1616
required: false
1717
type: boolean
1818
default: false
19+
release:
20+
description: "Release name used to infer the URL of the VitA Hub page"
21+
required: true
22+
type: string
1923

2024
jobs:
2125
test-e2e:
@@ -26,115 +30,71 @@ jobs:
2630
concurrency:
2731
group: ${{ inputs.environment }}-env
2832
cancel-in-progress: false
29-
env:
30-
TEST_NHS_APP_URL: ${{ secrets.TEST_NHS_APP_URL }}
31-
TEST_NHS_LOGIN_PASSWORD: ${{ secrets.TEST_NHS_LOGIN_PASSWORD }}
32-
TEST_NHS_LOGIN_OTP: ${{ secrets.TEST_NHS_LOGIN_OTP }}
33-
TEST_NBS_APP_USERNAME: ${{ secrets.TEST_NBS_APP_USERNAME }}
34-
TEST_NBS_APP_PASSWORD: ${{ secrets.TEST_NBS_APP_PASSWORD }}
35-
TEST_APP_URL: ${{ secrets.TEST_APP_URL }}
36-
NHS_APP_REDIRECT_LOGIN_URL: ${{ secrets.NHS_APP_REDIRECT_LOGIN_URL }}
37-
VITA_TEST_USER_PATTERN: ${{ secrets.VITA_TEST_USER_PATTERN }}
38-
DEPLOY_ENVIRONMENT: ${{ inputs.environment }}
3933
steps:
34+
- name: "Get URL of VitA Hub Page for release"
35+
id: get-hub-url
36+
run: |
37+
if ${{ inputs.release == 'R1' || inputs.release == 'release1' }}; then
38+
TEST_APP_URL=${{vars.TEST_APP_URL_R1}}
39+
else
40+
TEST_APP_URL=${{vars.TEST_APP_URL_MAIN}}
41+
fi
42+
echo "test_app_url=$TEST_APP_URL" >> $GITHUB_OUTPUT
43+
4044
- name: "Checkout code"
4145
uses: actions/checkout@v5
4246
with:
4347
ref: ${{ inputs.checkout_ref }}
4448

45-
- name: Cache node modules
46-
id: cache-npm
47-
uses: actions/cache@v4
48-
env:
49-
cache-name: cache-node-modules
50-
with:
51-
path: ~/.npm
52-
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
53-
54-
- name: "Install dependencies"
55-
run: |
56-
npm ci --ignore-scripts
57-
58-
- name: "Get current week number and playwright version"
59-
id: cache_key_values
60-
run: |
61-
echo "week_num=$(date -u +'%Y-%V')" | tee -a $GITHUB_OUTPUT
62-
echo "playwright_version=$(npm view @playwright/test version)" | tee -a $GITHUB_OUTPUT
63-
64-
- name: "Cache Playwright browsers"
65-
uses: actions/cache@v4
66-
id: playwright-cache
67-
with:
68-
path: ~/.cache/ms-playwright
69-
key: ${{ runner.os }}-playwright-${{ steps.cache_key_values.outputs.week_num }}-${{ steps.cache_key_values.outputs.playwright_version }}-${{ hashFiles('**/playwright.config*') }}
70-
71-
- name: "Install Playwright browsers (Chromium, Firefox)"
72-
if: steps.playwright-cache.outputs.cache-hit != 'true'
73-
run: |
74-
npx playwright install chromium firefox --with-deps
75-
76-
- name: "Install Playwright browsers (Webkit)"
77-
if: ${{ inputs.cross_browser == true }}
78-
run: |
79-
npx playwright install webkit --with-deps
80-
81-
- name: "Run Playwright tests"
82-
if: ${{ inputs.cross_browser == false }}
83-
run: |
84-
npm run e2e
85-
86-
- name: "Run Playwright tests (cross browser)"
87-
if: ${{ inputs.cross_browser == true }}
88-
run: |
89-
npm run e2e -- --config=playwright.config.cross-browser.ts
9049

91-
- name: "Upload report"
92-
uses: actions/upload-artifact@v5
93-
if: ${{ !cancelled() }}
50+
- name: "Run E2E tests on ${{ inputs.checkout_ref }} (${{ inputs.environment }})"
51+
timeout-minutes: 10
52+
uses: ./.github/actions/run-e2e-tests
9453
with:
95-
name: playwright-report-e2e-${{ inputs.checkout_ref }}
96-
path: playwright-report/
97-
retention-days: 30
54+
checkout_ref: ${{ inputs.checkout_ref }}
55+
cross_browser: ${{ inputs.cross_browser }}
56+
env:
57+
TEST_NHS_APP_URL: ${{ secrets.TEST_NHS_APP_URL }}
58+
TEST_NHS_LOGIN_PASSWORD: ${{ secrets.TEST_NHS_LOGIN_PASSWORD }}
59+
TEST_NHS_LOGIN_OTP: ${{ secrets.TEST_NHS_LOGIN_OTP }}
60+
TEST_NBS_APP_USERNAME: ${{ secrets.TEST_NBS_APP_USERNAME }}
61+
TEST_NBS_APP_PASSWORD: ${{ secrets.TEST_NBS_APP_PASSWORD }}
62+
TEST_APP_URL: ${{ steps.get-hub-url.outputs.test_app_url }}
63+
NHS_APP_REDIRECT_LOGIN_URL: ${{ secrets.NHS_APP_REDIRECT_LOGIN_URL }}
64+
VITA_TEST_USER_PATTERN: ${{ secrets.VITA_TEST_USER_PATTERN }}
65+
DEPLOY_ENVIRONMENT: ${{ inputs.environment }}
9866

9967
test-contract:
10068
name: "Contract Test: ${{inputs.environment}} environment"
10169
runs-on: ubuntu-latest
10270
timeout-minutes: 5
10371
environment: ${{ inputs.environment }}
104-
env:
105-
CONTENT_API_ENDPOINT: ${{ secrets.CONTENT_API_ENDPOINT }}
106-
CONTENT_API_KEY: ${{ secrets.CONTENT_API_KEY }}
107-
CONTENT_CACHE_IS_CHANGE_APPROVAL_ENABLED: "false"
108-
ELIGIBILITY_API_ENDPOINT: ${{ secrets.ELIGIBILITY_API_ENDPOINT }}
109-
ELIGIBILITY_API_KEY: ${{ secrets.ELIGIBILITY_API_KEY }}
110-
SSM_PREFIX: ${{ secrets.SSM_PREFIX }}
111-
NHS_APP_REDIRECT_LOGIN_URL: "dummy"
112-
CONTENT_CACHE_PATH: "dummy"
113-
NHS_LOGIN_URL: "dummy"
114-
NHS_LOGIN_CLIENT_ID: "dummy"
115-
NHS_LOGIN_SCOPE: "dummy"
116-
NHS_LOGIN_PRIVATE_KEY: "dummy"
117-
NBS_URL: "dummy"
118-
NBS_BOOKING_PATH: "dummy"
119-
MAX_SESSION_AGE_MINUTES: 0
120-
IS_APIM_AUTH_ENABLED: ${{ vars.IS_APIM_AUTH_ENABLED }}
121-
AUTH_SECRET: "dummy"
12272
steps:
12373
- name: "Checkout code"
12474
uses: actions/checkout@v5
12575
with:
12676
ref: ${{ inputs.checkout_ref }}
127-
- name: Cache node modules
128-
id: cache-npm
129-
uses: actions/cache@v4
130-
env:
131-
cache-name: cache-node-modules
77+
78+
- name: "Run contract tests (sandpit+mocked)"
79+
timeout-minutes: 3
80+
uses: ./.github/actions/run-contract-tests
13281
with:
133-
path: ~/.npm
134-
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
135-
- name: "Install dependencies"
136-
run: |
137-
npm ci --ignore-scripts
138-
- name: "Run contract tests"
139-
run: |
140-
npm run contract
82+
target_ref: ${{ inputs.checkout_ref }}
83+
env:
84+
CONTENT_API_ENDPOINT: ${{ secrets.CONTENT_API_ENDPOINT }}
85+
CONTENT_API_KEY: ${{ secrets.CONTENT_API_KEY }}
86+
ELIGIBILITY_API_ENDPOINT: ${{ secrets.ELIGIBILITY_API_ENDPOINT }}
87+
ELIGIBILITY_API_KEY: ${{ secrets.ELIGIBILITY_API_KEY }}
88+
SSM_PREFIX: ${{ secrets.SSM_PREFIX }}
89+
IS_APIM_AUTH_ENABLED: ${{ vars.IS_APIM_AUTH_ENABLED }}
90+
CONTENT_CACHE_IS_CHANGE_APPROVAL_ENABLED: "false"
91+
NHS_APP_REDIRECT_LOGIN_URL: "dummy"
92+
CONTENT_CACHE_PATH: "dummy"
93+
NHS_LOGIN_URL: "dummy"
94+
NHS_LOGIN_CLIENT_ID: "dummy"
95+
NHS_LOGIN_SCOPE: "dummy"
96+
NHS_LOGIN_PRIVATE_KEY: "dummy"
97+
NBS_URL: "dummy"
98+
NBS_BOOKING_PATH: "dummy"
99+
MAX_SESSION_AGE_MINUTES: 0
100+
AUTH_SECRET: "dummy"

.github/workflows/stage-8-assurance-test.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ jobs:
5454
environment: "preprod"
5555
checkout_ref: ${{ inputs.checkout_ref }}
5656
cross_browser: true
57+
release: ${{ inputs.release_name }}
5758
secrets: inherit
5859

5960
snapshot-stage-preprod:

0 commit comments

Comments
 (0)