DOC: Creating step by step guide to update our forked repository with… #16
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: E2E Tests | |
on: | |
push: | |
branches: | |
- "master" | |
- 'release-**' | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
files-changed: | |
name: Check which files changed | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 3 | |
outputs: | |
e2e_all: ${{ steps.changes.outputs.e2e_all }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Test which files changed | |
uses: dorny/paths-filter@v2.11.1 | |
id: changes | |
with: | |
token: ${{ github.token }} | |
filters: .github/file-paths.yaml | |
e2e-matrix-builder: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 5 | |
outputs: | |
matrix: ${{ steps.e2e-matrix.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Generate matrix for E2E tests | |
id: e2e-matrix | |
uses: ./.github/actions/build-e2e-matrix | |
build: | |
needs: [files-changed, e2e-matrix-builder] | |
if: | | |
!cancelled() && | |
github.event.pull_request.draft == false && | |
needs.e2e-matrix-builder.result == 'success' && | |
needs.files-changed.outputs.e2e_all == 'true' | |
runs-on: ubuntu-22.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-tests | |
- name: Build uberjar with ./bin/build.sh | |
run: ./bin/build.sh | |
- name: Prepare uberjar artifact | |
uses: ./.github/actions/prepare-uberjar-artifact | |
with: | |
name: metabase-${{ matrix.edition }}-${{ github.event.pull_request.head.sha || github.sha }}-uberjar | |
e2e-tests: | |
needs: [build, e2e-matrix-builder] | |
if: | | |
!cancelled() && needs.build.result == 'success' | |
runs-on: ${{ matrix.runner }} | |
timeout-minutes: 45 | |
name: e2e-tests-${{ matrix.name }}-${{ matrix.edition }} | |
env: | |
MB_EDITION: ${{ matrix.edition }} | |
DISPLAY: "" | |
QA_DB_ENABLED: true | |
# Any env starting with `CYPRESS_` will be available to all Cypress tests via `Cypress.env()` | |
# Example: you can get `CYPRESS_FOO` with `Cypress.env("FOO")` | |
CYPRESS_ALL_FEATURES_TOKEN: ${{ secrets.ENTERPRISE_TOKEN }} | |
CYPRESS_NO_FEATURES_TOKEN: ${{ secrets.E2E_STARTER_TOKEN }} | |
CYPRESS_PULL_REQUEST_ID: ${{ github.event.pull_request.number || '' }} | |
COMMIT_INFO_MESSAGE : ${{ github.event.pull_request.title || github.event.head_commit.message || github.even.head.sha }} | |
MB_SNOWPLOW_AVAILABLE: true | |
MB_SNOWPLOW_URL: "http://localhost:9090" # Snowplow micro | |
CYPRESS_REPLAYIO_ENABLED: 1 | |
RECORD_REPLAY_METADATA_FILE: /tmp/replay-metadata.json | |
RECORD_REPLAY_METADATA_TEST_RUN_ID: ${{ github.run_id }} | |
REPLAY_API_KEY: ${{ secrets.REPLAY_IO_TOKEN }} | |
TZ: US/Pacific # to make node match the instance tz | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJSON(needs.e2e-matrix-builder.outputs.matrix) }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Prepare Docker containers | |
uses: ./.github/actions/e2e-prepare-containers | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
maildev: true | |
openldap: ${{ startsWith(matrix.name, 'admin') }} | |
postgres: ${{ matrix.name != 'mongo'}} | |
mysql: ${{ matrix.name != 'mongo'}} | |
mongo: ${{ matrix.name == 'mongo'}} | |
- name: Retrieve uberjar artifact for ${{ matrix.edition }} | |
uses: actions/download-artifact@v3 | |
with: | |
name: metabase-${{ matrix.edition }}-${{ github.event.pull_request.head.sha || github.sha }}-uberjar | |
- name: Get the version info | |
run: | | |
jar xf target/uberjar/metabase.jar version.properties | |
mv version.properties resources/ | |
- 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 | |
- name: Run OSS-specific Cypress tests | |
if: matrix.edition == 'oss' && github.event_name != 'schedule' | |
run: | | |
yarn run test-cypress-run \ | |
--env grepTags=@OSS,grepOmitFiltered=true \ | |
--spec './e2e/test/scenarios/**/*.cy.spec.js' \ | |
--browser 'replay-chromium' | |
- name: Run slow and resource-intensive Cypress tests | |
if: matrix.name == 'slow' && github.event_name != 'schedule' | |
run: | | |
yarn run test-cypress-run \ | |
--env grepTags="@slow",grepOmitFiltered=true \ | |
--spec './e2e/test/scenarios/**/*.cy.spec.js' \ | |
--browser 'replay-chromium' | |
- name: Run Flaky Cypress tests | |
if: matrix.name == 'flaky' && github.event_name != 'schedule' | |
run: | | |
yarn run test-cypress-run \ | |
--env grepTags="@flaky",grepOmitFiltered=true \ | |
--spec './e2e/test/scenarios/**/*.cy.spec.js' \ | |
--browser 'replay-chromium' | |
- name: Run EE Cypress tests on ${{ matrix.name }} | |
if: matrix.context == 'folder' && github.event_name != 'schedule' | |
run: | | |
yarn run test-cypress-run \ | |
--env grepTags="-@slow+-@mongo+-@flaky --@quarantine",grepOmitFiltered=true \ | |
--folder ${{ matrix.name }} \ | |
--browser 'replay-chromium' | |
- name: Run E2E tests that depend on Mongo | |
if: matrix.name == 'mongo' | |
run: | | |
yarn run test-cypress-run \ | |
--env grepTags="@mongo --@quarantine",grepOmitFiltered=true \ | |
--spec './e2e/test/scenarios/**/*.cy.spec.js' \ | |
--browser 'replay-chromium' | |
env: | |
CYPRESS_QA_DB_MONGO: true | |
- name: Upload Test Results | |
uses: ./.github/actions/upload-test-results | |
if: always() | |
with: | |
input-path: ./target/junit | |
output-name: e2e-${{ matrix.name }} | |
bucket: ${{ vars.AWS_S3_TEST_RESULTS_BUCKET }} | |
aws-access-key-id: ${{ secrets.AWS_TEST_RESULTS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_TEST_RESULTS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ vars.AWS_REGION }} | |
trunk-api-token: ${{ secrets.TRUNK_API_TOKEN }} | |
- name: Upload Cypress Artifacts upon failure | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: cypress-recording-${{ matrix.name }}-${{ matrix.edition }} | |
path: | | |
./cypress | |
./logs/test.log | |
if-no-files-found: ignore | |
e2e-tests-skipped-stub: | |
needs: [e2e-tests, e2e-matrix-builder] | |
if: | | |
!cancelled() && | |
needs.e2e-tests.result == 'skipped' | |
runs-on: ${{ matrix.runner }} | |
timeout-minutes: 5 | |
name: e2e-tests-${{ matrix.name }}-${{ matrix.edition }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJSON(needs.e2e-matrix-builder.outputs.matrix) }} | |
steps: | |
- run: | | |
echo "Didn't run due to conditional filtering" | |
visual-regression-tests: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
needs: [build] | |
if: | | |
!cancelled() && needs.build.result == 'success' | |
name: percy-visual-regression-tests | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Prepare Docker containers | |
uses: ./.github/actions/e2e-prepare-containers | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
maildev: true | |
- name: Retrieve uberjar artifact for ${{ matrix.edition }} | |
uses: actions/download-artifact@v3 | |
with: | |
name: metabase-ee-${{ github.event.pull_request.head.sha || github.sha }}-uberjar | |
- name: Get the version info | |
run: | | |
jar xf target/uberjar/metabase.jar version.properties | |
mv version.properties resources/ | |
- name: Prepare front-end environment | |
uses: ./.github/actions/prepare-frontend | |
- name: Prepare JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 11 | |
distribution: 'temurin' | |
- name: Prepare Cypress environment | |
uses: ./.github/actions/prepare-cypress | |
- name: Percy Test | |
run: yarn run test-visual-run | |
env: | |
PERCY_TOKEN: ${{ github.ref == 'refs/heads/master' && secrets.PERCY_TOKEN || ''}} |