Skip to content

Commit 3291bf6

Browse files
LukasHirtmklos-kw
authored andcommitted
ci: [OCISDEV-734] run playwright E2E tests (#13654)
--------- Co-authored-by: Michal Klos <michal.klos@kiteworks.com>
1 parent d8d25c1 commit 3291bf6

10 files changed

Lines changed: 913 additions & 24 deletions

File tree

.github/workflows/test.yml

Lines changed: 159 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- master
77
- stable-*
88
tags:
9-
- "*"
9+
- '*'
1010
pull_request:
1111

1212
jobs:
@@ -15,8 +15,6 @@ jobs:
1515
steps:
1616
- name: Checkout code
1717
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
18-
with:
19-
fetch-depth: 0
2018

2119
- name: Setup pnpm
2220
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
@@ -26,8 +24,8 @@ jobs:
2624
- name: Setup Node.js
2725
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
2826
with:
29-
node-version: 24.14.1
30-
cache: "pnpm"
27+
node-version: 24.15.0
28+
cache: pnpm
3129

3230
- name: Install dependencies
3331
run: pnpm install
@@ -61,3 +59,159 @@ jobs:
6159

6260
- name: Build
6361
run: make dist
62+
63+
- name: Store build artifact
64+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
65+
with:
66+
name: web-dist
67+
path: dist
68+
if-no-files-found: error
69+
70+
e2e-playwright:
71+
needs: build
72+
runs-on: ubuntu-latest
73+
name: e2e-tests-${{ matrix.suites.suite }}
74+
strategy:
75+
fail-fast: false
76+
matrix:
77+
suites:
78+
- suite: part-1
79+
test_suites: admin-settings,spaces
80+
- suite: part-2
81+
test_suites: navigation,user-settings,app-store,file-action
82+
- suite: part-3
83+
test_suites: shares,search,runtime
84+
tika: true
85+
- suite: app-provider
86+
test_suites: app-provider
87+
collaboration: true
88+
- suite: ocm
89+
test_suites: ocm
90+
federated: true
91+
- suite: oidc
92+
feature_files: specs/oidc/refreshToken.spec.ts
93+
oidc: true
94+
- suite: oidc-iframe
95+
feature_files: specs/oidc/iframeTokenRenewal.spec.ts
96+
oidc_iframe: true
97+
- suite: smoke
98+
test_suites: smoke
99+
- suite: keycloak
100+
feature_files: specs/admin-settings/spaces.spec.ts
101+
keycloak: true
102+
env:
103+
BASE_URL_OCIS: localhost:9200
104+
HEADLESS: true
105+
RETRY: 1
106+
BROWSER: chromium
107+
REPORT_TRACING: false
108+
FAIL_ON_UNCAUGHT_CONSOLE_ERR: true
109+
SKIP_A11Y_TESTS: true
110+
TEST_TYPE: playwright
111+
FEDERATED_BASE_URL_OCIS: localhost:10200
112+
steps:
113+
- name: Checkout code
114+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
115+
116+
- name: Setup pnpm
117+
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 #v5.0.0
118+
with:
119+
version: 10.29.2
120+
121+
- name: Setup Node.js
122+
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
123+
with:
124+
node-version: 24.15.0
125+
cache: pnpm
126+
127+
- name: Setup Go
128+
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
129+
with:
130+
go-version: 1.25.7
131+
cache: true
132+
133+
- name: Install dependencies
134+
run: pnpm install
135+
136+
- name: Download build artifact
137+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
138+
with:
139+
name: web-dist
140+
path: dist
141+
142+
- name: Setup services
143+
run: |
144+
flags=""
145+
if [[ "${{ matrix.suites.tika }}" == "true" ]]; then
146+
flags="$flags --tika"
147+
fi
148+
if [[ "${{ matrix.suites.federated }}" == "true" ]]; then
149+
flags="$flags --federation"
150+
fi
151+
if [[ "${{ matrix.suites.collaboration }}" == "true" ]]; then
152+
flags="$flags --collaboration"
153+
fi
154+
if [[ "${{ matrix.suites.oidc }}" == "true" ]]; then
155+
flags="$flags --oidc"
156+
fi
157+
if [[ "${{ matrix.suites.oidc_iframe }}" == "true" ]]; then
158+
flags="$flags --oidc-iframe"
159+
fi
160+
if [[ "${{ matrix.suites.keycloak }}" == "true" ]]; then
161+
flags="$flags --keycloak"
162+
fi
163+
cd "${{ github.workspace }}/tests/actions"
164+
bash setup-services.sh $flags
165+
166+
- name: Cache Playwright browsers
167+
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
168+
id: playwright-cache
169+
with:
170+
path: ~/.cache/ms-playwright
171+
key: playwright-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
172+
173+
- name: Install Playwright browsers
174+
run: pnpm exec playwright install --with-deps chromium
175+
176+
- name: Run E2E tests
177+
env:
178+
FEATURE_FILES: ${{ matrix.suites.feature_files || '' }}
179+
TEST_SUITES: ${{ matrix.suites.test_suites || '' }}
180+
KEYCLOAK: ${{ matrix.suites.keycloak || '' }}
181+
KEYCLOAK_HOST: ${{ matrix.suites.keycloak && 'localhost:8443' || '' }}
182+
run: cd ${{ github.workspace }}/tests/e2e && bash run-e2e.sh --type playwright
183+
184+
- name: Dump oCIS logs on failure
185+
if: failure()
186+
run: |
187+
echo "=== oCIS LOCAL: relevant log lines ==="
188+
grep -i "ocm\|provider\|invite\|federation\|error\|ERR\|permissions\|drives.*items\|Federated" /tmp/ocis-ocis.log 2>/dev/null | tail -300 || echo "(no log file)"
189+
echo "=== oCIS FEDERATED: relevant log lines ==="
190+
grep -i "ocm\|provider\|invite\|federation\|error\|ERR\|permissions\|drives.*items\|Federated" /tmp/ocis-ocis-federated.log 2>/dev/null | tail -300 || echo "(no log file)"
191+
192+
- name: Upload tracing result
193+
if: failure()
194+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
195+
with:
196+
name: playwright-traces-${{ strategy.job-index }}-${{ github.run_attempt }}
197+
path: ${{ github.workspace }}/reports/e2e
198+
retention-days: 7
199+
200+
- name: Upload a11y result
201+
if: ${{ !cancelled() }}
202+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
203+
with:
204+
name: playwright-a11y-result-${{ strategy.job-index }}-${{ github.run_attempt }}
205+
path: ${{ github.workspace }}/reports/e2e/a11y-report.json
206+
retention-days: 7
207+
208+
check-tests-passed:
209+
needs: [e2e-playwright]
210+
runs-on: ubuntu-latest
211+
if: always()
212+
steps:
213+
- name: Check all test jobs passed
214+
run: |
215+
if [[ "${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}" == "true" ]]; then
216+
exit 1
217+
fi

tests/actions/.env.ocis

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
WEB_UI_CONFIG_FILE=$GITHUB_WORKSPACE/tests/drone/config-ocis.json
2+
WEB_ASSET_CORE_PATH=$GITHUB_WORKSPACE/dist
3+
OCM_OCM_PROVIDER_AUTHORIZER_PROVIDERS_FILE=$GITHUB_WORKSPACE/tests/drone/providers.json
4+
OCM_OCM_INVITE_MANAGER_INSECURE=true
5+
OCM_OCM_SHARE_PROVIDER_INSECURE=true
6+
OCM_OCM_STORAGE_PROVIDER_INSECURE=true
7+
OCIS_BASE_DATA_PATH=${HOME}/.ocis-9200
8+
OCIS_CONFIG_DIR=${HOME}/.ocis-9200/config
9+
OCIS_EVENTS_ENDPOINT=127.0.0.1:9233
10+
OCIS_LDAP_URI=ldaps://localhost:9235
11+
OCIS_RUNTIME_PORT=9250
12+
OCIS_URL=https://localhost:9200
13+
OCIS_ADD_RUN_SERVICES=ocm
14+
OCIS_ENABLE_OCM=true
15+
GRAPH_INCLUDE_OCM_SHAREES=true
16+
APP_PROVIDER_DEBUG_ADDR=127.0.0.1:9165
17+
APP_PROVIDER_GRPC_ADDR=127.0.0.1:9164
18+
APP_REGISTRY_DEBUG_ADDR=127.0.0.1:9243
19+
APP_REGISTRY_GRPC_ADDR=127.0.0.1:9242
20+
AUTH_BASIC_DEBUG_ADDR=127.0.0.1:9147
21+
AUTH_BASIC_GRPC_ADDR=127.0.0.1:9146
22+
AUTH_MACHINE_DEBUG_ADDR=127.0.0.1:9167
23+
AUTH_MACHINE_GRPC_ADDR=127.0.0.1:9166
24+
AUTH_SERVICE_DEBUG_ADDR=127.0.0.1:9169
25+
AUTH_SERVICE_GRPC_ADDR=127.0.0.1:9199
26+
CLIENTLOG_DEBUG_ADDR=127.0.0.1:9260
27+
ACTIVITYLOG_HTTP_ADDR=127.0.0.1:9195
28+
ACTIVITYLOG_DEBUG_ADDR=127.0.0.1:9261
29+
EVENTHISTORY_GRPC_ADDR=127.0.0.1:9274
30+
EVENTHISTORY_DEBUG_ADDR=127.0.0.1:9270
31+
FRONTEND_DEBUG_ADDR=127.0.0.1:9141
32+
FRONTEND_HTTP_ADDR=127.0.0.1:9140
33+
GATEWAY_DEBUG_ADDR=127.0.0.1:9143
34+
GATEWAY_GRPC_ADDR=127.0.0.1:9142
35+
GRAPH_DEBUG_ADDR=127.0.0.1:9124
36+
GRAPH_HTTP_ADDR=127.0.0.1:9120
37+
GROUPS_DEBUG_ADDR=127.0.0.1:9161
38+
GROUPS_GRPC_ADDR=127.0.0.1:9160
39+
IDM_DEBUG_ADDR=127.0.0.1:9239
40+
IDM_LDAPS_ADDR=127.0.0.1:9235
41+
IDP_DEBUG_ADDR=127.0.0.1:9134
42+
IDP_HTTP_ADDR=127.0.0.1:9130
43+
NATS_DEBUG_ADDR=127.0.0.1:9234
44+
NATS_NATS_HOST=0.0.0.0
45+
NATS_NATS_PORT=9233
46+
OCDAV_HTTP_ADDR=127.0.0.1:9350
47+
OCDAV_DEBUG_ADDR=127.0.0.1:9163
48+
OCM_DEBUG_ADDR=127.0.0.1:9281
49+
OCM_HTTP_ADDR=127.0.0.1:9280
50+
OCM_GRPC_ADDR=127.0.0.1:9282
51+
OCM_OCM_STORAGE_DATA_SERVER_URL=http://localhost:9280/data
52+
OCS_DEBUG_ADDR=127.0.0.1:9114
53+
OCS_HTTP_ADDR=127.0.0.1:9110
54+
POSTPROCESSING_DEBUG_ADDR=127.0.0.1:9255
55+
POSTPROCESSING_SERVICE_DEBUG_ADDR=127.0.0.1:9255
56+
PROXY_DEBUG_ADDR=127.0.0.1:9205
57+
PROXY_HTTP_ADDR=127.0.0.1:9200
58+
PROXY_CSP_CONFIG_FILE_LOCATION=$GITHUB_WORKSPACE/tests/drone/csp.yaml
59+
SEARCH_DEBUG_ADDR=127.0.0.1:9224
60+
SEARCH_GRPC_ADDR=127.0.0.1:9220
61+
SETTINGS_DEBUG_ADDR=127.0.0.1:9189
62+
SETTINGS_GRPC_ADDR=127.0.0.1:9185
63+
SETTINGS_HTTP_ADDR=127.0.0.1:9186
64+
SHARING_DEBUG_ADDR=127.0.0.1:9151
65+
SHARING_GRPC_ADDR=127.0.0.1:9150
66+
SSE_DEBUG_ADDR=127.0.0.1:9135
67+
SSE_HTTP_ADDR=127.0.0.1:9132
68+
STORAGE_PUBLICLINK_DEBUG_ADDR=127.0.0.1:9179
69+
STORAGE_PUBLICLINK_GRPC_ADDR=127.0.0.1:9178
70+
STORAGE_SHARES_DEBUG_ADDR=127.0.0.1:9156
71+
STORAGE_SHARES_GRPC_ADDR=127.0.0.1:9154
72+
STORAGE_SYSTEM_DATA_SERVER_URL=http://localhost:9216/data
73+
STORAGE_SYSTEM_DEBUG_ADDR=127.0.0.1:9217
74+
STORAGE_SYSTEM_GRPC_ADDR=127.0.0.1:9215
75+
STORAGE_SYSTEM_HTTP_ADDR=127.0.0.1:9216
76+
STORAGE_USERS_DEBUG_ADDR=127.0.0.1:9159
77+
STORAGE_USERS_GRPC_ADDR=127.0.0.1:9157
78+
STORAGE_USERS_HTTP_ADDR=127.0.0.1:9158
79+
STORAGE_USERS_DATA_SERVER_URL=http://localhost:9158/data
80+
STORE_DEBUG_ADDR=127.0.0.1:9464
81+
STORE_GRPC_ADDR=127.0.0.1:9460
82+
THUMBNAILS_DEBUG_ADDR=127.0.0.1:9194
83+
THUMBNAILS_GRPC_ADDR=127.0.0.1:9191
84+
THUMBNAILS_HTTP_ADDR=127.0.0.1:9190
85+
THUMBNAILS_DATA_ENDPOINT=http://127.0.0.1:9190/thumbnails/data
86+
USERLOG_HTTP_ADDR=127.0.0.1:9211
87+
USERLOG_DEBUG_ADDR=127.0.0.1:9210
88+
USERS_DEBUG_ADDR=127.0.0.1:9145
89+
USERS_GRPC_ADDR=127.0.0.1:9144
90+
WEB_DEBUG_ADDR=localhost:9104
91+
WEB_HTTP_ADDR=localhost:9100
92+
WEBDAV_DEBUG_ADDR=127.0.0.1:9119
93+
WEBDAV_HTTP_ADDR=127.0.0.1:9115
94+
NOTIFICATIONS_DEBUG_ADDR=127.0.0.1:9174
95+
WEBFINGER_DEBUG_ADDR=127.0.0.1:9279
96+
WEBFINGER_HTTP_ADDR=127.0.0.1:9275
97+
OCIS_SERVICE_ACCOUNT_ID=service-account-id
98+
OCIS_SERVICE_ACCOUNT_SECRET=service-account-secret
99+
TLS_INSECURE=true
100+
OCIS_INSECURE=true
101+
LDAP_GROUP_SUBSCRIPTION_FILTER_TYPE=any
102+
LDAP_USER_SUBSCRIPTION_FILTER_TYPE=any
103+
IDP_ACCESS_TOKEN_EXPIRATION=9000
104+
GATEWAY_STORAGE_USERS_MOUNT_ID=storage-users-1
105+
STORAGE_USERS_MOUNT_ID=storage-users-1
106+
MICRO_REGISTRY=memory
107+
SHARING_PUBLIC_DRIVER=jsoncs3
108+
OCIS_LOG_LEVEL=info
109+
OCIS_LOG_PRETTY=true
110+
OCIS_LOG_COLOR=true
111+
PROXY_ENABLE_BASIC_AUTH=true
112+
FRONTEND_SEARCH_MIN_LENGTH=2
113+
FRONTEND_CONFIGURABLE_NOTIFICATIONS=true
114+
GRAPH_AVAILABLE_ROLES=b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5,a8d5fe5e-96e3-418d-825b-534dbdf22b99,fb6c3e19-e378-47e5-b277-9732f9de6e21,58c63c02-1d89-4572-916a-870abc5a1b7d,2d00ce52-1fc2-4dbc-8b95-a73b73395f5a,1c996275-f1c9-4e71-abdf-a42f6495e960,312c0871-5ef7-4b3a-85b6-0e4074c64049,aa97fe03-7980-45ac-9e50-b325749fd7e6,63e64e19-8d43-42ec-a738-2b6af2610efa
115+
COLLABORATION_WOPIAPP_SECRET=some-wopi-secret
116+
IDM_CREATE_DEMO_USERS=true
117+
OCIS_ADMIN_USER_ID=some-admin-user-id-0000-000000000000
118+
IDM_ADMIN_PASSWORD=admin
119+
OCIS_SYSTEM_USER_ID=some-system-user-id-000-000000000000
120+
OCIS_SYSTEM_USER_API_KEY=some-system-user-machine-auth-api-key
121+
OCIS_JWT_SECRET=some-ocis-jwt-secret
122+
OCIS_MACHINE_AUTH_API_KEY=some-ocis-machine-auth-api-key
123+
OCIS_TRANSFER_SECRET=some-ocis-transfer-secret
124+
IDM_SVC_PASSWORD=some-ldap-idm-password
125+
GRAPH_LDAP_BIND_PASSWORD=some-ldap-idm-password
126+
IDM_REVASVC_PASSWORD=some-ldap-reva-password
127+
GROUPS_LDAP_BIND_PASSWORD=some-ldap-reva-password
128+
USERS_LDAP_BIND_PASSWORD=some-ldap-reva-password
129+
AUTH_BASIC_LDAP_BIND_PASSWORD=some-ldap-reva-password
130+
IDM_IDPSVC_PASSWORD=some-ldap-idp-password
131+
IDP_LDAP_BIND_PASSWORD=some-ldap-idp-password
132+
GRAPH_APPLICATION_ID=application-1

0 commit comments

Comments
 (0)