fix(core): use dummy Version in About screen
What changed, and why it matters
This change only affects what version numbers are shown on the device's 'About' screen during automated user-interface tests. When running in the software emulator, real version numbers are replaced with placeholder '0.0.0.0' values so that test snapshots don't have to be updated every time the firmware version changes. There is no security issue here.
No security action needed. This is a test-maintenance commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit modifies core/src/apps/homescreen/device_menu.py so that when utils.EMULATOR is true, both firmware_version and bluetooth_version are set to dummy ‘0.0.0.0’ strings instead of real version values. On real hardware, behavior is unchanged. The accompanying fixtures.json updates are expected hash changes for UI snapshot tests because the displayed text changed. No cryptographic, authentication, or sensitive-data-handling code is touched.
Changed components
core/src/apps/homescreen/device_menu.pytests/ui_tests/fixtures.jsonInspect captured patch +25 / −22
diff --git a/core/src/apps/homescreen/device_menu.py b/core/src/apps/homescreen/device_menu.py
index bd3bb452d..73f0006d7 100644
--- a/core/src/apps/homescreen/device_menu.py
+++ b/core/src/apps/homescreen/device_menu.py
@@ -103,16 +103,19 @@ async def handle_device_menu() -> None:
hostname_map = {e.mac_addr: e for e in paired_cache.load()}
paired_devices = [_get_hostinfo(bond, hostname_map) for bond in bonds]
- if utils.USE_NRF:
+ # versions used in "About" screen, emulator uses dummy versions for fixtures
+ if utils.EMULATOR or not utils.USE_NRF:
+ bluetooth_version = "0.0.0.0"
+ else:
nrf_version = utils.nrf_get_version()
bluetooth_version = (
f"{nrf_version[0]}.{nrf_version[1]}.{nrf_version[2]}.{nrf_version[3]}"
)
+ if utils.EMULATOR:
+ firmware_version = "0.0.0.0"
else:
- bluetooth_version = "0.0.0.0"
+ firmware_version = ".".join(map(str, utils.VERSION))
- # ###
- firmware_version = ".".join(map(str, utils.VERSION))
firmware_type = "Bitcoin-only" if utils.BITCOIN_ONLY else "Universal"
menu_result = await interact(
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index 9cc92873f..831a6be21 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -28870,9 +28870,9 @@
"T3W1_cs_device_menu-test_pin.py::test_pin_remove": "b348da86984ea40c7815a6426f75d6b40ccc7ed3662a01890c954a54e9a1c73a",
"T3W1_cs_device_menu-test_pin.py::test_pin_setup": "495e800e86960b91202ee053c5ea547e002e7c841921675f39101e79fb517804",
"T3W1_cs_device_menu-test_pin.py::test_pin_uninitialized": "987d1c62e6576b9cc24373e00df522efdc9736af978d6032f7d319af8daaef5d",
-"T3W1_cs_device_menu-test_traverse_menu.py::test_traverse_initialized": "8f34950be9cb5089d3fb0b058293a48c02528f4d5784719e099b492ce8e04478",
-"T3W1_cs_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "923349c357764080a6ecf1e06d16257bcfd6b2f6b03726f5948be8b9378b428d",
-"T3W1_cs_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "e4b998fb6b4f82238b009b1bd325fff6b943be8b1f2a642391ce29f8a126824e",
+"T3W1_cs_device_menu-test_traverse_menu.py::test_traverse_initialized": "12fa8a14b8eef88f29757117c1ff8ab26ae778387df429b34ca9fefd2640e554",
+"T3W1_cs_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "eb9e3362321a6d2c14b6c6556adf323a4708d959867adcd7c00cbc07d7fe138e",
+"T3W1_cs_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "77211cb4d0e79c26666cb0e61e94b5817c0911fe019093fcdc365acdcae5fb01",
"T3W1_cs_device_menu-test_wipe_code.py::test_remove_pin_without_removing_wipe_code": "25b3b94c79e56a143ffa24a5168966a29cb1121e27f85b93c13f47f1e12a00c2",
"T3W1_cs_device_menu-test_wipe_code.py::test_wipe_code_cancel_intro": "a535be18ce5776d641e9c579550c3270e26145dc8e29506c336bd73fab729b66",
"T3W1_cs_device_menu-test_wipe_code.py::test_wipe_code_cancel_keyboard": "8e4ee9791fd545bcda724238eaad802a20d343f4f6d3fe455c73277b0bbeb837",
@@ -28974,9 +28974,9 @@
"T3W1_de_device_menu-test_pin.py::test_pin_remove": "1c3fffc20117ca089b3b801ace44aaf9d59938e5736391ae4259fd4683eb4575",
"T3W1_de_device_menu-test_pin.py::test_pin_setup": "a82b38157618e2e43031f8c0fb2f31fc0a609f49b77e84925bbe85c97e6f9612",
"T3W1_de_device_menu-test_pin.py::test_pin_uninitialized": "987d1c62e6576b9cc24373e00df522efdc9736af978d6032f7d319af8daaef5d",
-"T3W1_de_device_menu-test_traverse_menu.py::test_traverse_initialized": "c5d0ece066710e88c915eb06e177c3eef11f25c4bee373322515db152b109386",
-"T3W1_de_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "2554b979c644cbe94dd2d3035c0c19e445383260d2b98debe1b9e4a4311bd772",
-"T3W1_de_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "4ce36a20e35d4465385805453645b93a4e380ee0e75359f9c885010d28371cb4",
+"T3W1_de_device_menu-test_traverse_menu.py::test_traverse_initialized": "8db75d0eedd94cc3ac7aad180bb13e53176dd18dc4177f0bcd3d758468e88cad",
+"T3W1_de_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "d9019882771518985efb5f6d15d7e3e38abde13edc5c6c81bc49d3a9e215dbb5",
+"T3W1_de_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "18b84cb8a94c007fc67708fdd0d87cebfed3317521625a0dedee4c5ea14d88fa",
"T3W1_de_device_menu-test_wipe_code.py::test_remove_pin_without_removing_wipe_code": "7a32febb9f381a4bde3f25c82202f101a9265e6a33607523818b7904be9aed5c",
"T3W1_de_device_menu-test_wipe_code.py::test_wipe_code_cancel_intro": "022c938c0079fe11051bc8f5fb61ebcbad72a588d76b8faedda8e16dc8839956",
"T3W1_de_device_menu-test_wipe_code.py::test_wipe_code_cancel_keyboard": "6c1bdef92f65c60d5a50e01f570045eaf3b01ba1ccb32fcad92e349a755ae4bc",
@@ -29078,9 +29078,9 @@
"T3W1_en_device_menu-test_pin.py::test_pin_remove": "e0ea3e60e921744d9d4d2e5dee24b3ac4daae6e07b24e4b9ebc3766885a3e021",
"T3W1_en_device_menu-test_pin.py::test_pin_setup": "cac36bd7447a9a588c3528f7de2232d508b2b24216d347b607c01440a9e7236b",
"T3W1_en_device_menu-test_pin.py::test_pin_uninitialized": "987d1c62e6576b9cc24373e00df522efdc9736af978d6032f7d319af8daaef5d",
-"T3W1_en_device_menu-test_traverse_menu.py::test_traverse_initialized": "bc118c053ec8aa9947bc296200463ffc006e690cc60369fecdf449effbfe7633",
-"T3W1_en_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "2d37a44bb8733993347beb8523c4e6cc93216bccf9aabc2992ecbc76ab8da17e",
-"T3W1_en_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "84f16bf563ed553a99636c3ab5ccc74db67e4d3bbcb3360a974b2a4a1d6af529",
+"T3W1_en_device_menu-test_traverse_menu.py::test_traverse_initialized": "891e76668bec725fd9653842f809bd1ffd9f406adbaa0f6b01d850a1cca46132",
+"T3W1_en_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "a2c3685927cd1ba52d3732f25aa0ed0a9988d67c8ad0efd931f2f51e91c817d8",
+"T3W1_en_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "276776fa4737fcc077c75d89e53aefa580ba4d8f27beb8c5d344b2f740268fd2",
"T3W1_en_device_menu-test_wipe_code.py::test_remove_pin_without_removing_wipe_code": "38675eeea4d2afedc89e36b561cd003a489e5941bb725277d12bae28ebe0ed29",
"T3W1_en_device_menu-test_wipe_code.py::test_wipe_code_cancel_intro": "ab3eded2501b2a940168e419198aeeef5c6c4ee3011cc94fe254391ae94d73c6",
"T3W1_en_device_menu-test_wipe_code.py::test_wipe_code_cancel_keyboard": "9b462f1707a9231abf3dcb4ffeecab0a864828f9b506668df8733f2047cae433",
@@ -29182,9 +29182,9 @@
"T3W1_es_device_menu-test_pin.py::test_pin_remove": "4b296300fab4b7b78ddb8b5948796053dad44cfce47c4925e981e166a3161d6b",
"T3W1_es_device_menu-test_pin.py::test_pin_setup": "79b470580573fee088541e78639d269e79ce7ec9825bdb10036694c337755284",
"T3W1_es_device_menu-test_pin.py::test_pin_uninitialized": "987d1c62e6576b9cc24373e00df522efdc9736af978d6032f7d319af8daaef5d",
-"T3W1_es_device_menu-test_traverse_menu.py::test_traverse_initialized": "a59b56e2028b738f4ec3e8ace50d9edf9584de1f341c9b5ffa577d1919605aaa",
-"T3W1_es_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "c0be44b550fbaa97e24ce2b6edf043cd8c9fa127e96fb576649c301e1ec7bd81",
-"T3W1_es_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "445cfcd7d5a1f8cf9d4ad3b9f7f3b85d999b32fbaf966c0fe349b1070aa4c80b",
+"T3W1_es_device_menu-test_traverse_menu.py::test_traverse_initialized": "3f583a0af45d0ee05c6d0b87bfa58f90e58796dbd33e5ae78a648df11cfa2c98",
+"T3W1_es_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "641aa6e0e47c100dbcee594fbf1be7d9d24f6d9b0a401853ff12d1b6190956c1",
+"T3W1_es_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "ef489556ff58179af446660c5cd255d57192816cfe66537bf656d44eeedb0d29",
"T3W1_es_device_menu-test_wipe_code.py::test_remove_pin_without_removing_wipe_code": "993d9d48757788cd18a9c52bd8a9c7b103f74bc27a97eb2bed8cd8109c42d91d",
"T3W1_es_device_menu-test_wipe_code.py::test_wipe_code_cancel_intro": "4926efbda039681500363459990a027b3cca5b3eb5dce136b81e8850dfe5838d",
"T3W1_es_device_menu-test_wipe_code.py::test_wipe_code_cancel_keyboard": "41fa50917aa70c0b6c9c5630da9ddadd26aaa30a6fb122260aa5d750b2eeb548",
@@ -29286,9 +29286,9 @@
"T3W1_fr_device_menu-test_pin.py::test_pin_remove": "de2adabce0111de9d85e98cd807188242a5c1a742c40495acfc4b4359c9ce7a3",
"T3W1_fr_device_menu-test_pin.py::test_pin_setup": "a1c0f00bdb953061deeb3243df14a041ce5ae5159c5e3bab0bae20ca4f858369",
"T3W1_fr_device_menu-test_pin.py::test_pin_uninitialized": "987d1c62e6576b9cc24373e00df522efdc9736af978d6032f7d319af8daaef5d",
-"T3W1_fr_device_menu-test_traverse_menu.py::test_traverse_initialized": "b44546e4ffe59739affa10617ea3cc29404c74ff1c839721bd39d6203334e0d5",
-"T3W1_fr_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "7eb78cf8d6792d091894beb3c23df60d47923d14b05b45253c76a1bdeed2cdb8",
-"T3W1_fr_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "e1fb1aaff173bca56125f0304670b86e061e44fe53a4a7a831fcba0b7b68e355",
+"T3W1_fr_device_menu-test_traverse_menu.py::test_traverse_initialized": "f282b37f37ce56bcbce8e6888c869b20f57cdeb165ed93300b2fa9c8f89a078a",
+"T3W1_fr_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "858c0c9ab1527349e29b2bc12a1b0fbd77b9ed564beb043f4a6f9b8caaa3f70e",
+"T3W1_fr_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "fbc10b1d40964afbdc1296b91df3056dc73cdb2d1ac639be161fbcc7ac8e3724",
"T3W1_fr_device_menu-test_wipe_code.py::test_remove_pin_without_removing_wipe_code": "c17f09d41c9b6dec286075bb7b0dbfe18648b62324e8d2fffab94d38d1009b1d",
"T3W1_fr_device_menu-test_wipe_code.py::test_wipe_code_cancel_intro": "5bd25b97a6888a8377c468c7375440868921e736fcaecd0ea9f5d416272427d1",
"T3W1_fr_device_menu-test_wipe_code.py::test_wipe_code_cancel_keyboard": "f5ab925cce26499b7946e927d778b2693d9fd58c9f85890dc280018567dbb289",
@@ -29390,9 +29390,9 @@
"T3W1_pt_device_menu-test_pin.py::test_pin_remove": "04a4fdd603ee10a7bc59e68cef07b981dfb5101a5152d8e44f53bee91c4d02b9",
"T3W1_pt_device_menu-test_pin.py::test_pin_setup": "1cb3365954ebf0b34270595824e4fdb02a680db0ea71a51ee1ed00a24d19b10b",
"T3W1_pt_device_menu-test_pin.py::test_pin_uninitialized": "987d1c62e6576b9cc24373e00df522efdc9736af978d6032f7d319af8daaef5d",
-"T3W1_pt_device_menu-test_traverse_menu.py::test_traverse_initialized": "2b739d36a090d662b588b6ed88ecdd66b2e7b9a23ce7c4b3468b7039eab5a5d2",
-"T3W1_pt_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "21e728222c7b503670766e5982658996d66ed54ff60450163502c6e14c37e71f",
-"T3W1_pt_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "83c7ea47b2007470fd63de13d4e32580f969ed38eb2000cb0c37753cefbfc28a",
+"T3W1_pt_device_menu-test_traverse_menu.py::test_traverse_initialized": "4b470b91ec16629a8567a844e71419296567a44e5a6afef7584e459d97da683d",
+"T3W1_pt_device_menu-test_traverse_menu.py::test_traverse_initialized_no_pin": "e3afb7c189951e06815d4c0d084043b4e243f28d88c306fadd5a82781f130d1c",
+"T3W1_pt_device_menu-test_traverse_menu.py::test_traverse_uninitialized": "0c8e4c4d67d5a995fd9d8b9fcee774bc72fe3f26b95fec1bb53ab2e1f5ddb8a1",
"T3W1_pt_device_menu-test_wipe_code.py::test_remove_pin_without_removing_wipe_code": "d903e3b2618419b9a0587293232a9fb46c0031e248bf52681393cceee2581c6d",
"T3W1_pt_device_menu-test_wipe_code.py::test_wipe_code_cancel_intro": "11181fb9ad8801b5dd8780f8ca9a3334e4cee6c0ae5114f1cbe1d4777649d545",
"T3W1_pt_device_menu-test_wipe_code.py::test_wipe_code_cancel_keyboard": "05749b83e011c43ef793efb237f09acdf019e2cbfbff3e3bf08dfb5bf7f6b265",
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.