What changed, and why it matters
This commit only updates a test file so that automated tests can correctly look up translated button labels for different device screen layouts. It does not change the actual Trezor firmware or any user-facing behavior, and it is not a security fix.
No security action needed. Treat as a normal test-maintenance commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies tests/device_tests/test_language.py. The helper get_ping_button() now accepts a Client argument and, when the translation entry is a dict, selects the label matching client.debug.layout_type.name. All call sites are updated to pass session.client. This is purely a test-infrastructure change to accommodate layout-specific translation strings; no firmware code is altered.
Changed components
tests/device_tests/test_language.pyInspect captured patch +56 / −19
diff --git a/tests/device_tests/test_language.py b/tests/device_tests/test_language.py
index cc1a30baf..e45776d18 100644
--- a/tests/device_tests/test_language.py
+++ b/tests/device_tests/test_language.py
@@ -48,9 +48,12 @@ MAX_DATA_LENGTH = {
}
-def get_ping_button(lang: str) -> str:
+def get_ping_button(lang: str, client: Client) -> str:
content = get_lang_json(lang)
- return content["translations"]["buttons__confirm"]
+ ping_button = content["translations"]["buttons__confirm"]
+ if isinstance(ping_button, dict):
+ ping_button = ping_button[client.debug.layout_type.name]
+ return ping_button
def get_ping_title(lang: str) -> str:
@@ -111,7 +114,9 @@ def test_error_too_long(session: Session):
bad_data = (max_length + 1) * b"a"
device.change_language(session, language_data=bad_data)
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def test_error_invalid_data_length(session: Session):
@@ -125,7 +130,9 @@ def test_error_invalid_data_length(session: Session):
bad_data = good_data + b"abcd"
device.change_language(session, language_data=bad_data)
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def test_error_invalid_header_magic(session: Session):
@@ -139,7 +146,9 @@ def test_error_invalid_header_magic(session: Session):
bad_data = 4 * b"a" + good_data[4:]
device.change_language(session, language_data=bad_data)
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def test_error_invalid_data_hash(session: Session):
@@ -156,7 +165,9 @@ def test_error_invalid_data_hash(session: Session):
language_data=bad_data,
)
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def test_error_version_mismatch(session: Session):
@@ -172,7 +183,9 @@ def test_error_version_mismatch(session: Session):
language_data=sign_blob(blob),
)
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def test_error_invalid_signature(session: Session):
@@ -193,7 +206,9 @@ def test_error_invalid_signature(session: Session):
language_data=blob.build(),
)
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
@pytest.mark.parametrize("lang", LANGUAGES)
@@ -205,26 +220,34 @@ def test_full_language_change(session: Session, lang: str):
set_language(session, lang)
assert session.features.language[:2] == lang
assert session.features.language_version_matches is True
- _check_ping_screen_texts(session, get_ping_title(lang), get_ping_button(lang))
+ _check_ping_screen_texts(
+ session, get_ping_title(lang), get_ping_button(lang, session.client)
+ )
# Setting the default language via empty data
set_language(session, "en")
assert session.features.language == "en-US"
assert session.features.language_version_matches is True
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def test_language_is_removed_after_wipe(client: Client):
session = client.get_session()
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
# Setting cs language
set_language(session, "cs")
assert session.features.language == "cs-CZ"
- _check_ping_screen_texts(session, get_ping_title("cs"), get_ping_button("cs"))
+ _check_ping_screen_texts(
+ session, get_ping_title("cs"), get_ping_button("cs", session.client)
+ )
# Wipe device
device.wipe(session)
@@ -242,7 +265,9 @@ def test_language_is_removed_after_wipe(client: Client):
)
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def test_translations_renders_on_screen(session: Session):
@@ -253,12 +278,16 @@ def test_translations_renders_on_screen(session: Session):
assert session.features.language == "en-US"
# Normal english
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
# Normal czech
set_language(session, "cs")
assert session.features.language == "cs-CZ"
- _check_ping_screen_texts(session, get_ping_title("cs"), get_ping_button("cs"))
+ _check_ping_screen_texts(
+ session, get_ping_title("cs"), get_ping_button("cs", session.client)
+ )
# Modified czech - changed value
czech_data_copy = deepcopy(czech_data)
@@ -268,7 +297,9 @@ def test_translations_renders_on_screen(session: Session):
session,
language_data=build_and_sign_blob(czech_data_copy, session),
)
- _check_ping_screen_texts(session, new_czech_confirm, get_ping_button("cs"))
+ _check_ping_screen_texts(
+ session, new_czech_confirm, get_ping_button("cs", session.client)
+ )
# Modified czech - key deleted completely, english is shown
czech_data_copy = deepcopy(czech_data)
@@ -277,7 +308,9 @@ def test_translations_renders_on_screen(session: Session):
session,
language_data=build_and_sign_blob(czech_data_copy, session),
)
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("cs"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("cs", session.client)
+ )
def test_reject_update(session: Session):
@@ -296,7 +329,9 @@ def test_reject_update(session: Session):
assert session.features.language == "en-US"
- _check_ping_screen_texts(session, get_ping_title("en"), get_ping_button("en"))
+ _check_ping_screen_texts(
+ session, get_ping_title("en"), get_ping_button("en", session.client)
+ )
def _maybe_confirm_set_language(
@@ -413,4 +448,6 @@ def test_header_trailing_data(session: Session):
device.change_language(session, language_data)
assert session.features.language == "cs-CZ"
- _check_ping_screen_texts(session, get_ping_title(lang), get_ping_button(lang))
+ _check_ping_screen_texts(
+ session, get_ping_title(lang), get_ping_button(lang, session.client)
+ )
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.