Skip to content

Report intermittent E2E Tests #767

Report intermittent E2E Tests

Report intermittent E2E Tests #767

name: Report intermittent E2E Tests
on:
schedule:
- cron: '42 04 * * *'
jobs:
backend-build:
name: Build backend 🏗️
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Build backend
run: ./gradlew bootJar
- name: Tar App build
run: tar -czf ~/backend-app.tgz ./backend/app/build
- name: Tar Data build
run: tar -czf ~/backend-data.tgz ./backend/data/build
- name: Tar Testing build
run: tar -czf ~/backend-testing.tgz ./backend/testing/build
- uses: actions/upload-artifact@v3
if: always()
with:
name: backend
path: |
~/backend-app.tgz
backend-test:
name: BT ‍🔎
needs: [backend-build]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
command:
- run: "server-app:runContextRecreatingTests"
clean: "server-app:cleanRunContextRecreatingTests"
- run: "server-app:runStandardTests"
clean: "server-app:cleanRunStandardTests"
- run: "server-app:runWebsocketTests"
clean: "server-app:cleanRunWebsocketTests"
- run: "ee-test:test"
clean: "ee-test:cleanTest"
- run: "data:test"
clean: "data:cleanTest"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Download backend build result
uses: actions/download-artifact@v3
with:
name: backend
path: ~/
- name: Untar it
run: |
tar -xzf ~/backend-app.tgz ./backend/app/build
tar -xzf ~/backend-data.tgz ./backend/data/build
tar -xzf ~/backend-testing.tgz ./backend/testing/build
tar -xzf ~/backend-development.tgz ./backend/development/build
- name: Run backend tests
run: |
./gradlew ${{ matrix.command.run }};
./gradlew ${{ matrix.command.clean }};
./gradlew ${{ matrix.command.run }};
./gradlew ${{ matrix.command.clean }};
./gradlew ${{ matrix.command.run }};
env:
SKIP_SERVER_BUILD: true
- name: Get report name
id: reportName
run: |
reportName=${{ matrix.command }}
echo "reportName=${reportName//\:/_}" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
if: always()
with:
name: backend_test_reports_${{ steps.version.outputs.reportName }}
path: |
./**/build/reports/**/*
e2e:
needs: [ frontend-build, backend-build, e2e-install-deps ]
runs-on: ubuntu-latest
name: E2E testing ‍🔎
strategy:
fail-fast: false
matrix:
total_jobs: [15]
job_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Download backend build result
uses: actions/download-artifact@v3
with:
name: backend
path: ~/
- name: Untar it
run: tar -xzf ~/backend-app.tgz ./backend/app/build
- name: Download frontend build result
uses: actions/download-artifact@v3
with:
name: webapp
path: ./webapp/build
- name: Download dependencies
uses: actions/download-artifact@v3
with:
name: e2e_deps
path: ~/
- name: Untar node modules
run: |
tar -xzf ~/node_modules.tgz ./e2e/node_modules
- name: Create cache directory
run: |
mkdir -p ~/.cache
- name: Untar Cypress cache
run: |
tar -xzf ~/cypress_cache.tgz
working-directory: /home/runner/.cache/
- name: Run e2e test
run: |
./gradlew runE2e && \
./gradlew runE2e && \
./gradlew runE2e
env:
TOLGEE_API_KEY: ${{secrets.TOLGEE_API_KEY}}
TOLGEE_API_URL: ${{secrets.TOLGEE_API_URL}}
SKIP_WEBAPP_BUILD: true
SKIP_SERVER_BUILD: true
SKIP_INSTALL_E2E_DEPS: true
E2E_TOTAL_JOBS: ${{matrix.total_jobs}}
E2E_JOB_INDEX: ${{matrix.job_index}}
- uses: actions/upload-artifact@v3
if: failure()
with:
name: e2e ${{ matrix.job_index }}
path: |
./e2e/cypress/videos/**/*
./e2e/cypress/screenshots/**/*
frontend-build:
name: Build frontend 🏗️
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Build webapp
run: ./gradlew buildWebapp
env:
TOLGEE_API_KEY: ${{secrets.TOLGEE_API_KEY}}
TOLGEE_API_URL: ${{secrets.TOLGEE_API_URL}}
- name: Upload built webapp
uses: actions/upload-artifact@v3
with:
name: webapp
path: webapp/build
e2e-install-deps:
name: Install E2E dependencies ⬇️
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Install dependencies
run: npm ci
working-directory: ./e2e
- name: Tar node modules
run: |
tar -czf ~/node_modules.tgz ./e2e/node_modules
- name: Tar Cypress cache
run: |
tar -czf ~/cypress_cache.tgz ./Cypress
working-directory: /home/runner/.cache/
- uses: actions/upload-artifact@v3
if: always()
with:
name: e2e_deps
path: |
~/node_modules.tgz
~/cypress_cache.tgz
cleanup:
if: always()
needs: [ e2e ]
name: Delete artifacts 🧹
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@v1
with:
name: |
e2e_deps
webapp
backend