tests(core): add T3W1 tap-to-wake click tests
What changed, and why it matters
This commit only adds new automated tests for the 'tap to wake' feature on the T3W1 hardware model. It does not change any firmware code that runs on the device, so it cannot introduce a security vulnerability or fix one. The tests verify that the setting is on by default, that the checkbox toggles it, and that the option is hidden on an uninitialized device.
No security action needed; this is a test-only change.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff is limited to the test suite: a new pytest case test_toggle_tap_to_wake and an assertion in test_device_settings_uninitialized, plus corresponding UI test fixture hashes in fixtures.json. No production source files are modified. The new test exercises features.tap_to_wake through the debug link and skips when the feature is not compiled in (features.tap_to_wake is None).
Changed components
tests/click_tests/device_menu/test_device_settings.pytests/ui_tests/fixtures.jsonInspect captured patch +49 / −0
diff --git a/tests/click_tests/device_menu/test_device_settings.py b/tests/click_tests/device_menu/test_device_settings.py
index 8e71daee..8f683e7e 100644
--- a/tests/click_tests/device_menu/test_device_settings.py
+++ b/tests/click_tests/device_menu/test_device_settings.py
@@ -32,6 +32,7 @@ pytestmark = [pytest.mark.models("eckhart")]
LED_TITLE = "led__title"
BRIGHTNESS_TITLE = "brightness__title"
HAPTIC_FEEDBACK_TITLE = "haptic_feedback__title"
+TAP_TO_WAKE_TITLE = "words__tap_to_wake"
def prepare_device_menu(debug: "DebugLink", features: "Features") -> None:
@@ -58,6 +59,7 @@ def test_device_settings_uninitialized(device_handler: "BackgroundDeviceHandler"
assert TR.translate(LED_TITLE) not in items
assert TR.translate(BRIGHTNESS_TITLE) not in items
assert TR.translate(HAPTIC_FEEDBACK_TITLE) not in items
+ assert TR.translate(TAP_TO_WAKE_TITLE) not in items
@pytest.mark.setup_client(pin=None)
@@ -123,6 +125,47 @@ def test_toggle_haptic(device_handler: "BackgroundDeviceHandler"):
assert haptic_new != haptic_old
+@pytest.mark.setup_client(pin=None)
+def test_toggle_tap_to_wake(device_handler: "BackgroundDeviceHandler"):
+ debug = device_handler.debuglink()
+ features = device_handler.features()
+
+ if features.tap_to_wake is None:
+ pytest.skip("tap to wake not supported")
+
+ assert features.initialized is True
+ assert features.pin_protection is False
+ # Default must be enabled on a fresh device
+ assert features.tap_to_wake is True
+
+ tap_to_wake_original = features.tap_to_wake
+
+ # Go to device settings
+ prepare_device_menu(debug, features)
+
+ items = debug.read_layout().vertical_menu_content()
+ assert TR.translate(TAP_TO_WAKE_TITLE) in items
+ tap_to_wake_idx = items.index(TR.translate(TAP_TO_WAKE_TITLE))
+
+ # First toggle — value must change
+ debug.button_actions.navigate_to_menu_item(tap_to_wake_idx)
+ assert_device_screen(debug, Menu.DEVICE)
+ close_device_menu(debug)
+ features = device_handler.features()
+ assert features.tap_to_wake == (not tap_to_wake_original)
+
+ # Second toggle — value must return to original
+ prepare_device_menu(debug, features)
+ items = debug.read_layout().vertical_menu_content()
+ tap_to_wake_idx = items.index(TR.translate(TAP_TO_WAKE_TITLE))
+ debug.button_actions.navigate_to_menu_item(tap_to_wake_idx)
+ assert_device_screen(debug, Menu.DEVICE)
+ close_device_menu(debug)
+
+ features = device_handler.features()
+ assert features.tap_to_wake == tap_to_wake_original
+
+
@pytest.mark.setup_client(pin=None)
def test_brightness(device_handler: "BackgroundDeviceHandler"):
debug = device_handler.debuglink()
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index dfc1cd53..babaec2d 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -33392,6 +33392,7 @@
"T3W1_cs_device_menu-test_device_settings.py::test_device_settings_uninitialized": "9310187c828a5b8d90aa83b947165c8a19386275fa4cb5fdcbd246d65d9a846d",
"T3W1_cs_device_menu-test_device_settings.py::test_toggle_haptic": "25675032fe6b1628161f0cd2398edae2feace6873ae31c44ce545c91f7ced796",
"T3W1_cs_device_menu-test_device_settings.py::test_toggle_led": "65a282d79e3d4da0433f69536cd4d8e738404271cd8f3d2050566d5bdfc29df5",
+"T3W1_cs_device_menu-test_device_settings.py::test_toggle_tap_to_wake": "332d2846fca615ee74d3b8a4bd68199d9aab053cd810bd3e3e8f2e466042efef",
"T3W1_cs_device_menu-test_label.py::test_change_label": "02a944e9b97a7244043cb62e2d578102b9d442db22d0c55a0678179755888e84",
"T3W1_cs_device_menu-test_label.py::test_label_cancel": "aeb8c0ddcd87b64348ec6c0fb114fffd18c70f8d6f554e36775a03c8e0fc59c8",
"T3W1_cs_device_menu-test_label.py::test_label_click_same_button_many_times": "52b145296e85f64e0c73e8b123070b18e6c61a0a044b2e44566ea6781f57c815",
@@ -33497,6 +33498,7 @@
"T3W1_de_device_menu-test_device_settings.py::test_device_settings_uninitialized": "16f491148842d7269bc9f2b3512c8c158724f4e12ca907832b7eb6cc719e6efa",
"T3W1_de_device_menu-test_device_settings.py::test_toggle_haptic": "aaafdc361a1d1494db1b142427ede204b978fbde090811b1ff02e54df49414f9",
"T3W1_de_device_menu-test_device_settings.py::test_toggle_led": "d1b2555304ee73d072f8d5f91023a55066ed051086204e0898db41c9b4da8cd3",
+"T3W1_de_device_menu-test_device_settings.py::test_toggle_tap_to_wake": "2807b70fa59bdfaa3b70f8da779055f2f2e37d869b621d8aa6739a9e44f838ad",
"T3W1_de_device_menu-test_label.py::test_change_label": "6fd9edd038e8f200ebbe327160702fe3c7f3eba934a6a8875b02bd53ff1901e3",
"T3W1_de_device_menu-test_label.py::test_label_cancel": "5ac931fa1dabdb1ab0db1df902eaf6a858eed7d2c9a7f7335154ad53a62212db",
"T3W1_de_device_menu-test_label.py::test_label_click_same_button_many_times": "ef65bfb04418a01d4df893a4ccfef9616d5c5581b1b1bdcf4bcb023614818c10",
@@ -33602,6 +33604,7 @@
"T3W1_en_device_menu-test_device_settings.py::test_device_settings_uninitialized": "fa89cfb1ad9423e2e026f0c11a36b2017053bf0e2b93cf16b1f26b53a253829d",
"T3W1_en_device_menu-test_device_settings.py::test_toggle_haptic": "778dbcfb96e575c652b06902ef2842f6cc261dd3d457cc66b8b6c9338e82e1fb",
"T3W1_en_device_menu-test_device_settings.py::test_toggle_led": "c7239c1d52e62c92953be383bdfc8f62dcf12b24732d82468598796b3e9a0586",
+"T3W1_en_device_menu-test_device_settings.py::test_toggle_tap_to_wake": "fb4429ec98e0a3395af7eb67401023d4deb1bb3a58e9fef55a46dfc80be08746",
"T3W1_en_device_menu-test_label.py::test_change_label": "fcf6acf64a69949f8ba2a4688d4c01f51b96f37b821ccf38b7fc1ba577b07a1e",
"T3W1_en_device_menu-test_label.py::test_label_cancel": "797055c60e26f93d0f2601e20a3fce14633041bd0b4598fbcf36aebd3b6d9a62",
"T3W1_en_device_menu-test_label.py::test_label_click_same_button_many_times": "e4bc9f4dc589b5acdcf3dece73382c2e286b49f5762058aea0a84ca1284cac6a",
@@ -33707,6 +33710,7 @@
"T3W1_es_device_menu-test_device_settings.py::test_device_settings_uninitialized": "670ad5d4221abfb9e2473438248d1d1523497ed18bf70b5290fda62c19ee4d62",
"T3W1_es_device_menu-test_device_settings.py::test_toggle_haptic": "ea59c9d24216e9bad1b1fdd99068e34dbc5beeea54b06c34219d37720f17a470",
"T3W1_es_device_menu-test_device_settings.py::test_toggle_led": "48bba98df82f83294c2b275151c667efb44e05051661b91aee4f2add003eb394",
+"T3W1_es_device_menu-test_device_settings.py::test_toggle_tap_to_wake": "19e523e9a97ef01896822c13b4d34871a5dd6a372b965870f6ddd0776aee96c4",
"T3W1_es_device_menu-test_label.py::test_change_label": "f847ccd46dae3203cf2ca0f2a435fc2942aa9c6a2ac1a96175b133aa4e36cd1e",
"T3W1_es_device_menu-test_label.py::test_label_cancel": "7bdb6821c811f1ff0b4d02a2e58922f2c7e50fb101a23afe1a0a0a8a6fc69d1c",
"T3W1_es_device_menu-test_label.py::test_label_click_same_button_many_times": "d04524b655e5da75d078db7d8a90e5570f95306c3def1a88e87085f0f1417cc1",
@@ -33812,6 +33816,7 @@
"T3W1_fr_device_menu-test_device_settings.py::test_device_settings_uninitialized": "d7de3fdb8dac53b69293dd2fa539bddde36c554aca9ee0516f8d5f28f2ff821f",
"T3W1_fr_device_menu-test_device_settings.py::test_toggle_haptic": "1cceb37657549d7798a606fb01cffd95cdd3ab59cda2e25228d11f1bb906cd31",
"T3W1_fr_device_menu-test_device_settings.py::test_toggle_led": "6059fd94c13f0dfa535e007ae6f7ede07f6c90ede623f876c8384911f2ac81b9",
+"T3W1_fr_device_menu-test_device_settings.py::test_toggle_tap_to_wake": "5abae4c12dd65c858fc7fe2864e2742b428a03684aee442bba1cad480b4a7c41",
"T3W1_fr_device_menu-test_label.py::test_change_label": "b54d5b08011ef7243c8e87a38192d496e6ac5ca7744839bb6f652991c5804525",
"T3W1_fr_device_menu-test_label.py::test_label_cancel": "ae12d3f337742d2f7800a095448bd2de9264472f56cea10c87b74ec3df3179f6",
"T3W1_fr_device_menu-test_label.py::test_label_click_same_button_many_times": "5a0de932c6ad7ca3d9f0b7deb88381add7b03461adbcb9783588f9de504a324f",
@@ -33917,6 +33922,7 @@
"T3W1_pt_device_menu-test_device_settings.py::test_device_settings_uninitialized": "fbc1f3bc2e6ebd05cc017857eb25249f15799675fc493f82a40e59fb78c54f16",
"T3W1_pt_device_menu-test_device_settings.py::test_toggle_haptic": "67695a9de4ea2860aa20568a42ba0dd34e1fdf983ff4cf32347e6dd81e79c6e3",
"T3W1_pt_device_menu-test_device_settings.py::test_toggle_led": "258b0fb2f90d8251ccb6f1e67df9822adeff0b71b051411c471ec3a6f987a2c9",
+"T3W1_pt_device_menu-test_device_settings.py::test_toggle_tap_to_wake": "7f4cb7e71551bb112b4ecb548916189a26e81117203a20b542bd012fba716757",
"T3W1_pt_device_menu-test_label.py::test_change_label": "1d85c8571a2389b712583a7e6b1ea000d3a312b58cec8eefd1cedc67769bed35",
"T3W1_pt_device_menu-test_label.py::test_label_cancel": "c4006ecc5897ddc0deed6d964d3321749b69d0058aac3e0e67bcb4b5d2c53e6a",
"T3W1_pt_device_menu-test_label.py::test_label_click_same_button_many_times": "04773bc5f83e5dfa784814b1c4a99de99eca06379db3c032c3371b4d5ad99883",
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.