Skip to content
Snippets Groups Projects
Unverified Commit 2b98b407 authored by Nemanja Glumac's avatar Nemanja Glumac Committed by GitHub
Browse files

[CI] Unify E2E tests workflows (#28431)

parent 4e4a69c3
No related branches found
No related tags found
No related merge requests found
name: E2E Tests
on:
push:
branches:
- "master"
- 'release-**'
paths-ignore:
- "docs/**"
- "**.md"
- ".circleci/**"
- "**.unit.spec.*"
- "**_test.clj"
jobs:
build:
runs-on: ubuntu-20.04
timeout-minutes: 25
strategy:
matrix:
edition: [oss, ee]
env:
MB_EDITION: ${{ matrix.edition }}
INTERACTIVE: false
steps:
- uses: actions/checkout@v3
- name: Prepare front-end environment
uses: ./.github/actions/prepare-frontend
- name: Prepare back-end environment
uses: ./.github/actions/prepare-backend
with:
m2-cache-key: e2e-main
- name: Build uberjar with ./bin/build
run: >-
./bin/build version translations frontend licenses drivers uberjar
- name: Prepare uberjar artifact
uses: ./.github/actions/prepare-uberjar-artifact
e2e-tests:
runs-on: ubuntu-20.04
timeout-minutes: 45
needs: build
name: e2e-tests-${{ matrix.folder }}${{ matrix.context }}-${{ matrix.edition }}
env:
MB_EDITION: ${{ matrix.edition }}
DISPLAY: ""
QA_DB_ENABLED: true
MB_PREMIUM_EMBEDDING_TOKEN: ${{ secrets.ENTERPRISE_TOKEN }}
MB_SNOWPLOW_AVAILABLE: true
MB_SNOWPLOW_URL: "http://localhost:9090" # Snowplow micro
ELECTRON_EXTRA_LAUNCH_ARGS: '--remote-debugging-port=40500' # deploysentinel
strategy:
fail-fast: false
matrix:
java-version: [11]
edition: [ee]
folder:
- "admin"
- "binning"
- "collections"
- "custom-column"
- "dashboard"
- "dashboard-filters"
- "downloads"
- "embedding"
- "filters"
- "joins"
- "models"
- "native"
- "native-filters"
- "onboarding"
- "organization"
- "permissions"
- "question"
- "sharing"
- "visualizations"
include:
- edition: oss
context: grep
java-version: 11
services:
maildev:
image: maildev/maildev:2.0.5
ports:
- "1080:1080"
- "1025:1025"
credentials:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
openldap:
image: osixia/openldap:1.5.0
ports:
- "389:389"
credentials:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
postgres-sample:
image: metabase/qa-databases:postgres-sample-12
ports:
- "5404:5432"
credentials:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
mongo-sample:
image: metabase/qa-databases:mongo-sample-4.0
ports:
- 27004:27017
credentials:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
mysql-sample:
image: metabase/qa-databases:mysql-sample-8
ports:
- 3304:3306
credentials:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
# Test runs will be recorded using Deploysentinel on `master` only
- name: Set conditional ENVs
if: github.ref == 'refs/heads/master'
run: |
echo "CYPRESS_DEPLOYSENTINEL_KEY=${{ secrets.CYPRESS_DEPLOYSENTINEL_KEY }}" >> $GITHUB_ENV
- name: Prepare front-end environment
uses: ./.github/actions/prepare-frontend
- name: Prepare JDK ${{ matrix.java-version }}
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
distribution: 'temurin'
- name: Prepare cypress environment
uses: ./.github/actions/prepare-cypress
- name: Run Snowplow micro
uses: ./.github/actions/run-snowplow-micro
- uses: actions/download-artifact@v3
name: Retrieve uberjar artifact for ${{ matrix.edition }}
with:
name: metabase-${{ matrix.edition }}-uberjar
- name: Get the version info
run: |
jar xf target/uberjar/metabase.jar version.properties
mv version.properties resources/
- name: Run OSS-specific Cypress tests
if: matrix.edition == 'oss'
run: |
yarn run test-cypress-run \
--env grepTags=@OSS \
--spec './frontend/test/metabase/scenarios/**/*.cy.spec.js'
env:
TERM: xterm
# These are EE-specific and version-agnostic tests
- name: Run Cypress E2E tests against EE uberjar
if: matrix.edition == 'ee'
run: |
yarn run test-cypress-run \
--folder ${{ matrix.folder }}
env:
TERM: xterm
- name: Upload Cypress Artifacts upon failure
uses: actions/upload-artifact@v3
if: failure()
with:
name: cypress-recording-${{ matrix.folder }}${{ matrix.context }}-${{ matrix.edition }}
path: |
./cypress
./logs/test.log
if-no-files-found: ignore
visual-regression-tests:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-20.04
timeout-minutes: 45
needs: build
name: percy-screenshot-recording-${{ matrix.edition }}
env:
MB_EDITION: ${{ matrix.edition }}
MB_PREMIUM_EMBEDDING_TOKEN: ${{ secrets.ENTERPRISE_TOKEN }}
strategy:
matrix:
java-version: [11]
edition: [ee]
services:
maildev:
image: maildev/maildev:2.0.5
ports:
- "1080:1080"
- "1025:1025"
credentials:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- name: Prepare front-end environment
uses: ./.github/actions/prepare-frontend
- name: Prepare JDK ${{ matrix.java-version }}
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
distribution: 'temurin'
- name: Prepare Cypress environment
uses: ./.github/actions/prepare-cypress
- uses: actions/download-artifact@v3
name: Retrieve uberjar artifact for ${{ matrix.edition }}
with:
name: metabase-${{ matrix.edition }}-uberjar
- name: Get the version info
run: |
jar xf target/uberjar/metabase.jar version.properties
mv version.properties resources/
- name: Percy Test
run: yarn run test-visual-run
env:
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
name: E2E Tests for PR
name: E2E Tests
on:
push:
branches:
- "master"
- 'release-**'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
cancel-in-progress: true
jobs:
......@@ -44,7 +48,8 @@ jobs:
with:
m2-cache-key: e2e-tests
- run: ./bin/build version translations frontend licenses drivers uberjar
- name: Build uberjar with ./bin/build
run: ./bin/build version translations frontend licenses drivers uberjar
- name: Prepare uberjar artifact
uses: ./.github/actions/prepare-uberjar-artifact
......@@ -134,11 +139,10 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- name: Set conditional ENVs
- name: Record runs using Deploysentinel except for the release branch
if: ${{ github.ref == 'refs/heads/master' || !(startsWith(github.event.pull_request.base.ref, 'release')) }}
run: |
if [[ ${{ github.event.pull_request.base.ref }} != release* ]]; then
echo "CYPRESS_DEPLOYSENTINEL_KEY=${{ secrets.CYPRESS_DEPLOYSENTINEL_KEY }}" >> $GITHUB_ENV
fi
echo "CYPRESS_DEPLOYSENTINEL_KEY=${{ secrets.CYPRESS_DEPLOYSENTINEL_KEY }}" >> $GITHUB_ENV
- name: Prepare front-end environment
uses: ./.github/actions/prepare-frontend
- name: Prepare JDK ${{ matrix.java-version }}
......@@ -232,9 +236,9 @@ jobs:
visual-regression-tests:
runs-on: ubuntu-20.04
timeout-minutes: 30
timeout-minutes: 45
needs: build
name: percy-tests-sanity-check-${{ matrix.edition }}
name: percy-visual-regression-tests
env:
MB_EDITION: ${{ matrix.edition }}
MB_PREMIUM_EMBEDDING_TOKEN: ${{ secrets.ENTERPRISE_TOKEN }}
......@@ -253,13 +257,17 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- name: Enable Percy recording on master only
if: github.ref == 'refs/heads/master'
run: |
echo "PERCY_TOKEN=${{ secrets.PERCY_TOKEN }}" >> $GITHUB_ENV
- name: Prepare front-end environment
uses: ./.github/actions/prepare-frontend
- name: Prepare JDK ${{ matrix.java-version }}
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
distribution: "temurin"
distribution: 'temurin'
- name: Prepare Cypress environment
uses: ./.github/actions/prepare-cypress
......@@ -273,3 +281,5 @@ jobs:
mv version.properties resources/
- name: Percy Test
run: yarn run test-visual-run
env:
PERCY_TOKEN: ${{ env.PERCY_TOKEN }}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment