feat: test nanosp

This commit is contained in:
Coline
2022-06-23 10:32:41 +02:00
parent e069e2c2f1
commit 1ae8042d09
7 changed files with 152 additions and 146 deletions

View File

@@ -10,6 +10,9 @@ from ethereum_client.ethereum_cmd import EthereumCommand
SCRIPT_DIR = Path(__file__).absolute().parent
API_URL = "http://127.0.0.1:5000"
VERSION = {"nanos": "2.1", "nanox": "2.0.2", "nanosp": "1.0"}
def pytest_addoption(parser):
# nanos or nanox
parser.addoption("--model", action="store", default="nanos")
@@ -21,12 +24,8 @@ def pytest_addoption(parser):
def client(pytestconfig):
file_path = SCRIPT_DIR.parent.parent / "bin" / "app.elf"
model = pytestconfig.getoption("model")
version = '2.1' # latest version of nanos_sdk
if model == "nanox":
version = '2.0.2' # latest version of nanox_sdk
args = ['--log-level', 'speculos:DEBUG','--model', model, '--display', pytestconfig.getoption("display"), '--sdk', version]
args = ['--log-level', 'speculos:DEBUG','--model', model, '--display', pytestconfig.getoption("display"), '--sdk', VERSION[model]]
with SpeculosClient(app=str(file_path), args=args) as client:
yield client

View File

@@ -80,6 +80,7 @@ class EthereumCommand:
result.append(eth_addr)
result.append(chain_code)
# Not use
@contextmanager
def test_zemu_hard_apdu_sign(self, transaction: Transaction) -> Tuple[int, int, int]:
sign: bytes = b'\xe0\x04\x00\x00\x80\x05\x80\x00\x00\x2c\x80\x00\x00\x3c\x80\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x69\x46\x85\x06\xa8\xb1\x5e\x00\x82\xeb\xeb\x94\x6b\x17\x54\x74\xe8\x90\x94\xc4\x4d\xa9\x8b\x95\x4e\xed\xea\xc4\x95\x27\x1d\x0f\x80\xb8\x44\x09\x5e\xa7\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x27\x68\xde\x32\xb0\xb8\x0b\x7a\x34\x54\xc0\x6b\xda\xc9\x4a\x69\xdd\xc7\xa9\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x80'

View File

