1414
1515import time
1616
17- from trezorlib import messages
17+ import pytest
18+
19+ from tests import translations as TR
20+ from trezorlib import messages , models
1821from 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