You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
3.7 KiB
145 lines
3.7 KiB
name: E2E Nightly
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 2 * * *"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
e2e:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
cache: npm
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Install Playwright browsers
|
|
run: npx playwright install chromium --with-deps
|
|
|
|
- name: E2E tests
|
|
run: npm run test:e2e
|
|
env:
|
|
CI: true
|
|
JWT_SECRET: ci-test-jwt-secret-32chars-min!!
|
|
HOST_SERVICE_TOKENS: '{"demo-host-token":{"customerId":"CUST_001","permissions":["pricing:markup:write"]}}'
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: playwright-report
|
|
path: playwright-report/
|
|
retention-days: 7
|
|
|
|
go-no-go:
|
|
runs-on: ubuntu-latest
|
|
needs: e2e
|
|
if: always()
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
cache: npm
|
|
|
|
- run: npm ci
|
|
|
|
- name: Go-No-Go check (mock)
|
|
run: npm run go-no-go -- --mock
|
|
env:
|
|
RPA_MOCK_MODE: "true"
|
|
|
|
probe:
|
|
runs-on: ubuntu-latest
|
|
needs: e2e
|
|
if: always()
|
|
timeout-minutes: 45
|
|
continue-on-error: true
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
cache: npm
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Install Playwright browsers (probe)
|
|
run: npx playwright install chromium --with-deps
|
|
|
|
- name: RPA probe 3/3 (optional)
|
|
run: bash scripts/ci/run-probe-nightly.sh
|
|
env:
|
|
MOTHERSHIP_USERNAME: ${{ secrets.MOTHERSHIP_USERNAME }}
|
|
MOTHERSHIP_PASSWORD: ${{ secrets.MOTHERSHIP_PASSWORD }}
|
|
MOTHERSHIP_QUOTE_URLS: ${{ secrets.MOTHERSHIP_QUOTE_URLS }}
|
|
PROBE_NIGHTLY_LOG: probe-nightly.log
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: probe-nightly-log
|
|
path: probe-nightly.log
|
|
retention-days: 7
|
|
if-no-files-found: ignore
|
|
|
|
load:
|
|
runs-on: ubuntu-latest
|
|
needs: e2e
|
|
if: always()
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install k6
|
|
run: |
|
|
sudo gpg -k
|
|
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
|
|
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
|
|
sudo apt-get update
|
|
sudo apt-get install k6
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
cache: npm
|
|
|
|
- run: npm ci
|
|
|
|
- name: Start app (mock mode)
|
|
run: |
|
|
npm run build
|
|
npm run start &
|
|
sleep 15
|
|
env:
|
|
JWT_SECRET: ci-test-jwt-secret-32chars-min!!
|
|
HOST_SERVICE_TOKENS: '{"demo-host-token":{"customerId":"CUST_001","permissions":["pricing:markup:write"]}}'
|
|
RPA_MOCK_MODE: "true"
|
|
DATABASE_URL: mysql://root:root@127.0.0.1:3306/chajia
|
|
REDIS_URL: redis://127.0.0.1:6379
|
|
|
|
- name: k6 rate-limit (smoke)
|
|
continue-on-error: true
|
|
run: k6 run --vus 1 --iterations 5 load-tests/rate-limit.js
|
|
env:
|
|
BASE_URL: http://localhost:3000
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: k6-report
|
|
path: load-tests/
|
|
retention-days: 7
|