diff --git a/docs/tests/device-tests.md b/docs/tests/device-tests.md index 195dffb37e..0947d62865 100644 --- a/docs/tests/device-tests.md +++ b/docs/tests/device-tests.md @@ -105,9 +105,11 @@ the following marker: This marker must be registered in `REGISTERED_MARKERS` file in `tests` folder. -If you wish to run a test only on TT, mark it with `@pytest.mark.skip_t1`. -If the test should only run on T1, mark it with `@pytest.mark.skip_t2`. -You must not use both on the same test. +Tests can be run only for specific models - it is done by disallowing the tests for the other models. +`@pytest.mark.skip_t1` +`@pytest.mark.skip_t2` +`@pytest.mark.skip_tr` +are valid markers to skip current test for T1, TT and TR respectively. [pytest-random-order]: https://pypi.org/project/pytest-random-order/ diff --git a/tests/conftest.py b/tests/conftest.py index 7aeaba179e..7250664d3d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -157,7 +157,7 @@ def client( Every test function that requires a client instance will get it from here. If we can't connect to a debuggable device, the test will fail. If 'skip_t2' is used and TT is connected, the test is skipped. Vice versa with T1 - and 'skip_t1'. + and 'skip_t1'. Same with TR. The client instance is wiped and preconfigured with "all all all..." mnemonic, no password and no pin. It is possible to customize this with the `setup_client` @@ -179,6 +179,8 @@ def client( pytest.skip("Test excluded on Trezor T") if request.node.get_closest_marker("skip_t1") and _raw_client.features.model == "1": pytest.skip("Test excluded on Trezor 1") + if request.node.get_closest_marker("skip_tr") and _raw_client.features.model == "R": + pytest.skip("Test excluded on Trezor R") sd_marker = request.node.get_closest_marker("sd_card") if sd_marker and not _raw_client.features.sd_card_present: @@ -338,6 +340,7 @@ def pytest_configure(config: "Config") -> None: # register known markers config.addinivalue_line("markers", "skip_t1: skip the test on Trezor One") config.addinivalue_line("markers", "skip_t2: skip the test on Trezor T") + config.addinivalue_line("markers", "skip_tr: skip the test on Trezor R") config.addinivalue_line( "markers", "experimental: enable experimental features on Trezor" ) @@ -360,8 +363,10 @@ def pytest_runtest_setup(item: pytest.Item) -> None: Ensures that altcoin tests are skipped, and that no test is skipped on both T1 and TT. """ - if item.get_closest_marker("skip_t1") and item.get_closest_marker("skip_t2"): - raise RuntimeError("Don't skip tests for both trezors!") + if all( + item.get_closest_marker(marker) for marker in ("skip_t1", "skip_t2", "skip_tr") + ): + raise RuntimeError("Don't skip tests for all trezor models!") skip_altcoins = int(os.environ.get("TREZOR_PYTEST_SKIP_ALTCOINS", 0)) if item.get_closest_marker("altcoin") and skip_altcoins: