Skip to content

Commit c6d2247

Browse files
New: [AEA-4750] - CI for CPTS UI Automated Tests (#207)
## Summary - 🤖 Operational or Infrastructure Change ### Details Everything should be added to allow the CI to automatically execute the E2E regression tests during deployment
1 parent 39e3951 commit c6d2247

File tree

9 files changed

+465
-3
lines changed

9 files changed

+465
-3
lines changed

.flake8

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[flake8]
2+
max-line-length=120
3+
exclude = .*,venv,node_modules
4+
max-complexity = 10

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ jobs:
123123
mockOidcClientId: ${{ secrets.PTL_MOCK_CLIENT_ID }}
124124
mockOidClientSecret: ${{ secrets.PTL_MOCK_CLIENT_SECRET }}
125125
CIS2_PRIVATE_KEY: ${{ secrets.PTL_CIS2_PRIVATE_KEY }}
126+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
126127

127128
create_release_notes:
128129
needs: [tag_release, package_code, get_commit_id, release_dev]
@@ -169,4 +170,5 @@ jobs:
169170
mockOidcClientId: ${{ secrets.PTL_MOCK_CLIENT_ID }}
170171
mockOidClientSecret: ${{ secrets.PTL_MOCK_CLIENT_SECRET }}
171172
CIS2_PRIVATE_KEY: ${{ secrets.PTL_CIS2_PRIVATE_KEY }}
173+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
172174

.github/workflows/pull_request.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,4 @@ jobs:
8888
mockOidcClientId: ${{ secrets.PTL_MOCK_CLIENT_ID }}
8989
mockOidClientSecret: ${{ secrets.PTL_MOCK_CLIENT_SECRET }}
9090
CIS2_PRIVATE_KEY: ${{ secrets.PTL_CIS2_PRIVATE_KEY }}
91+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}

.github/workflows/release.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ jobs:
142142
mockOidcClientId: ${{ secrets.PTL_MOCK_CLIENT_ID }}
143143
mockOidClientSecret: ${{ secrets.PTL_MOCK_CLIENT_SECRET }}
144144
CIS2_PRIVATE_KEY: ${{ secrets.PTL_CIS2_PRIVATE_KEY }}
145+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
145146

146147
create_release_notes:
147148
needs: [tag_release, package_code, get_commit_id, release_dev]
@@ -187,6 +188,7 @@ jobs:
187188
mockOidcClientId: ${{ secrets.PTL_MOCK_CLIENT_ID }}
188189
mockOidClientSecret: ${{ secrets.PTL_MOCK_CLIENT_SECRET }}
189190
CIS2_PRIVATE_KEY: ${{ secrets.PTL_CIS2_PRIVATE_KEY }}
191+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
190192

191193
release_qa:
192194
needs: [tag_release, package_code, get_commit_id, release_dev]
@@ -217,6 +219,7 @@ jobs:
217219
mockOidcClientId: ${{ secrets.PTL_MOCK_CLIENT_ID }}
218220
mockOidClientSecret: ${{ secrets.PTL_MOCK_CLIENT_SECRET }}
219221
CIS2_PRIVATE_KEY: ${{ secrets.PTL_CIS2_PRIVATE_KEY }}
222+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
220223

221224
release_int:
222225
needs: [tag_release, package_code, get_commit_id, release_qa]
@@ -247,6 +250,7 @@ jobs:
247250
mockOidcClientId: ${{ secrets.PTL_MOCK_CLIENT_ID }}
248251
mockOidClientSecret: ${{ secrets.PTL_MOCK_CLIENT_SECRET }}
249252
CIS2_PRIVATE_KEY: ${{ secrets.PTL_CIS2_PRIVATE_KEY }}
253+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
250254

251255
# release_prod:
252256
# needs: [tag_release, package_code, get_commit_id, release_int]

.github/workflows/release_all_stacks.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ on:
4242
type: boolean
4343
useCustomCognitoDomain:
4444
type: boolean
45+
REGRESSION_TESTS_PEM:
46+
type: string
47+
default: false
4548
secrets:
4649
CLOUD_FORMATION_DEPLOY_ROLE:
4750
required: true
@@ -57,7 +60,8 @@ on:
5760
required: false
5861
CIS2_PRIVATE_KEY:
5962
required: true
60-
63+
REGRESSION_TESTS_PEM:
64+
required: true
6165

