Repository navigation
Conversation
The lifecycle test opened each prompt right after cancelling the previous one, and SwiftUI drops a sheet presentation while another is dismissing, so the pairing sheet never appeared. The clear helper relied on a Select All menu that the simulator does not show, so it deleted one character and appended the new text to the prefilled message. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pairing prompts open the app-wide HwPairSheet, not the dashboard's own sheet, and it has no cancel button, so the test now swipes it away. The extra tap at the field's corner lost keyboard focus; the normal tap already leaves the cursor at the end of the text. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
@ovitrif handing this one to you as the author of The job now runs on a Namespace Mac (#923) and the emulator and Bridge come up, but two tests still fail, and both need someone who knows the dashboard:
The PR description has the details and the run links. The funding failure in the same test is fixed separately in #923 (101 blocks mined before the emulator starts). To try a change on Namespace before #923 merges, dispatch |
|
Status: the red |
There was a problem hiding this comment.
Verdict:
Findings: No new findings. The existing blockers are documented in the author’s handoff and listed under Out of Scope.
QA for afda99d: iPhone 17 Pro simulator, iOS 26.5.
Test 1: Bridge lifecycle and prompt contracts ⏭️ PIN and passphrase dismiss; the existing pairing blocker prevents the remaining checks.
XCTest passed both new dismissal waits, then stopped at the missing HwPairSheet assertion on line 55. The full case remains unverified.
The pairing blocker has a concrete cause: AppScene.trezorEmulatorTestContent mounts TrezorRootView directly, bypassing MainNavView, which owns the app-wide pairing presenter. The test root needs that presenter before changing the selector can exercise pairing dismissal. Confirmation cancellation and disconnect/forget/reconnect were not reached.
prompts.2x.mp4
Test 2: Address, public key, message and transaction flow ⏭️ The documented text-replacement blocker prevents completing the flow.
After address generation, funding, public-key export and message signing, XCTest failed at line 266: the message was Bitkit Trezor emulator testHello, Trezor!, rather than Bitkit Trezor emulator test. This value was checked through the XCTest field assertion. The helper inserted the new text without clearing the old value.
Signature verification, balance/history/detail and send/broadcast checks were not reached. This reproduces the test-helper issue already documented in the PR; it does not establish a product failure.
wallet.2x.mp4
Test 3: Unavailable Bridge recovery ✅ Carried the author's passing result on identical app and test source.
testBridgeUnavailableShowsRecoverableState passed in the linked automated run. I compared its commit, baf879f, with afda99d: all differences are CI configuration or contributor documentation, so I did not repeat this case.
Both focused XCTest invocations failed at the acknowledged test blockers; their complete end-to-end cases are recorded as unrun. No additional manual journeys were listed.
Reviewed the full PR diff, one file. Pairing/confirmation dismissal and the later lifecycle and transaction checks remain unverified.
Android pair: none linked; this change is specific to iOS XCTest.
Reviewed by gpt-6.1-sol-high via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest
There was a problem hiding this comment.
Verdict:
Findings: No new findings. Both blockers remain as described in the author's handoff and the previous review.
QA for d18b093: iPhone 17 Pro simulator, iOS 26.5; rebuilt this head with the Trezor emulator test configuration.
Test 1: Bridge lifecycle and prompt contracts ⏭️ XCTest confirmed PIN and passphrase dismissal, then stopped at the existing pairing blocker.
testBridgeConnectLifecycleAndPromptContracts failed at BitkitUITests/TrezorBridgeDashboardUITests.swift:55: HwPairSheet never appeared. The emulator test root still mounts TrezorRootView directly, bypassing MainNavView, which owns the pairing presenter.
Pairing dismissal, confirmation cancellation, debug-log controls and disconnect/forget/reconnect were not reached. The complete case remains unrun.
prompts.2x.mp4
Bridge connection and prompt checks, recorded at 2× speed.
Test 2: Address, public key, message and transaction flow ⏭️ XCTest reproduced the existing text-replacement blocker before signature verification.
Address generation, funding, public-key export and signing completed. The assertion at BitkitUITests/TrezorBridgeDashboardUITests.swift:266 read Bitkit Trezor emulator testHello, Trezor! instead of Bitkit Trezor emulator test: clearAndType retained the prefilled suffix.
Valid/tampered signature verification, balance/history/detail, send/sign/broadcast and final log-redaction checks were not reached. The complete case remains unrun; this test-helper failure does not establish an app failure.
wallet.2x.mp4
Address generation through the verification-field assertion, recorded at 2× speed; the exact field value was checked by XCTest.
Test 3: Unavailable Bridge recovery ✅ Scanning an unavailable Bridge displayed the empty state.
testBridgeUnavailableShowsRecoverableState passed at this head, including the TrezorEmptyState assertion. I reran this case because the merge changes app code; no previous pass was carried forward.
recovery.2x.mp4
Unavailable Bridge and empty-state recovery, recorded at 2× speed.
Both incomplete cases stopped at the same acknowledged test blockers as before. No additional journeys or manual tests were listed.
Delta review of afda99d..d18b093: a contiguous merge of master, with no merge-resolution changes and no change to the PR's test file. I rechecked that file, the emulator root, prompt presenters and relevant merged Trezor code. The later lifecycle and transaction behavior listed above remains unverified.
Android twin: none linked or found; this change is specific to iOS XCTest.
Reviewer model: gpt-6.1-sol
Reasoning effort: high
Reviewed by gpt-6.1-sol-high via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest
Blocks #923: its
ai-device-testsTrezor job on the Namespace runner fails on these two tests.This PR is a starting point for fixing
TrezorBridgeDashboardUITestson the Namespace runner. It records what was found, and is handed to the suite's owner to finish.Description
HwPairSheetinstead of the dashboard'sTrezorPairingSheet, because since 02f2dfc (2026-06-22, "hardware suggestion and sheet") a pairing request opens the app-wide pairing sheet fromMainNavView, and that sheet has no cancel button.tapIfExistshelper, which nothing else uses.Out of Scope
BitkitUITests/TrezorBridgeDashboardUITests.swift:testBridgeConnectLifecycleAndPromptContractsstill fails at the pairing step:TrezorTestHook-PairingsetsshowPairingCode, butHwPairSheetdoes not appear over the dashboard within 5 s (line 54).BitkitUITests/TrezorBridgeDashboardUITests.swift:clearAndTypeis still unreliable, because a tap leaves the cursor at the end of the text in some runs and at the start in others, so deleting backwards from the cursor sometimes deletes nothing.Design
N/A — no UI changes.
Preview
N/A — no user-visible changes.
QA Notes
Journeys
N/A — no user-visible behaviour change.
Manual Tests
N/A
Automated Checks
TrezorBridgeDashboardUITests.swift— prompts close before the next one opens; the pairing step targetsHwPairSheetai-device-testswithtrezor-emuon a Namespace runner, with this change on top of ci: move Mac mini jobs to Namespace runners #923, as dispatches from a temporary branch:testBridgeUnavailableShowsRecoverableStatepasses; the two tests above still fail for the reasons in Out of Scope (39399319721)🤖 Generated with Claude Code