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
2024jobs :
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"
0 commit comments