name: "[Test] connect core e2e" # run only if there are changes in connect or related libs paths on: schedule: # Runs at midnight UTC every day at 01:00 AM CET - cron: "0 0 * * *" push: branches: [release/connect/**] pull_request: paths: - "packages/blockchain-link/**" - "packages/connect-common/**" - "packages/connect-data/**" - "packages/connect-web/**" - "packages/connect/**" - "packages/protobuf/**" - "packages/schema-utils/**" - "packages/transport/**" - "packages/utxo-lib/**" - "docker/**" - "submodules/trezor-common/**" - ".github/workflows/test-connect.yml" - ".github/workflows/template-connect-test-params.yml" - "docker/docker-connect-test.sh" - "docker/docker-compose.connect-test.yml" workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: set-matrix: runs-on: ubuntu-latest timeout-minutes: 60 outputs: dailyMatrix: ${{ steps.set-matrix-daily.outputs.matrix }} dailyWebMatrix: ${{ steps.set-matrix-daily-web.outputs.matrix }} nightlyT3W1Matrix: ${{ steps.set-matrix-nightly-t3w1.outputs.matrix }} otherDevicesMatrix: ${{ steps.set-matrix-other-devices.outputs.matrix }} allFwsMatrix: ${{ steps.set-matrix-all-firmwares.outputs.matrix }} allTransportsMatrix: ${{ steps.set-matrix-all-transports.outputs.matrix }} modelOneMatrix: ${{ steps.set-matrix-model-one.outputs.matrix }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set daily matrix id: set-matrix-daily run: echo "matrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T3W1 --firmware=2-latest --env=node --groups=all --disable_cache_tx=false --transport=node-bridge)" >> $GITHUB_OUTPUT - name: Set daily web matrix id: set-matrix-daily-web run: echo "matrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T3W1 --firmware=2-latest --env=web --groups=api,init --disable_cache_tx=true --transport=node-bridge)" >> $GITHUB_OUTPUT - name: Set nightly T3W1 matrix id: set-matrix-nightly-t3w1 run: echo "matrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T3W1 --firmware=2-latest --env=all --groups=all --disable_cache_tx=false --transport=node-bridge)" >> $GITHUB_OUTPUT - name: Set all firmwares matrix id: set-matrix-all-firmwares run: echo "matrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T2T1 --firmware=all --env=all --groups=all --disable_cache_tx=false --transport=node-bridge)" >> $GITHUB_OUTPUT - name: Set other devices matrix id: set-matrix-other-devices run: echo "matrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=all --firmware=2-main --env=node --groups=api --disable_cache_tx=true --transport=node-bridge)" >> $GITHUB_OUTPUT - name: Set all transports matrix id: set-matrix-all-transports run: echo "matrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T2T1 --firmware=2-latest --env=node --groups=api --disable_cache_tx=true --transport=all)" >> $GITHUB_OUTPUT - name: Set trezor model one matrix id: set-matrix-model-one run: echo "matrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T1B1 --firmware=1-latest --env=node --groups=api --disable_cache_tx=true --transport=node-bridge)" >> $GITHUB_OUTPUT PR-check: needs: [set-matrix] name: PR-check ${{ matrix.key }} if: github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.env }}-${{ matrix.groups.pattern }}-${{ matrix.groups.name }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.dailyMatrix) }} PR-check-web: needs: [set-matrix] name: PR-check-web ${{ matrix.key }} if: github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.env }}-${{ matrix.groups.pattern }}-${{ matrix.groups.name }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.dailyWebMatrix) }} PR-nightly-t3w1: needs: [set-matrix] name: PR-nightly-t3w1 ${{ matrix.key }} if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.env }}-${{ matrix.groups.pattern }}-${{ matrix.groups.name }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.nightlyT3W1Matrix) }} randomized-order: needs: [set-matrix] name: randomized ${{ matrix.key }} if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.env }}-${{ matrix.groups.pattern }}-${{ matrix.groups.name }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} testRandomizedOrder: true strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.dailyMatrix) }} all-fws: needs: [set-matrix] name: all-fws ${{ matrix.key }} ${{ matrix.firmware }} if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.firmware }}-${{ matrix.groups.pattern }}-${{ matrix.groups.name }}-${{ matrix.env }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.allFwsMatrix) }} all-models-api: needs: [set-matrix] name: all-models-api ${{ matrix.key }} if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.model }}-${{ matrix.firmware }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.otherDevicesMatrix) }} all-transports: needs: [set-matrix] name: all-transports-api ${{ matrix.key }} if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.transport }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.allTransportsMatrix) }} model-one-api: needs: [set-matrix] name: model-one-api ${{ matrix.key }} if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'trezor/trezor-suite' uses: ./.github/workflows/template-connect-test-params.yml with: testPattern: ${{ matrix.groups.pattern }} includeFilter: ${{ matrix.groups.includeFilter }} testsFirmware: ${{ matrix.firmware }} testDescription: ${{ matrix.model }}-${{ matrix.firmware }} disable_cache_tx: ${{ matrix.disable_cache_tx }} transport: ${{ matrix.transport }} testEnv: ${{ matrix.env }} testFirmwareModel: ${{ matrix.model }} strategy: fail-fast: false matrix: ${{ fromJson(needs.set-matrix.outputs.modelOneMatrix) }}