Repository: trezor/trezor-suite
Pull request #17957: Feat(ci): Use currents orchestration
Author: login: HajekOndrej
Created: 2025-03-28T10:06:00Z | Merged: 2025-04-10T15:52:15Z

<!--- Provide a general summary of your changes in the Title above -->

## Description

<!--- Describe your changes in detail -->

## Related Issue

Resolve <!--- link the issue here -->

## Screenshots:



Diff:
diff --git a/.github/actions/check-previous-test-runs/action.yml b/.github/actions/check-previous-test-runs/action.yml
index a83b304ae706..e96d1ca39ea2 100644
--- a/.github/actions/check-previous-test-runs/action.yml
+++ b/.github/actions/check-previous-test-runs/action.yml
@@ -16,8 +16,8 @@ inputs:
   workflow_name:
     description: "The workflow name to filter runs"
     required: true
-  job_name:
-    description: "The name of the job to check success"
+  run_attempt:
+    description: "The run attempt number"
     required: true
 outputs:
   skip_tests:
@@ -31,12 +31,19 @@ runs:
       continue-on-error: true
       env:
         GH_TOKEN: ${{ inputs.github_token }}
+      shell: bash
       run: |
         PR_BRANCH="${{ inputs.pr_branch }}"
         PR_CREATED_TIMESTAMP="${{ inputs.pr_created }}"
         REPO="${{ inputs.repo }}"
         WORKFLOW_NAME="${{ inputs.workflow_name }}"
-        JOB_NAME="${{ inputs.job_name }}"
+        RUN_ATTEMPT="${{ inputs.run_attempt }}"
+
+        if [ "${RUN_ATTEMPT}" -gt 1 ]; then
+          echo "Manually triggered re-run."
+          echo "skip_tests=false" >> $GITHUB_OUTPUT
+          exit 0
+        fi
 
         # Fetch workflow ID
         WORKFLOW_ID=$(gh workflow list \
@@ -46,25 +53,27 @@ runs:
           --jq ".[] | select(.name == \"${WORKFLOW_NAME}\") | .id")
 
         # Fetch previous PR runs
-        PREVIOUS_RUN_JOBS_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
-          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1" | \
-          jq -r '.workflow_runs[] | .jobs_url')
+        PREVIOUS_RUN_RESPONSE=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
+          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1")
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
 
-        if [ -z "${PREVIOUS_RUN_JOBS_URL}" ]; then
-          echo "No previous runs found. Running tests as usual"
+        if [ -z "${PREVIOUS_RUN_CONCLUSION}" ] || [ "${PREVIOUS_RUN_CONCLUSION}" != "success" ]; then
+          echo "No previous runs found or previous run was not successful. Running all tests as usual"
           echo "skip_tests=false" >> $GITHUB_OUTPUT
           exit 0
         fi
 
-        SUCCESSFUL_JOB_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" "${PREVIOUS_RUN_JOBS_URL}" | \
-          jq -r --arg JOB_NAME "${JOB_NAME}" '.jobs[] | select(.name == $JOB_NAME and .conclusion == "success") | .html_url')
-
-        if [ -z "${SUCCESSFUL_JOB_URL}" ]; then
-          echo "No previous successful job found. Running tests as usual"
-          echo "skip_tests=false" >> $GITHUB_OUTPUT
-          exit 0
-        fi
-
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - skipping the rest of the job"
+        SUCCESSFUL_JOB_URL=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].html_url')
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
         echo "skip_tests=true" >> $GITHUB_OUTPUT
-      shell: bash
+    
+    - name: Post Skipped tests comment
+      if: ${{ steps.check-previous-runs.outputs.skip_tests == 'true' }}
+      uses: peter-evans/create-or-update-comment@v4
+      with:
+          token: ${{ inputs.github_token }}
+          issue-number: ${{ github.event.pull_request.number }}
+          body: |
+            ✅ Previously successful run of **${{ inputs.workflow_name }}** workflow has been found.
+            ⏭️ Skipping tests for this run.
+            💡 If you are unsure about your latest changes, please rerun the workflow manually. (Use the Re-run all jobs option)
diff --git a/.github/actions/load-e2e-matrix/action.yml b/.github/actions/load-e2e-matrix/action.yml
deleted file mode 100644
index 8463e9b62a31..000000000000
--- a/.github/actions/load-e2e-matrix/action.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-name: "Load e2e matrix"
-description: "Loads the e2e matrix with groups of tests to run"
-inputs:
-  project:
-    description: "Playwright project name (web|desktop)"
-    required: true
-  additional-test-groups:
-    description: "Additional test groups as a YAML array (optional)"
-    required: false
-    default: "[]"
-outputs:
-  matrix:
-    description: "E2e test matrix"
-    value: ${{ steps.set-matrix.outputs.matrix }}
-runs:
-  using: "composite"
-  steps:
-    - name: Generate Matrix
-      id: set-matrix
-      shell: bash
-      run: |
-        # Determine the correct matrix file
-        MATRIX_FILE="${{ github.workspace }}/packages/suite-desktop-core/e2e/ci/matrix-base-${{ inputs.project }}.yml"
-
-        if [[ ! -f "$MATRIX_FILE" ]]; then
-          echo "Error: Matrix file for project '${{ inputs.project }}' not found!" >&2
-          exit 1
-        fi
-
-        # Convert YAML to JSON
-        BASE_MATRIX=$(yq -o=json '.' "$MATRIX_FILE")
-
-        # Convert additional test groups input (if provided)
-        ADDITIONAL_GROUPS_JSON=$(echo '${{ inputs.additional-test-groups }}' | yq -o=json '.')
-
-        # Merge additional test groups
-        FINAL_MATRIX=$(jq -c --argjson groups "$ADDITIONAL_GROUPS_JSON" '. + $groups' <<<"$BASE_MATRIX")
-
-        # Wrap in "include" and output
-        echo "matrix={\"include\": $FINAL_MATRIX}" >> $GITHUB_OUTPUT
diff --git a/.github/actions/run-e2e-tests/action.yml b/.github/actions/run-e2e-tests/action.yml
index 54b4565a57d0..3eee91dcadb2 100644
--- a/.github/actions/run-e2e-tests/action.yml
+++ b/.github/actions/run-e2e-tests/action.yml
@@ -16,8 +16,12 @@ inputs:
     required: false
     default: ""
   test-group:
-    description: "Test group to run"
+    description: "Test group for orchestration"
     required: true
+  fail-fast:
+    description: "Cancel test run if number of tests fail (number | false)"
+    default: "false"
+    required: false
   additional-grep:
     description: "Additional grep for PW tests. Use regexp groups with positive or negative lookahead. Example: (?=.*@webOnly)"
     default: ""
@@ -100,7 +104,7 @@ runs:
 
         docker compose up -d ${{ inputs.containers }}
         echo "Starting Playwright project ${{ inputs.project }} for test group ${{ inputs.test-group }}"
-        yarn workspace @trezor/suite-desktop-core test:e2e:${{ inputs.project }} --forbid-only --grep="(?=.*${{ inputs.test-group }})${{ inputs.additional-grep }}" 
+        yarn workspace @trezor/suite-desktop-core test:orchestrated:e2e:${{ inputs.project }} --pwc-cancel-after-failures ${{ inputs.fail-fast }} --forbid-only --grep="${{ inputs.additional-grep }}" 
 
     - name: Extract and Upload Logs
       if: ${{ !cancelled() }}
diff --git a/.github/workflows/test-suite-desktop-e2e-fw-canary.yml b/.github/workflows/test-suite-desktop-e2e-fw-canary.yml
index d006f1416697..68d7e1d50885 100644
--- a/.github/workflows/test-suite-desktop-e2e-fw-canary.yml
+++ b/.github/workflows/test-suite-desktop-e2e-fw-canary.yml
@@ -27,30 +27,15 @@ jobs:
       - name: Build and Upload Suite Desktop
         uses: ./.github/actions/build-desktop
 
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
-    runs-on: ubuntu-latest
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "desktop"
-
   run-e2e-suite-desktop-tests:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
     strategy:
       fail-fast: false
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -78,10 +63,11 @@ jobs:
           CANARY_FIRMWARE: "true"
         with:
           project: "desktop"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           workspace-dependencies: "@trezor/suite-desktop"
           test-group: ${{ matrix.TEST_GROUP }}
           additional-grep: "(?!.*@specificFirmware)"
+          fail-fast: false
           currents-project-id: "4ytF0E"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
           currents-tags: "fw-canary"
diff --git a/.github/workflows/test-suite-desktop-e2e-nightly.yml b/.github/workflows/test-suite-desktop-e2e-nightly.yml
index 60fd281b431d..dec7ab76561f 100644
--- a/.github/workflows/test-suite-desktop-e2e-nightly.yml
+++ b/.github/workflows/test-suite-desktop-e2e-nightly.yml
@@ -26,30 +26,15 @@ jobs:
       - name: Build and Upload Suite Desktop
         uses: ./.github/actions/build-desktop
         
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
-    runs-on: ubuntu-latest
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "desktop"
-
   run-e2e-suite-desktop-tests:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
     strategy:
       fail-fast: false
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -75,9 +60,10 @@ jobs:
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "desktop"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           workspace-dependencies: "@trezor/suite-desktop"
           test-group: ${{ matrix.TEST_GROUP }}
+          fail-fast: false
           currents-project-id: "4ytF0E"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
           currents-tags: "nightly"
diff --git a/.github/workflows/test-suite-desktop-e2e-pr.yml b/.github/workflows/test-suite-desktop-e2e-pr.yml
index 9b174b9ace8e..bb0f8fd40661 100644
--- a/.github/workflows/test-suite-desktop-e2e-pr.yml
+++ b/.github/workflows/test-suite-desktop-e2e-pr.yml
@@ -29,29 +29,36 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
-  build-app:
+  check-previous-runs:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-latest
+    outputs:
+      skip_tests: ${{ steps.check-previous-runs.outputs.skip_tests }}
     steps:
       - name: Checkout
         uses: actions/checkout@v4
-      - name: Build and Upload Suite Desktop
-        uses: ./.github/actions/build-desktop
+      - name: Check previous runs
+        id: check-previous-runs
+        uses: "./.github/actions/check-previous-test-runs"
+        with:
+          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
+          pr_branch: ${{ github.head_ref }}
+          pr_created: ${{ github.event.pull_request.created_at }}
+          repo: ${{ github.repository }}
+          workflow_name: ${{ github.workflow }}
+          run_attempt: ${{ github.run_attempt }}
 
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
+  build-app:
+    needs:
+      - check-previous-runs
+    if: github.repository == 'trezor/trezor-suite' && needs.check-previous-runs.outputs.skip_tests != 'true'
     runs-on: ubuntu-latest
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
     steps:
       - name: Checkout
         uses: actions/checkout@v4
 
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "desktop"
+      - name: Build and Upload Suite Desktop
+        uses: ./.github/actions/build-desktop
 
   post-currents-link:
     if: github.repository == 'trezor/trezor-suite' && github.event_name == 'pull_request' && github.event.action == 'opened'
@@ -81,11 +88,11 @@ jobs:
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
-    continue-on-error: ${{ !matrix.smoke }}
+      - check-previous-runs
     strategy:
-      fail-fast: true
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      fail-fast: false
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -93,43 +100,28 @@ jobs:
           submodules: true
           ref: ${{ github.event.pull_request.head.sha }}
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Setup node
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/setup-node@v4
         with:
           node-version-file: ".nvmrc"
           cache: yarn
 
       - name: Download build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/download-artifact@v4
         with:
           name: desktop-app-build-e2e
 
       - name: Extract build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         run: tar -xzf app-build.tar.gz -C ${{ github.workspace }}/packages/suite-desktop
 
       - name: Run Playwright E2E Tests
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "desktop"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           workspace-dependencies: "@trezor/suite-desktop"
           test-group: ${{ matrix.TEST_GROUP }}
+          fail-fast: 3
           currents-project-id: "4ytF0E"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
           e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
diff --git a/.github/workflows/test-suite-desktop-e2e-release.yml b/.github/workflows/test-suite-desktop-e2e-release.yml
index 001a198b8ec6..ed9f232e56e0 100644
--- a/.github/workflows/test-suite-desktop-e2e-release.yml
+++ b/.github/workflows/test-suite-desktop-e2e-release.yml
@@ -27,30 +27,15 @@ jobs:
       - name: Build and Upload Suite Desktop
         uses: ./.github/actions/build-desktop
 
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
-    runs-on: ubuntu-latest
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "desktop"
-
   run-e2e-suite-desktop-tests:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
     strategy:
       fail-fast: false
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -76,9 +61,10 @@ jobs:
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "desktop"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           workspace-dependencies: "@trezor/suite-desktop"
           test-group: ${{ matrix.TEST_GROUP }}
+          fail-fast: false
           currents-project-id: "4ytF0E"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
           e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
diff --git a/.github/workflows/test-suite-web-e2e-fw-canary.yml b/.github/workflows/test-suite-web-e2e-fw-canary.yml
index 213f670ce673..2c32ab2523a1 100644
--- a/.github/workflows/test-suite-web-e2e-fw-canary.yml
+++ b/.github/workflows/test-suite-web-e2e-fw-canary.yml
@@ -34,30 +34,15 @@ jobs:
         with:
           deployment-branch-override: "fw-canary-788b960e2c6b5112230ded6129d69538"
 
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
-    runs-on: ubuntu-latest
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "web"
-
   run-e2e-suite-web-tests:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-latest
     needs:
       - build-web
-      - load-e2e-matrix
     strategy:
       fail-fast: false
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      matrix:
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -73,8 +58,9 @@ jobs:
         with:
           project: "web"
           base-url: "https://dev.suite.sldev.cz/suite-web/fw-canary-788b960e2c6b5112230ded6129d69538/web/"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           test-group: ${{ matrix.TEST_GROUP }}
+          fail-fast: false
           additional-grep: "(?!.*@specificFirmware)"
           currents-project-id: "Og0NOQ"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
diff --git a/.github/workflows/test-suite-web-e2e-nightly.yml b/.github/workflows/test-suite-web-e2e-nightly.yml
index e58fe74941f7..021a2e1deed3 100644
--- a/.github/workflows/test-suite-web-e2e-nightly.yml
+++ b/.github/workflows/test-suite-web-e2e-nightly.yml
@@ -32,33 +32,15 @@ jobs:
       - name: Build and Upload Suite Web
         uses: ./.github/actions/build-web
 
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
-    runs-on: ubuntu-latest
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "web"
-          additional-test-groups: |
-            - TEST_GROUP: "@group=migrations"
-              CONTAINERS: "trezor-user-env-unix"
-
   run-e2e-suite-web-tests:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-latest
     needs:
       - build-web
-      - load-e2e-matrix
     strategy:
       fail-fast: false
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      matrix:
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -71,8 +53,9 @@ jobs:
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "web"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           test-group: ${{ matrix.TEST_GROUP }}
+          fail-fast: false
           currents-project-id: "Og0NOQ"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
           currents-tags: "nightly"
diff --git a/.github/workflows/test-suite-web-e2e-pr.yml b/.github/workflows/test-suite-web-e2e-pr.yml
index 4627b4658b78..15b4cb234a65 100644
--- a/.github/workflows/test-suite-web-e2e-pr.yml
+++ b/.github/workflows/test-suite-web-e2e-pr.yml
@@ -46,30 +46,36 @@ env:
   STAGING_SUITE_SERVER_URL: "https://staging-suite.trezor.io"
 
 jobs:
-  build-web:
+  check-previous-runs:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-latest
+    outputs:
+      skip_tests: ${{ steps.check-previous-runs.outputs.skip_tests }}
     steps:
       - name: Checkout
         uses: actions/checkout@v4
+      - name: Check previous runs
+        id: check-previous-runs
+        uses: "./.github/actions/check-previous-test-runs"
+        with:
+          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
+          pr_branch: ${{ github.head_ref }}
+          pr_created: ${{ github.event.pull_request.created_at }}
+          repo: ${{ github.repository }}
+          workflow_name: ${{ github.workflow }}
+          run_attempt: ${{ github.run_attempt }}
 
-      - name: Build and Upload Suite Web
-        uses: ./.github/actions/build-web
-
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
+  build-web:
+    needs:
+      - check-previous-runs
+    if: github.repository == 'trezor/trezor-suite' && needs.check-previous-runs.outputs.skip_tests != 'true'
     runs-on: ubuntu-latest
     steps:
       - name: Checkout
         uses: actions/checkout@v4
-
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "web"
+        
+      - name: Build and Upload Suite Web
+        uses: ./.github/actions/build-web
 
   post-currents-link:
     if: github.repository == 'trezor/trezor-suite' && github.event_name == 'pull_request' && github.event.action == 'opened'
@@ -99,11 +105,12 @@ jobs:
     runs-on: ubuntu-latest
     needs:
       - build-web
-      - load-e2e-matrix
-    continue-on-error: ${{ !matrix.smoke }}
+      - check-previous-runs
     strategy:
-      fail-fast: true
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      fail-fast: false
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
+
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -112,26 +119,14 @@ jobs:
           ref: ${{ github.event.pull_request.head.sha }}
           fetch-depth: 2
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Run Playwright E2E Tests
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "web"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           test-group: ${{ matrix.TEST_GROUP }}
-          additional-grep: ${{ matrix.SMOKE && '(?=.*)' || '(?=.*@webOnly)' }}
+          additional-grep: "(?=.*@webOnly)"
+          fail-fast: 3
           currents-project-id: "Og0NOQ"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
           e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
diff --git a/.github/workflows/test-suite-web-e2e-release.yml b/.github/workflows/test-suite-web-e2e-release.yml
index 5531c81b1ded..af734557390b 100644
--- a/.github/workflows/test-suite-web-e2e-release.yml
+++ b/.github/workflows/test-suite-web-e2e-release.yml
@@ -32,30 +32,15 @@ jobs:
       - name: Build and Upload Suite Web
         uses: ./.github/actions/build-web
 
-  load-e2e-matrix:
-    if: github.repository == 'trezor/trezor-suite'
-    runs-on: ubuntu-latest
-    outputs:
-      matrix: ${{ steps.load-matrix.outputs.matrix }}
-    steps:
-      - name: Checkout
-        uses: actions/checkout@v4
-
-      - name: Load e2e Matrix
-        id: load-matrix
-        uses: ./.github/actions/load-e2e-matrix
-        with:
-          project: "web"
-
   run-e2e-suite-web-tests:
     if: github.repository == 'trezor/trezor-suite'
     runs-on: ubuntu-latest
     needs:
       - build-web
-      - load-e2e-matrix
     strategy:
       fail-fast: false
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      matrix:
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
 
     steps:
       - name: Checkout
@@ -69,8 +54,9 @@ jobs:
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "web"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           test-group: ${{ matrix.TEST_GROUP }}
+          fail-fast: false
           currents-project-id: "Og0NOQ"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
           e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
diff --git a/docs/tests/e2e-ci-diagram.png b/docs/tests/e2e-ci-diagram.png
new file mode 100644
index 000000000000..6876148d07e8
Binary files /dev/null and b/docs/tests/e2e-ci-diagram.png differ
diff --git a/docs/tests/e2e-ci.md b/docs/tests/e2e-ci.md
new file mode 100644
index 000000000000..6f338bff7633
--- /dev/null
+++ b/docs/tests/e2e-ci.md
@@ -0,0 +1,97 @@
+# E2E tests CI pipelines for Trezor Suite web and desktop
+
+Let's have a look at how CI pipelines for E2E tests are set up.
+
+## Test runner + reporting
+
+We are using Playwright in combination with Currents.dev to run and orchestrate our E2E tests. All pipelines mentioned in this document have a desktop and web version. Their flows are identical, the only difference is which version of the app is tested.
+
+### Features
+
+-   Currents reporting - Test reports and very useful statistics are available in https://app.currents.dev/
+-   Currents orchestration - Tests are running in parallel groups and the tests are dynamically distributed to these groups to optimize execution time.
+-   Configurable fail fast - If a given number of tests fails, all the parallel groups are terminated and the rest of the testing is skipped. This is used to save resources and time in case of heavily broken build.
+-   Test retries - The test runner is configured to perform up to two retries (i.e. maximum of 3 runs) to deal with test flakiness
+
+### Note manual workflow reruns and orchestration
+
+Due to the dynamic distribution of tests to the groups, we advise you to always use the option to rerun all jobs and never only the failed ones. That is because the orchestration would have less workers to run the tests and it would cause your test execution to be unnecessarily long.
+
+#### When to use manual reruns
+
+Please use manual workflow rerun in case you've made significant and dangerous changes in subsequent pushes after your tests already passed once and would be skipped.
+
+#### When to NEVER use manual reruns
+
+You should never need to manually rerun tests, because you think the fail is caused by flakiness. This is already solved by the built-in retries and the fail is most likely real and will occur again in the rerun.
+
+## Pull request pipeline
+
+### Description and usage
+
+This is the most commonly triggered pipeline, because it runs as part of each PR verification. It is optimized to save resources, when tests already successfully passed.
+
+### Triggers
+
+-   Open PR
+-   Push to PR
+
+### Flow
+
+This CI pipeline decides whether to build app and run E2E tests following this logic:
+
+#### 🔹 Is First Attempt?
+
+-   **Yes** (e.g. initial run after a push):
+
+    -   **Check Previous Test Runs**:
+        -   ✅ **If a previous successful run exists**:
+            -   🛑 **Skip Build**
+            -   🛑 **Skip Tests**
+        -   ❌ **If no successful run exists (failed or incomplete)**:
+            -   🔄 **Run Build**
+            -   ✅ **Run All Tests**
+
+-   **No** (e.g. a manual rerun of the same workflow run):
+    -   🔄 **Run Build**
+    -   ✅ **Run All Tests**
+
+#### Flowchart representation:
+
+![CI Workflow Diagram](./e2e-ci-diagram.png)
+
+## Nightly and FW canary pipelines
+
+### Description and usage
+
+These pipelines are running nightly scheduled tests on develop branch. The FW canary is using firmware built from main branch to verify the latest build.
+
+### Triggers
+
+-   Cron
+
+### Test runner configuration
+
+-   Fail fast disabled
+
+### Flow
+
+The pipeline always runs all the tests with no additional logic.
+
+## Release pipeline
+
+### Description and usage
+
+This pipeline serves as a release candidate verification.
+
+### Triggers
+
+-   Push to release branch
+
+### Test runner configuration
+
+-   Fail fast disabled
+
+### Flow
+
+The pipeline always runs all the tests with no additional logic.
diff --git a/docs/tests/e2e-playwright-suite.md b/docs/tests/e2e-playwright-suite.md
index 05cb8e4c671f..56d200b0f1a5 100644
--- a/docs/tests/e2e-playwright-suite.md
+++ b/docs/tests/e2e-playwright-suite.md
@@ -55,7 +55,7 @@ _(in case of Linux with X11 support, skip to step 6.)_
 
 1. **To run tests headed (showing UI)** you can add: `--headed`.
 
-1. **To run just one test file** you can do: `yarn workspace @trezor/suite-desktop-core test:e2e smoke/wallet-discovery.test.ts`
+1. **To run just one test file** you can do: `yarn workspace @trezor/suite-desktop-core test:e2e general/wallet-discovery.test.ts`
 
 1. **To run just one test** you can add: `-g "Basic cardano walkthrough"`
 
@@ -92,9 +92,14 @@ At the moment, there are the following tags:
 
 #### @group
 
-Assigning a @group allows test runner to run the groups in parallel on CI. At the moment these groups exist:
+Assigning a @group allows filtering based on logical test category
 
 -   `@group=wallet`
+-   `@group=suite`
+-   `@group=device-management`
+-   `@group=other`
+-   `@group=metadata`
+-   `@group=passphrase`
 -   `@group=settings`
 
 #### @desktopOnly or @webOnly
diff --git a/packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml b/packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
deleted file mode 100644
index 36842802803c..000000000000
--- a/packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-- TEST_GROUP: "@group=smoke"
-  CONTAINERS: "trezor-user-env-unix"
-  SMOKE: true
-- TEST_GROUP: "@group=suite"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=device-management"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=settings"
-  CONTAINERS: "trezor-user-env-unix bitcoin-regtest"
-# - TEST_GROUP: "@group=metadata"
-#   CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=passphrase"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=other"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=wallet"
-  CONTAINERS: "trezor-user-env-unix bitcoin-regtest"
diff --git a/packages/suite-desktop-core/e2e/ci/matrix-base-web.yml b/packages/suite-desktop-core/e2e/ci/matrix-base-web.yml
deleted file mode 100644
index 0249e2367913..000000000000
--- a/packages/suite-desktop-core/e2e/ci/matrix-base-web.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-- TEST_GROUP: "@group=smoke"
-  CONTAINERS: "trezor-user-env-unix"
-  SMOKE: true
-- TEST_GROUP: "@group=suite"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=device-management"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=settings"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=metadata1"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=metadata2"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=other"
-  CONTAINERS: "trezor-user-env-unix"
-- TEST_GROUP: "@group=wallet"
-  CONTAINERS: "trezor-user-env-unix bitcoin-regtest"
diff --git a/packages/suite-desktop-core/e2e/tests/smoke/wallet-discovery.test.ts b/packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
similarity index 90%
rename from packages/suite-desktop-core/e2e/tests/smoke/wallet-discovery.test.ts
rename to packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
index f9dfcffa0231..aaa0abc7b655 100644
--- a/packages/suite-desktop-core/e2e/tests/smoke/wallet-discovery.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
@@ -5,7 +5,7 @@ test.beforeEach(async ({ onboardingPage, dashboardPage }) => {
     await onboardingPage.completeOnboarding();
     await dashboardPage.discoveryShouldFinish();
 });
-test.describe('Wallet discover tests', { tag: ['@group=smoke'] }, () => {
+test.describe('Wallet discover tests', { tag: ['@group=wallet'] }, () => {
     /**
      * Test case:
      * 1. Discover a standard wallet
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts
index 7aacfebff9ca..6f0dd86ef1c8 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts
@@ -4,7 +4,7 @@ import { MetadataProvider } from '../../support/mocks/metadataMock';
 
 // Metadata is by default disabled, this means, that application does not try to generate master key and connect to cloud.
 // Hovering over fields that may be labeled shows "add label" button upon which is clicked, Suite initiates metadata flow
-test.describe('Account metadata', { tag: ['@group=metadata1', '@webOnly'] }, () => {
+test.describe('Account metadata', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.use({ emulatorSetupConf: { mnemonic: 'mnemonic_all' } });
     test.beforeEach(async ({ metadataMock }) => {
         await metadataMock.start(MetadataProvider.DROPBOX);
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts
index 9cfd344299a3..5f87ddd61a83 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts
@@ -3,7 +3,7 @@ import { MetadataProvider } from '../../support/mocks/metadataMock';
 
 const metadataAddress = 'bc1q7e6qu5smalrpgqrx9k2gnf0hgjyref5p36ru2m';
 
-test.describe('Metadata - address labeling', { tag: ['@group=metadata1', '@webOnly'] }, () => {
+test.describe('Metadata - address labeling', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.use({ emulatorSetupConf: { mnemonic: 'mnemonic_all' } });
     test.beforeEach(async ({ metadataMock }) => {
         await metadataMock.start(MetadataProvider.GOOGLE);
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts
index 8401bd23eab7..7d5d6baf3b95 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts
@@ -2,7 +2,7 @@ import { AccountLabelId } from '../../support/enums/accountLabelId';
 import { expect, test } from '../../support/fixtures';
 import { MetadataProvider } from '../../support/mocks/metadataMock';
 
-test.describe('Dropbox API errors', { tag: ['@group=metadata1', '@webOnly'] }, () => {
+test.describe('Dropbox API errors', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.use({
         emulatorSetupConf: { mnemonic: 'mnemonic_all' },
     });
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts
index 39d703300377..7356839d2034 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts
@@ -2,7 +2,7 @@ import { AccountLabelId } from '../../support/enums/accountLabelId';
 import { expect, test } from '../../support/fixtures';
 import { MetadataProvider } from '../../support/mocks/metadataMock';
 
-test.describe('Google API errors', { tag: ['@group=metadata1', '@webOnly'] }, () => {
+test.describe('Google API errors', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.use({
         emulatorSetupConf: { mnemonic: 'mnemonic_all' },
     });
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts
index 0c9810694f2f..7ce46c05a5e1 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts
@@ -15,7 +15,7 @@ const providers = [
     },
 ] as const;
 
-test.describe('Account metadata', { tag: ['@group=metadata1', '@webOnly'] }, () => {
+test.describe('Account metadata', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.use({ emulatorSetupConf: { mnemonic: 'mnemonic_all' } });
 
     providers.forEach(p => {
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts
index d6af24a63585..1a480f86cba1 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts
@@ -4,7 +4,7 @@ import { MetadataProvider } from '../../support/mocks/metadataMock';
 
 test.describe(
     'Metadata - cancel metadata on device',
-    { tag: ['@group=metadata2', '@webOnly'] },
+    { tag: ['@group=metadata', '@webOnly'] },
     () => {
         test.use({
             emulatorSetupConf: {
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts
index 6cd95f7581f8..bda343d3e4f6 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts
@@ -4,7 +4,7 @@ import { OutputLabelId } from '../../support/enums/outputLabelId';
 import { expect, test } from '../../support/fixtures';
 import { MetadataProvider } from '../../support/mocks/metadataMock';
 
-test.describe('Metadata - Output labeling', { tag: ['@group=metadata1', '@webOnly'] }, () => {
+test.describe('Metadata - Output labeling', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.use({ emulatorSetupConf: { mnemonic: 'mnemonic_all' } });
     test.beforeEach(async ({ metadataMock }) => {
         await metadataMock.start(MetadataProvider.DROPBOX);
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts
index 3fde1f760286..deba134bb442 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts
@@ -5,7 +5,7 @@ import { MetadataProvider } from '../../support/mocks/metadataMock';
 //Metadata - In settings, there is enable metadata switch.
 //On enable, it initiates metadata right away (if device already has state).
 //On disable, it throws away all metadata related records from memory.
-test.describe('Remembered device', { tag: ['@group=metadata2', '@webOnly'] }, () => {
+test.describe('Remembered device', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.use({
         emulatorStartConf: { model: 'T2T1', wipe: true },
         emulatorSetupConf: { mnemonic: 'mnemonic_all' },
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts
index a4718a6b436c..20f0574a6905 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts
@@ -4,7 +4,7 @@ import { MetadataProvider } from '../../support/mocks/metadataMock';
 
 test.describe(
     'Metadata - switching between cloud providers',
-    { tag: ['@group=metadata2', '@webOnly'] },
+    { tag: ['@group=metadata', '@webOnly'] },
     () => {
         const dropboxLabel = 'dropbox label';
         const googleLabel = 'google label';
diff --git a/packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts b/packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts
index 0fb5394ce930..4eb18e09dfaf 100644
--- a/packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts
+++ b/packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts
@@ -4,7 +4,7 @@ import { MetadataProvider } from '../../support/mocks/metadataMock';
 const standardWalletIndex = 0;
 const hiddenWalletIndex = 1;
 
-test.describe('Metadata - wallet labeling', { tag: ['@group=metadata2', '@webOnly'] }, () => {
+test.describe('Metadata - wallet labeling', { tag: ['@group=metadata', '@webOnly'] }, () => {
     test.beforeEach(async ({ onboardingPage, dashboardPage, metadataMock }) => {
         await metadataMock.start(MetadataProvider.DROPBOX);
         await onboardingPage.completeOnboarding({ enableViewOnly: true });
diff --git a/packages/suite-desktop-core/package.json b/packages/suite-desktop-core/package.json
index 9b315e74bc92..f34d1e40ef21 100644
--- a/packages/suite-desktop-core/package.json
+++ b/packages/suite-desktop-core/package.json
@@ -11,6 +11,8 @@
         "build:core": "yarn g:rimraf dist && TS_NODE_PROJECT=\"tsconfig.json\" yarn webpack --config ./webpack/core.webpack.config.ts",
         "type-check": "yarn g:tsc --build tsconfig.json",
         "test:unit": "yarn g:jest",
+        "test:orchestrated:e2e:web": "yarn xvfb-maybe -- pwc-p --config=./e2e/playwright.config.ts --project=web",
+        "test:orchestrated:e2e:desktop": "yarn xvfb-maybe -- pwc-p --config=./e2e/playwright.config.ts --project=desktop",
         "test:e2e": "yarn xvfb-maybe -- playwright test --config=./e2e/playwright.config.ts",
         "test:e2e:web": "yarn xvfb-maybe -- playwright test --config=./e2e/playwright.config.ts --project=web",
         "test:e2e:desktop": "yarn xvfb-maybe -- playwright test --config=./e2e/playwright.config.ts --project=desktop",


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (11)</summary><blockquote>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (1)</summary><blockquote>

`36-38`: **Static Matrix Definition and Trailing Spaces**

The e2e nightly workflow now defines a static test matrix with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]`. This streamlines the configuration by removing dynamic matrix loading. However, a YAML linter issue was detected at line 36—please remove any trailing spaces. For example:

```diff
-      fail-fast: false  
+      fail-fast: false
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary><blockquote>

`36-38`: **Static Matrix Configuration and Trailing Spaces**

The release workflow now explicitly defines the test matrix as `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]`, eliminating the dependency on a previous job for matrix generation. Please remove any trailing spaces at line 37 as flagged by YAML lint. For example:

```diff
-      matrix: [1, 2, 3, 4, 5, 6, 7]  
+      matrix: [1, 2, 3, 4, 5, 6, 7]
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary><blockquote>

`37-38`: **Static Test Matrix Definition & Trailing Whitespace**  
The static definition of the `TEST_GROUP` matrix simplifies the configuration and removes the dependency on a dynamically loaded matrix. However, YAMLlint reported trailing spaces on line 37. Please remove any extraneous whitespace for consistency.  
  
```diff
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary><blockquote>

`56-58`: **Fetch Previous Run Data & Trailing Whitespace**  
The new block fetching previous run details using `curl` and `jq` is implemented correctly. However, YAMLlint reports trailing spaces on line 58; please remove them.  
  
```diff
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

---

`66-68`: **Undefined Variable Warning & Trailing Whitespace**  
In the echo message on line 66, the variable `${SUCCESSFUL_JOB_URL}` is referenced but never defined within the script. Consider either removing it or assigning it a proper value based on the previous run data. Also, trailing spaces are reported on line 68; please remove them.  
  
```diff
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 68-68: trailing spaces

(trailing-spaces)

</details>

</details>

---

`80-80`: **Missing New Line at End of File**  
YAMLlint indicates that the file does not end with a newline. Please add a newline at the end of the file to comply with standard conventions.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 80-80: no new line character at the end of file

(new-line-at-end-of-file)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (1)</summary><blockquote>

`117-117`: **Test Command Integration & Trailing Whitespace**  
The updated test command now includes the orchestrated test target and integrates the `fail-fast` parameter correctly. YAMLlint has flagged trailing spaces on this line; please remove them.  

```diff
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 117-117: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (3)</summary><blockquote>

`49-66`: **Add "check-previous-runs" Job for Optimized CI Flow**

A new job has been introduced to check previous test runs and output a `skip_tests` flag. The configuration and inputs (such as `run_attempt` and token) look appropriate. Ensure that the referenced action in `./.github/actions/check-previous-test-runs` correctly implements the expected logic.

---

`76-76`: **Remove Trailing Spaces**

Trailing whitespace detected on this line. Please remove to keep the YAML clean.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

</details>

</details>

---

`111-111`: **Clear Trailing Whitespace**

Trailing spaces have been found on this line. Removing them helps avoid potential YAML parsing issues.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (1)</summary><blockquote>

`94-94`: **Eliminate Trailing Spaces**

A trailing space was detected in this line. It is recommended to remove any extraneous whitespace to avoid YAML formatting issues.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 7422136a1e1e7f357b31108f04ff51defb555047 and 7433995cc091bf0e76ab1fcf63a33276c59aff3d.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `yarn.lock` is excluded by `!**/yarn.lock`, `!**/*.lock`

</details>

<details>
<summary>📒 Files selected for processing (15)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `.github/actions/load-e2e-matrix/action.yml` (0 hunks)
* `.github/actions/run-e2e-tests/action.yml` (4 hunks)
* `.github/workflows/test-suite-desktop-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-pr.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-release.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-pr.yml` (3 hunks)
* `.github/workflows/test-suite-web-e2e-release.yml` (2 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-web.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts` (1 hunks)
* `packages/suite-desktop-core/package.json` (2 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
* packages/suite-desktop-core/e2e/ci/matrix-base-web.yml
* .github/actions/load-e2e-matrix/action.yml

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 68-68: trailing spaces

(trailing-spaces)

---

[error] 80-80: no new line character at the end of file

(new-line-at-end-of-file)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml</summary>

[error] 114-114: trailing spaces

(trailing-spaces)

---

[error] 117-117: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (24)</summary><blockquote>

<details>
<summary>packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts (1)</summary>

`8-8`: **Updated Test Group Tag**

The test suite now uses the tag `@group=wallet` instead of the previous smoke group. This update improves test classification so that wallet-related tests are grouped appropriately. Please verify that downstream configuration and test runners recognize this new tag.

</details>
<details>
<summary>packages/suite-desktop-core/package.json (2)</summary>

`14-15`: **New Orchestrated E2E Test Scripts**

Two new script commands (`test:orchestrated:e2e:web` and `test:orchestrated:e2e:desktop`) have been added. These will invoke Playwright tests in an orchestrated mode using the `xvfb-maybe` wrapper. Verify that these commands integrate properly with the workflows and meet your CI/CD requirements.

---

`53-53`: **Addition of Currents CLI Dependency**

The dev dependency `@currents/cmd` at version `^1.6.9` has been added to support the new currents orchestration. Make sure that this version is compatible with the rest of your toolchain and that any security or compatibility checks are performed.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (1)</summary>

`60-67`: **Consistent Execution Parameters**

The `Run Playwright E2E Tests` step correctly passes `fail-fast: false`, ensuring that all tests run even if some fail. This alignment with the new static matrix approach will help in identifying all issues within a test run.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

63-63: property "containers" is not defined in object type {test_group: number}

(expression)

</details>

</details>

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-fw-canary.yml (2)</summary>

`43-45`: **Static Matrix for Web E2E Tests**

The workflow now uses a static matrix with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]` instead of relying on a dynamic matrix-loading job. This simplification should ease maintenance and reduce the complexity of the orchestration.

---

`63-63`: **Ensuring Non-Interruptive Test Execution**

The addition of `fail-fast: false` in the test runner step ensures that the full suite runs regardless of individual test failures, which is particularly important for canary runs.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary>

`66-67`: **Fail-fast Parameter Alignment**

The `fail-fast: false` parameter in the `Run Playwright E2E Tests` step ensures that test execution isn’t stopped on the first failure, aligning with the overall orchestration approach. This should provide a more comprehensive test result.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary>

`70-70`: **Explicit Fail-Fast Parameter in Test Step**  
The addition of the `fail-fast: false` parameter in the Playwright E2E tests step explicitly controls the failure behavior during test execution. This improvement ensures that tests do not exit on the first failure, aligning with the new orchestration approach.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (2)</summary>

`42-43`: **Static Matrix Configuration for Web E2E Tests**  
Defining a static test matrix with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]` directly within the job reduces unnecessary dependencies. This change makes the workflow easier to read and maintain.

---

`59-59`: **Consistent Fail-Fast Setting in Test Step**  
The explicit inclusion of `fail-fast: false` in the test step parameters ensures that the tests run completely even if some fail, which is consistent with the orchestration strategy.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-nightly.yml (2)</summary>

`42-43`: **Static Matrix Definition and Fail-Fast Strategy**  
The static declaration of the `TEST_GROUP` and the explicit `fail-fast: false` value in the nightly workflow aligns with the updated approach across workflows. These changes simplify the workflow and ensure consistency in test execution.

---

`58-58`: **Explicit Fail-Fast in Web Tests Step**  
Explicitly passing `fail-fast: false` in the test step confirms that the job will not cancel on first failure, which is critical for thorough CI testing.

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (2)</summary>

`19-21`: **New Input Parameter: run_attempt**  
Adding the `run_attempt` input parameter is a useful enhancement that enables the action to differentiate between initial runs and manually re-triggered runs. This is key for correctly determining when to skip tests.

---

`42-46`: **Re-run Detection Logic**  
The conditional block that checks if `RUN_ATTEMPT` is greater than 1 to run only the failed tests is clear and provides a refined control flow for re-runs. Please ensure this behavior is well documented for maintainers.

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (4)</summary>

`19-24`: **New Input Parameter: fail-fast**  
The addition of the `fail-fast` input parameter (with a default of `"false"`) increases the flexibility of the test orchestration. The updated description clearly explains its purpose.

---

`35-37`: **New Input Parameter: currents-api-key**  
Introducing the `currents-api-key` input parameter allows for enhanced reporting capabilities by providing an optional API key for fetching failed tests data. This is a useful addition.

---

`95-97`: **Propagating currents-api-key to Environment**  
Mapping the `currents-api-key` input to the environment variable `CURRENTS_API_KEY` is correctly implemented for downstream usage in the test step.

---

`109-113`: **Conditional Retrieval of Previous Run Results**  
Adding the conditional block that checks `GITHUB_RUN_ATTEMPT` and fetches the previous CI build's results using Currents is a logical improvement. This enables the orchestration to utilize the `--last-failed` flag when applicable. Ensure that the variable `LAST_FAILED_FLAG` is safely empty on first runs.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (2)</summary>

`68-72`: **Integrate Previous Run Check in Build Flow**

The `build-web` job now depends on `check-previous-runs` and conditionally runs only when `skip_tests` is not `'true'`. This change helps optimize CI resources. Please verify that all downstream jobs are consistently handling the new flag.

---

`107-113`: **Refine Test Execution Parameters in E2E Job**

The `run-e2e-suite-web-tests` job now:
- Depends on both `build-web` and `check-previous-runs`
- Uses a static matrix for `TEST_GROUP`
- Passes updated inputs (fixed container list, specific grep filter, and a `fail-fast` threshold of 3)
- Now includes `currents-api-key` as an input

These changes streamline the test orchestration. Please confirm that the static values (for example, in `containers` and `additional-grep`) behave as intended.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (4)</summary>

`32-49`: **Introduce "check-previous-runs" Job in Desktop Workflow**

The new `check-previous-runs` job is added similarly to the web workflow. It outputs the `skip_tests` flag, which is later used to conditionally run tests in subsequent jobs. Ensure the action used (`./.github/actions/check-previous-test-runs`) aligns with both desktop and web CI flows.

---

`51-56`: **Update "build-app" Job to Depend on Previous Run Check**

The `build-app` job now waits for the `check-previous-runs` output and conditionally executes based on `skip_tests`. This integration improves the overall workflow efficiency. Confirm that this condition is functioning as expected in all scenarios.

---

`89-95`: **Enhance "run-e2e-suite-desktop-tests" Job with Updated Dependencies and Strategy**

The `run-e2e-suite-desktop-tests` job now:
- Depends on both `build-app` and `check-previous-runs`
- Has its `fail-fast` option set to false in the matrix strategy
- Uses a static matrix for `TEST_GROUP`

These adjustments ensure that the tests run under controlled failure conditions and that resources are allocated properly.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

---

`117-127`: **Update Test Runner Settings for Desktop E2E Tests**

Within the `Run Playwright E2E Tests` step:
- The `containers` input is now set to a fixed string ("trezor-user-env-unix bitcoin-regtest").
- The `fail-fast` input is explicitly set to 3.
- The `currents-api-key` input has been added.

These changes align the desktop test runner configuration with the updated CI requirements. Please ensure that these static values are suitable across all intended test scenarios.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-08T13:36:24Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>🧹 Nitpick comments (15)</summary><blockquote>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (2)</summary><blockquote>

`36-37`: **Static Matrix Definition and Trailing Spaces Cleanup**

The new static matrix definition using  
```yaml
matrix: 
  TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
```  
clearly simplifies the configuration by eliminating the dependency on the previously removed `load-e2e-matrix` job. However, YAMLlint has flagged a trailing space on line 36—please remove it to ensure clean formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>

---

`66-66`: **Explicit 'fail-fast' Setting in Test Step**

The explicit setting of `fail-fast: false` in the "Run Playwright E2E Tests" step improves clarity by ensuring that all tests run even if one fails. Verify that this behavior meets your expectations for the test suite.

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (2)</summary><blockquote>

`36-38`: **Static Matrix Definition and Formatting Cleanup**

The updated static matrix for `TEST_GROUP` (i.e. `[1, 2, 3, 4, 5, 6, 7]`) is a good simplification. Please ensure that any trailing whitespace (specifically on line 37 as noted by YAMLlint) is removed to maintain consistent formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

---

`70-70`: **'fail-fast' Option in Test Execution**

The addition of `fail-fast: false` in the Playwright E2E test step is explicit and promotes consistent test behavior, ensuring that the test suite does not exit on the first failure. This configuration looks good; please confirm that it aligns with overall testing expectations.

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary><blockquote>

`36-38`: **Static Matrix Definition and Trailing Spaces Notice**

Transitioning to a static matrix using  
```yaml
matrix: 
  TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
```  
is a clear improvement. Please remove the trailing spaces on line 37 (as flagged by YAMLlint) to comply with formatting standards.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-nightly.yml (1)</summary><blockquote>

`42-43`: **Static Matrix Definition Update**

The static matrix configuration  
```yaml
matrix:
  TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
```  
in the strategy is well defined. If any trailing spaces exist on these lines, please remove them to maintain YAML cleanliness.

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (1)</summary><blockquote>

`41-43`: **Static Matrix Definition and Formatting**

The move to a static matrix with  
```yaml
matrix:
  TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
```  
is consistent with changes in the other workflow files. Please double-check and remove any trailing whitespace (e.g., on line 42) to keep the YAML formatted according to best practices.

</blockquote></details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary><blockquote>

`58-58`: **Remove Trailing Spaces**

Trailing spaces detected on this line. Please remove them to adhere to YAML lint guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

---

`68-68`: **Remove Trailing Spaces**

Trailing spaces detected on this line. Please remove them to comply with the style guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 68-68: trailing spaces

(trailing-spaces)

</details>

</details>

---

`80-80`: **Add Newline at End of File**

Ensure the file ends with a newline to meet the required formatting standards.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 80-80: no new line character at the end of file

(new-line-at-end-of-file)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (2)</summary><blockquote>

`108-108`: **Remove Trailing Spaces**

Trailing spaces were detected on this line. Removing them will clear the YAML lint warnings.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 108-108: trailing spaces

(trailing-spaces)

</details>

</details>

---

`111-111`: **Remove Trailing Spaces**

Trailing spaces exist on this line as well; please remove them to meet the formatting guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (2)</summary><blockquote>

`76-76`: **Remove Trailing Spaces**

Trailing spaces are present on this line. Please remove them to comply with YAML lint standards.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

</details>

</details>

---

`111-111`: **Remove Trailing Spaces**

Trailing spaces detected here should be removed to maintain consistency with formatting guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (1)</summary><blockquote>

`94-94`: **Remove Trailing Spaces**

Trailing spaces detected on this line—please remove them to pass YAML lint checks.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 7433995cc091bf0e76ab1fcf63a33276c59aff3d and 52ad9a6fe4752c28ed05d666279c0cea4e4fb7da.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `yarn.lock` is excluded by `!**/yarn.lock`, `!**/*.lock`

</details>

<details>
<summary>📒 Files selected for processing (15)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `.github/actions/load-e2e-matrix/action.yml` (0 hunks)
* `.github/actions/run-e2e-tests/action.yml` (4 hunks)
* `.github/workflows/test-suite-desktop-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-pr.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-release.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-pr.yml` (3 hunks)
* `.github/workflows/test-suite-web-e2e-release.yml` (2 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-web.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts` (1 hunks)
* `packages/suite-desktop-core/package.json` (2 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
* .github/actions/load-e2e-matrix/action.yml
* packages/suite-desktop-core/e2e/ci/matrix-base-web.yml

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (3)</summary>

* packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
* packages/suite-desktop-core/package.json
* .github/workflows/test-suite-web-e2e-fw-canary.yml

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 68-68: trailing spaces

(trailing-spaces)

---

[error] 80-80: no new line character at the end of file

(new-line-at-end-of-file)

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml</summary>

[error] 108-108: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (13)</summary>

* GitHub Check: PR-check   / node-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: PR-check   / web-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: PR-check   / node-override init-api-flaky
* GitHub Check: PR-check   / web-override init-api-flaky
* GitHub Check: build-app
* GitHub Check: build-web
* GitHub Check: build-deploy
* GitHub Check: build-deploy
* GitHub Check: test
* GitHub Check: Setup and Cache Dependencies
* GitHub Check: Analyze with CodeQL (javascript)
* GitHub Check: transport-e2e-test
* GitHub Check: Socket Security: Pull Request Alerts

</details>

<details>
<summary>🔇 Additional comments (15)</summary><blockquote>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary>

`67-67`: **Consistent 'fail-fast' Configuration**

The explicit addition of `fail-fast: false` in the test step ensures that the execution isn’t halted prematurely. This clarity in configuration is appreciated—just verify that it fully aligns with your intended test run behavior.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-nightly.yml (1)</summary>

`58-58`: **Explicit 'fail-fast' Flag in Test Step**

Adding `fail-fast: false` in the "Run Playwright E2E Tests" step amplifies consistency with other workflows. This explicit setup is clear and should ensure that all tests are executed despite early failures.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (1)</summary>

`59-59`: **Consistent 'fail-fast' Setting**

The inclusion of `fail-fast: false` in the test execution step is a good, explicit addition that helps ensure a full test run. This configuration is straightforward and aligns with the overall workflow strategy.

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (2)</summary>

`19-21`: **Include "run_attempt" Input Parameter**

The new `run_attempt` input is clearly documented and follows the same structure as the other required inputs.

---

`40-46`: **Manual Re-run Logic is Clear**

The block that checks if `RUN_ATTEMPT` is greater than 1 effectively distinguishes manually triggered re-runs. This early exit ensures that tests aren’t unnecessarily re-executed.

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (4)</summary>

`18-19`: **Updated "test-group" Description**

Changing the description to "Test group for orchestration" improves clarity regarding its role in the action configuration.

---

`21-24`: **Added "fail-fast" Input Parameter**

The new `fail-fast` parameter allows users to control test cancellation behavior, which adds valuable flexibility. Verify that the downstream logic correctly interprets both numerical values and the `"false"` flag.

---

`35-37`: **Added "currents-api-key" Input Parameter**

Introducing the `currents-api-key` input enhances the action’s configurability for retrieving failed tests from Currents.

---

`95-95`: **Set CURRENTS_API_KEY Environment Variable**

Mapping the `currents-api-key` input to the `CURRENTS_API_KEY` environment variable is correctly implemented. Just ensure that any secrets or API keys provided are properly secured.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (1)</summary>

`49-67`: **Refactor Check Previous Runs Job**

The `check-previous-runs` job is well structured—it fetches previous run data and outputs the `skip_tests` flag for downstream usage. This pattern is consistent and aids in optimizing the test workflow.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (5)</summary>

`32-50`: **Standardized Usage of Check Previous Runs**

The `check-previous-runs` job correctly incorporates the composite action—taking advantage of the new `run_attempt` input and forwarding necessary parameters.

---

`51-59`: **Build-App Job is Appropriately Configured**

The `build-app` job properly depends on the output of the `check-previous-runs` job to decide whether to proceed, ensuring that re-runs are handled as intended.

---

`63-85`: **Post Currents Link Job is Well Defined**

This job leverages `actions/github-script` to post a Currents link, and its implementation is clear and straightforward.

---

`86-127`: **Updated Desktop E2E Tests Job Configuration**

The configuration now uses a static matrix for `TEST_GROUP` and includes updated inputs (like the `fail-fast` value). Ensure that the value `3` for `fail-fast` is aligned with your orchestration strategy across the pipeline.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

---

`127-127`: **Inconsistent Secret Naming for E2E Passphrase**

The secret referenced here is `secrets.E2e_TEST_PASSPHRASE` while elsewhere (and by convention) it appears as `secrets.E2E_TEST_PASSPHRASE`. Verify and align the secret's naming to prevent potential issues.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-08T15:40:14Z
user: login: HajekOndrej
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T17:00:01Z
user: login: coderabbitai[bot]
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-08T17:00:23Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (3)</summary><blockquote>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary><blockquote>

`56-58`: **Fetching Previous Run Data & Trailing Whitespace**  
The GitHub API call using `curl` and subsequent parsing with `jq` is sound. However, static analysis has flagged trailing spaces on line 58. Removing these extra spaces will improve code quality and formatting.  

Apply this diff:
```diff
-        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

---

`66-69`: **Reporting Successful Previous Run & Trailing Whitespace**  
The extraction and echoing of `SUCCESSFUL_JOB_URL` improves transparency by sharing the link to the successful workflow run. Verify that this URL is reliably available when the run concludes successfully. Additionally, static analysis notes trailing whitespace on line 69; please remove it to adhere to best practices.  

Apply this diff:
```diff
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"␣␣
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 69-69: trailing spaces

(trailing-spaces)

</details>

</details>

---

`70-81`: **Posting Skipped Tests Comment & File Newline**  
The step to post a comment when tests are skipped provides valuable feedback to users. One minor issue is the missing newline at the end of the file (as flagged on line 81). Adding a newline at the end will resolve this formatting detail and comply with YAML best practices.  

Apply this diff:
```diff
-          });
\ No newline at end of file
+          });
+        
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 81-81: no new line character at the end of file

(new-line-at-end-of-file)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 52ad9a6fe4752c28ed05d666279c0cea4e4fb7da and b3b3b8c91858bb1623ed86e64d37c58fc3d4932f.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 69-69: trailing spaces

(trailing-spaces)

---

[error] 81-81: no new line character at the end of file

(new-line-at-end-of-file)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (16)</summary>

* GitHub Check: Releases revision Checks
* GitHub Check: Type Checking
* GitHub Check: Unit Tests
* GitHub Check: Linting and formatting
* GitHub Check: Other Checks
* GitHub Check: Build libs for publishing
* GitHub Check: PR-check   / node-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: PR-check   / node-override init-api-flaky
* GitHub Check: PR-check   / web-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: PR-check   / web-override init-api-flaky
* GitHub Check: build-web
* GitHub Check: build-deploy
* GitHub Check: build-deploy
* GitHub Check: transport-e2e-test
* GitHub Check: Analyze with CodeQL (javascript)
* GitHub Check: test

</details>

<details>
<summary>🔇 Additional comments (5)</summary><blockquote>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml (5)</summary>

`19-21`: **Addition of `run_attempt` Input Parameter**  
The new `run_attempt` input is introduced correctly to capture the number of attempts. This enhancement improves control flow for re-run scenarios. Please ensure that all invocations of this action pass a numeric value for `run_attempt`.

---

`34-34`: **Explicit Shell Specification**  
The explicit declaration of `shell: bash` is appropriate and ensures that bash-specific syntax will be executed reliably.

---

`40-41`: **Assignment of RUN_ATTEMPT Variable**  
The line `RUN_ATTEMPT="${{ inputs.run_attempt }}"` properly propagates the input parameter. It would be beneficial to validate that the value is indeed numeric before performing the subsequent numeric comparison.

---

`42-46`: **Handling Manually Triggered Re-run**  
The conditional branch checking if `RUN_ATTEMPT` is greater than 1 is clear and effective. Setting `skip_tests` to false and exiting early for manually triggered re-runs aligns well with the intended orchestration logic.

---

`60-64`: **Conditional Execution Based on Previous Run Conclusion**  
The check for whether a previous run exists or was successful is implemented logically. Emitting a message and setting `skip_tests=false` in this block correctly signals that tests should proceed when conditions are not met.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-08T17:05:13Z
user: login: vdovhanych
body: So we're getting rid of the test matrix and going to the static groups, which you then use to determine which test to run with the pw code? 
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-08T19:55:19Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (13)</summary><blockquote>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (1)</summary><blockquote>

`36-37`: **Replaced dynamic matrix with static test groups.**

Instead of using the output from the removed `load-e2e-matrix` job, the workflow now directly defines a static test matrix with seven test groups. This simplifies the workflow and makes it more maintainable.


There's a trailing space at the end of line 36. Consider removing it:

```diff
-      matrix: 
+      matrix:
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary><blockquote>

`35-38`: **Static Matrix Definition & Trailing Whitespace**

The static matrix definition using a fixed array for `TEST_GROUP` is clear and aligns with the intended simplification. However, note that line 37 contains trailing whitespace (as flagged by YAMLlint). Please remove any unnecessary spaces to maintain clean formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary><blockquote>

`35-38`: **Static Matrix Update with Lint Suggestion**

The refactoring to use a static matrix with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]` is straightforward and removes the dependency on the removed `load-e2e-matrix` job. Similar to the previous file, please remove any trailing whitespace on line 37 to address YAMLlint warnings.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (1)</summary><blockquote>

`40-44`: **Static Matrix Configuration & Formatting**

The static matrix definition for the web e2e tests is correctly set up. Please ensure that any detected trailing whitespace (e.g. on line 43, as noted by YAMLlint) is removed to adhere to style guidelines.

</blockquote></details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (1)</summary><blockquote>

`58-58`: **Address Trailing Whitespace & Missing Newline**

Static analysis has flagged trailing spaces on line 58 and line 69, and a missing newline at the end of the file (line 81). Please clean up these formatting details to conform with YAML style guidelines.  



Also applies to: 69-69, 81-81

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (1)</summary><blockquote>

`108-111`: **Trailing Whitespace in Execution Block**

Trailing spaces have been detected on line 108 and line 111 in the run block. Removing these extraneous spaces will help to maintain a clean YAML file and avoid potential linting issues.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 108-108: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>docs/tests/e2e-ci.md (2)</summary><blockquote>

`2-2`: **Editorial: Consider American English Variant**  
The phrase “Let's have a look” is less common in American English; consider using “Let's take a look” for wider consistency.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[locale-violation] ~2-~2: In American English, “take a look” is more commonly used.
Context: ... for Trezor Suite web and desktop Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

</details>

</details>

---

`15-15`: **Punctuation Improvement: Remove Unnecessary Commas**  
In the sentence “This is the most commonly triggered pipeline, because it runs as part of each PR verification. It is optimized to save resources, when tests already successfully passed,” the commas before “because” and “when” can be removed to improve grammatical correctness.  
For example, change:  
```diff
-This is the most commonly triggered pipeline, because it runs as part of each PR verification. It is optimized to save resources, when tests already successfully passed.
+This is the most commonly triggered pipeline because it runs as part of each PR verification. It is optimized to save resources when tests already successfully passed.
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[formatting] ~15-~15: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~15-~15: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (3)</summary><blockquote>

`107-113`: **Static Matrix and Fail-fast Configuration**  
The static test matrix defined with fixed `TEST_GROUP` values and the `fail-fast: 3` setting provide clarity in test execution.  
Additionally, please address the trailing spaces noted by YAML lint on these lines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

---

`76-76`: **Formatting: Remove Trailing Whitespace**  
Trailing spaces detected on this line. Removing them will help maintain clean YAML formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

</details>

</details>

---

`111-111`: **Formatting: Remove Trailing Whitespace**  
Trailing whitespace detected on this line as well. Please clean up the extra spaces.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (2)</summary><blockquote>

`86-94`: **Matrix Strategy and Fail-fast Setting**  
The revised static matrix for test groups and setting `fail-fast` to false in the strategy section are well aligned with the overall CI improvements. Please ensure that any trailing whitespace (notably on line 94) is removed to maintain formatting standards.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

---

`94-94`: **Formatting: Remove Trailing Whitespace**  
A trailing space has been detected on this line. Removing it will enhance file formatting consistency.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between b3b3b8c91858bb1623ed86e64d37c58fc3d4932f and bd5d16e3b52fa57764aebf889d35b78479d94823.

</details>

<details>
<summary>⛔ Files ignored due to path filters (2)</summary>

* `docs/tests/e2e-ci-diagram.png` is excluded by `!**/*.png`
* `yarn.lock` is excluded by `!**/yarn.lock`, `!**/*.lock`

</details>

<details>
<summary>📒 Files selected for processing (27)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `.github/actions/load-e2e-matrix/action.yml` (0 hunks)
* `.github/actions/run-e2e-tests/action.yml` (4 hunks)
* `.github/workflows/test-suite-desktop-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-pr.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-release.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-pr.yml` (3 hunks)
* `.github/workflows/test-suite-web-e2e-release.yml` (2 hunks)
* `docs/tests/e2e-ci.md` (1 hunks)
* `docs/tests/e2e-playwright-suite.md` (2 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-web.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/package.json` (2 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
* .github/actions/load-e2e-matrix/action.yml
* packages/suite-desktop-core/e2e/ci/matrix-base-web.yml

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (8)</summary>

* packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (4)</summary>

* packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
* packages/suite-desktop-core/package.json
* .github/workflows/test-suite-web-e2e-fw-canary.yml
* .github/workflows/test-suite-web-e2e-nightly.yml

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/tests/e2e-playwright-suite.md</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>
<details>
<summary>docs/tests/e2e-ci.md</summary>

[locale-violation] ~2-~2: In American English, “take a look” is more commonly used.
Context: ... for Trezor Suite web and desktop Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

---

[formatting] ~15-~15: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~15-~15: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

</details>

</details>
<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 69-69: trailing spaces

(trailing-spaces)

---

[error] 81-81: no new line character at the end of file

(new-line-at-end-of-file)

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml</summary>

[error] 108-108: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (12)</summary>

* GitHub Check: run-e2e-suite-web-tests (7)
* GitHub Check: run-e2e-suite-web-tests (6)
* GitHub Check: run-e2e-suite-web-tests (5)
* GitHub Check: run-e2e-suite-web-tests (4)
* GitHub Check: run-e2e-suite-web-tests (3)
* GitHub Check: run-e2e-suite-web-tests (2)
* GitHub Check: run-e2e-suite-web-tests (1)
* GitHub Check: PR-check   / node-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: PR-check   / web-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: build-deploy
* GitHub Check: test
* GitHub Check: Analyze with CodeQL (javascript)

</details>

<details>
<summary>🔇 Additional comments (21)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (3)</summary>

`58-58`: **Test path updated to use the 'general' directory.**

The example for running a single test file now uses `general/wallet-discovery.test.ts` instead of the previously used `smoke/wallet-discovery.test.ts`, indicating a reorganization of test files into more descriptive categories.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

---

`95-95`: **Updated @group tag description for clarity.**

The description now properly explains that the @group tag allows filtering based on logical test categories rather than indicating parallel execution on CI, which is more accurate and aligned with how the tests are organized.

---

`98-102`: **Added new test group categories.**

The new test groups (`suite`, `device-management`, `other`, `metadata`, `passphrase`) have been added to better categorize tests by functionality, which aligns with the changes in test files and workflow configurations.

</details>
<details>
<summary>packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts (1)</summary>

`7-7`: **Updated test group tag for consistency.**

Changed from `@group=metadata2` to `@group=metadata` as part of a broader standardization of test grouping. This aligns with the documentation updates in `e2e-playwright-suite.md`.

</details>
<details>
<summary>packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts (1)</summary>

`7-7`: **Updated test group tag for consistency.**

Changed from `@group=metadata2` to `@group=metadata` to standardize metadata test grouping, which aligns with similar changes in other test files and documentation updates.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (2)</summary>

`32-34`: **Simplified workflow dependencies.**

Removed the dependency on the `load-e2e-matrix` job, only keeping the `build-app` dependency, which streamlines the workflow.

---

`66-66`: **Added fail-fast parameter to test execution.**

The `fail-fast: false` parameter has been added to the test execution step, ensuring all test groups will run even if one fails. This matches the same setting already applied at the strategy level.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary>

`68-70`: **Consistent Fail-fast Strategy**

The addition of an explicit `fail-fast: false` in the E2E test step (line 70) ensures that tests do not terminate prematurely—this change is consistent throughout the workflows. No further action is needed here.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary>

`60-67`: **Fail-fast Option in Test Steps**

The explicit inclusion of `fail-fast: false` in the test step (line 67) is a good reinforcement of the intended behavior. The update ensures consistent failure handling across the workflow.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

64-64: property "containers" is not defined in object type {test_group: number}

(expression)

</details>

</details>

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (1)</summary>

`55-60`: **Test Step Fail-fast Consistency**

The update of the E2E test step to include `fail-fast: false` maintains consistency with the other workflows. This makes the test execution behavior predictable by not aborting on the first failure.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

57-57: property "containers" is not defined in object type {test_group: number}

(expression)

</details>

</details>

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary>

`19-21`: **Introduction of `run_attempt` Input Parameter**

Replacing the older `job_name` parameter with `run_attempt` improves the control flow for handling re-runs. The description clearly explains its purpose and is now a required input.

---

`42-46`: **Conditional Logic for Re-run Handling**

The logic checking if `RUN_ATTEMPT` is greater than 1—thereby treating manually triggered re-runs appropriately—is well implemented. This ensures that tests are not skipped unnecessarily on re-runs.

---

`56-59`: **Fetching Previous Run Conclusion**

The approach to fetch previous workflow runs via the GitHub API and evaluate their success is sound. Just ensure that edge cases (e.g. when the API returns an empty response) are correctly handled, as you already do by checking if `PREVIOUS_RUN_CONCLUSION` is empty or not `"success"`.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (2)</summary>

`18-25`: **Enhanced Input Parameters for Test Orchestration**

The updates to the inputs—including the refined description for `test-group` (now "Test group for orchestration"), and the addition of `fail-fast` and `currents-api-key`—increase the configurability of the action. These changes are well documented.

---

`35-37`: **Addition of `currents-api-key` Input**

Including the `currents-api-key` input (with an optional requirement) is a good enhancement, enabling retrieval of failed tests without impacting workflows that do not use Currents reporting.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (3)</summary>

`49-67`: **New Job Addition: `check-previous-runs`**  
The introduction of the `check-previous-runs` job is well structured. Its use of outputs (i.e. `skip_tests`) to drive conditional downstream execution is clear and aligns with the new CI logic.

---

`69-78`: **Job Dependency and Conditional Execution in `build-web`**  
The `build-web` job now correctly depends on `check-previous-runs` and uses the condition `needs.check-previous-runs.outputs.skip_tests != 'true'` to decide whether to run. This conditional setup appears to align with the intended CI flow—please verify that it behaves as expected when previous runs are successful.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

</details>

</details>

---

`129-132`: **Parameter Addition: `currents-api-key`**  
The inclusion of the `currents-api-key` input in the “Run Playwright E2E Tests” step correctly aligns with the updated orchestration requirements.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (3)</summary>

`32-50`: **New Job Integration: `check-previous-runs` for Desktop Tests**  
The newly added `check-previous-runs` job is correctly implemented. Its output variable (`skip_tests`) is properly exposed for downstream jobs, ensuring that desktop tests can be conditionally skipped.

---

`51-60`: **Conditional Execution in `build-app`**  
The `build-app` job now depends on the `check-previous-runs` job with a condition to run only if `skip_tests` is not `'true'`. This is a clear and effective way to prevent unnecessary builds.

---

`121-127`: **Currents Integration Parameter Consistency**  
The addition of the `currents-api-key` parameter in the “Run Playwright E2E Tests” step ensures uniformity with the web workflow changes and supports proper integration with Currents.dev.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-09T13:21:10Z
user: login: HajekOndrej
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T14:15:28Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (9)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary><blockquote>

`58-58`: **Update Test Command for Single Test File**

The command on line 58 has been updated to use  
`yarn workspace @trezor/suite-desktop-core test:e2e general/wallet-discovery.test.ts`  
which aligns with the new static test matrix and Currents orchestration. This improves consistency with the recent CI and testing strategy updates.

Minor nitpick: Consider varying the sentence openers in the consecutive instruction steps to enhance readability.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary><blockquote>

`58-58`: **Remove Trailing Whitespace**  
Trailing spaces have been detected at the end of line 58. Removing these will help maintain consistent formatting.  


```diff
-        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')␣␣
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

---

`69-69`: **Remove Trailing Whitespace**  
Line 69 contains trailing whitespace. Please remove it to keep the file clean.  


```diff
-    
+ 
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 69-69: trailing spaces

(trailing-spaces)

</details>

</details>

---

`74-74`: **Fix Indentation in Comment Step**  
The `token` parameter on line 74 is indented with 10 spaces, but the expected indentation is 8 spaces. Adjusting this will improve consistency and readability.  


```diff
-          token: ${{ inputs.github_token }}
+        token: ${{ inputs.github_token }}
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

</blockquote></details>
<details>
<summary>docs/tests/e2e-ci.md (5)</summary><blockquote>

`1-4`: **Document Introduction and Title**  
The title and introductory section clearly present the purpose of the document. For stylistic consistency in American English, consider using "take a look" instead of "have a look" on line 3.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

</details>

</details>

---

`19-21`: **Sentence Structure Improvement**  
The sentence on line 20 currently reads:  
> "This is the most commonly triggered pipeline, because it runs as part of each PR verification. It is optimized to save resources, when tests already successfully passed."  
It would read more naturally without the commas:  
> "This is the most commonly triggered pipeline because it runs as part of each PR verification. It is optimized to save resources when tests have already successfully passed."  
Consider rephrasing accordingly.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[formatting] ~20-~20: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~20-~20: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

</details>

</details>

---

`29-29`: **Grammar Improvement: Article Addition**  
On line 29, the phrase "build app" should be updated to "build an app" for grammatical correctness.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~29-~29: You might be missing the article “an” here.
Context: ...is CI pipeline decides whether to build app and run E2E tests following this logic:...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

</details>

</details>

---

`11-11`: **Formatting: Wrap Bare URL**  
The bare URL on line 11 (`https://app.currents.dev/`) could be wrapped in angle brackets or converted to a proper Markdown link (e.g., `[Currents.dev](https://app.currents.dev/)`) to enhance readability and adhere to Markdown best practices.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

11-11: Bare URL used
null

(MD034, no-bare-urls)

</details>

</details>

---

`35-41`: **Markdown List Indentation**  
Several list items between lines 35 and 41 exhibit inconsistent indentation. Adjusting these to conform with Markdown’s indentation guidelines will improve the document’s clarity.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

35-35: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

36-36: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

37-37: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

38-38: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

39-39: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

40-40: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

41-41: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between bd5d16e3b52fa57764aebf889d35b78479d94823 and 1782133ec47f11db88d148846cce6b7a522623eb.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `docs/tests/e2e-ci.md` (1 hunks)
* `docs/tests/e2e-playwright-suite.md` (2 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 69-69: trailing spaces

(trailing-spaces)

---

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>
<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

---

[formatting] ~20-~20: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~20-~20: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

---

[uncategorized] ~29-~29: You might be missing the article “an” here.
Context: ...is CI pipeline decides whether to build app and run E2E tests following this logic:...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

</details>
<details>
<summary>docs/tests/e2e-playwright-suite.md</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

11-11: Bare URL used
null

(MD034, no-bare-urls)

---

35-35: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

36-36: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

37-37: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

38-38: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

39-39: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

40-40: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

41-41: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

44-44: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

45-45: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

47-47: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (17)</summary>

* GitHub Check: Releases revision Checks
* GitHub Check: Linting and formatting
* GitHub Check: Build libs for publishing
* GitHub Check: Other Checks
* GitHub Check: Type Checking
* GitHub Check: Unit Tests
* GitHub Check: PR-check   / node-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: PR-check   / node-override init-api-flaky
* GitHub Check: PR-check   / web-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: PR-check   / web-override init-api-flaky
* GitHub Check: build-deploy
* GitHub Check: build-web
* GitHub Check: transport-e2e-test
* GitHub Check: test
* GitHub Check: connect-web-e2e
* GitHub Check: build-deploy
* GitHub Check: Analyze with CodeQL (javascript)

</details>

<details>
<summary>🔇 Additional comments (3)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary>

`95-103`: **Refine @group Tag Description and Group List**

The updated description now reads:  
"Assigning a @group allows filtering based on logical test category"  
which clearly decouples the tag’s purpose from the notion of parallel execution. Moreover, the revised list of groups—adding `@group=suite`, `@group=device-management`, `@group=other`, `@group=metadata`, and `@group=passphrase` while removing `@group=settings`—appears consistent with the new static test matrix in the workflows.

Please confirm that the removal of `@group=settings` is intentional and that the updated groups fully cover the intended logical categories for filtering.

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (2)</summary>

`19-21`: **Input Parameter Addition: "run_attempt"**  
The new input parameter `run_attempt` is clearly described and appropriately marked as required. This addition aligns well with the updated logic for handling manual reruns.

---

`42-46`: **Rerun Handling Logic**  
The conditional block correctly checks if `RUN_ATTEMPT` is greater than 1 to detect a manual re-run. The early exit with `skip_tests=false` makes the intent clear.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-09T14:20:53Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (7)</summary><blockquote>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary><blockquote>

`56-58`: **Remove Trailing Whitespace**  
A trailing space is detected at the end of line 58. Removing such trailing whitespace helps pass YAML linting and maintains consistency.  
  

*Proposed diff:*  
```diff
-        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

---

`69-69`: **Trailing Whitespace on Output Section**  
There is a trailing whitespace at line 69. Please remove it to comply with YAML style guidelines.  
  

*Proposed diff:*  
```diff
-    
+ 
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 69-69: trailing spaces

(trailing-spaces)

</details>

</details>

---

`73-75`: **Adjust Indentation Under `with`**  
Static analysis indicates that the key `token:` on line 74 is indented too far (10 spaces instead of the expected 8). Adjusting the indentation will improve readability and adhere to YAML formatting expectations.  


*Proposed diff:*  
```diff
-      with:
-          token: ${{ inputs.github_token }}
-          issue-number: ${{ github.event.pull_request.number }}
-          body: |
+      with:
+        token: ${{ inputs.github_token }}
+        issue-number: ${{ github.event.pull_request.number }}
+        body: |
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

</blockquote></details>
<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary><blockquote>

`58-58`: **Review the Sentence Structure for Clarity**  
The instruction for running a single test file is clear. However, static analysis suggests that several consecutive sentences begin similarly. Consider rephrasing to avoid repetitive sentence openings. For example:  
> "To run a specific test file, execute: `yarn workspace @trezor/suite-desktop-core test:e2e general/wallet-discovery.test.ts`"  
This minor linguistic tweak will improve readability.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

</blockquote></details>
<details>
<summary>docs/tests/e2e-ci.md (3)</summary><blockquote>

`3-3`: **Locale Suggestion: Adjust the Phrase "have a look"**  
The phrase on line 3 ("Let's have a look at how CI pipelines for E2E tests are set up.") could be revised for American English style. Consider using "Let's take a look at how CI pipelines for E2E tests are set up."

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

</details>

</details>

---

`20-20`: **Punctuation Adjustment for Improved Readability**  
On line 20, the sentence currently reads:  
> "This is the most commonly triggered pipeline, because it runs as part of each PR verification."  
Removing the comma before "because" will improve clarity.  


*Proposed diff:*  
```diff
-This is the most commonly triggered pipeline, because it runs as part of each PR verification.
+This is the most commonly triggered pipeline because it runs as part of each PR verification.
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[formatting] ~20-~20: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~20-~20: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

</details>

</details>

---

`29-29`: **Article Insertion for Grammatical Consistency**  
The sentence beginning on line 29 would read more naturally by inserting an article. For example, change "CI pipeline decides whether to build app and run E2E tests following this logic:" to "The CI pipeline decides whether to build the app and run E2E tests following this logic:"  

  
*Proposed diff:*  
```diff
-This CI pipeline decides whether to build app and run E2E tests following this logic:
+The CI pipeline decides whether to build the app and run E2E tests following this logic:
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~29-~29: You might be missing the article “an” here.
Context: ...is CI pipeline decides whether to build app and run E2E tests following this logic:...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between bd5d16e3b52fa57764aebf889d35b78479d94823 and 1782133ec47f11db88d148846cce6b7a522623eb.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `docs/tests/e2e-ci.md` (1 hunks)
* `docs/tests/e2e-playwright-suite.md` (2 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 69-69: trailing spaces

(trailing-spaces)

---

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>
<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

---

[formatting] ~20-~20: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~20-~20: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

---

[uncategorized] ~29-~29: You might be missing the article “an” here.
Context: ...is CI pipeline decides whether to build app and run E2E tests following this logic:...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

</details>
<details>
<summary>docs/tests/e2e-playwright-suite.md</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (11)</summary>

* GitHub Check: run-e2e-suite-web-tests (7)
* GitHub Check: run-e2e-suite-web-tests (6)
* GitHub Check: run-e2e-suite-web-tests (5)
* GitHub Check: run-e2e-suite-web-tests (4)
* GitHub Check: run-e2e-suite-web-tests (3)
* GitHub Check: run-e2e-suite-web-tests (2)
* GitHub Check: run-e2e-suite-web-tests (1)
* GitHub Check: PR-check   / node-authorizeCoinjoin cancelCoinjoinAuthorization passphrase unlockPath setBusy checkFirmwareAuthenticity keepSession cancel.test info.test resetDevice-api
* GitHub Check: test
* GitHub Check: build-deploy
* GitHub Check: Analyze with CodeQL (javascript)

</details>

<details>
<summary>🔇 Additional comments (5)</summary><blockquote>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary>

`19-21`: **New Input Parameter: `run_attempt` Added**  
The new input parameter `run_attempt` is correctly added and documented. Please ensure that all related workflows and documentation are updated accordingly.

---

`42-46`: **Manual Re-run Logic is Clear**  
The conditional check for `RUN_ATTEMPT` properly distinguishes manual re-runs (when the value is greater than 1) and sets `skip_tests` to false. This logic is clear and functions as intended.

---

`66-67`: **Handling of Successful Job URL**  
The variable `SUCCESSFUL_JOB_URL` is now properly defined at line 66 and used in the echo statement on line 67. This resolves the earlier issue regarding an undefined variable.

</details>
<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary>

`95-102`: **Updated Test Group Definitions are Clear**  
The updated list of test groups (e.g. `@group=suite`, `@group=device-management`, `@group=other`, `@group=metadata`, and `@group=passphrase`) is well presented. This aligns neatly with the changes made in the CI configuration.

</details>
<details>
<summary>docs/tests/e2e-ci.md (1)</summary>

`1-4`: **New Documentation File for CI Pipelines**  
This new document clearly outlines the CI pipelines for E2E tests in Trezor Suite. The structure and detail provided offer good guidance to the reader.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

</details>

</details>

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-09T14:23:52Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>♻️ Duplicate comments (1)</summary><blockquote>

<details>
<summary>.github/actions/check-previous-test-runs/action.yml (1)</summary><blockquote>

`66-67`: **Review SUCCESSFUL_JOB_URL Usage**  
The script captures `SUCCESSFUL_JOB_URL` to log the previous successful run’s URL. Note that a previous review suggested removing or rephrasing this reference. Since there is an indication that this issue was addressed earlier, kindly verify that this usage now aligns with the desired behavior.

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (12)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary><blockquote>

`56-58`: **Nitpick: Vary Instruction Sentence Starters.**  
LanguageTool flags that several consecutive instructions begin with similar phrasing. Consider rewording or adjusting the numbering (or phrasing) to enhance readability.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (1)</summary><blockquote>

`36-36`: **YAML Formatting: Remove Trailing Spaces.**  
Line 36 includes trailing spaces which might trigger linting errors. Please remove these extra spaces.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary><blockquote>

`36-36`: **YAML Formatting: Remove Trailing Spaces.**  
Trailing spaces appear on line 36; please trim these to maintain clean YAML formatting.

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-fw-canary.yml (1)</summary><blockquote>

`44-45`: **YAML Formatting: Remove Trailing Spaces.**  
Trailing spaces have been identified in the matrix block (lines 44–45). Please remove them to avoid linting issues.

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary><blockquote>

`36-36`: **YAML Formatting: Remove Trailing Spaces.**  
There are trailing spaces on line 36; please remove them to maintain proper YAML formatting.

</blockquote></details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (1)</summary><blockquote>

`56-58`: **Address Trailing Spaces and Indentation Issues**  
Static analysis has flagged trailing spaces (e.g., on line 58 and line 69) and a minor indentation warning. Please remove any extra whitespace and adjust indentations for consistency with YAML style guidelines.  



Also applies to: 69-69

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (1)</summary><blockquote>

`108-108`: **Remove Trailing Whitespaces**  
There are trailing spaces on lines 108 and 111. Please remove these to conform with clean YAML formatting standards.  



Also applies to: 111-111

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 108-108: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>docs/tests/e2e-ci.md (2)</summary><blockquote>

`20-23`: **Stylistic and Terminology Enhancements**  
Consider adopting American English phrasing (for example, using “take a look” instead of “have a look”) and reviewing comma placements (e.g., removing unnecessary commas before clauses such as “because” or “when”) to improve clarity and consistency throughout the document.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[formatting] ~20-~20: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~20-~20: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

</details>

</details>

---

`29-37`: **List Indentation and Formatting**  
Several markdown list items (lines 29–37) have indentation inconsistencies as pointed out by markdownlint. Adjust the spacing to meet expected standards (e.g., consistent 2- or 4-space indents) and remove any trailing punctuation in headings for improved readability.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~29-~29: You might be missing the article “an” here.
Context: ...is CI pipeline decides whether to build app and run E2E tests following this logic:...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

35-35: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

36-36: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

37-37: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (1)</summary><blockquote>

`76-76`: **Fix Trailing Whitespaces**  
Static analysis indicates trailing spaces on line 76 and line 111. Please remove these to adhere to YAML best practices.  



Also applies to: 111-111

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (2)</summary><blockquote>

`32-50`: **Review of the `check-previous-runs` Job**

The new `check-previous-runs` job is well integrated. It uses a custom action to determine whether tests should be skipped based on previous runs. The use of an output (`skip_tests`) makes it straightforward for downstream jobs to decide on execution. One minor point: the condition  
```yaml
if: github.repository == 'trezor/trezor-suite'
```  
limits this job to the main repository—please verify that this is intentional (for example, if you do not plan to run these flows on forks or alternative repositories).

---

`86-129`: **Review of the `run-e2e-suite-desktop-tests` Job**

This job now depends on both `build-app` and `check-previous-runs`, ensuring that testing only proceeds when appropriate. Key points:
- **Matrix Strategy:**  
  The matrix is now defined statically with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]` and sets `fail-fast: false` at the strategy level. This configuration ensures that all test groups run even if one fails, which seems intended given the new orchestration.
- **Test Step Parameters:**  
  The `Run Playwright E2E Tests` step has been updated with new inputs (such as `fail-fast: 3`, `currents-api-key`, etc.). Please confirm that these values align with the expected behavior in your updated test orchestration.
- **YAML Formatting Issue:**  
  A static analysis tool flagged trailing spaces on line 94. It’s recommended to remove these spaces to maintain YAML cleanliness. For example:

  ```diff
  -      fail-fast: false  
  +      fail-fast: false
  ```

Overall, the modifications in this job streamline the test orchestration and provide clearer control over execution flows.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 1782133ec47f11db88d148846cce6b7a522623eb and 94dc3b799b95bf0dcfa8ed542269848e5ab8ae08.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `docs/tests/e2e-ci-diagram.png` is excluded by `!**/*.png`

</details>

<details>
<summary>📒 Files selected for processing (27)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `.github/actions/load-e2e-matrix/action.yml` (0 hunks)
* `.github/actions/run-e2e-tests/action.yml` (4 hunks)
* `.github/workflows/test-suite-desktop-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-pr.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-release.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-pr.yml` (3 hunks)
* `.github/workflows/test-suite-web-e2e-release.yml` (2 hunks)
* `docs/tests/e2e-ci.md` (1 hunks)
* `docs/tests/e2e-playwright-suite.md` (2 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-web.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/package.json` (1 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
* .github/actions/load-e2e-matrix/action.yml
* packages/suite-desktop-core/e2e/ci/matrix-base-web.yml

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (13)</summary>

* packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts
* packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts
* packages/suite-desktop-core/package.json
* .github/workflows/test-suite-web-e2e-nightly.yml

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 69-69: trailing spaces

(trailing-spaces)

---

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml</summary>

[error] 108-108: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>
<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

---

[formatting] ~20-~20: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~20-~20: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

---

[uncategorized] ~29-~29: You might be missing the article “an” here.
Context: ...is CI pipeline decides whether to build app and run E2E tests following this logic:...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

</details>
<details>
<summary>docs/tests/e2e-playwright-suite.md</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

11-11: Bare URL used
null

(MD034, no-bare-urls)

---

35-35: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

36-36: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

37-37: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

38-38: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

39-39: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

40-40: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

41-41: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

44-44: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

45-45: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

47-47: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (4)</summary>

* GitHub Check: Type Checking
* GitHub Check: Linting and formatting
* GitHub Check: build-web
* GitHub Check: Analyze with CodeQL (javascript)

</details>

<details>
<summary>🔇 Additional comments (20)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (2)</summary>

`56-58`: **Update the Single Test File Command.**  
The command on line 58 now references `general/wallet-discovery.test.ts` instead of the previous `smoke/wallet-discovery.test.ts`, which is consistent with the new test categorization.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

---

`95-102`: **Review Updated Test Group Tags.**  
The updated list of test groups (showing `@group=wallet`, `@group=suite`, `@group=device-management`, `@group=other`, `@group=metadata`, and `@group=passphrase`) is now clearly defined. Please verify that the removal of the `@group=settings` tag is intentional.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (1)</summary>

`37-38`: **Static Matrix Definition Update.**  
The matrix is now statically defined with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]`, which simplifies the workflow by removing the dependency on dynamic output.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary>

`37-38`: **Static Matrix Definition Confirmation.**  
The static definition for `TEST_GROUP` with values `[1, 2, 3, 4, 5, 6, 7]` is clearly set and aligns with the new streamlined approach.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-fw-canary.yml (2)</summary>

`44-45`: **Static Matrix Definition Update.**  
The test matrix is now statically defined with the expected TEST_GROUP array. This change effectively eliminates the dependency on the removed dynamic step.

---

`63-63`: **Consistent 'fail-fast' Parameter.**  
The explicit setting of `fail-fast: false` (line 63) is consistent with the overall workflow changes and helps ensure that tests do not abort on the first failure.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (2)</summary>

`37-38`: **Static Matrix Definition Update.**  
The matrix is now provided statically with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]`, which streamlines the CI configuration by removing the earlier dependency on a loaded matrix.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

---

`67-67`: **Consistent 'fail-fast' Setting.**  
The explicit inclusion of `fail-fast: false` in the Playwright E2E test step ensures consistent behavior across the workflow.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (2)</summary>

`42-43`: **Static Matrix Definition for Test Groups**  
The dynamic matrix-loading job has been removed and replaced with a static definition of `TEST_GROUP` spanning from 1 to 7. This simplification improves clarity and maintainability. Please ensure that the hardcoded groups accurately reflect the intended test partitions.

---

`41-42`: **Explicit Fail-Fast Setting**  
The strategy now explicitly sets `fail-fast: false` alongside the matrix definition. This ensures that test groups run independently regardless of failures. Confirm that this behavior is fully aligned with the orchestration goals.

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (2)</summary>

`19-21`: **Addition of `run_attempt` Input Parameter**  
Introducing the `run_attempt` parameter helps distinguish between initial runs and manual re-runs. This is a clear enhancement for controlling test skipping logic.

---

`42-46`: **Conditional Re-run Handling**  
The conditional block that checks if `RUN_ATTEMPT` is greater than 1 is well implemented. It clearly marks a manually triggered re-run and purposely sets `skip_tests` to false. Ensure that this logic is tested with multiple run attempt scenarios.

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (3)</summary>

`18-24`: **Enhanced Input Parameters for Orchestrated Testing**  
The update to the `test-group` input (with the revised description) along with the introduction of the `fail-fast` parameter (allowing a number or false) are excellent improvements that add flexibility to the test orchestration.

---

`35-38`: **Optional Currents API Key Input**  
Adding the `currents-api-key` parameter as optional is a thoughtful enhancement for cases when additional Currents reporting is desired. This aligns well with the overall orchestration improvements.

---

`91-95`: **Mapping of Environment Variables**  
The new mapping of `CURRENTS_API_KEY` based on the input is correctly implemented, ensuring that if provided, it will be available during the run.

</details>
<details>
<summary>docs/tests/e2e-ci.md (1)</summary>

`1-11`: **New Documentation for E2E CI Pipelines**  
The documentation provides a clear and comprehensive overview of the CI pipelines for Trezor Suite’s E2E tests, including the orchestration via Currents.dev. The content is valuable for new contributors and maintenance.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

11-11: Bare URL used
null

(MD034, no-bare-urls)

</details>

</details>

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (3)</summary>

`49-67`: **Integration of the Check-Previous-Runs Job**  
The introduction of the new `check-previous-runs` job streamlines the decision process by checking for previous successful test runs before triggering builds. The inputs (such as `github_token`, `pr_branch`, and `run_attempt`) are correctly passed to the action.

---

`69-72`: **Conditional Build Triggering**  
The updated `build-web` job now depends on the `check-previous-runs` output (`skip_tests`) to decide its execution. This conditional dependency is well implemented; please verify that it covers all intended scenarios where tests should indeed be skipped.

---

`103-113`: **Static Matrix and Test Parameters in E2E Job**  
The `run-e2e-suite-web-tests` job now includes dependencies on both `build-web` and `check-previous-runs`, and utilizes a static matrix for `TEST_GROUP`. Additionally, the inclusion of parameters like `additional-grep`, `fail-fast` (set to 3), and `currents-api-key` is consistent with the overall orchestration update. Ensure that these values (e.g., the fail-fast threshold) are as intended for controlling test execution on failures.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (1)</summary>

`51-60`: **Review of the `build-app` Job**

The `build-app` job now correctly depends on `check-previous-runs` and uses the condition  
```yaml
if: github.repository == 'trezor/trezor-suite' && needs.check-previous-runs.outputs.skip_tests != 'true'
```  
to determine whether to run. This improves clarity and control over when the build should proceed. Just double-check that the output name and condition logic align with your expectations in various scenarios (e.g., branches from forks).

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-09T17:18:16Z
user: login: vdovhanych
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-10T08:00:02Z
user: login: Vere-Grey
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:00:16Z
user: login: Vere-Grey
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:04:26Z
user: login: HajekOndrej
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:29:47Z
user: login: Vere-Grey
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:32:50Z
user: login: Vere-Grey
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:35:49Z
user: login: HajekOndrej
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:37:01Z
user: login: Vere-Grey
body: few suggestions,
one question
and few forgotten non existing matrix variables - that would break nonPR workflows
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:42:43Z
user: login: HajekOndrej
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:42:46Z
user: login: HajekOndrej
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T08:48:49Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 2**

<details>
<summary>♻️ Duplicate comments (3)</summary><blockquote>

<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (3)</summary><blockquote>

`42-43`: **Consistent Static Matrix Configuration**  
The static test matrix (`TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]`) is defined correctly in this workflow. This update removes the dependency on the previously used dynamic matrix.

---

`57-57`: **Static Containers Specification**  
The containers value has been updated to a fixed string (`"trezor-user-env-unix bitcoin-regtest"`), which is consistent with the approach used in other workflows.

---

`59-59`: **Explicit Fail-Fast Option**  
The explicit configuration of `fail-fast: false` in this step guarantees that all tests run to completion—a necessary change per the new CI design.

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (13)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary><blockquote>

`58-58`: **Refine Test File Execution Instruction**  
The instruction on this line uses repetitive phrasing similar to other steps. Consider rewording for variety to improve readability (e.g. "Run a single test file by executing...").  


```diff
-1. **To run just one test file** you can do: `yarn workspace @trezor/suite-desktop-core test:e2e general/wallet-discovery.test.ts`
+1. **To run a single test file**, execute: `yarn workspace @trezor/suite-desktop-core test:e2e general/wallet-discovery.test.ts`
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (1)</summary><blockquote>

`36-37`: **Remove Trailing Spaces**  
Trailing spaces were detected on these lines. Removing extra spaces will improve file readability and help pass YAML linting.  


```diff
-      matrix: 
-        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
+      matrix:
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (1)</summary><blockquote>

`107-107`: **Remove Trailing Spaces**  
Trailing spaces are present on this line. Please remove them to comply with YAML formatting best practices.  


```diff
-        yarn workspace @trezor/suite-desktop-core test:orchestrated:e2e:${{ inputs.project }} --pwc-cancel-after-failures ${{ inputs.fail-fast }} --forbid-only --grep="${{ inputs.additional-grep }}" 
+        yarn workspace @trezor/suite-desktop-core test:orchestrated:e2e:${{ inputs.project }} --pwc-cancel-after-failures ${{ inputs.fail-fast }} --forbid-only --grep="${{ inputs.additional-grep }}"
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 107-107: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary><blockquote>

`58-58`: **Remove Trailing Spaces**  
Trailing spaces detected on this line should be removed for cleaner formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

---

`69-69`: **Remove Trailing Spaces**  
Please remove the extraneous trailing spaces on this line to maintain consistent YAML style.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 69-69: trailing spaces

(trailing-spaces)

</details>

</details>

---

`74-74`: **Correct Indentation**  
The indentation on this line is off (expected 8 spaces but found 10). Please adjust the indentation to ensure YAML consistency.  


```diff
-          token: ${{ inputs.github_token }}
+        token: ${{ inputs.github_token }}
```
*(Adjust the indentation according to the surrounding structure.)*

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary><blockquote>

`37-38`: **Static Matrix Definition & Trailing Spaces**  
The dynamic test matrix dependency has been removed and replaced with a static array, which aligns well with the new orchestration approach. However, YAMLlint has flagged trailing spaces on line 37. Please remove any trailing whitespace to improve consistency and avoid potential YAML parsing issues.  
  
```diff
-      matrix:␣
+      matrix:
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>docs/tests/e2e-ci.md (3)</summary><blockquote>

`1-10`: **Documentation Content & Language Usage**  
The new documentation gives a clear overview of the CI pipelines. Consider using more American English phrasing (for example, change “have a look” to “take a look”) for improved consistency.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

</details>

</details>

---

`17-23`: **Grammar & Style Improvements**  
There are a few language tweaks recommended by static analysis:  
- Replace “less workers” with “fewer workers” on line 17.  
- Consider adding a comma before conjunctions connecting independent clauses (e.g., on line 17 and line 19).  
- Review the phrasing on line 23 regarding the use of commas before “because”.  
These adjustments will enhance the overall readability of the document.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[grammar] ~17-~17: Did you mean “fewer”? The noun “workers” is countable.
Context: ...is because the orchestration would have less workers to run the tests and it would c...

(FEWER_LESS)

---

[uncategorized] ~17-~17: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...would have less workers to run the tests and it would cause your test execution to b...

(COMMA_COMPOUND_SENTENCE)

---

[typographical] ~19-~19: It seems that a comma is missing.
Context: ...ly long.  #### When to use manual reruns Please use manual workflow rerun in case you'v...

(IF_PLEASE_COMMA)

---

[formatting] ~23-~23: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...hould never need to manually rerun tests, because you think the fail is caused by flakine...

(COMMA_BEFORE_BECAUSE)

</details>

</details>

---

`44-56`: **Markdown Formatting Adjustments**  
Markdownlint warnings suggest some unordered list indentation issues (MD007) and a trailing punctuation issue in a heading (MD026). Please adjust the list indentations so they are consistent (e.g., use 2 or 4 spaces as required by your style guide) and remove any unnecessary trailing punctuation in headings.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

44-44: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

45-45: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

46-46: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

47-47: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

48-48: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

49-49: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

50-50: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

53-53: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

54-54: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

56-56: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary><blockquote>

`37-38`: **Static Matrix Definition & Trailing Spaces**  
Similar to the firmware canary workflow, the matrix is now defined statically, which simplifies the CI configuration. YAMLlint reports trailing spaces on line 37—please remove these extra spaces.  

```diff
-      matrix:␣
+      matrix:
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (1)</summary><blockquote>

`76-76`: **Remove Trailing Whitespace**  
A trailing space has been detected on this line. Removing trailing whitespace will help meet YAML linting standards.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (1)</summary><blockquote>

`86-96`: **Static Matrix and Fail-Fast Configuration in Desktop Tests**  
The statically defined matrix and the updated `fail-fast` setting improve clarity and consistency. However, static analysis indicates trailing whitespace on line 94. Removing these spaces will help with YAML lint compliance.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 94dc3b799b95bf0dcfa8ed542269848e5ab8ae08 and 2307442d28dfa11a5359ce675e9789dbf1638235.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `docs/tests/e2e-ci-diagram.png` is excluded by `!**/*.png`

</details>

<details>
<summary>📒 Files selected for processing (27)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `.github/actions/load-e2e-matrix/action.yml` (0 hunks)
* `.github/actions/run-e2e-tests/action.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-pr.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-release.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-pr.yml` (3 hunks)
* `.github/workflows/test-suite-web-e2e-release.yml` (2 hunks)
* `docs/tests/e2e-ci.md` (1 hunks)
* `docs/tests/e2e-playwright-suite.md` (2 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-web.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/package.json` (1 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
* .github/actions/load-e2e-matrix/action.yml
* packages/suite-desktop-core/e2e/ci/matrix-base-web.yml

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (12)</summary>

* packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts
* packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts
* packages/suite-desktop-core/package.json

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 69-69: trailing spaces

(trailing-spaces)

---

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml</summary>

[error] 107-107: trailing spaces

(trailing-spaces)

</details>

</details>
<details>
<summary>🪛 actionlint (1.7.4)</summary>

<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml</summary>

132-132: input "currents-api-key" is not defined in action "Run Playwright E2E Tests" defined at "./.github/actions/run-e2e-tests". available inputs are "additional-grep", "base-url", "containers", "currents-project-id", "currents-record-key", "currents-tags", "e2e-passphrase", "fail-fast", "project", "test-group", "workspace-dependencies"

(action)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml</summary>

127-127: input "currents-api-key" is not defined in action "Run Playwright E2E Tests" defined at "./.github/actions/run-e2e-tests". available inputs are "additional-grep", "base-url", "containers", "currents-project-id", "currents-record-key", "currents-tags", "e2e-passphrase", "fail-fast", "project", "test-group", "workspace-dependencies"

(action)

</details>

</details>
<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

---

[grammar] ~17-~17: Did you mean “fewer”? The noun “workers” is countable.
Context: ...is because the orchestration would have less workers to run the tests and it would c...

(FEWER_LESS)

---

[uncategorized] ~17-~17: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...would have less workers to run the tests and it would cause your test execution to b...

(COMMA_COMPOUND_SENTENCE)

---

[typographical] ~19-~19: It seems that a comma is missing.
Context: ...ly long.  #### When to use manual reruns Please use manual workflow rerun in case you'v...

(IF_PLEASE_COMMA)

---

[formatting] ~23-~23: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...hould never need to manually rerun tests, because you think the fail is caused by flakine...

(COMMA_BEFORE_BECAUSE)

---

[formatting] ~29-~29: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~29-~29: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

---

[uncategorized] ~38-~38: You might be missing the article “an” here.
Context: ...is CI pipeline decides whether to build app and run E2E tests following this logic:...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

</details>
<details>
<summary>docs/tests/e2e-playwright-suite.md</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

11-11: Bare URL used
null

(MD034, no-bare-urls)

---

44-44: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

45-45: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

46-46: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

47-47: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

48-48: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

49-49: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

50-50: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

53-53: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

54-54: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

56-56: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (3)</summary>

* GitHub Check: Type Checking
* GitHub Check: build-web
* GitHub Check: Analyze with CodeQL (javascript)

</details>

<details>
<summary>🔇 Additional comments (15)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary>

`95-102`: **Verify Updated Test Group Listing**  
The updated list of test groups now includes several new categories. Please verify these groups are consistently referenced in other documentation and CI configurations.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-fw-canary.yml (2)</summary>

`44-46`: **Static Test Matrix Defined**  
The static matrix for `TEST_GROUP` is now explicitly defined as `[1, 2, 3, 4, 5, 6, 7]`. Confirm that this set fully covers all intended test groups for the orchestration.

---

`61-64`: **Consistent Fail-Fast Configuration**  
The `fail-fast` option is explicitly set in the run step. Ensure that this configuration aligns with your overall test orchestration strategy.

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (1)</summary>

`19-24`: **Enhanced Input Parameters for Orchestration**  
The updated inputs for `test-group` and the newly added `fail-fast` parameter are clearly described and enhance the action's configurability.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (2)</summary>

`66-66`: **Static Containers Specification**  
The `containers` input is now hard-coded as `"trezor-user-env-unix bitcoin-regtest"`, which is consistent with the new CI orchestration design.

---

`70-70`: **Explicit Fail-Fast Setting**  
The explicit setting of `fail-fast: false` in the test step confirms that the test suite will run to completion even if some tests fail. This matches the intended behavior for reduced flakiness interruptions.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-nightly.yml (2)</summary>

`42-43`: **Static Matrix Setup**  
The static definition of the test matrix (`TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]`) in the strategy section is clear and consistent with the new design. No issues noted here.

---

`57-59`: **Containers & Fail-Fast in E2E Tests**  
The changes specifying a static containers string and explicitly setting `fail-fast: false` within the Playwright E2E test step are correct and mirror the reformatted approach seen elsewhere.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (2)</summary>

`64-64`: **Updated Containers Parameter**  
The updated `containers` input with the static string `"trezor-user-env-unix bitcoin-regtest"` is in line with the new orchestration strategy and looks appropriate.

---

`67-67`: **Fail-Fast Configuration**  
Setting `fail-fast: false` explicitly in the test step ensures that tests are fully executed even if some fail, which matches the revised CI logic.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (3)</summary>

`49-67`: **New Job “check-previous-runs” Setup**  
The newly added job is well structured. It correctly sets an output (`skip_tests`) and uses the custom action to check previous runs. Please ensure that the secret `TREZOR_BOT_TOKEN` has the appropriate permissions for this step.

---

`68-72`: **Conditional Dependency in “build-web” Job**  
The `build-web` job now depends on `check-previous-runs` and applies a conditional check to proceed only when tests should not be skipped. This conditional logic is clear and aligns with the updated orchestration strategy.

---

`110-113`: **Static Matrix Strategy Simplification**  
Defining a static list for `TEST_GROUP` simplifies the configuration and removes the overhead of dynamically loading the test matrix. This change makes the workflow easier to maintain.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (2)</summary>

`32-50`: **Desktop “check-previous-runs” Job Integration**  
The desktop workflow’s `check-previous-runs` job follows a similar and consistent pattern as in the web workflow. It properly outputs `skip_tests` and integrates the custom action. Double-check that the same secret (`TREZOR_BOT_TOKEN`) and parameter names are used consistently.

---

`51-60`: **Dependent “build-app” Job Configuration**  
The `build-app` job now depends on `check-previous-runs` and uses a conditional check to skip the build when necessary. This ensures the test orchestration logic remains consistent across workflows.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-10T09:00:08Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>🧹 Nitpick comments (19)</summary><blockquote>

<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml (1)</summary><blockquote>

`36-38`: **Static Matrix & Trailing Spaces Cleanup**  
The test matrix is now defined statically with  
```
TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
```  
which simplifies the orchestration by removing the dynamic loading dependency. Additionally, trailing spaces were detected on line 36—please remove them to adhere to YAML lint rules.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (1)</summary><blockquote>

`107-107`: **Remove Trailing Spaces**  
Trailing spaces are detected on this line. Please remove them to meet YAML formatting standards.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 107-107: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (3)</summary><blockquote>

`58-58`: **Cleanup: Remove Trailing Spaces**  
Trailing spaces have been detected on this line. Removing them will help maintain consistency with YAML linting guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

</details>

</details>

---

`69-69`: **Cleanup: Remove Trailing Spaces**  
There are trailing spaces on this line. Please remove these extra spaces to adhere to coding style standards.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 69-69: trailing spaces

(trailing-spaces)

</details>

</details>

---

`73-74`: **Fix YAML Indentation in 'with' Block**  
The `token` input on line 74 is indented with 10 spaces instead of the expected 8. Correct the indentation to ensure proper YAML formatting.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary><blockquote>

`36-39`: **Static Matrix Definition & Trailing Spaces Cleanup**  
The job now uses a static matrix with  
```
TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
```  
which removes the dependency on the previously dynamic matrix. Also, ensure any trailing spaces (e.g. on line 37) are removed in accordance with YAML linting policies.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>docs/tests/e2e-ci.md (4)</summary><blockquote>

`3-3`: **Language Choice Suggestion**

Consider using “take a look” instead of “have a look” for a phrasing that is more common in American English.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

</details>

</details>

---

`18-18`: **Grammar Improvement**

The phrase “less workers” should be revised to “fewer workers” since workers are countable. This change will improve the grammatical accuracy of the documentation.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[grammar] ~18-~18: Did you mean “fewer”? The noun “workers” is countable.
Context: ...is because the orchestration would have less workers to run the tests and it would c...

(FEWER_LESS)

---

[uncategorized] ~18-~18: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...would have less workers to run the tests and it would cause your test execution to b...

(COMMA_COMPOUND_SENTENCE)

</details>

</details>

---

`32-32`: **Punctuation Refinement**

In the sentence “It is optimized to save resources, when tests already successfully passed,” consider removing the comma before “when” for a smoother read: “It is optimized to save resources when tests have already passed.”

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[formatting] ~32-~32: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~32-~32: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

</details>

</details>

---

`47-53`: **Markdown List Indentation**

The unordered list items under the “Is First Attempt?” section appear to have inconsistent indentation. Please adjust the indent levels (e.g., using 2 spaces) to comply with markdownlint guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

47-47: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

48-48: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

49-49: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

50-50: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

51-51: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

52-52: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

53-53: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary><blockquote>

`36-38`: **Static Matrix with Minor Formatting Issue**

The static matrix for `TEST_GROUP` is correctly defined; however, there appear to be trailing spaces on line 37. Please remove these extra spaces to comply with YAML lint guidelines.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml (4)</summary><blockquote>

`49-67`: **Validate "check-previous-runs" Job Outputs**

The new `check-previous-runs` job properly invokes the custom action and sets the `skip_tests` output. Please ensure that the custom action (`./.github/actions/check-previous-test-runs`) reliably provides the expected values to downstream jobs.

---

`68-79`: **Review "build-web" Job Configuration and Trailing Whitespace**

The `build-web` job now depends on `check-previous-runs` and uses a clear conditional (`needs.check-previous-runs.outputs.skip_tests != 'true'`) to decide its execution. This effectively streamlines the workflow.  
Please remove any trailing whitespace (notably on line 76 as flagged by YAMLlint) to keep the YAML clean.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

</details>

</details>

---

`80-102`: **Assess "post-currents-link" Job Consistency**

The step to post the Currents URL as a comment is well structured and mirrors the approach in other workflows. Make sure the hardcoded `CURRENTS_PROJECT_ID` value ("Og0NOQ") remains consistent with the broader configuration across jobs.

---

`103-132`: **Verify "run-e2e-suite-web-tests" Matrix and Fail-Fast Settings**

The static matrix strategy with fixed `TEST_GROUP` values simplifies test grouping. However, note that there are two distinct `fail-fast` settings:
- The matrix strategy has `fail-fast: false` (line 110).
- The E2E test step passes `fail-fast: 3` (line 129).  

Ensure that these settings do not conflict (i.e. clarify that the matrix’s `fail-fast` governs the job strategy while the input to the action controls test execution behavior). Also, check for any trailing whitespace on the affected lines (e.g., line 111 as reported by YAMLlint).

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 111-111: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml (4)</summary><blockquote>

`32-50`: **Review "check-previous-runs" in Desktop Workflow**

This job is implemented similar to its web counterpart and correctly outputs `skip_tests` from the custom action. Confirm that the action at `./.github/actions/check-previous-test-runs` behaves consistently for desktop tests as well.

---

`51-62`: **Confirm "build-app" Job Setup and Remove Trailing Whitespace**

The `build-app` job correctly depends on `check-previous-runs` via the condition on `skip_tests`, ensuring tests are skipped when appropriate. Verify that the use of the custom build action (`./.github/actions/build-desktop`) aligns with the intended desktop build flow. Also, clean up any trailing whitespace (for example, on line 60 if present).

---

`63-85`: **Validate "Post Currents link" Job for Desktop**

The “Post Currents link” job is well structured and mirrors the web workflow; it generates a link to the Currents run results correctly. Double-check that the project ID (`4ytF0E`) is the correct identifier for desktop tests.

---

`86-128`: **Review "run-e2e-suite-desktop-tests" Job Configuration**

This job uses a static matrix for test grouping and correctly depends on both `build-app` and `check-previous-runs`. A few points to confirm:
- The runner is set to `ubuntu-24.04` rather than `ubuntu-latest`; ensure this is intentional.
- Similar to the web workflow, the matrix strategy uses `fail-fast: false`, while the test action receives `fail-fast: 3`. Verify that the difference in usage is deliberate and documented.
- Remove any trailing whitespace (e.g., on lines 121 and 124, as per YAMLlint warnings) to avoid linting errors.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 2307442d28dfa11a5359ce675e9789dbf1638235 and e267366b96f1dbd8947a0677412bfa62f30bef92.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `docs/tests/e2e-ci-diagram.png` is excluded by `!**/*.png`

</details>

<details>
<summary>📒 Files selected for processing (27)</summary>

* `.github/actions/check-previous-test-runs/action.yml` (3 hunks)
* `.github/actions/load-e2e-matrix/action.yml` (0 hunks)
* `.github/actions/run-e2e-tests/action.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-pr.yml` (2 hunks)
* `.github/workflows/test-suite-desktop-e2e-release.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-fw-canary.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-nightly.yml` (2 hunks)
* `.github/workflows/test-suite-web-e2e-pr.yml` (3 hunks)
* `.github/workflows/test-suite-web-e2e-release.yml` (2 hunks)
* `docs/tests/e2e-ci.md` (1 hunks)
* `docs/tests/e2e-playwright-suite.md` (2 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/ci/matrix-base-web.yml` (0 hunks)
* `packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts` (1 hunks)
* `packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts` (1 hunks)
* `packages/suite-desktop-core/package.json` (1 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* packages/suite-desktop-core/e2e/ci/matrix-base-desktop.yml
* packages/suite-desktop-core/e2e/ci/matrix-base-web.yml
* .github/actions/load-e2e-matrix/action.yml

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (12)</summary>

* packages/suite-desktop-core/e2e/tests/metadata/dropbox-api-errors.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/output-labeling.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/remembered-device.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/metadata-lifecycle.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/wallet-metadata.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/switching-providers.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/google-api-errors.test.ts
* packages/suite-desktop-core/package.json
* packages/suite-desktop-core/e2e/tests/metadata/interval-fetching.test.ts
* packages/suite-desktop-core/e2e/tests/general/wallet-discovery.test.ts
* packages/suite-desktop-core/e2e/tests/metadata/address-metadata.test.ts

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.github/workflows/test-suite-web-e2e-pr.yml</summary>

[error] 76-76: trailing spaces

(trailing-spaces)

---

[error] 111-111: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-pr.yml</summary>

[error] 94-94: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml</summary>

[error] 58-58: trailing spaces

(trailing-spaces)

---

[error] 69-69: trailing spaces

(trailing-spaces)

---

[warning] 74-74: wrong indentation: expected 8 but found 10

(indentation)

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml</summary>

[error] 107-107: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml</summary>

[error] 37-37: trailing spaces

(trailing-spaces)

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-nightly.yml</summary>

[error] 36-36: trailing spaces

(trailing-spaces)

</details>

</details>
<details>
<summary>🪛 LanguageTool</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

[locale-violation] ~3-~3: In American English, “take a look” is more commonly used.
Context: ...for Trezor Suite web and desktop  Let's have a look at how CI pipelines for E2E tests are s...

(HAVE_A_LOOK)

---

[grammar] ~18-~18: Did you mean “fewer”? The noun “workers” is countable.
Context: ...is because the orchestration would have less workers to run the tests and it would c...

(FEWER_LESS)

---

[uncategorized] ~18-~18: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...would have less workers to run the tests and it would cause your test execution to b...

(COMMA_COMPOUND_SENTENCE)

---

[formatting] ~26-~26: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...hould never need to manually rerun tests, because you think the fail is caused by flakine...

(COMMA_BEFORE_BECAUSE)

---

[formatting] ~32-~32: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... is the most commonly triggered pipeline, because it runs as part of each PR verification...

(COMMA_BEFORE_BECAUSE)

---

[typographical] ~32-~32: Usually, there’s no comma before “when”.
Context: ...ation. It is optimized to save resources, when tests already successfully passed.  ###...

(IF_NO_COMMA)

</details>
<details>
<summary>docs/tests/e2e-playwright-suite.md</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>
<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>docs/tests/e2e-ci.md</summary>

11-11: Bare URL used
null

(MD034, no-bare-urls)

---

47-47: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

48-48: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

49-49: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

50-50: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

51-51: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)

---

52-52: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

53-53: Unordered list indentation
Expected: 6; Actual: 12

(MD007, ul-indent)

---

56-56: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

57-57: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

---

59-59: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (3)</summary>

* GitHub Check: Linting and formatting
* GitHub Check: build-web
* GitHub Check: Analyze with CodeQL (javascript)

</details>

<details>
<summary>🔇 Additional comments (12)</summary><blockquote>

<details>
<summary>docs/tests/e2e-playwright-suite.md (1)</summary>

`58-58`: **Updated Test File Command**  
The command on this line has been updated to run a specific test file using  
```
yarn workspace @trezor/suite-desktop-core test:e2e general/wallet-discovery.test.ts
```  
This change aligns with the new static test group orchestration.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[style] ~58-~58: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ng UI)** you can add: `--headed`.  1. **To run just one test file** you can do: `y...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

</details>

</details>

</details>
<details>
<summary>.github/actions/run-e2e-tests/action.yml (1)</summary>

`18-24`: **Enhanced Input Parameters for Orchestrated Testing**  
The `test-group` input’s description has been updated to "Test group for orchestration" and a new `fail-fast` input parameter has been introduced (defaulting to `"false"`). These improvements add clarity and control to test execution.

</details>
<details>
<summary>.github/actions/check-previous-test-runs/action.yml (2)</summary>

`19-22`: **Introduced 'run_attempt' Input Parameter**  
A new input parameter `run_attempt` has been added to capture the count of run attempts. This update enables the conditional logic that distinguishes manually triggered re-runs from initial ones.

---

`42-46`: **Conditional Rerun Logic**  
The newly added conditional block checks whether `RUN_ATTEMPT` is greater than 1. This correctly distinguishes re-run scenarios and ensures that tests are not unnecessarily repeated when manually re-triggered.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-fw-canary.yml (1)</summary>

`64-70`: **Updated Container & Fail-fast Parameters, Plus Additional Grep**  
The `containers` input has been updated to a fixed value (`"trezor-user-env-unix bitcoin-regtest"`), and the `fail-fast` flag is explicitly set to `false`. The new `additional-grep` parameter now uses the regex  
```
(?!.*@specificFirmware)
```  
to filter out firmware-specific tests. These changes are consistent with the overall shift toward a more static and orchestrated test setup.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-fw-canary.yml (2)</summary>

`44-45`: **Static Matrix Configuration**

The static matrix for `TEST_GROUP` now simplifies the job configuration by removing the dependency on the former `load-e2e-matrix` job. This change improves clarity and consistency with the new orchestration strategy.

---

`61-63`: **Explicit Containers and Fail-Fast Settings**

The `containers` parameter is now set to the static value `"trezor-user-env-unix bitcoin-regtest"` and `fail-fast` is explicitly defined as false. This explicit configuration enhances readability and aligns with our overall workflow simplification.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-nightly.yml (2)</summary>

`42-43`: **Static Test Matrix Configuration**

Defining a static matrix with `TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]` removes the dependency on dynamic outputs and simplifies the workflow. This approach is consistent with our overall refactoring efforts.

---

`56-58`: **Explicit Containers and Fail-Fast Flag**

The explicit setting of `containers` to `"trezor-user-env-unix bitcoin-regtest"` and `fail-fast: false` provides clear configuration, reducing ambiguity in the job’s execution behavior.

</details>
<details>
<summary>.github/workflows/test-suite-desktop-e2e-release.yml (1)</summary>

`64-67`: **Clear Containers and Fail-Fast Settings**

The update where `containers` is set to `"trezor-user-env-unix bitcoin-regtest"` and `fail-fast` is explicitly set to false enhances the clarity of the workflow configuration. This change is consistent with the modifications across similar workflow files.

</details>
<details>
<summary>.github/workflows/test-suite-web-e2e-release.yml (2)</summary>

`42-43`: **Direct Matrix Configuration**

The test matrix is now defined directly with a static `TEST_GROUP` array, eliminating the need for dynamic matrix outputs from a separate job. This refactoring simplifies the job’s configuration.

---

`57-59`: **Updated Containers and Fail-Fast Setting**

The static assignment of `containers` to `"trezor-user-env-unix bitcoin-regtest"` and the clear declaration of `fail-fast: false` improve the consistency and readability of this workflow configuration.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-10T10:23:23Z
user: login: Vere-Grey
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T15:46:30Z

Review comments:
diff_hunk: @@ -46,25 +53,28 @@ runs:
           --jq ".[] | select(.name == \"${WORKFLOW_NAME}\") | .id")
 
         # Fetch previous PR runs
-        PREVIOUS_RUN_JOBS_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
-          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1" | \
-          jq -r '.workflow_runs[] | .jobs_url')
+        PREVIOUS_RUN_RESPONSE=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
+          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1")
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
 
-        if [ -z "${PREVIOUS_RUN_JOBS_URL}" ]; then
-          echo "No previous runs found. Running tests as usual"
+        if [ -z "${PREVIOUS_RUN_CONCLUSION}" ] || [ "${PREVIOUS_RUN_CONCLUSION}" != "success" ]; then
+          echo "No previous runs found or previous run was not successful. Running all tests as usual"
           echo "skip_tests=false" >> $GITHUB_OUTPUT
           exit 0
         fi
 
-        SUCCESSFUL_JOB_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" "${PREVIOUS_RUN_JOBS_URL}" | \
-          jq -r --arg JOB_NAME "${JOB_NAME}" '.jobs[] | select(.name == $JOB_NAME and .conclusion == "success") | .html_url')
-
-        if [ -z "${SUCCESSFUL_JOB_URL}" ]; then
-          echo "No previous successful job found. Running tests as usual"
-          echo "skip_tests=false" >> $GITHUB_OUTPUT
-          exit 0
-        fi
-
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - skipping the rest of the job"
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
path: .github/actions/check-previous-test-runs/action.yml
user: login: coderabbitai[bot]
body: _💡 Verification agent_

<details>
<summary>❓ Verification inconclusive</summary>

**Undefined Variable: SUCCESSFUL_JOB_URL**

The echo statement on this line references `${SUCCESSFUL_JOB_URL}`, but this variable is never defined anywhere in the script. Either remove this reference or initialize it with an appropriate value. Consider applying a diff such as:

```diff
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
+        echo "Previous successful run found. No need to run tests again"
```

---



</details>

**Undefined Variable in GitHub Action File**

The variable `${SUCCESSFUL_JOB_URL}` referenced in the echo statement on line 66 of `.github/actions/check-previous-test-runs/action.yml` is not defined elsewhere in the file (or in the expected inputs). This seems to be an oversight—either the variable should be initialized with a proper value or removed if it isn’t needed.

**Recommendation:**

- **Remove the variable reference:**  
  ```diff
  -        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
  +        echo "Previous successful run found. No need to run tests again"
  ```
- **Or initialize `${SUCCESSFUL_JOB_URL}` appropriately** if its value is required for contextual information.

Please address this issue as it could lead to confusion or unexpected behavior when the action runs.



<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
        echo "Previous successful run found. No need to run tests again"
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated reply by CodeRabbit -->
created_at: 2025-04-08T15:40:13Z
author_association: NONE
diff_hunk: @@ -46,25 +53,28 @@ runs:
           --jq ".[] | select(.name == \"${WORKFLOW_NAME}\") | .id")
 
         # Fetch previous PR runs
-        PREVIOUS_RUN_JOBS_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
-          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1" | \
-          jq -r '.workflow_runs[] | .jobs_url')
+        PREVIOUS_RUN_RESPONSE=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
+          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1")
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
 
-        if [ -z "${PREVIOUS_RUN_JOBS_URL}" ]; then
-          echo "No previous runs found. Running tests as usual"
+        if [ -z "${PREVIOUS_RUN_CONCLUSION}" ] || [ "${PREVIOUS_RUN_CONCLUSION}" != "success" ]; then
+          echo "No previous runs found or previous run was not successful. Running all tests as usual"
           echo "skip_tests=false" >> $GITHUB_OUTPUT
           exit 0
         fi
 
-        SUCCESSFUL_JOB_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" "${PREVIOUS_RUN_JOBS_URL}" | \
-          jq -r --arg JOB_NAME "${JOB_NAME}" '.jobs[] | select(.name == $JOB_NAME and .conclusion == "success") | .html_url')
-
-        if [ -z "${SUCCESSFUL_JOB_URL}" ]; then
-          echo "No previous successful job found. Running tests as usual"
-          echo "skip_tests=false" >> $GITHUB_OUTPUT
-          exit 0
-        fi
-
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - skipping the rest of the job"
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
path: .github/actions/check-previous-test-runs/action.yml
user: login: HajekOndrej
body: Fixed
created_at: 2025-04-08T17:00:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -46,25 +53,28 @@ runs:
           --jq ".[] | select(.name == \"${WORKFLOW_NAME}\") | .id")
 
         # Fetch previous PR runs
-        PREVIOUS_RUN_JOBS_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
-          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1" | \
-          jq -r '.workflow_runs[] | .jobs_url')
+        PREVIOUS_RUN_RESPONSE=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
+          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1")
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
 
-        if [ -z "${PREVIOUS_RUN_JOBS_URL}" ]; then
-          echo "No previous runs found. Running tests as usual"
+        if [ -z "${PREVIOUS_RUN_CONCLUSION}" ] || [ "${PREVIOUS_RUN_CONCLUSION}" != "success" ]; then
+          echo "No previous runs found or previous run was not successful. Running all tests as usual"
           echo "skip_tests=false" >> $GITHUB_OUTPUT
           exit 0
         fi
 
-        SUCCESSFUL_JOB_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" "${PREVIOUS_RUN_JOBS_URL}" | \
-          jq -r --arg JOB_NAME "${JOB_NAME}" '.jobs[] | select(.name == $JOB_NAME and .conclusion == "success") | .html_url')
-
-        if [ -z "${SUCCESSFUL_JOB_URL}" ]; then
-          echo "No previous successful job found. Running tests as usual"
-          echo "skip_tests=false" >> $GITHUB_OUTPUT
-          exit 0
-        fi
-
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - skipping the rest of the job"
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
path: .github/actions/check-previous-test-runs/action.yml
user: login: coderabbitai[bot]
body: @HajekOndrej Thank you for fixing the undefined variable issue. The change should help prevent potential errors when the action runs.

<!-- This is an auto-generated reply by CodeRabbit -->
created_at: 2025-04-08T17:00:22Z
author_association: NONE
diff_hunk: @@ -46,25 +53,29 @@ runs:
           --jq ".[] | select(.name == \"${WORKFLOW_NAME}\") | .id")
 
         # Fetch previous PR runs
-        PREVIOUS_RUN_JOBS_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
-          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1" | \
-          jq -r '.workflow_runs[] | .jobs_url')
+        PREVIOUS_RUN_RESPONSE=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
+          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1")
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
 
-        if [ -z "${PREVIOUS_RUN_JOBS_URL}" ]; then
-          echo "No previous runs found. Running tests as usual"
+        if [ -z "${PREVIOUS_RUN_CONCLUSION}" ] || [ "${PREVIOUS_RUN_CONCLUSION}" != "success" ]; then
+          echo "No previous runs found or previous run was not successful. Running all tests as usual"
           echo "skip_tests=false" >> $GITHUB_OUTPUT
           exit 0
         fi
 
-        SUCCESSFUL_JOB_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" "${PREVIOUS_RUN_JOBS_URL}" | \
-          jq -r --arg JOB_NAME "${JOB_NAME}" '.jobs[] | select(.name == $JOB_NAME and .conclusion == "success") | .html_url')
-
-        if [ -z "${SUCCESSFUL_JOB_URL}" ]; then
-          echo "No previous successful job found. Running tests as usual"
-          echo "skip_tests=false" >> $GITHUB_OUTPUT
-          exit 0
-        fi
-
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - skipping the rest of the job"
+        SUCCESSFUL_JOB_URL=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].html_url')
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
         echo "skip_tests=true" >> $GITHUB_OUTPUT
-      shell: bash
+    
+    - name: Post Skipped tests comment
+      if: ${{ steps.check-previous-runs.outputs.skip_tests == 'true' }}
+      uses: actions/github-script@v7
+      with:
+        github-token: ${{ inputs.github_token }}
+        script: |
+          github.rest.issues.createComment({
+            owner: context.repo.owner,
+            repo: context.repo.repo,
+            issue_number: context.payload.pull_request.number,
+            body: `✅ Previously successful run of **${{ inputs.workflow_name }}** workflow has been found.\n\n⏭️ Skipping tests for this run.\n\n💡 If you are unsure about your latest changes, please rerun the workflow manually.`
+          });
path: .github/actions/check-previous-test-runs/action.yml
user: login: vdovhanych
body: missing new line at the end
created_at: 2025-04-08T19:52:00Z
author_association: MEMBER
diff_hunk: @@ -46,25 +53,29 @@ runs:
           --jq ".[] | select(.name == \"${WORKFLOW_NAME}\") | .id")
 
         # Fetch previous PR runs
-        PREVIOUS_RUN_JOBS_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
-          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1" | \
-          jq -r '.workflow_runs[] | .jobs_url')
+        PREVIOUS_RUN_RESPONSE=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
+          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1")
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
 
-        if [ -z "${PREVIOUS_RUN_JOBS_URL}" ]; then
-          echo "No previous runs found. Running tests as usual"
+        if [ -z "${PREVIOUS_RUN_CONCLUSION}" ] || [ "${PREVIOUS_RUN_CONCLUSION}" != "success" ]; then
+          echo "No previous runs found or previous run was not successful. Running all tests as usual"
           echo "skip_tests=false" >> $GITHUB_OUTPUT
           exit 0
         fi
 
-        SUCCESSFUL_JOB_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" "${PREVIOUS_RUN_JOBS_URL}" | \
-          jq -r --arg JOB_NAME "${JOB_NAME}" '.jobs[] | select(.name == $JOB_NAME and .conclusion == "success") | .html_url')
-
-        if [ -z "${SUCCESSFUL_JOB_URL}" ]; then
-          echo "No previous successful job found. Running tests as usual"
-          echo "skip_tests=false" >> $GITHUB_OUTPUT
-          exit 0
-        fi
-
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - skipping the rest of the job"
+        SUCCESSFUL_JOB_URL=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].html_url')
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
         echo "skip_tests=true" >> $GITHUB_OUTPUT
-      shell: bash
+    
+    - name: Post Skipped tests comment
+      if: ${{ steps.check-previous-runs.outputs.skip_tests == 'true' }}
+      uses: actions/github-script@v7
path: .github/actions/check-previous-test-runs/action.yml
user: login: vdovhanych
body: could be shortened with [this action](https://github.com/peter-evans/create-or-update-comment) just pin it to the latest commit hash of the v4 tag
created_at: 2025-04-08T19:53:15Z
author_association: MEMBER
diff_hunk: @@ -46,25 +53,29 @@ runs:
           --jq ".[] | select(.name == \"${WORKFLOW_NAME}\") | .id")
 
         # Fetch previous PR runs
-        PREVIOUS_RUN_JOBS_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
-          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1" | \
-          jq -r '.workflow_runs[] | .jobs_url')
+        PREVIOUS_RUN_RESPONSE=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" \
+          "https://api.github.com/repos/$REPO/actions/workflows/${WORKFLOW_ID}/runs?event=pull_request&branch=${PR_BRANCH}&created=%3E%3D${PR_CREATED_TIMESTAMP}&status=completed&per_page=1")
+        PREVIOUS_RUN_CONCLUSION=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].conclusion // ""')  
 
-        if [ -z "${PREVIOUS_RUN_JOBS_URL}" ]; then
-          echo "No previous runs found. Running tests as usual"
+        if [ -z "${PREVIOUS_RUN_CONCLUSION}" ] || [ "${PREVIOUS_RUN_CONCLUSION}" != "success" ]; then
+          echo "No previous runs found or previous run was not successful. Running all tests as usual"
           echo "skip_tests=false" >> $GITHUB_OUTPUT
           exit 0
         fi
 
-        SUCCESSFUL_JOB_URL=$(curl -s -H "Authorization: Bearer ${GH_TOKEN}" "${PREVIOUS_RUN_JOBS_URL}" | \
-          jq -r --arg JOB_NAME "${JOB_NAME}" '.jobs[] | select(.name == $JOB_NAME and .conclusion == "success") | .html_url')
-
-        if [ -z "${SUCCESSFUL_JOB_URL}" ]; then
-          echo "No previous successful job found. Running tests as usual"
-          echo "skip_tests=false" >> $GITHUB_OUTPUT
-          exit 0
-        fi
-
-        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - skipping the rest of the job"
+        SUCCESSFUL_JOB_URL=$(echo "$PREVIOUS_RUN_RESPONSE" | jq -r '.workflow_runs[0].html_url')
+        echo "Previous successful job found: ${SUCCESSFUL_JOB_URL} - no need to run tests again"
         echo "skip_tests=true" >> $GITHUB_OUTPUT
-      shell: bash
+    
+    - name: Post Skipped tests comment
+      if: ${{ steps.check-previous-runs.outputs.skip_tests == 'true' }}
+      uses: actions/github-script@v7
path: .github/actions/check-previous-test-runs/action.yml
user: login: HajekOndrej
body: fixed
created_at: 2025-04-09T14:15:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -97,10 +105,10 @@ runs:
         fi
         export BASE_URL
         echo "Using BASE_URL: $BASE_URL"
-
+      
path: .github/actions/run-e2e-tests/action.yml
user: login: vdovhanych
body: whitespaces here
created_at: 2025-04-10T07:53:57Z
author_association: MEMBER
diff_hunk: @@ -28,6 +32,9 @@ inputs:
   currents-record-key:
     description: "Currents record key for reporting"
     required: true
+  currents-api-key:
+    description: "Currents API key for getting failed tests"
+    required: false
path: .github/actions/run-e2e-tests/action.yml
user: login: Vere-Grey
body: Does this still have use ? Or not ? 

I see it is being passed from PR workflows.
created_at: 2025-04-10T08:00:16Z
author_association: CONTRIBUTOR
path: packages/suite-desktop-core/e2e/tests/metadata/account-metadata.test.ts
user: login: Vere-Grey
body: Nice :+1: I would have forgotten
created_at: 2025-04-10T08:04:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -28,6 +32,9 @@ inputs:
   currents-record-key:
     description: "Currents record key for reporting"
     required: true
+  currents-api-key:
+    description: "Currents API key for getting failed tests"
+    required: false
path: .github/actions/run-e2e-tests/action.yml
user: login: HajekOndrej
body: No, I will remove it.
created_at: 2025-04-10T08:29:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -81,55 +88,41 @@ jobs:
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
-    continue-on-error: ${{ !matrix.smoke }}
+      - check-previous-runs
     strategy:
-      fail-fast: true
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      fail-fast: false
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
         with:
           submodules: true
           ref: ${{ github.event.pull_request.head.sha }}
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Setup node
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/setup-node@v4
         with:
           node-version-file: ".nvmrc"
           cache: yarn
 
       - name: Download build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
path: .github/workflows/test-suite-desktop-e2e-pr.yml
user: login: Vere-Grey
body: Shouldn't this be there? + few following?
created_at: 2025-04-10T08:32:50Z
author_association: CONTRIBUTOR
diff_hunk: @@ -81,55 +88,41 @@ jobs:
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
-    continue-on-error: ${{ !matrix.smoke }}
+      - check-previous-runs
     strategy:
-      fail-fast: true
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      fail-fast: false
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
         with:
           submodules: true
           ref: ${{ github.event.pull_request.head.sha }}
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Setup node
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/setup-node@v4
         with:
           node-version-file: ".nvmrc"
           cache: yarn
 
       - name: Download build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/download-artifact@v4
         with:
           name: desktop-app-build-e2e
 
       - name: Extract build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         run: tar -xzf app-build.tar.gz -C ${{ github.workspace }}/packages/suite-desktop
 
       - name: Run Playwright E2E Tests
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "desktop"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
path: .github/workflows/test-suite-desktop-e2e-pr.yml
user: login: Vere-Grey
body: (super optional)  we could get rid of this parameter completely in the run-e2e-tests action. And have it hardcoded I guess. Less lines.
created_at: 2025-04-10T08:35:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -81,55 +88,41 @@ jobs:
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
-    continue-on-error: ${{ !matrix.smoke }}
+      - check-previous-runs
     strategy:
-      fail-fast: true
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      fail-fast: false
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
         with:
           submodules: true
           ref: ${{ github.event.pull_request.head.sha }}
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Setup node
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/setup-node@v4
         with:
           node-version-file: ".nvmrc"
           cache: yarn
 
       - name: Download build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
path: .github/workflows/test-suite-desktop-e2e-pr.yml
user: login: HajekOndrej
body: No that step no longer exist, it's now a job and the skip of the whole test part happens because it's needs are not met due to app not getting build, when the check previous runs job skip_tests is true.
created_at: 2025-04-10T08:37:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -79,6 +64,7 @@ jobs:
           containers: ${{ matrix.CONTAINERS }}
path: .github/workflows/test-suite-desktop-e2e-release.yml
user: login: Vere-Grey
body: forgotten matrix variable. Maybe run repo wide search for matrix string
created_at: 2025-04-10T08:37:53Z
author_association: CONTRIBUTOR
diff_hunk: @@ -75,6 +60,7 @@ jobs:
           base-url: "https://dev.suite.sldev.cz/suite-web/fw-canary-788b960e2c6b5112230ded6129d69538/web/"
           containers: ${{ matrix.CONTAINERS }}
path: .github/workflows/test-suite-web-e2e-fw-canary.yml
user: login: Vere-Grey
body: another here
created_at: 2025-04-10T08:38:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -71,6 +56,7 @@ jobs:
           project: "web"
           containers: ${{ matrix.CONTAINERS }}
path: .github/workflows/test-suite-web-e2e-release.yml
user: login: Vere-Grey
body: another here
created_at: 2025-04-10T08:41:09Z
author_association: CONTRIBUTOR
diff_hunk: @@ -73,6 +55,7 @@ jobs:
           project: "web"
           containers: ${{ matrix.CONTAINERS }}
path: .github/workflows/test-suite-web-e2e-nightly.yml
user: login: Vere-Grey
body: here too, not sure if there more in parts that are not shown in diff
created_at: 2025-04-10T08:41:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -81,55 +88,41 @@ jobs:
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
-    continue-on-error: ${{ !matrix.smoke }}
+      - check-previous-runs
     strategy:
-      fail-fast: true
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      fail-fast: false
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
         with:
           submodules: true
           ref: ${{ github.event.pull_request.head.sha }}
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Setup node
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/setup-node@v4
         with:
           node-version-file: ".nvmrc"
           cache: yarn
 
       - name: Download build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/download-artifact@v4
         with:
           name: desktop-app-build-e2e
 
       - name: Extract build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         run: tar -xzf app-build.tar.gz -C ${{ github.workspace }}/packages/suite-desktop
 
       - name: Run Playwright E2E Tests
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "desktop"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
path: .github/workflows/test-suite-desktop-e2e-pr.yml
user: login: HajekOndrej
body: I guess let's keep it. I don't know if there ever will be a situation where they would be different between web, desktop or any other pipeline, but the input value creates a nice reusable variable in the run-e2e-tests action, so at least it's not getting copy pasted there multiple times.
created_at: 2025-04-10T08:42:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -73,6 +55,7 @@ jobs:
           project: "web"
           containers: ${{ matrix.CONTAINERS }}
path: .github/workflows/test-suite-web-e2e-nightly.yml
user: login: HajekOndrej
body: yep, thanks for this. That would be broken
created_at: 2025-04-10T08:48:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -112,26 +119,15 @@ jobs:
           ref: ${{ github.event.pull_request.head.sha }}
           fetch-depth: 2
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Run Playwright E2E Tests
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "web"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           test-group: ${{ matrix.TEST_GROUP }}
-          additional-grep: ${{ matrix.SMOKE && '(?=.*)' || '(?=.*@webOnly)' }}
+          additional-grep: "(?=.*@webOnly)"
+          fail-fast: 3
           currents-project-id: "Og0NOQ"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
+          currents-api-key: ${{ secrets.CURRENTS_API_KEY }}
           e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
path: .github/workflows/test-suite-web-e2e-pr.yml
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Undefined Input Parameter: `currents-api-key`**  
The `run-e2e-tests` action is receiving an input `currents-api-key`, which is not defined in its input schema. To resolve this, consider either removing this parameter or updating the action’s definition to include it. For example, this diff removes the undefined input:  

```diff
-          currents-api-key: ${{ secrets.CURRENTS_API_KEY }}
```  

Please verify if the API key is intended for use; if so, update the action accordingly.  



<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
          test-group: ${{ matrix.TEST_GROUP }}
          additional-grep: "(?=.*@webOnly)"
          fail-fast: 3
          currents-project-id: "Og0NOQ"
          currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
          e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
`````

</details>

<!-- suggestion_end -->

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

132-132: input "currents-api-key" is not defined in action "Run Playwright E2E Tests" defined at "./.github/actions/run-e2e-tests". available inputs are "additional-grep", "base-url", "containers", "currents-project-id", "currents-record-key", "currents-tags", "e2e-passphrase", "fail-fast", "project", "test-group", "workspace-dependencies"

(action)

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-04-10T09:00:07Z
author_association: NONE
diff_hunk: @@ -81,55 +88,41 @@ jobs:
     runs-on: ubuntu-24.04
     needs:
       - build-app
-      - load-e2e-matrix
-    continue-on-error: ${{ !matrix.smoke }}
+      - check-previous-runs
     strategy:
-      fail-fast: true
-      matrix: ${{ fromJson(needs.load-e2e-matrix.outputs.matrix) }}
+      fail-fast: false
+      matrix: 
+        TEST_GROUP: [1, 2, 3, 4, 5, 6, 7]
     steps:
       - name: Checkout
         uses: actions/checkout@v4
         with:
           submodules: true
           ref: ${{ github.event.pull_request.head.sha }}
 
-      - name: Check previous runs
-        id: check-previous-runs
-        if: github.event_name == 'pull_request' && github.run_attempt == 1
-        uses: "./.github/actions/check-previous-test-runs"
-        with:
-          github_token: ${{ secrets.TREZOR_BOT_TOKEN }}
-          pr_branch: ${{ github.head_ref }}
-          pr_created: ${{ github.event.pull_request.created_at }}
-          repo: ${{ github.repository }}
-          workflow_name: ${{ github.workflow }}
-          job_name: "${{ github.job }} (${{ join(matrix.*, ', ') }})"
-
       - name: Setup node
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/setup-node@v4
         with:
           node-version-file: ".nvmrc"
           cache: yarn
 
       - name: Download build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: actions/download-artifact@v4
         with:
           name: desktop-app-build-e2e
 
       - name: Extract build artifact
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         run: tar -xzf app-build.tar.gz -C ${{ github.workspace }}/packages/suite-desktop
 
       - name: Run Playwright E2E Tests
-        if: steps.check-previous-runs.outputs.skip_tests != 'true'
         uses: ./.github/actions/run-e2e-tests
         with:
           project: "desktop"
-          containers: ${{ matrix.CONTAINERS }}
+          containers: "trezor-user-env-unix bitcoin-regtest"
           workspace-dependencies: "@trezor/suite-desktop"
           test-group: ${{ matrix.TEST_GROUP }}
+          fail-fast: 3
           currents-project-id: "4ytF0E"
           currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
+          currents-api-key: ${{ secrets.CURRENTS_API_KEY }}
           e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
path: .github/workflows/test-suite-desktop-e2e-pr.yml
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Undefined Input Parameter: `currents-api-key` in Desktop Tests**  
Similar to the web workflow, the desktop test step for running Playwright E2E tests includes an input `currents-api-key` that is not defined in the `run-e2e-tests` action. Please either remove this input or update the action so that it officially accepts the parameter. For example:  

```diff
-          currents-api-key: ${{ secrets.CURRENTS_API_KEY }}
```  

This will help avoid potential runtime issues.  



<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
          project: "desktop"
          containers: "trezor-user-env-unix bitcoin-regtest"
          workspace-dependencies: "@trezor/suite-desktop"
          test-group: ${{ matrix.TEST_GROUP }}
          fail-fast: 3
          currents-project-id: "4ytF0E"
          currents-record-key: ${{ secrets.CURRENTS_RECORD_KEY }}
          e2e-passphrase: ${{ secrets.E2E_TEST_PASSPHRASE }}
`````

</details>

<!-- suggestion_end -->

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 actionlint (1.7.4)</summary>

127-127: input "currents-api-key" is not defined in action "Run Playwright E2E Tests" defined at "./.github/actions/run-e2e-tests". available inputs are "additional-grep", "base-url", "containers", "currents-project-id", "currents-record-key", "currents-tags", "e2e-passphrase", "fail-fast", "project", "test-group", "workspace-dependencies"

(action)

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit -->

✅ Addressed in commits b143e38 to e267366
created_at: 2025-04-10T09:00:07Z
author_association: NONE
diff_hunk: @@ -92,9 +92,14 @@ At the moment, there are the following tags:
 
 #### @group
 
-Assigning a @group allows test runner to run the groups in parallel on CI. At the moment these groups exist:
+Assigning a @group allows filtering based on logical test category
 
 -   `@group=wallet`
+-   `@group=suite`
+-   `@group=device-management`
+-   `@group=other`
+-   `@group=metadata`
+-   `@group=passphrase`
path: docs/tests/e2e-playwright-suite.md
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Expanded Test Group Definitions**  
New logical test groups have been introduced: `@group=suite`, `@group=device-management`, `@group=other`, `@group=metadata`, and `@group=passphrase`. This change improves the filtering capabilities for test selection on CI. Please verify that these groups are consistently used across documentation and workflows.

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-04-10T10:23:23Z
author_association: NONE

PR comments:
user: login: trezor-ci
created_at: 2025-04-07T19:20:44Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.

⏭️ Skipping tests for this run.

💡 If you are unsure about your latest changes, please rerun the workflow manually.
author_association: CONTRIBUTOR
user: login: coderabbitai[bot]
created_at: 2025-04-08T13:36:21Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

The changes update multiple GitHub Actions workflows and associated configuration files. The "check previous test runs" action now uses a parameter called `run_attempt` instead of `job_name` and adjusts its logic to conditionally set the `skip_tests` flag based on the run attempt and previous run outcomes. Several workflows across PR, nightly, and release pipelines have had the `load-e2e-matrix` job removed. Instead, the test matrix is now defined statically with fixed `TEST_GROUP` values. The `run-e2e-tests` action has been modified to include new input parameters (`fail-fast` and `currents-api-key`) and updated commands for test execution. Additionally, jobs have been renamed and restructured; for example, a new job `check-previous-runs` has been introduced to manage the flow based on previous test results. Test suite tags have been updated, and new scripts along with a development dependency have been added in the project’s package configuration.

<!-- walkthrough_end -->
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=trezor/trezor-suite&utm_content=17957):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai plan` to trigger planning for file edits and PR creation.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: NONE
user: login: trezor-ci
created_at: 2025-04-08T17:02:06Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.

⏭️ Skipping tests for this run.

💡 If you are unsure about your latest changes, please rerun the workflow manually.
author_association: CONTRIBUTOR
user: login: trezor-ci
created_at: 2025-04-09T13:13:09Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.

⏭️ Skipping tests for this run.

💡 If you are unsure about your latest changes, please rerun the workflow manually.
author_association: CONTRIBUTOR
user: login: HajekOndrej
created_at: 2025-04-09T13:38:39Z
body: > So we're getting rid of the test matrix and going to the static groups, which you then use to determine which test to run with the pw code?

Precisely. It is orchestrated via Currents to optimize the execution times. It helps a lot. 30-50% reduction.
author_association: CONTRIBUTOR
user: login: trezor-ci
created_at: 2025-04-09T14:16:13Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.
⏭️ Skipping tests for this run.
💡 If you are unsure about your latest changes, please rerun the workflow manually.
author_association: CONTRIBUTOR
user: login: trezor-ci
created_at: 2025-04-09T14:16:58Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.
⏭️ Skipping tests for this run.
💡 If you are unsure about your latest changes, please rerun the workflow manually.
author_association: CONTRIBUTOR
user: login: trezor-ci
created_at: 2025-04-09T17:12:06Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.
⏭️ Skipping tests for this run.
💡 If you are unsure about your latest changes, please rerun the workflow manually.
author_association: CONTRIBUTOR
user: login: trezor-ci
created_at: 2025-04-10T08:54:09Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.
⏭️ Skipping tests for this run.
💡 If you are unsure about your latest changes, please rerun the workflow manually. (Use the Re-run all jobs option)
author_association: CONTRIBUTOR
user: login: trezor-ci
created_at: 2025-04-10T10:16:39Z
body: ✅ Previously successful run of **[Test] PR Suite Desktop e2e tests** workflow has been found.
⏭️ Skipping tests for this run.
💡 If you are unsure about your latest changes, please rerun the workflow manually. (Use the Re-run all jobs option)
author_association: CONTRIBUTOR