6266
jobs:
6367
check_first_deployment:
@@ -288,3 +292,14 @@ jobs:
288292
git add _data/${{ inputs.TARGET_ENVIRONMENT }}_deployments.csv
289293
git commit -m 'update releases for ${{ inputs.TARGET_ENVIRONMENT }}'
290294
parallel --retries 10 --delay 3 ::: "git pull --rebase && git push"
295+
296+
regression_tests:
297+
name: Regression Tests
298+
uses: ./.github/workflows/run_regression_tests.yml
299+
if: ${{ always() && !failure() && !cancelled() }}
300+
needs: [release_stateful_resources, release_stateless_resources, rerelease_stateful_resources, deploy_website_content, update_cloudfront_kvs]
301+
with:
302+
ENVIRONMENT: ${{ inputs.TARGET_ENVIRONMENT }}
303+
VERSION_NUMBER: ${{ inputs.VERSION_NUMBER }}
304+
secrets:
305+
REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Run Regression Tests
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
ENVIRONMENT:
7+
required: true
8+
type: string
9+
VERSION_NUMBER:
10+
required: true
11+
type: string
12+
REGRESSION_TESTS_PEM:
13+
type: string
14+
default: false
15+
secrets:
16+
REGRESSION_TESTS_PEM:
17+
required: true
18+
19+
jobs:
20+
run_regression_tests:
21+
runs-on: ubuntu-latest
22+
environment: ${{ inputs.ENVIRONMENT }}
23+
permissions:
24+
id-token: write
25+
contents: write
26+
27+
steps:
28+
- name: Checkout local github actions
29+
uses: actions/checkout@v4
30+
with:
31+
ref: ${{ env.BRANCH_NAME }}
32+
fetch-depth: 0
33+
34+
- name: Generate a token to authenticate regression testing
35+
id: generate-token
36+
uses: actions/create-github-app-token@v1
37+
with:
38+
app-id: ${{ vars.REGRESSION_TESTS_APP_ID }}
39+
private-key: ${{ secrets.REGRESSION_TESTS_PEM }}
40+
owner: "NHSDigital"
41+
repositories: "electronic-prescription-service-api-regression-tests"
42+
43+
# using git commit sha for version of action to ensure we have stable version
44+
- name: Install asdf
45+
uses: asdf-vm/actions/setup@05e0d2ed97b598bfce82fd30daf324ae0c4570e6
46+
with:
47+
asdf_branch: v0.11.3
48+
49+
- name: Cache asdf
50+
uses: actions/cache@v4
51+
with:
52+
path: |
53+
~/.asdf
54+
key: ${{ runner.os }}-asdf-${{ hashFiles('**/.tool-versions') }}
55+
restore-keys: |
56+
${{ runner.os }}-asdf-
57+
58+
- name: Install asdf dependencies in .tool-versions
59+
uses: asdf-vm/actions/install@05e0d2ed97b598bfce82fd30daf324ae0c4570e6
60+
with:
61+
asdf_branch: v0.11.3
62+
env:
63+
PYTHON_CONFIGURE_OPTS: --enable-shared
64+
65+
- name: Run Regression Testing
66+
working-directory: scripts
67+
env:
68+
TARGET_ENVIRONMENT: ${{ inputs.ENVIRONMENT }}
69+
VERSION_NUMBER: ${{ inputs.VERSION_NUMBER }}
70+
GITHUB-TOKEN: ${{ steps.generate-token.outputs.token }}
71+
run: |
72+
if [[ "$TARGET_ENVIRONMENT" != "prod" && "$TARGET_ENVIRONMENT" != "ref" ]]; then
73+
poetry install
74+
echo Running regression tests in the "$TARGET_ENVIRONMENT" environment
75+
poetry run python run_regression_tests.py --env="$TARGET_ENVIRONMENT" --pr_label="$VERSION_NUMBER" --token=${{ steps.generate-token.outputs.token }}
76+
fi

0 commit comments

Comments
 (0)