1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-19 05:58:09 +00:00

tests: rework tutorial tests

complicated flows that _do not accomplish results_ do not belong into
device_tests, so I moved them to click_tests and added stronger assert
system
This commit is contained in:
matejcik 2024-09-02 13:59:59 +02:00 committed by matejcik
parent abe51b93a8
commit d21af2a47f
5 changed files with 189 additions and 72 deletions

View File

@ -0,0 +1,172 @@
# This file is part of the Trezor project.
#
# Copyright (C) 2012-2023 SatoshiLabs and contributors
#
# This library is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# as published by the Free Software Foundation.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the License along with this library.
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
from typing import TYPE_CHECKING
import pytest
from trezorlib import device
from .. import buttons
from .. import translations as TR
if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
# Trezor Safe 5 only
pytestmark = [
pytest.mark.models("mercury"),
pytest.mark.setup_client(uninitialized=True),
]
def test_tutorial_ignore_menu(device_handler: "BackgroundDeviceHandler"):
debug = device_handler.debuglink()
device_handler.run(device.show_device_tutorial)
layout = debug.wait_layout()
TR.assert_equals(layout.title(), "tutorial__welcome_safe5")
layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True)
TR.assert_equals(layout.title(), "tutorial__title_lets_begin")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_easy_navigation")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_hold")
layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000)
TR.assert_equals(layout.title(), "tutorial__title_well_done")
debug.swipe_up(wait=True)
device_handler.result()
def test_tutorial_menu_open_close(device_handler: "BackgroundDeviceHandler"):
debug = device_handler.debuglink()
device_handler.run(device.show_device_tutorial)
layout = debug.wait_layout()
TR.assert_equals(layout.title(), "tutorial__welcome_safe5")
layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True)
TR.assert_equals(layout.title(), "tutorial__title_lets_begin")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_easy_navigation")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.click(buttons.CORNER_BUTTON, wait=True)
TR.assert_in(layout.text_content(), "tutorial__did_you_know")
layout = debug.click(buttons.CORNER_BUTTON, wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_hold")
layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000)
TR.assert_equals(layout.title(), "tutorial__title_well_done")
debug.swipe_up(wait=True)
device_handler.result()
def test_tutorial_menu_exit(device_handler: "BackgroundDeviceHandler"):
debug = device_handler.debuglink()
device_handler.run(device.show_device_tutorial)
layout = debug.wait_layout()
TR.assert_equals(layout.title(), "tutorial__welcome_safe5")
layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True)
TR.assert_equals(layout.title(), "tutorial__title_lets_begin")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_easy_navigation")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.click(buttons.CORNER_BUTTON, wait=True)
TR.assert_in(layout.text_content(), "tutorial__did_you_know")
layout = debug.click(buttons.VERTICAL_MENU[2], wait=True)
TR.assert_in(layout.footer(), "instructions__hold_to_exit_tutorial")
layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000)
TR.assert_equals(layout.title(), "tutorial__title_well_done")
debug.swipe_up(wait=True)
device_handler.result()
def test_tutorial_menu_repeat(device_handler: "BackgroundDeviceHandler"):
debug = device_handler.debuglink()
device_handler.run(device.show_device_tutorial)
layout = debug.wait_layout()
TR.assert_equals(layout.title(), "tutorial__welcome_safe5")
layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True)
TR.assert_equals(layout.title(), "tutorial__title_lets_begin")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_easy_navigation")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.click(buttons.CORNER_BUTTON, wait=True)
TR.assert_in(layout.text_content(), "tutorial__did_you_know")
layout = debug.click(buttons.VERTICAL_MENU[1], wait=True)
TR.assert_equals(layout.title(), "tutorial__title_lets_begin")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_easy_navigation")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_hold")
layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000)
TR.assert_equals(layout.title(), "tutorial__title_well_done")
debug.swipe_up(wait=True)
device_handler.result()
def test_tutorial_menu_funfact(device_handler: "BackgroundDeviceHandler"):
debug = device_handler.debuglink()
device_handler.run(device.show_device_tutorial)
layout = debug.wait_layout()
TR.assert_equals(layout.title(), "tutorial__welcome_safe5")
layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True)
TR.assert_equals(layout.title(), "tutorial__title_lets_begin")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_easy_navigation")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.click(buttons.CORNER_BUTTON, wait=True)
TR.assert_in(layout.text_content(), "tutorial__did_you_know")
layout = debug.click(buttons.VERTICAL_MENU[0], wait=True)
text_content = [
s.replace("\n", " ") for s in TR.translate("tutorial__first_wallet")
]
assert layout.text_content() in text_content
layout = debug.click(buttons.CORNER_BUTTON, wait=True)
TR.assert_in(layout.text_content(), "tutorial__did_you_know")
layout = debug.click(buttons.CORNER_BUTTON, wait=True)
TR.assert_equals(layout.title(), "tutorial__title_handy_menu")
layout = debug.swipe_up(wait=True)
TR.assert_equals(layout.title(), "tutorial__title_hold")
layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000)
TR.assert_equals(layout.title(), "tutorial__title_well_done")
debug.swipe_up(wait=True)
device_handler.result()

