forked from cypress-io/cypress-realworld-app
-
Notifications
You must be signed in to change notification settings - Fork 3
138 lines (122 loc) · 4 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
name: E2E Test
on:
push:
workflow_dispatch:
inputs:
chromium-runtime:
type: string
description: Custom Chromium Runtime
firefox-runtime:
type: string
description: Custom Firefox Runtime
env:
RECORD_REPLAY_FIREFOX_DOWNLOAD_FILE: ${{ github.event.inputs.firefox-runtime }}
RECORD_REPLAY_CHROMIUM_DOWNLOAD_FILE: ${{ github.event.inputs.chromium-runtime }}
RECORD_REPLAY_TEST_ENVIRONMENT: 1
DEBUG: cypress:launcher:browsers*
RECORD_REPLAY_VERBOSE: 1
jobs:
install:
runs-on: ubuntu-latest
timeout-minutes: 90
# container:
# image: cypress/browsers:node16.13.0-chrome95-ff94
# options: --user 1001
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- name: Cypress install
uses: cypress-io/github-action@v4
with:
runTests: false
# report machine parameters
- run: yarn cypress info
- run: node --version
- run: node -p 'os.cpus()'
- run: yarn types
- run: yarn lint
- run: yarn test:unit:ci
- run: yarn build:ci
- name: Save build folder
uses: actions/upload-artifact@v3
with:
name: build
if-no-files-found: error
path: build
record:
name: UI tests (record)
runs-on: ubuntu-latest
container:
image: cypress/browsers:node16.13.0-chrome95-ff94
options: --user 1001
needs: install
outputs:
recordDuration: ${{steps.end.outputs.recordDuration}}
uploadDuration: ${{steps.end.outputs.uploadDuration}}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download the build folders
uses: actions/download-artifact@v3
with:
name: build
path: build
- name: Cypress info
run: npx cypress info
- name: Node info
run: node -v
- name: __e Dir
run: ls /__e
- name: "UI Tests - Chrome"
uses: cypress-io/github-action@v4
with:
start: yarn start:ci
wait-on: "http://localhost:3000"
wait-on-timeout: 120
browser: replay-chromium
spec: cypress/tests/ui/*
config-file: cypress.config.js
# env:
# CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
# CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
# # Recommended: pass the GitHub token lets this action correctly
# # determine the unique run id necessary to re-run the checks
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# DEBUG: "cypress:server:args"
env:
# RECORD_REPLAY_JS_ASSERTS: 1
RECORD_REPLAY_TEST_METRICS: 1
RECORD_REPLAY_TEST_ENVIRONMENT: "1"
RECORD_REPLAY_WEBHOOK_URL: ${{ secrets.RECORD_REPLAY_WEBHOOK_URL }}
RECORD_ALL_CONTENT: 1
RECORD_REPLAY_METADATA_FILE: /tmp/replay-metadata
# # These two are here to help with measuring the true overhead by disabling diagnostics
# RECORD_REPLAY_DISABLE_ASSERTS: 1
# RECORD_REPLAY_DISABLE_SOURCEMAP_COLLECTION: 1
- name: Parse test run duration
id: set_var
if: always()
run: |
content=`cat duration.json`
echo "::set-output name=duration::$content"
- name: Set upload start
if: always()
id: uploadStart
run: echo "time=`date +%s`" >> $GITHUB_OUTPUT
- name: Upload replays
if: ${{ always() }}
uses: replayio/[email protected]
with:
public: true
api-key: rwk_wayprCcrJi5pM4VNN0kWHkc1AUWfqFyS1musJwdqtC4
env:
DEBUG: replay:cli*
- name: Set duration in output
if: always()
id: end
run: |
echo "recordDuration=${{fromJson(steps.set_var.outputs.duration)}}" >> $GITHUB_OUTPUT
echo "uploadDuration=$(((`date +%s` - ${{ steps.uploadStart.outputs.time }}) * 1000))" >> $GITHUB_OUTPUT