Skip to content

Commit 6e94231

Browse files
committed
test(core): test UI abort after missing ButtonAck
[no changelog]
1 parent 3458712 commit 6e94231

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

tests/device_tests/test_msg_delayed_ack.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414

1515
import time
1616

17-
from trezorlib import messages
17+
import pytest
18+
19+
from tests import translations as TR
20+
from trezorlib import messages, models
1821
from trezorlib.debuglink import DebugSession as Session
1922

2023

@@ -27,5 +30,25 @@ def test_delayed_ack(session: Session):
2730
# "waiting" screen should be shown after 2 seconds on Core models
2831
# (following https://github.com/trezor/trezor-firmware/issues/5884)
2932
time.sleep(2.5)
33+
if session.model not in models.LEGACY_MODELS:
34+
assert TR.words__comm_trouble in session.debug.read_layout().text_content()
3035
res = session.call_raw(messages.ButtonAck())
36+
res = messages.Success.ensure_isinstance(res)
3137
assert res.message == "delayed"
38+
39+
40+
@pytest.mark.models("core")
41+
def test_delayed_ack_abort(session: Session):
42+
br = session.call_raw(messages.Ping(message="delayed", button_protection=True))
43+
assert isinstance(br, messages.ButtonRequest)
44+
assert br.code == messages.ButtonRequestType.ProtectCall
45+
# confirm layout instead of sending ButtonAck
46+
session.debug.press_yes()
47+
# "waiting" screen should be shown after 2 seconds on Core models
48+
# (following https://github.com/trezor/trezor-firmware/issues/5884)
49+
time.sleep(2.5)
50+
assert TR.words__comm_trouble in session.debug.read_layout().text_content()
51+
session.debug.press_yes() # abort flow on device (instead of ButtonAck)
52+
res = session.read()
53+
res = messages.Failure.ensure_isinstance(res)
54+
assert res.code == messages.FailureType.ActionCancelled

0 commit comments

Comments
 (0)