-
Notifications
You must be signed in to change notification settings - Fork 12
136 lines (128 loc) · 4.61 KB
/
run-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: Github Actions Tests
on:
workflow_call:
pull_request:
permissions:
contents: read
jobs:
detect-secrets:
runs-on: ubuntu-latest
steps:
- name: Git checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab
- name: Detect secrets
uses: alphagov/pay-ci/actions/detect-secrets@master
version:
runs-on: ubuntu-latest
name: Parse versions
outputs:
node-version: ${{ steps.parse-node-version.outputs.nvmrc }}
steps:
- name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab
- name: Parse Node version
id: parse-node-version
run: echo "nvmrc=$(cat .nvmrc)" >> $GITHUB_OUTPUT
install-and-compile:
runs-on: ubuntu-latest
name: Install and compile
needs: version
steps:
- name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab
- name: Setup
uses: actions/setup-node@bea5baf987ba7aa777a8a0b4ace377a21c45c381
with:
node-version: ${{ needs.version.outputs.node-version }}
- name: Cache build directories
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
with:
path: |
node_modules
govuk_modules
public
key: ${{ runner.os }}-build-id-${{ github.head_ref }}-${{ github.sha }}
- name: Cache NPM packages
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-
- name: Parse Cypress version
id: parse-cypress-version
run: echo "CYPRESS_VERSION=$(jq -r '.devDependencies.cypress' package.json)" >> $GITHUB_OUTPUT
- name: Cache Cypress
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
with:
path: ~/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ steps.parse-cypress-version.outputs.CYPRESS_VERSION }}
- name: Install dependencies
run: npm ci
- name: Compile
run: npm run compile
- name: Run lint
run: npm run lint
unit-tests:
runs-on: ubuntu-latest
name: Unit tests
needs: [version, install-and-compile]
steps:
- name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab
- name: Setup
uses: actions/setup-node@bea5baf987ba7aa777a8a0b4ace377a21c45c381
with:
node-version: ${{ needs.version.outputs.node-version }}
- name: Cache build directories
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
with:
path: |
node_modules
govuk_modules
public
key: ${{ runner.os }}-build-id-${{ github.head_ref }}-${{ github.sha }}
- name: Cache pacts directory
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
with:
path: pacts
key: ${{ runner.os }}-build-id-${{ github.head_ref }}-${{ github.sha }}-pacts
- name: Run unit tests
run: npm test -- --forbid-only --forbid-pending
- name: Check for generated pacts
run: |
if [ ! -d pacts ]; then
echo "The pact files were not generated, this means that no pact results will be published and this build will fail to deploy"
exit 1
fi
cypress-tests:
runs-on: ubuntu-latest
name: Cypress tests
needs: [version, install-and-compile]
steps:
- name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab
- name: Setup
uses: actions/setup-node@bea5baf987ba7aa777a8a0b4ace377a21c45c381
with:
node-version: ${{ needs.version.outputs.node-version }}
- name: Cache build directories
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
with:
path: |
node_modules
govuk_modules
public
key: ${{ runner.os }}-build-id-${{ github.head_ref }}-${{ github.sha }}
- name: Parse Cypress version
id: parse-cypress-version
run: echo "CYPRESS_VERSION=$(jq -r '.devDependencies.cypress' package.json)" >> $GITHUB_OUTPUT
- name: Cache Cypress
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
with:
path: ~/.cache/Cypress
key: ${{ runner.os }}-cypress-${{ steps.parse-cypress-version.outputs.CYPRESS_VERSION }}
- name: Run cypress tests
run: |
npm run cypress:server > /dev/null 2>&1 &
sleep 5
npm run cypress:test