What changed, and why it matters
This commit only adjusts automated test scripts for the COLDCARD hardware wallet firmware. It skips one display test on non-Q1 devices, adds small timing delays and a confirmation step in ephemeral seed tests, and updates an expected menu item label. There are no changes to the actual firmware code that runs on the device, so this cannot affect real user security.
No security action needed. Treat as routine test-maintenance commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies three test files under testing/. In test_backup.py, test_backup_long_name_display is gated with is_q1 and skipped on non-Q1 hardware. In test_ephemeral.py, two tests add a 0.5-second sleep before reading a captured story, likely to avoid race conditions in UI automation. In test_hobble.py, the expected menu set is updated to include a version string that differs between Q1 and other models, and test_h_tempseeds adds sleeps and a press_select() to match a new backup-loading confirmation flow. No firmware source is changed.
Changed components
testing/test_backup.pytesting/test_ephemeral.pytesting/test_hobble.pyInspect captured patch +11 / −4
diff --git a/testing/test_backup.py b/testing/test_backup.py
index b1d4594..40eb3cb 100644
--- a/testing/test_backup.py
+++ b/testing/test_backup.py
@@ -817,7 +817,10 @@ def test_exit_dev_backup(tmp, unit_test, goto_home, pick_menu_item, need_keypres
('W'*31) + ".7z",
])
def test_backup_long_name_display(fname, goto_home, pick_menu_item, need_keypress, src_root_dir,
- microsd_path, press_cancel, cap_screen):
+ microsd_path, press_cancel, cap_screen, is_q1):
+ if not is_q1:
+ raise pytest.skip("Only Q")
+
fn = microsd_path(fname)
shutil.copy(f'{src_root_dir}/docs/backup.7z', fn)
diff --git a/testing/test_ephemeral.py b/testing/test_ephemeral.py
index ebb5b35..2c5eb09 100644
--- a/testing/test_ephemeral.py
+++ b/testing/test_ephemeral.py
@@ -1387,8 +1387,8 @@ def test_temporary_from_backup(multisig, backup_system, import_ms_wallet, get_se
word_menu_entry(bk_pw, has_checksum=False)
- title, story = cap_story()
time.sleep(.5)
+ title, story = cap_story()
assert f"[{xfp_str}]" == title
assert "Above is the master fingerprint of the seed stored in the backup." in story
assert f"load backup as temporary seed" in story
@@ -1471,8 +1471,8 @@ def test_temporary_from_backup_usb(backup_system, set_seed_words, cap_story, ver
elif password:
enter_complex(bkpw, apply=False, b39pass=False)
- title, story = cap_story()
time.sleep(.5)
+ title, story = cap_story()
assert f"[{xfp_str}]" == title
assert "Above is the master fingerprint of the seed stored in the backup." in story
assert f"load backup as temporary seed" in story
diff --git a/testing/test_hobble.py b/testing/test_hobble.py
index 9120b76..93e7b55 100644
--- a/testing/test_hobble.py
+++ b/testing/test_hobble.py
@@ -100,7 +100,8 @@ def test_menu_contents(set_hobble, pick_menu_item, cap_menu, en_okeys, en_notes,
'Export Wallet',
'View Identity',
'Paper Wallets',
- 'Destroy Seed' }
+ 'Destroy Seed',
+ f'Show {"Firmware" if is_q1 else "FW"} Version' }
if is_q1 and en_multisig:
adv_expect.add('Teleport Multisig PSBT')
@@ -327,6 +328,9 @@ def test_h_tempseeds(mode, set_hobble, pick_menu_item, cap_menu, settings_set, i
word_menu_entry(pw, has_checksum=False)
+ time.sleep(.1)
+ press_select() # confirm loading of the backup
+ time.sleep(.1)
title, story = cap_story()
assert title == 'FAILED'
assert 'successfully tested recovery' in story
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.