generated from muratkeremozcan/react-cypress-ts-vite-template
-
Notifications
You must be signed in to change notification settings - Fork 2
207 lines (187 loc) · 6.38 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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
name: unit-lint-typecheck-e2e-ct
on:
push:
workflow_dispatch:
concurrency:
group: ${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
install-dependencies:
name: Install Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
# Note: when wanting to cache Cypress as well as node_modules, use cypress-io/github-action
# with it, there is no need to setup node, and Cypress is cached.
# if it's a non-Cypress install, use bahmutov/npm-install
# - uses: actions/setup-node@v3
# with:
# cache: 'yarn'
# node-version: 16.10.0
# - uses: bahmutov/[email protected]
# with: {useRollingCache: true} # recommended for large projects
# env:
# CYPRESS_INSTALL_BINARY: 0 # no need to install the Cypress binary, we are already using the docker image in the e2e job
# Install NPM dependencies, cache node-modules and Cypress correctly
# https://github.com/cypress-io/github-action
- name: Install dependencies
uses: cypress-io/[email protected]
with:
runTests: false
unit-test:
needs: [install-dependencies]
name: Run Unit Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
# - uses: bahmutov/[email protected]
# with: {useRollingCache: true}
# env:
# CYPRESS_INSTALL_BINARY: 0
- name: Install dependencies
uses: cypress-io/[email protected]
with:
runTests: false
- name: unit-test
run: yarn test:coverage
# if you want to enable codecov
# - name: Upload artifacts
# uses: actions/[email protected]
# with:
# name: coverage
# path: coverage/
# retention-days: 1
# - name: ✅ Upload Jest coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# directory: coverage/
# flags: unit-test-coverage
# token: ${{ secrets.CODECOV_TOKEN }}
lint:
needs: install-dependencies
name: Run Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
# - uses: bahmutov/[email protected]
# with: {useRollingCache: true}
# env:
# CYPRESS_INSTALL_BINARY: 0
- name: Install dependencies
uses: cypress-io/[email protected]
with:
runTests: false
- name: lint
run: yarn lint
typecheck:
needs: install-dependencies
name: Run typecheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
# - uses: bahmutov/[email protected]
# with: {useRollingCache: true}
# env:
# CYPRESS_INSTALL_BINARY: 0
- name: Install dependencies
uses: cypress-io/[email protected]
with:
runTests: false
- name: typecheck
run: yarn typecheck
cypress-e2e-test:
# if you want to enable parallelization
# strategy:
# fail-fast: false
# matrix:
# machines: [1, 2]
needs: [install-dependencies]
runs-on: ubuntu-latest
# container: cypress/included:10.11.0 # no need when using cypress gha to install dependencies
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
# - uses: bahmutov/[email protected] # save time on dependencies
# with: {useRollingCache: true}
- name: Cypress e2e tests 🧪
uses: cypress-io/[email protected]
with:
# install: false # Cypress gha will take care of install instead of bahmutov/installs
start: yarn start
wait-on: 'http://localhost:3000'
browser: chrome
# if you want to enable parallelization
# record: true
# parallel: true
# group: e2e-tests
# tag: e2e-tests
env:
# if you want to enable parallelization
# CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# if you want to enable codecov
# - name: Upload artifacts (Coverage_step3)
# uses: actions/[email protected]
# with:
# name: coverage-cy-e2e
# path: coverage-cy/
# retention-days: 1
# - name: ✅ Upload e2e coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# directory: coverage-cy/
# flags: cypress-e2e-coverage
# token: ${{ secrets.CODECOV_TOKEN }}
cypress-ct-test:
# if you want to enable parallelization
# strategy:
# fail-fast: false
# matrix:
# machines: [1, 2, 3]
needs: [install-dependencies]
runs-on: ubuntu-latest
# container: cypress/included:10.11.0 # no need when using cypress gha to install dependencies
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
# - uses: bahmutov/[email protected] # save time on dependencies
# with: {useRollingCache: true}
- name: Cypress component tests 🧪
uses: cypress-io/[email protected]
with:
# we have already installed everything
# install: false # Cypress gha will take care of caching instead of bahmutov/installs
component: true
browser: chrome
# if you want to enable parallelization
# record: true
# parallel: true
# group: ct-tests
# tag: ct-tests
env:
# if you want to enable parallelization
# CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# if you want to enable codecov
# - name: Upload artifacts (Coverage_step3)
# uses: actions/[email protected]
# with:
# name: coverage-cy-ct
# path: coverage-cy/
# retention-days: 1
# - name: ✅ Upload CT coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# directory: coverage-cy/
# flags: cypress-ct-coverage
# token: ${{ secrets.CODECOV_TOKEN }}