-
Notifications
You must be signed in to change notification settings - Fork 3
140 lines (124 loc) · 4.41 KB
/
run_e2e_tests.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
name: Run e2e autotests
env:
HUSKY: 0
run-name: Run e2e autotests for ${{inputs.app || 'all'}} app(s) on ${{inputs.env || 'prod'}} env
on:
workflow_dispatch:
inputs:
env:
type: choice
required: true
options:
- dev
- test
- prod
app:
type: choice
required: true
default: all
options:
- atlas
- disaster-ninja
- smart-city
- oam
- all
schedule:
- cron: '00 */2 * * 1-5'
jobs:
run_tests:
name: Run e2e tests
timeout-minutes: 60
runs-on: ubuntu-latest
env:
ENVIRONMENT: ${{ github.event.inputs.env || 'prod'}}
APP_NAME: ${{ github.event.inputs.app || 'all' }}
TEST_EMAIL: ${{ secrets.TEST_EMAIL }}
TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
DEV_EMAIL: ${{ secrets.DEV_EMAIL }}
DEV_PASSWORD: ${{ secrets.DEV_PASSWORD }}
PROD_EMAIL: ${{ secrets.PROD_EMAIL }}
PROD_PASSWORD: ${{ secrets.PROD_PASSWORD }}
TEST_EMAIL_PRO: ${{ secrets.TEST_AUTOTEST_PRO_EMAIL }}
TEST_PASSWORD_PRO: ${{ secrets.TEST_AUTOTEST_PRO_PASSWORD }}
DEV_EMAIL_PRO: ${{ secrets.DEV_AUTOTEST_PRO_EMAIL }}
DEV_PASSWORD_PRO: ${{ secrets.DEV_AUTOTEST_PRO_PASSWORD }}
PROD_EMAIL_PRO: ${{ secrets.PROD_AUTOTEST_PRO_EMAIL }}
PROD_PASSWORD_PRO: ${{ secrets.PROD_AUTOTEST_PRO_PASSWORD}}
TEST_KEYCLOAK_ADMIN_USER: ${{ secrets.TEST_KEYCLOAK_ADMIN_USER }}
TEST_KEYCLOAK_ADMIN_PASSWORD: ${{ secrets.TEST_KEYCLOAK_ADMIN_PASSWORD }}
DEV_KEYCLOAK_ADMIN_USER: ${{ secrets.DEV_KEYCLOAK_ADMIN_USER }}
DEV_KEYCLOAK_ADMIN_PASSWORD: ${{ secrets.DEV_KEYCLOAK_ADMIN_PASSWORD }}
SLACK_BOT_USER_OAUTH_TOKEN: ${{secrets.PLAYWRIGHT_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '21'
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Create .env file
shell: bash
run: |
ENV_PREFIX=$(echo "$ENVIRONMENT" | tr '[:lower:]' '[:upper:]') # Convert to uppercase
EMAIL_VAR_NAME="${ENV_PREFIX}_EMAIL"
PASSWORD_VAR_NAME="${ENV_PREFIX}_PASSWORD"
EMAIL_PRO_VAR_NAME="${ENV_PREFIX}_EMAIL_PRO"
PASSWORD_PRO_VAR_NAME="${ENV_PREFIX}_PASSWORD_PRO"
ADMIN_KEYCLOAK_VAR_NAME="${ENV_PREFIX}_KEYCLOAK_ADMIN_USER"
ADMIN_KEYCLOAK_PASSWORD_VAR_NAME="${ENV_PREFIX}_KEYCLOAK_ADMIN_PASSWORD"
EMAIL="${!EMAIL_VAR_NAME}"
PASSWORD="${!PASSWORD_VAR_NAME}"
EMAIL_PRO="${!EMAIL_PRO_VAR_NAME}"
PASSWORD_PRO="${!PASSWORD_PRO_VAR_NAME}"
ADMIN_KEYCLOAK="${!ADMIN_KEYCLOAK_VAR_NAME}"
ADMIN_KEYCLOAK_PASSWORD="${!ADMIN_KEYCLOAK_PASSWORD_VAR_NAME}"
rm -rf .env.playwright.production
cat <<EOF >> .env.playwright.production
EMAIL=$EMAIL
PASSWORD=$PASSWORD
EMAIL_PRO=$EMAIL_PRO
PASSWORD_PRO=$PASSWORD_PRO
ADMIN_KEYCLOAK=$ADMIN_KEYCLOAK
ADMIN_KEYCLOAK_PASSWORD=$ADMIN_KEYCLOAK_PASSWORD
SLACK_BOT_USER_OAUTH_TOKEN=${SLACK_BOT_USER_OAUTH_TOKEN}
EOF
- name: Cache node modules
id: cache-npm
uses: actions/cache@v4
env:
cache-name: playwright-cache
with:
path: |
~/.npm
~/.cache/ms-playwright/
key: ${{ runner.os }}-${{ env.cache-name }}
restore-keys: |
${{ runner.os }}-${{ env.cache-name }}
${{ runner.os }}-
- name: Update playwright and install dependencies
shell: bash
run: |
pnpm add -g playwright@latest
pnpm add -D @playwright/test@latest
npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test --trace on
- name: Upload report to surge.sh
if: ${{ !cancelled() }}
uses: dswistowski/surge-sh-action@v1
with:
domain: 'konturtestplaywright.surge.sh'
project: 'playwright-report'
login: ${{secrets.SURGE_EMAIL}}
token: ${{secrets.SURGE_TOKEN}}
- name: Upload report to workflow artifacts
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report/
retention-days: 30