@@ -28,7 +28,6 @@ def chunkify(data: bytes, chunk_len: int) -> Iterator[Tuple[bool, bytes]]:
if remaining:
yield True, data[offset:]
class InsType(enum.IntEnum):
INS_GET_PUBLIC_KEY = 0x02
INS_SIGN_TX = 0x04
@@ -149,6 +148,7 @@ class EthereumCommandBuilder:
p2=0x01,
cdata=cdata)
# Not use
def sign_tx(self, bip32_path: str, transaction: Transaction) -> Iterator[Tuple[bool, bytes]]:
"""Command builder for INS_SIGN_TX.

View File

@@ -10,6 +10,9 @@ UINT64_MAX: int = 18446744073709551615
UINT32_MAX: int = 4294967295
UINT16_MAX: int = 65535
# Association tableau si écran nanos ou nanox
PATH_IMG = {"nanos": "nanos", "nanox": "nanox", "nanosp": "nanox"}
def save_screenshot(cmd, path: str):
screenshot = cmd.client.get_screenshot()
img = Image.open(io.BytesIO(screenshot))

View File

@@ -4,4 +4,7 @@ def test_configuration(cmd):
assert cmd.get_configuration() == (14, 1, 9, 17)
if cmd.model == "nanox":
assert cmd.get_configuration() == (14, 1, 9, 17)
if cmd.model == "nanosp":
assert cmd.get_configuration() == (14, 1, 9, 17)

View File

@@ -6,7 +6,7 @@ from typing import Tuple
from time import sleep
import ethereum_client
from ethereum_client.utils import UINT64_MAX, compare_screenshot, save_screenshot
from ethereum_client.utils import UINT64_MAX, compare_screenshot, save_screenshot, PATH_IMG
def test_get_public_key(cmd):
@@ -32,32 +32,32 @@ def test_get_public_key(cmd):
if cmd.model == "nanos":
# Verify address
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00000.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00001.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00002.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00003.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00003.png")
cmd.client.press_and_release('right')
# Approved
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00004.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00004.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Verify address
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00000.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00001.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png")
cmd.client.press_and_release('right')
# Approve
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00002.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png")
cmd.client.press_and_release('both')
uncompressed_addr_len, eth_addr, chain_code = result
@@ -79,40 +79,40 @@ def test_reject_get_public_key(cmd):
if cmd.model == "nanos":
# Verify address
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00000.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00001.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00002.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00003.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png")
cmd.client.press_and_release('right')
# Approve
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00004.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00004.png")
cmd.client.press_and_release('right')
# Reject
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00005.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00005.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Verify address
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00000.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00001.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png")
cmd.client.press_and_release('right')
# Approve
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00002.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png")
cmd.client.press_and_release('right')
# Reject
compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00003.png")
compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png")
cmd.client.press_and_release('both')
except ethereum_client.exception.errors.DenyError as error:

View File

@@ -2,7 +2,7 @@ from time import sleep
import ethereum_client
from ethereum_client.utils import UINT64_MAX, compare_screenshot, compare_screenshot, save_screenshot
from ethereum_client.utils import UINT64_MAX, compare_screenshot, compare_screenshot, save_screenshot, PATH_IMG
from ethereum_client.transaction import Transaction
@@ -29,52 +29,52 @@ def test_sign_simple(cmd):
if cmd.model == "nanos":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00000.png")
cmd.client.press_and_release('right')
# Amount 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00001.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00003.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00004.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00005.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00006.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00007.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00007.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00008.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00008.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00000.png")
cmd.client.press_and_release('right')
# Amount
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00001.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00002.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00003.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00004.png")
cmd.client.press_and_release('both')
v, r, s = result
@@ -105,60 +105,60 @@ def test_sign_dai_coin_type_on_network_5234(cmd):
if cmd.model == "nanos":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00000.png")
cmd.client.press_and_release('right')
# Amount 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00001.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00003.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00004.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00005.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00006.png")
cmd.client.press_and_release('right')
# Network 5243
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00007.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00007.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00008.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00008.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00009.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00009.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00000.png")
cmd.client.press_and_release('right')
# Amount
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00001.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00002.png")
cmd.client.press_and_release('right')
# Network 5243
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00003.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00004.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00005.png")
cmd.client.press_and_release('both')
v, r, s = result
@@ -190,60 +190,60 @@ def test_sign_reject(cmd):
if cmd.model == "nanos":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00000.png")
cmd.client.press_and_release('right')
# Amount 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00001.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00003.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00004.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00005.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00006.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00007.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00007.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00008.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00008.png")
cmd.client.press_and_release('right')
# Reject
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00009.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00009.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00000.png")
cmd.client.press_and_release('right')
# Amount
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00001.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00002.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00003.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00004.png")
cmd.client.press_and_release('right')
# Reject
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00005.png")
cmd.client.press_and_release('both')
except ethereum_client.exception.errors.DenyError as error:
@@ -272,52 +272,52 @@ def test_sign_limit_nonce(cmd):
if cmd.model == "nanos":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00000.png")
cmd.client.press_and_release('right')
# Amount 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00001.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00003.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00004.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00005.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00006.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00007.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00007.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00008.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00008.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00000.png")
cmd.client.press_and_release('right')
# Amount
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00001.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00002.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00003.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00004.png")
cmd.client.press_and_release('both')
v, r, s = result
@@ -398,60 +398,60 @@ def test_sign_nonce_display(cmd):
if cmd.model == "nanos":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00000.png")
cmd.client.press_and_release('right')
# Amount 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00001.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00003.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00004.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00005.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00006.png")
cmd.client.press_and_release('right')
# Nonce
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00007.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00007.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00008.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00008.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00009.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00009.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00000.png")
cmd.client.press_and_release('right')
# Amount
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00001.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00002.png")
cmd.client.press_and_release('right')
# Nonce
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00003.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00004.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00005.png")
cmd.client.press_and_release('both')
v, r, s = result
@@ -500,60 +500,60 @@ def test_sign_blind_simple(cmd):
if cmd.model == "nanos":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00000.png")
cmd.client.press_and_release('right')
# Blind Signing
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00001.png")
cmd.client.press_and_release('right')
# Amount 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00003.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00004.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00005.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00006.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00007.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00007.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00008.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00008.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00009.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00009.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00000.png")
cmd.client.press_and_release('right')
# Blind Signing
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00001.png")
cmd.client.press_and_release('right')
# Amount
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00002.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00003.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00004.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00005.png")
cmd.client.press_and_release('both')
v, r, s = result
@@ -586,7 +586,7 @@ def test_sign_blind_error_disabled(cmd):
if cmd.model == "nanos":
pass
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
pass
except ethereum_client.exception.errors.UnknownDeviceError as error:
assert error.args[0] == '0x6a80'
@@ -632,68 +632,68 @@ def test_sign_blind_and_nonce_display(cmd):
if cmd.model == "nanos":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00000.png")
cmd.client.press_and_release('right')
# Blind Signing
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00001.png")
cmd.client.press_and_release('right')
# Amount 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00002.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00003.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00004.png")
cmd.client.press_and_release('right')
# Address 1/3, 2/3, 3/3
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00005.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00006.png")
cmd.client.press_and_release('right')
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00007.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00007.png")
cmd.client.press_and_release('right')
# Nonce
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00008.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00008.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00009.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00009.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00010.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00010.png")
cmd.client.press_and_release('both')
if cmd.model == "nanox":
if cmd.model == "nanox" or cmd.model == "nanosp":
# Review transaction
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00000.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00000.png")
cmd.client.press_and_release('right')
# Blind Signing
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00001.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00001.png")
cmd.client.press_and_release('right')
# Amount
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00002.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00002.png")
cmd.client.press_and_release('right')
# Address
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00003.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00003.png")
cmd.client.press_and_release('right')
# Nonce
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00004.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00004.png")
cmd.client.press_and_release('right')
# Max Fees
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00005.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00005.png")
cmd.client.press_and_release('right')
# Accept and send
compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00006.png")
compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00006.png")
cmd.client.press_and_release('both')
v, r, s = result