Skip to content

Commit

Permalink
ci: split e2e tests (#285)
Browse files Browse the repository at this point in the history
Signed-off-by: Jeromy Cannon <jeromy@swirldslabs.com>
  • Loading branch information
jeromy-cannon committed May 10, 2024
1 parent dde74b0 commit e6d79a6
Show file tree
Hide file tree
Showing 19 changed files with 633 additions and 244 deletions.
80 changes: 68 additions & 12 deletions .github/workflows/flow-build-application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,48 +43,104 @@ defaults:
shell: bash

jobs:
code:
name: Code
uses: ./.github/workflows/zxc-compile-code.yaml
env-vars:
name: Set Environment Variables
uses: ./.github/workflows/zxc-env-vars.yaml
with:
custom-job-label: Set Environment Variables

code-style:
name: Code Style
uses: ./.github/workflows/zxc-compile-code.yaml
needs:
- code
uses: ./.github/workflows/zxc-code-style.yaml
with:
custom-job-label: Check
enable-code-style-check: true
custom-job-label: Standard

unit-tests:
name: Unit Tests
uses: ./.github/workflows/zxc-compile-code.yaml
uses: ./.github/workflows/zxc-unit-test.yaml
if: ${{ github.event_name == 'push' || github.event.inputs.enable-unit-tests == 'true' }}
needs:
- code-style
with:
custom-job-label: Standard
enable-unit-tests: true

e2e-tests:
name: E2E Tests
uses: ./.github/workflows/zxc-compile-code.yaml
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Standard
enable-e2e-tests: true
npm-test-script: test-${{ needs.env-vars.outputs.e2e-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-coverage-report }}

e2e-mirror-node-tests:
name: E2E Tests
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Mirror Node
npm-test-script: test-${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-mirror-node-coverage-report }}

e2e-node-tests:
name: E2E Tests
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Node
npm-test-script: test-${{ needs.env-vars.outputs.e2e-node-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-coverage-report }}

e2e-relay-tests:
name: E2E Tests
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Relay
npm-test-script: test-${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}

