-
Notifications
You must be signed in to change notification settings - Fork 0
165 lines (147 loc) · 4.92 KB
/
main.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
name: Main
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
container:
image: cypress/browsers:node-18.16.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1
options: --user 1001
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache node_modules
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
- name: Cypress install
uses: cypress-io/github-action@v6
with:
runTests: false
- name: Write Firebase config
run: |
echo ${{ secrets.FIREBASE_CONFIG }} | base64 -d > firebase.config.json
- run: npx cypress info
- run: node --version
- run: node -p 'os.cpus()'
- run: npm run lint
- run: npm run test:ci
- run: npm run build
- name: Save build folder
uses: actions/upload-artifact@v4
with:
name: dist
if-no-files-found: error
path: dist
e2e-chrome-tests:
timeout-minutes: 15
runs-on: ubuntu-latest
container:
image: cypress/browsers:node-18.16.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1
options: --user 1001
needs: build
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
matrix:
containers: [ 1, 2 ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download the build folders
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Node info
run: node -v
- name: __e Dir
run: ls /__e
- name: "E2E Tests - Chrome"
uses: cypress-io/github-action@v6
with:
build: npx cypress info
start: npm run preview
wait-on: "http://localhost:8080"
wait-on-timeout: 120
browser: chrome
record: true
parallel: true
group: "E2E - Chrome"
spec: cypress/e2e/*
config-file: cypress.config.ts
config: "{\"e2e\":{\"baseUrl\":\"http://localhost:8080\"}}"
env:
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }}
TEST_USER_USERNAME: ${{ secrets.TEST_USER_USERNAME_1 }}
TEST_USER_PASSWORD: ${{ secrets.TEST_USER_PASSWORD_1 }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
e2e-chrome-mobile-tests:
timeout-minutes: 15
runs-on: ubuntu-latest
container:
image: cypress/browsers:node-18.16.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1
options: --user 1001
needs: build
strategy:
fail-fast: false # https://github.com/cypress-io/github-action/issues/48
matrix:
containers: [ 1, 2 ]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download the build folders
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Node info
run: node -v
- name: __e Dir
run: ls /__e
- name: "E2E Tests - Chrome - Mobile"
uses: cypress-io/github-action@v6
with:
build: npx cypress info
start: npm run preview
wait-on: "http://localhost:8080"
wait-on-timeout: 120
browser: chrome
record: true
parallel: true
group: "E2E - Chrome - Mobile"
spec: cypress/e2e/*
config-file: cypress.config.ts
config: "{\"e2e\":{\"baseUrl\":\"http://localhost:8080\",\"viewportWidth\":400,\"viewportHeight\":660}}"
env:
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }}
TEST_USER_USERNAME: ${{ secrets.TEST_USER_USERNAME_2 }}
TEST_USER_PASSWORD: ${{ secrets.TEST_USER_PASSWORD_2 }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
deploy_live_website:
name: Deploy Prod
needs: [ build, e2e-chrome-tests, e2e-chrome-mobile-tests ]
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Download artifact
uses: actions/download-artifact@main
with:
name: dist
path: dist
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: "${{ secrets.GITHUB_TOKEN }}"
firebaseServiceAccount: "${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }}"
projectId: "${{ secrets.GOOGLE_PROJECT_ID }}"
channelId: live