Skip to content

[Test] connect core e2e #4269

[Test] connect core e2e

[Test] connect core e2e #4269

Workflow file for this run

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-iframe/**"
- "packages/connect-web/**"
- "packages/connect/**"
- "packages/protobuf/**"
- "packages/schema-utils/**"
- "packages/transport/**"
- "packages/utils/**"
- "packages/utxo-lib/**"
- "docker/**"
- "submodules/trezor-common/**"
- "yarn.lock"
- ".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:
# todo: meaning of 'build' job is questionable. only 'web' tests use part of this jobs output
build:
if: github.repository == 'trezor/trezor-suite'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: yarn
cache-dependency-path: "**/yarn.lock"
- run: |
echo -e "\nenableScripts: false" >> .yarnrc.yml
- run: yarn workspaces focus @trezor/connect-iframe @trezor/connect-web
- run: yarn workspace @trezor/connect-iframe build
- run: yarn workspace @trezor/connect-web build
# upload + download takes longer than doing yarn build:libs
- name: Upload build connect-web
uses: actions/upload-artifact@v4
with:
name: build-artifact-connect-web
path: packages/connect-web/build
- name: Upload build connect-iframe
uses: actions/upload-artifact@v4
with:
name: build-artifact-connect-iframe
path: packages/connect-iframe/build
set-matrix:
runs-on: ubuntu-latest
outputs:
dailyMatrix: ${{ steps.set-matrix-daily.outputs.dailyMatrix }}
otherDevicesMatrix: ${{ steps.set-matrix-other-devices.outputs.otherDevicesMatrix }}
allFwsMatrix: ${{ steps.set-matrix-all-firmwares.outputs.allFwsMatrix }}
allTransportsMatrix: ${{ steps.set-matrix-all-transports.outputs.allTransportsMatrix }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set daily matrix
id: set-matrix-daily
run: echo "dailyMatrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T2T1 --firmware=2-latest --env=all --groups=api,api-flaky --cache_tx=true --transport=2.0.33)" >> $GITHUB_OUTPUT
- name: Set all firmwares matrix
id: set-matrix-all-firmwares
run: echo "allFwsMatrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T2T1 --firmware=all --env=all --groups=all --cache_tx=false --transport=2.0.33)" >> $GITHUB_OUTPUT
- name: Set other devices matrix
id: set-matrix-other-devices
run: echo "otherDevicesMatrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=all --firmware=2-main --env=node --groups=api --cache_tx=true --transport=2.0.33)" >> $GITHUB_OUTPUT
- name: Set all transports matrix
id: set-matrix-all-transports
run: echo "allTransportsMatrix=$(node ./scripts/ci/connect-test-matrix-generator.js --model=T2T1 --firmware=2-latest --env=node --groups=api --cache_tx=true --transport=2.0.32,2.0.33)" >> $GITHUB_OUTPUT
PR-check:
needs: [build, 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 }}
cache_tx: ${{ matrix.cache_tx }}
transport: ${{ matrix.transport }}
testEnv: ${{ matrix.env }}
testFirmwareModel: ${{ matrix.model }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.set-matrix.outputs.dailyMatrix) }}
randomized:
needs: [build, 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 }}
cache_tx: ${{ matrix.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: [build, 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 }}
cache_tx: ${{ matrix.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: [build, 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 }}
cache_tx: ${{ matrix.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: [build, 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 }}
cache_tx: ${{ matrix.cache_tx }}
transport: ${{ matrix.transport }}
testEnv: ${{ matrix.env }}
testFirmwareModel: ${{ matrix.model }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.set-matrix.outputs.allTransportsMatrix) }}