[Test] connect core e2e #4269
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: "[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) }} |