forked from flyerman/lace
-
Notifications
You must be signed in to change notification settings - Fork 0
200 lines (195 loc) · 7.12 KB
/
e2e-tests-win.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
name: E2E Tests Win
on:
schedule:
- cron: '0 2 * * *'
push:
branches:
- 'release/**'
workflow_dispatch:
inputs:
tags:
description: 'Test scenario tags (will run all tests if empty)'
required: false
browser:
description: 'Browser to use'
required: true
default: 'edge'
type: choice
options:
- chrome
- edge
network:
type: choice
description: network to use
options:
- preprod
- mainnet
run-name: "E2E | os: Windows | browser: ${{ github.event.inputs.browser || 'chrome' }} | tags: ${{ github.event.inputs.tags || 'empty' }} | network: ${{ github.event.inputs.network }} | #${{ github.run_number }}"
env:
TAGS: ${{ github.event.inputs.tags || 'empty' }}
BROWSER: ${{ github.event.inputs.browser || 'edge' }}
NETWORK: ${{ github.event.inputs.network || 'preprod' }}
RUN: ${{ github.run_number }}
jobs:
build-extension-linux:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Decrypt test data
working-directory: ./packages/e2e-tests
run: ./decrypt_secret.sh
env:
WALLET_1_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }}
- name: Build dist version of Lace
uses: ./.github/shared/build
with:
LACE_EXTENSION_KEY: ${{ secrets.MANIFEST_PUBLIC_KEY }}
- name: Save Lace extension build
uses: actions/upload-artifact@v3
with:
name: lace-build
path: ./apps/browser-extension-wallet/dist
- name: Save Core build
uses: actions/upload-artifact@v3
with:
name: core-build
path: ./packages/core/dist
run-tests-windows:
needs: build-extension-linux
runs-on: windows-2022
defaults:
run:
shell: bash
steps:
- name: Set screen resolution
shell: pwsh
run: Set-DisplayResolution -Width 1920 -Height 1080 -Force
- name: Checkout repository
uses: actions/checkout@v3
- name: Decrypt test data
working-directory: ./packages/e2e-tests
run: ./decrypt_secret.sh
env:
WALLET_1_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }}
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Get built extension
uses: actions/download-artifact@v3
with:
name: lace-build
path: ./apps/browser-extension-wallet/dist
- name: Get Core build
uses: actions/download-artifact@v3
with:
name: core-build
path: ./packages/core/dist
- name: Node modules cache
uses: actions/cache@v3
with:
path: ./packages/e2e-tests/node_modules
key: ${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install dependencies
working-directory: ./packages/e2e-tests
run: yarn config set network-timeout 300000 && yarn install --check-cache --immutable --ignore-scripts
- name: Start Chrome driver
run: |
if [ ${BROWSER} == "chrome" ]; then
${CHROMEWEBDRIVER}\chromedriver.exe -port=4444 &
else
echo "Skipping start of ChromeDriver"
fi
- name: Start Edge driver
run: |
if [ ${BROWSER} == "edge" ]; then
${EDGEWEBDRIVER}\msedgedriver.exe -port=4444 &
else
echo "Skipping start of EdgeDriver"
fi
- name: Execute E2E tests
working-directory: ./packages/e2e-tests
id: e2e-tests
env:
WALLET_1_PASSWORD: ${{ secrets.WALLET_PASSWORD_TESTNET }}
TEST_DAPP_URL: ${{ secrets.TEST_DAPP_URL }}
ENV: ${{ env.NETWORK }}
run: |
if [ "$TAGS" == "empty" ]; then
TAGS_TO_RUN="";
else
TAGS_TO_RUN="--cucumberOpts.tagExpression='${{ env.TAGS }}'";
fi
yarn wdio run wdio.conf.${BROWSER}.ts $TAGS_TO_RUN
runCommand="yarn wdio run wdio.conf.${BROWSER}.ts ${TAGS_TO_RUN}"
eval "$runCommand";
- name: Create allure properties
if: always()
working-directory: ./packages/e2e-tests/reports/allure/results
run: |
pendingCount=`grep -r "@Pending" ../../../src/features | wc -l | xargs`
pending=`grep -r -h "@Pending" ../../../src/features -A 2 | grep -v -- "^--$" | sed "s/@Pending//g" | awk '{$1=$1};1' | sed "/^@/s/ /./g;/^#/s/ /./g" | xargs | sed "s/@[^ ]*/\n&/g" | sed "s/ /./"`
echo "
env=${NETWORK}
browser=${BROWSER}
tags=${TAGS}
platform=Windows
Pending.Count=${pendingCount}
@Pending.Scenarios=
${pending}
" > environment.properties
- name: Publish artifacts (logs, reports, screenshots)
uses: actions/upload-artifact@v3
if: always()
with:
name: test-artifacts
path: |
./packages/e2e-tests/screenshots
./packages/e2e-tests/logs
./packages/e2e-tests/reports
retention-days: 10
outputs:
job-status: ${{ job.status }}
publish-reports-linux:
if: always()
needs: run-tests-windows
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download reports
uses: actions/download-artifact@v3
with:
name: test-artifacts
path: ./packages/e2e-tests
- name: Publish allure report to S3
uses: andrcuns/allure-publish-action@v1.0.1
if: always()
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.E2E_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.E2E_AWS_SECRET_ACCESS_KEY }}
with:
storageType: s3
resultsGlob: './packages/e2e-tests/reports/allure/results/*'
bucket: lace-e2e-test-results
prefix: 'windows/${BROWSER}/${RUN}'
copyLatest: true
ignoreMissingResults: true
- name: Add link to summary
if: always()
run: |
echo "TEST RESULTS:"
echo "https://${{ secrets.E2E_REPORTS_USER }}:${{ secrets.E2E_REPORTS_PASSWORD }}@${{ secrets.E2E_REPORTS_URL }}/windows/${{ env.BROWSER }}/${{ env.RUN }}/index.html | tags: ${{ env.TAGS }} | browser: ${{ env.BROWSER }} | network: ${{ env.NETWORK }} | platform: windows" >> $GITHUB_STEP_SUMMARY
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2.2.0
if: always()
env:
SLACK_COLOR: ${{ needs.run-tests-windows.outputs.job-status }}
SLACK_ICON_EMOJI: ':lace:'
SLACK_MESSAGE: 'https://${{ secrets.E2E_REPORTS_USER }}:${{ secrets.E2E_REPORTS_PASSWORD }}@${{ secrets.E2E_REPORTS_URL }}/windows/${{ env.BROWSER }}/${{ env.RUN }}/index.html | tags: ${{ env.TAGS }} | browser: ${{ env.BROWSER }} | network: ${{ env.NETWORK }} | platform: windows'
SLACK_TITLE: 'Test automation results :rocket:'
SLACK_USERNAME: lace-qa-bot
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}