-
Notifications
You must be signed in to change notification settings - Fork 1
136 lines (136 loc) · 6.04 KB
/
cypress-mocked.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: cypress-mocked
on:
workflow_call:
jobs:
cypress-mocked:
name: Cypress mocked tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
group: [1, 2, 3, 4, 5, 6]
timeout-minutes: 15
services:
redis:
image: redis
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# Maps Redis port 6379 on service container to the host
- 6379:6379
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup OS, Nginx, and Certs
run: |
sudo apt-get update -y
sudo apt-get install -y libnss3-tools
sudo service nginx restart
wget -q https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
wget -q https://github.com/guardian/dev-nginx/releases/latest/download/dev-nginx.tar.gz
sudo cp mkcert-v1.4.3-linux-amd64 /usr/local/bin/mkcert
sudo chmod +x /usr/local/bin/mkcert
sudo mkdir -p /usr/local/bin/dev-nginx
sudo tar -xzf dev-nginx.tar.gz -C /usr/local
sudo chmod +x /usr/local/bin/dev-nginx
sudo dev-nginx setup-cert "profile.thegulocal.com"
sudo cp ./scripts/nginx.conf /etc/nginx/nginx.conf
sudo dev-nginx restart-nginx
- name: Download build
uses: actions/download-artifact@v4
with:
name: build
- name: Unzip build
run: unzip -q build.zip
- uses: pnpm/action-setup@v4
with:
version: latest
- name: Setup node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Get pnpm cache directory path
id: pnpm-cache-dir
run: echo "PNPM_STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Get cypress cache directory path
id: cypress-cache-dir
run: echo "CYPRESS_BIN_PATH=$(pnpm dlx cypress cache path)" >> $GITHUB_OUTPUT
- name: Cache pnpm modules and cypress binary
uses: actions/cache@v4
id: pnpm-cache
with:
path: |
${{ steps.pnpm-cache-dir.outputs.PNPM_STORE_PATH }}
${{ steps.cypress-cache-dir.outputs.CYPRESS_BIN_PATH }}
key: ${{ runner.os }}-pnpm-cypress-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-cypress-
- name: Cypress run
uses: cypress-io/github-action@v6
env:
DEBUG: '@cypress/github-action'
PORT: 8861
ENVIRONMENT: production
STAGE: DEV
BASE_URI: profile.thegulocal.com
CYPRESS_BASE_URI: profile.thegulocal.com
IDAPI_CLIENT_ACCESS_TOKEN: fakekey
IDAPI_BASE_URL: http://localhost:9000
DEFAULT_RETURN_URI: https://m.code.dev-theguardian.com
CYPRESS_DEFAULT_RETURN_URI: https://m.code.dev-theguardian.com
SIGN_IN_PAGE_URL: https://profile.thegulocal.com/signin
OAUTH_BASE_URL: https://oauth.code.dev-theguardian.com
MEMBERS_DATA_API_URL: http://localhost:9000
CYPRESS_SIGN_IN_PAGE_URL: https://profile.thegulocal.com/signin
IS_HTTPS: true
APP_SECRET: devsecret
CYPRESS_MAILOSAUR_API_KEY: ${{ secrets.CYPRESS_MAILOSAUR_API_KEY }}
CYPRESS_MAILOSAUR_SERVER_ID: ${{ secrets.CYPRESS_MAILOSAUR_SERVER_ID }}
CYPRESS_OKTA_ANDROID_CLIENT_ID: androidclientid
# These are public test keys provided by Google for testing.
# https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do
GOOGLE_RECAPTCHA_SITE_KEY: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
GOOGLE_RECAPTCHA_SECRET_KEY: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
ENCRYPTION_SECRET_KEY: f3d87b231ddd6f50d99e227c5bc9b7cbb649387b321008df412fd73805ac2e32
# This needs to be the same as ENCRYPTION_SECRET_KEY as we have to be able to read it in Cypress
CYPRESS_ENCRYPTION_SECRET_KEY: f3d87b231ddd6f50d99e227c5bc9b7cbb649387b321008df412fd73805ac2e32
OKTA_ORG_URL: http://localhost:9000
OKTA_API_TOKEN: oktatoken
CYPRESS_OKTA_CUSTOM_OAUTH_SERVER: oktaoauthserverid
OKTA_CUSTOM_OAUTH_SERVER: oktaoauthserverid
OKTA_CLIENT_ID: oktaclientid
OKTA_CLIENT_SECRET: oktaclientsecret
OKTA_IDP_APPLE: oktaappleidp
OKTA_IDP_GOOGLE: oktagoogleidp
OKTA_GUARDIAN_USERS_ALL_GROUP_ID: oktaGuardianUserGroupId
# This is a public URL+key sent to Sentry on the client side
# We disable Sentry for our tests
SENTRY_DSN: ''
REDIS_HOST: localhost
REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }}
REDIS_SSL_ON: false
RATE_LIMITER_CONFIG: '{"enabled":true,"defaultBuckets":{"globalBucket":{"capacity":500,"addTokenMs":50}}}'
DELETE_ACCOUNT_STEP_FUNCTION_URL: delete-account-step-function-url
DELETE_ACCOUNT_STEP_FUNCTION_API_KEY: delete-account-step-function-api-key
# Required for the Cypress tests to run as we're unable to verify the created certs
NODE_TLS_REJECT_UNAUTHORIZED: 0
# Used to tell Gateway server we're running in Cypress
RUNNING_IN_CYPRESS: true
RUNNING_IN_CYPRESS_MOCKED: true
with:
start: pnpm start, pnpm run mock-server
wait-on: 'https://profile.thegulocal.com/healthcheck, http://localhost:9000/healthcheck'
wait-on-timeout: 60
browser: chrome
spec: cypress/integration/mocked/*.cy.ts
config: '{"chromeWebSecurity": false,"baseUrl":"https://profile.thegulocal.com","numTestsKeptInMemory":"1","e2e":{"specPattern": ["cypress/integration/mocked/**/*.${{ matrix.group }}.cy.ts"]}}'
- name: Upload screenshots
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots-mocked
path: cypress/screenshots