analyze:
name: Analyze
uses: ./.github/workflows/zxc-code-analysis.yaml
needs:
- env-vars
- unit-tests
- e2e-tests
- e2e-mirror-node-tests
- e2e-node-tests
- e2e-relay-tests
if: ${{ (github.event_name == 'push' || github.event.inputs.enable-unit-tests == 'true' || github.event.inputs.enable-e2e-tests == 'true') && !failure() && !cancelled() }}
with:
custom-job-label: Source Code
#enable-snyk-scan: ${{ github.event_name == 'push' || github.event.inputs.enable-snyk-scan == 'true' }}
enable-codecov-analysis: true
enable-codacy-coverage: true
enable-e2e-coverage-report: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
e2e-test-subdir: ${{ needs.env-vars.outputs.e2e-test-subdir }}
e2e-mirror-node-test-subdir: ${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
e2e-node-test-subdir: ${{ needs.env-vars.outputs.e2e-node-test-subdir }}
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
e2e-coverage-report: ${{ needs.env-vars.outputs.e2e-coverage-report }}
e2e-mirror-node-coverage-report: ${{ needs.env-vars.outputs.e2e-mirror-node-coverage-report }}
e2e-node-coverage-report: ${{ needs.env-vars.outputs.e2e-node-coverage-report }}
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
secrets:
snyk-token: ${{ secrets.SNYK_TOKEN }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
Expand Down
97 changes: 85 additions & 12 deletions .github/workflows/flow-pull-request-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,74 +32,147 @@ concurrency:
cancel-in-progress: true

jobs:
build:
name: Code
uses: ./.github/workflows/zxc-compile-code.yaml
env-vars:
name: Set Environment Variables
uses: ./.github/workflows/zxc-env-vars.yaml
with:
custom-job-label: Set Environment Variables

code-style:
name: Code Style
uses: ./.github/workflows/zxc-compile-code.yaml
needs:
- build
uses: ./.github/workflows/zxc-code-style.yaml
with:
custom-job-label: Check
enable-code-style-check: true
custom-job-label: Standard

unit-tests:
name: Unit Tests
uses: ./.github/workflows/zxc-compile-code.yaml
uses: ./.github/workflows/zxc-unit-test.yaml
needs:
- code-style
with:
custom-job-label: Standard
enable-unit-tests: true

e2e-tests:
name: E2E Tests
uses: ./.github/workflows/zxc-compile-code.yaml
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Standard
enable-e2e-tests: true
npm-test-script: test-${{ needs.env-vars.outputs.e2e-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-coverage-report }}

e2e-mirror-node-tests:
name: E2E Tests
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Mirror Node
npm-test-script: test-${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-mirror-node-coverage-report }}

e2e-node-tests:
name: E2E Tests
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Node
npm-test-script: test-${{ needs.env-vars.outputs.e2e-node-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-coverage-report }}

e2e-relay-tests:
name: E2E Tests
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Relay
npm-test-script: test-${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}

codecov:
name: CodeCov
uses: ./.github/workflows/zxc-code-analysis.yaml
needs:
- env-vars
- unit-tests
- e2e-tests
- e2e-mirror-node-tests
- e2e-node-tests
- e2e-relay-tests
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
with:
custom-job-label: Standard
enable-codecov-analysis: true
enable-e2e-coverage-report: true
e2e-test-subdir: ${{ needs.env-vars.outputs.e2e-test-subdir }}
e2e-mirror-node-test-subdir: ${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
e2e-node-test-subdir: ${{ needs.env-vars.outputs.e2e-node-test-subdir }}
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
e2e-coverage-report: ${{ needs.env-vars.outputs.e2e-coverage-report }}
e2e-mirror-node-coverage-report: ${{ needs.env-vars.outputs.e2e-mirror-node-coverage-report }}
e2e-node-coverage-report: ${{ needs.env-vars.outputs.e2e-node-coverage-report }}
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
secrets:
codecov-token: ${{ secrets.CODECOV_TOKEN }}

codacy-coverage:
name: Codacy
uses: ./.github/workflows/zxc-code-analysis.yaml
needs:
- env-vars
- unit-tests
- e2e-tests
- e2e-mirror-node-tests
- e2e-node-tests
- e2e-relay-tests
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
with:
custom-job-label: Coverage
enable-codacy-coverage: true
enable-e2e-coverage-report: true
e2e-test-subdir: ${{ needs.env-vars.outputs.e2e-test-subdir }}
e2e-mirror-node-test-subdir: ${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
e2e-node-test-subdir: ${{ needs.env-vars.outputs.e2e-node-test-subdir }}
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
e2e-coverage-report: ${{ needs.env-vars.outputs.e2e-coverage-report }}
e2e-mirror-node-coverage-report: ${{ needs.env-vars.outputs.e2e-mirror-node-coverage-report }}
e2e-node-coverage-report: ${{ needs.env-vars.outputs.e2e-node-coverage-report }}
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
secrets:
codacy-project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}

# snyk:
# name: Snyk Scan
# uses: ./.github/workflows/zxc-code-analysis.yaml
# needs:
# - env-vars
# - unit-tests
# - e2e-tests
# - e2e-mirror-node-tests
# - e2e-node-tests
# - e2e-relay-tests
# if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name && github.actor != 'dependabot[bot]' }}
# with:
# custom-job-label: Standard
# enable-snyk-scan: true
# e2e-test-subdir: ${{ needs.env-vars.outputs.e2e-test-subdir }}
# e2e-mirror-node-test-subdir: ${{ needs.env-vars.outputs.e2e-mirror-node-test-subdir }}
# e2e-node-test-subdir: ${{ needs.env-vars.outputs.e2e-node-test-subdir }}
# e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
# e2e-coverage-report: ${{ needs.env-vars.outputs.e2e-coverage-report }}
# e2e-mirror-node-coverage-report: ${{ needs.env-vars.outputs.e2e-mirror-node-coverage-report }}
# e2e-node-coverage-report: ${{ needs.env-vars.outputs.e2e-node-coverage-report }}
# e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
# secrets:
# snyk-token: ${{ secrets.SNYK_TOKEN }}
5 changes: 5 additions & 0 deletions .github/workflows/flow-update-readme.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ jobs:
attempt_limit: 3
attempt_delay: 5000

- name: Install wget
run: |
sudo apt-get update
sudo apt-get install -y wget
- name: Setup Kind
uses: helm/kind-action@0025e74a8c7512023d06dc019c617aa3cf561fde # v1.10.0
with:
Expand Down
65 changes: 63 additions & 2 deletions .github/workflows/zxc-code-analysis.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,46 @@ on:
type: string
required: false
default: "Analyze"
e2e-test-subdir:
description: "E2E Test Subdirectory:"
type: string
required: false
default: "e2e"
e2e-mirror-node-test-subdir:
description: "E2E Mirror Node Test Subdirectory:"
type: string
required: false
default: "e2e-mirror-node"
e2e-node-test-subdir:
description: "E2E Node Test Subdirectory:"
type: string
required: false
default: "e2e-node"
e2e-relay-test-subdir:
description: "E2E Relay Test Subdirectory:"
type: string
required: false
default: "e2e-relay"
e2e-coverage-report:
description: "E2E Coverage Report:"
type: string
required: false
default: "E2E Tests Coverage Report"
e2e-mirror-node-coverage-report:
description: "E2E Mirror Node Coverage Report:"
type: string
required: false
default: "E2E Mirror Node Tests Coverage Report"
e2e-node-coverage-report:
description: "E2E Node Coverage Report:"
type: string
required: false
default: "E2E Node Tests Coverage Report"
e2e-relay-coverage-report:
description: "E2E Relay Coverage Report:"
type: string
required: false
default: "E2E Relay Tests Coverage Report"
secrets:
snyk-token:
description: "The Snyk access token is used by Snyk to analyze the code for vulnerabilities "
Expand Down Expand Up @@ -109,8 +149,29 @@ jobs:
uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6
if: ${{ (inputs.enable-codecov-analysis || inputs.enable-codacy-coverage) && inputs.enable-e2e-coverage-report && !cancelled() && !failure() }}
with:
name: E2E Coverage Report
path: 'coverage/e2e'
name: ${{ inputs.e2e-coverage-report }}
path: 'coverage/${{ inputs.e2e-test-subdir }}'

- name: Download E2E Mirror Node Coverage Report
uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6
if: ${{ (inputs.enable-codecov-analysis || inputs.enable-codacy-coverage) && inputs.enable-e2e-coverage-report && !cancelled() && !failure() }}
with:
name: ${{ inputs.e2e-mirror-node-coverage-report }}
path: 'coverage/${{ inputs.e2e-mirror-node-test-subdir }}'

- name: Download E2E Node Coverage Report
uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6
if: ${{ (inputs.enable-codecov-analysis || inputs.enable-codacy-coverage) && inputs.enable-e2e-coverage-report && !cancelled() && !failure() }}
with:
name: ${{ inputs.e2e-node-coverage-report }}
path: 'coverage/${{ inputs.e2e-node-test-subdir }}'

- name: Download E2E Relay Coverage Report
uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6
if: ${{ (inputs.enable-codecov-analysis || inputs.enable-codacy-coverage) && inputs.enable-e2e-coverage-report && !cancelled() && !failure() }}
with:
name: ${{ inputs.e2e-relay-coverage-report }}
path: 'coverage/${{ inputs.e2e-relay-test-subdir }}'

- name: Publish To Codecov
uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be # v4.3.1
Expand Down

0 comments on commit e6d79a6

Please sign in to comment.