View File

@ -30,9 +30,8 @@ if TYPE_CHECKING:
from ..device_handler import BackgroundDeviceHandler
# Safe3 only
# TODO extend to T3T1
pytestmark = pytest.mark.models("safe3")
# Safe family only
pytestmark = [pytest.mark.models("safe3"), pytest.mark.setup_client(uninitialized=True)]
@contextmanager
@ -51,7 +50,7 @@ def prepare_tutorial_and_cancel_after_it(
raise
def go_through_tutorial(debug: "DebugLink") -> None:
def go_through_tutorial_tr(debug: "DebugLink") -> None:
debug.press_right(wait=True)
debug.press_right(wait=True)
debug.press_right_htc(hold_ms=1000)
@ -61,17 +60,15 @@ def go_through_tutorial(debug: "DebugLink") -> None:
TR.assert_equals(layout.title(), "tutorial__title_tutorial_complete")
@pytest.mark.setup_client(uninitialized=True)
def test_tutorial_finish(device_handler: "BackgroundDeviceHandler"):
with prepare_tutorial_and_cancel_after_it(device_handler) as debug:
# CLICK THROUGH
go_through_tutorial(debug)
go_through_tutorial_tr(debug)
# FINISH
debug.press_right(wait=True)
@pytest.mark.setup_client(uninitialized=True)
def test_tutorial_skip(device_handler: "BackgroundDeviceHandler"):
with prepare_tutorial_and_cancel_after_it(device_handler, cancelled=True) as debug:
# SKIP
@ -79,11 +76,10 @@ def test_tutorial_skip(device_handler: "BackgroundDeviceHandler"):
debug.press_right(wait=True)
@pytest.mark.setup_client(uninitialized=True)
def test_tutorial_again_and_skip(device_handler: "BackgroundDeviceHandler"):
with prepare_tutorial_and_cancel_after_it(device_handler, cancelled=True) as debug:
# CLICK THROUGH
go_through_tutorial(debug)
go_through_tutorial_tr(debug)
# AGAIN
debug.press_left(wait=True)

View File

@ -16,31 +16,12 @@
import pytest
from trezorlib import device, exceptions
from trezorlib import device
from trezorlib.debuglink import TrezorClientDebugLink as Client
from ..input_flows import InputFlowTutorial
# TODO not initialized?
@pytest.mark.setup_client(uninitialized=True)
@pytest.mark.models("safe")
def test_tutorial(client: Client):
with client:
IF = InputFlowTutorial(client, cancel=False)
client.set_input_flow(IF.get())
device.show_device_tutorial(client)
assert client.features.initialized is False
@pytest.mark.setup_client(uninitialized=True)
@pytest.mark.models("safe")
def test_tutorial_cancel(client: Client):
with client:
IF = InputFlowTutorial(client, cancel=True)
client.set_input_flow(IF.get())
with pytest.raises(exceptions.Cancelled):
device.show_device_tutorial(client)
device.show_device_tutorial(client)
assert client.features.initialized is False

View File

@ -2309,33 +2309,6 @@ class InputFlowConfirmAllWarnings(InputFlowBase):
br = yield
class InputFlowTutorial(InputFlowBase):
def __init__(self, client: Client, cancel: bool = False):
super().__init__(client)
self.cancel = cancel
def input_flow_t3t1(self) -> BRGeneratorType:
yield
self.debug.click(buttons.TAP_TO_CONFIRM, wait=True)
self.debug.swipe_up(wait=True)
self.debug.swipe_up(wait=True)
if self.cancel:
self.debug.click(buttons.CORNER_BUTTON, wait=True)
self.debug.click(buttons.VERTICAL_MENU[0], wait=True)
self.debug.click(buttons.CORNER_BUTTON, wait=True)
self.debug.click(buttons.VERTICAL_MENU[1], wait=True)
self.debug.swipe_up(wait=True)
self.debug.swipe_up(wait=True)
self.debug.click(buttons.CORNER_BUTTON, wait=True)
self.debug.click(buttons.VERTICAL_MENU[2], wait=True)
self.debug.click(buttons.TAP_TO_CONFIRM, wait=True)
self.debug.swipe_up(wait=True)
else:
self.debug.swipe_up(wait=True)
self.debug.click(buttons.TAP_TO_CONFIRM, wait=True)
self.debug.swipe_up(wait=True)
class InputFlowFidoConfirm(InputFlowBase):
def __init__(self, client: Client, cancel: bool = False):
super().__init__(client)

View File

@ -12859,9 +12859,9 @@
"T3B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9a9d78e8f7730dad9dae7dce628239a1e983a7770afb313b2d0edf78c4255c1c",
"T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0328573b94357d23c515418983bb27538533fbdaf051971950148542c315ffca",
"T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "07953f5961b6af1759eb9afb41e11c8f95ea1a873cf531c4741199973543c3b2",
"T3B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833",
"T3B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289",
"T3B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3",
"T3B1_en_test_tutorial_tr.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833",
"T3B1_en_test_tutorial_tr.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289",
"T3B1_en_test_tutorial_tr.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3",
"T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e0cd08f8c6b1e8164e13a1d5ae58af9f0b560e7f49aba175058bc5ecd9ed0e0",
"T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "5167423df1a611f5608228d783445fcb6ef7e71e51e893ae11d352c35cd72a6e",
"T3B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "65aa98bb42b5db52b6e074eae8e15862377029429e72f2c5da960df5bb03fb99",
@ -16971,8 +16971,7 @@
"T3B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051",
"T3B1_en_test_msg_loaddevice.py::test_load_device_utf": "0623bc723e20f4690524a8dad3b7f2c0cf04e45b2e0202788e75758ef4a2156c",
"T3B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6",
"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289",
"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial_cancel": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3",
"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial": "677de1bccd5b8fa043fa4f905900fe42e015b61593eae3d2b1e0aa2d8e23c7c6",
"T3B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b90e8e9393e604b4f83d718aada5e0f93bb460af49652b20ce7733b3a2a00ccc",
"T3B1_en_test_msg_wipedevice.py::test_wipe_device": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c",
"T3B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc",
@ -19931,6 +19930,11 @@
"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d5f933a53b426e452b8007edb64c3e05526e68e8f7246377f708349a1fc09d62",
"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2b7bc8347f531c3966134370287e614bab2fa84228d287c96245ef1c47df8dc7",
"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "731f4030689124cd68f4d541e725c1653af3922b7a0f0118d49fe50f090fd893",
"T3T1_en_test_tutorial_mercury.py::test_tutorial_ignore_menu": "7432bbffc51fbb646302c342feb84a8099b901cfc61b969cb13b6921f0a5ea45",
"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_exit": "875b675d25368e293a082d1b7e1574f27ea3d94878d4e7f75d1642b5f9c89ee9",
"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_funfact": "28dcb4ecbe4cc748a659f9015585f9818a3fdecc95d8ece650d86aa1ab512e11",
"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_open_close": "30ab72e2ca93bf5feee97afb56104070a8d402751998652ca0cdb3c52437d9b5",
"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_repeat": "4f43dd2d30f03b65f56219ecac6d4ad079f6c6ca64be0c8e0be3cf6c96822d66",
"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "83dab8b004b7ad2dd1a0d6f56e1661ff0a25bdc18dafb2f09d339b9eea0dfdcc",
"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4",
"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "dcd00ffe9769bd57777fd0480b86020b2c1d837f901853516a3fe50fbbc6410d",
@ -21453,8 +21457,6 @@
"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "f16d0f3c7e6fbf209dcdf3b9d164b256921193a59497181ce12880dbd68f344f",
"T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c0629afadd2f660e7dde53a1f046e4451eb8ce7ee195cf0bb1c97624cf15fb4",
"T3T1_cs_test_msg_sd_protect.py::test_wipe": "f2034ed5b2e2698f84e2e7558e7912246e7b7fdd969381c427aad4b0b47353db",
"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "a14c3b143c24b398bd41379d0dd963dd12084a81e6e81e7697d1468ae99124a9",
"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "19443b6af09e24cd4c8635d7107b172d77abe29b3805ea5ab50d67540604a7fc",
"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3fe3ebecd6517fd08b52fb7a85fb6e6de5fda24b2fc000865ce83de6dafd5781",
"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516",
"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f",
@ -22812,8 +22814,6 @@
"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "440ffae3947d0d08480b818a30ba631dcfe454a92f304a3d82735034ae0d6570",
"T3T1_de_test_msg_sd_protect.py::test_refresh": "324fffc360acc54078865fec82f2f0b83dd4985cb45d03feb0a050e57190bab5",
"T3T1_de_test_msg_sd_protect.py::test_wipe": "479cf95d2085e797b3fc4e048444e25b2ed4f0a3d3b29008b8417232646953f4",
"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "1da46bd298cc19ceb1e344054808984a044264af254e5c6104e99912ac4edb8d",
"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "ca9a5dd65e8c9ab0c8458725a713b6155883ea735aecdb70aa9123f0c5dd324e",
"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "7c8b3639f4897e8a96b29b889ab6e3746e852b3a48cb2b0618629cfa47487f6a",
"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469",
"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d",
@ -24171,8 +24171,7 @@
"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "18e2495ee4cac06d66dcb351fba8ffdb9352f7752f305ae2c357e90cdcdb5401",
"T3T1_en_test_msg_sd_protect.py::test_refresh": "82cb15201bdf6dcc16cc68190b304c74edb4933cca10ac5a2016a460012dd02a",
"T3T1_en_test_msg_sd_protect.py::test_wipe": "1fac3944683e636c54bba28ce8a7fa8d075251ee359858db8f386ca53f63ac08",
"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "7432bbffc51fbb646302c342feb84a8099b901cfc61b969cb13b6921f0a5ea45",
"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "e9fc618a8361d7ee4f46b3cb469406923c097c90a07c9b59ccb3cd2e4a997f39",
"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial": "6287282489e9ae768aea5d655c7ed93ffef943ba2a8fedb322ecfbcdbdb7dae0",
"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "593429d09da223f7d5a98c1f5a04a523c2ca58fbde4348179da8f2cfcae247ab",
"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31",
"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b52bdc7d83d4ec583340a0c9d92c84bfe8dc9d7c7b677bdd8b2796c59b03706c",
@ -25530,8 +25529,6 @@
"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "cb61248c0d0b46b8a4433e2bf12ccfc0b32ad5b9842d5d80eb44d76f0f1f17e4",
"T3T1_es_test_msg_sd_protect.py::test_refresh": "a7235bf977a5f7aab3b0133f0781feab28319170ad80785a29f343aecf72d996",
"T3T1_es_test_msg_sd_protect.py::test_wipe": "7a7cf781e34a9131c2f4dfe9907cb733ddb93c805c92f0fb14b79634974bdd79",
"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "5e4328cea5b060c25fe06ef1228313c4f4f3b0a9afb7021aa8b90b5f1e54e134",
"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "75650acb32f25ae46e9d7b78fa9d2c30c85b2c3998cfe3dfda3357c20e4302d0",
"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "f7ba337dc25fe91c0cf19877534ca2fca75d2ba02d0f5f3d639e1ee5924a0bfa",
"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf",
"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "7664f198126a0c78d7ea2ad1e6e1e2a2d07e9322151f439ab82a41c9695a6c81",
@ -26889,8 +26886,6 @@
"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "248d3bd2c671109278f0c75e7986a20f58bc04f72ae39b855f000b11ece6d781",
"T3T1_fr_test_msg_sd_protect.py::test_refresh": "af9bd20cea2fd6e75d55a1b3ac918f7418dac77c4bf6a768611579becc71cd17",
"T3T1_fr_test_msg_sd_protect.py::test_wipe": "41ea5e6c2b26c9937792cb2cdfbad74286d740fd523bb7d07305566bcd167935",
"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "204db8befa27a853788bcd7ae567b83b7d277506057a1bad5abb925849f7df29",
"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "eec46a6bd76f0b408d9d59291f01316d32041cd6c1c37dc89914b641e7cbf3c7",
"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "06456c05df3aee6226fbbe776d4db63eabdd553241185869396024ec4fae7c52",
"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8",
"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2807886270191466d7c47e855760dbb4d96a09009e42031fdf60c9b6fcb16df1",