Skip to content

Commit 1811745

Browse files
Add e2e flakiness scheduled execution workflow
1 parent 383bbab commit 1811745

1 file changed

Lines changed: 96 additions & 0 deletions

File tree

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
name: E2E Flakiness Check
2+
3+
# Edit the value below to change the schedule (UTC) (Note: Germany is UTC+1).
4+
# Format: "minute hour day-of-month month day-of-week"
5+
x-cron-schedule: &weekly_schedule "30 2 * * 6"
6+
7+
on:
8+
schedule:
9+
- cron: *weekly_schedule
10+
workflow_dispatch:
11+
inputs:
12+
test_path:
13+
description: "Playwright test file or folder"
14+
required: false
15+
default: "src/test/playwright/e2e"
16+
runs:
17+
description: "Number of headless runs (headed runs are half)"
18+
required: false
19+
default: "10"
20+
configuration:
21+
description: "Docker compose configuration: multi-node | mysql-localci"
22+
required: false
23+
default: "multi-node"
24+
25+
env:
26+
CRON_SCHEDULE: *weekly_schedule
27+
DEFAULT_TEST_PATH: "src/test/playwright/e2e"
28+
DEFAULT_RUNS: "10"
29+
DEFAULT_CONFIGURATION: "multi-node"
30+
31+
jobs:
32+
run-flakiness:
33+
name: Run flakiness check
34+
runs-on: [self-hosted, e2e-test]
35+
environment: playwright-e2e-tests
36+
timeout-minutes: 180
37+
env:
38+
ARTEMIS_ADMIN_PASSWORD: ${{ secrets.ARTEMIS_ADMIN_PASSWORD }}
39+
ARTEMIS_ADMIN_USERNAME: ${{ secrets.ARTEMIS_ADMIN_USERNAME }}
40+
PLAYWRIGHT_CREATE_USERS: ${{ vars.PLAYWRIGHT_CREATE_USERS }}
41+
PLAYWRIGHT_PASSWORD_TEMPLATE: ${{ vars.PLAYWRIGHT_PASSWORD_TEMPLATE }}
42+
PLAYWRIGHT_USERNAME_TEMPLATE: ${{ vars.PLAYWRIGHT_USERNAME_TEMPLATE }}
43+
SLOW_TEST_TIMEOUT_SECONDS: ${{ vars.SLOW_TEST_TIMEOUT_SECONDS }}
44+
TEST_RETRIES: ${{ vars.TEST_RETRIES }}
45+
TEST_TIMEOUT_SECONDS: ${{ vars.TEST_TIMEOUT_SECONDS }}
46+
TEST_WORKER_PROCESSES: ${{ vars.TEST_WORKER_PROCESSES }}
47+
FAST_TEST_TIMEOUT_SECONDS: ${{ vars.FAST_TEST_TIMEOUT_SECONDS || 75 }}
48+
steps:
49+
- name: Git Checkout
50+
uses: actions/checkout@v6
51+
52+
- name: Resolve inputs
53+
shell: bash
54+
run: |
55+
TEST_PATH="${{ inputs.test_path || env.DEFAULT_TEST_PATH }}"
56+
RUNS="${{ inputs.runs || env.DEFAULT_RUNS }}"
57+
CONFIG="${{ inputs.configuration || env.DEFAULT_CONFIGURATION }}"
58+
59+
case "$CONFIG" in
60+
multi-node)
61+
COMPOSE_FILE="playwright-E2E-tests-multi-node.yml"
62+
;;
63+
mysql-localci)
64+
COMPOSE_FILE="playwright-E2E-tests-mysql-localci.yml"
65+
;;
66+
*)
67+
echo "::error::Unknown configuration: $CONFIG"
68+
exit 1
69+
;;
70+
esac
71+
72+
echo "FLAKINESS_TEST_PATH=$TEST_PATH" >> "$GITHUB_ENV"
73+
echo "FLAKINESS_RUNS=$RUNS" >> "$GITHUB_ENV"
74+
echo "COMPOSE_FILE=$COMPOSE_FILE" >> "$GITHUB_ENV"
75+
76+
- name: Set Docker Tag
77+
run: echo "ARTEMIS_DOCKER_TAG=${{ vars.ARTEMIS_DOCKER_TAG || 'latest' }}" >> "$GITHUB_ENV"
78+
79+
- name: Start E2E services
80+
run: |
81+
docker compose -f "docker/$COMPOSE_FILE" pull --quiet --policy always
82+
docker compose -f "docker/$COMPOSE_FILE" up -d nginx
83+
84+
- name: Run flakiness script in Playwright container
85+
run: |
86+
docker compose -f "docker/$COMPOSE_FILE" run --rm artemis-playwright bash -lc "
87+
cd /app/artemis/src/test/playwright &&
88+
chmod 777 /root &&
89+
npm ci &&
90+
npm run playwright:setup &&
91+
bash /app/artemis/supporting_scripts/playwright/checkFlakiness.sh /app/artemis/${FLAKINESS_TEST_PATH} ${FLAKINESS_RUNS}
92+
"
93+
94+
- name: Stop E2E services
95+
if: always()
96+
run: docker compose -f "docker/$COMPOSE_FILE" down -v

0 commit comments

Comments
 (0)