@@ -87,120 +87,6 @@ def test_1_passport_functions(self):
8787 print (f"GetLinkedAddresses output: { text } " )
8888 self .assertEqual ("No linked addresses" , text )
8989
90- @pytest .mark .skip (reason = "Base test should not be executed directly" )
91- def test_2_imx_functions (self ):
92- output = self .altdriver .find_object (By .NAME , "Output" )
93-
94- # Connect to IMX
95- self .altdriver .find_object (By .NAME , "ConnectBtn" ).tap ()
96- time .sleep (5 )
97- text = output .get_text ()
98- print (f"ConnectBtn output: { text } " )
99- self .assertEqual ("Connected to IMX" , text )
100-
101- # Is registered off-chain
102- self .altdriver .wait_for_object (By .NAME , "IsRegisteredOffchainBtn" ).tap ()
103- time .sleep (1 )
104- text = output .get_text ()
105- print (f"IsRegisteredOffchainBtn output: { text } " )
106- self .assertEqual ("Registered" , text )
107-
108- # Register off-chain
109- # Wait up to 3 times for "Passport account already registered" to appear
110- attempts = 0
111- while attempts < 3 :
112- self .altdriver .find_object (By .NAME , "RegisterOffchainBtn" ).tap ()
113- text = output .get_text ()
114- print (f"RegisterOffchainBtn output: { text } " )
115- self .assertEqual ("Registering off-chain..." , text )
116- time .sleep (20 )
117- output_text = output .get_text ()
118- # Accept either success message or 409 error (account already registered)
119- if "Successfully registered" in output_text or ("409" in output_text and "USER_REGISTRATION_ERROR" in output_text ):
120- break
121- attempts += 1
122-
123- # Assert that registration completed (either success or 409 error for already registered)
124- output_text = output .get_text ()
125- self .assertTrue (
126- "Successfully registered" in output_text or ("409" in output_text and "USER_REGISTRATION_ERROR" in output_text ),
127- f"Expected 'Successfully registered' or '409 (USER_REGISTRATION_ERROR)' not found. Actual output: '{ output_text } '"
128- )
129-
130- # Get address
131- self .altdriver .find_object (By .NAME , "GetAddressBtn" ).tap ()
132- text = output .get_text ()
133- print (f"GetAddressBtn output: { text } " )
134- self .assertEqual (TestConfig .WALLET_ADDRESS , text )
135-
136- # Show NFT transfer scene
137- self .altdriver .find_object (By .NAME , "NftTransferBtn" ).tap ()
138- self .altdriver .wait_for_current_scene_to_be ("ImxNftTransfer" )
139-
140- # Get all NFTs the user owns
141- collection = "0x3765d19d5bc39b60718e43b4b12b30e87d383181"
142- api_url = f"https://api.sandbox.immutable.com/v1/assets?collection={ collection } &user={ TestConfig .WALLET_ADDRESS } &page_size=3"
143- token_ids = []
144- try :
145- # Make the API request
146- response = requests .get (api_url )
147-
148- # Raise an exception if the request was unsuccessful
149- response .raise_for_status ()
150-
151- # Parse the JSON response
152- data = response .json ()
153-
154- # Extract the token_ids
155- token_ids = [item ['token_id' ] for item in data ['result' ]]
156-
157- # Check that there's enough NFTs to test transfer
158- if len (token_ids ) < 3 :
159- raise SystemExit (f"Not enough NFTs to test transfer" )
160-
161- except requests .exceptions .HTTPError as err :
162- raise SystemExit (f"HTTP error occurred: { err } " )
163- except Exception as err :
164- raise SystemExit (f"An error occurred: { err } " )
165-
166- # Single transfer
167- tokenId = self .altdriver .wait_for_object (By .NAME , "TokenId1" )
168- tokenId .set_text (token_ids [0 ])
169- tokenAddress = self .altdriver .wait_for_object (By .NAME , "TokenAddress1" )
170- tokenAddress .set_text (collection )
171- receiver = self .altdriver .wait_for_object (By .NAME , "Receiver1" )
172- receiver .set_text ("0x0000000000000000000000000000000000000000" )
173- self .altdriver .find_object (By .NAME , "TransferButton" ).tap ()
174- time .sleep (30 )
175- output = self .altdriver .find_object (By .NAME , "Output" )
176- text = output .get_text ()
177- print (f"Single transfer output: { text } " )
178- self .assertTrue (text .startswith ("NFT transferred successfully" ))
179-
180- # Batch transfer
181- tokenId = self .altdriver .wait_for_object (By .NAME , "TokenId1" )
182- tokenId .set_text (token_ids [1 ])
183- tokenAddress = self .altdriver .wait_for_object (By .NAME , "TokenAddress1" )
184- tokenAddress .set_text (collection )
185- receiver = self .altdriver .wait_for_object (By .NAME , "Receiver1" )
186- receiver .set_text ("0x0000000000000000000000000000000000000000" )
187- tokenId = self .altdriver .wait_for_object (By .NAME , "TokenId2" )
188- tokenId .set_text (token_ids [2 ])
189- tokenAddress = self .altdriver .wait_for_object (By .NAME , "TokenAddress2" )
190- tokenAddress .set_text (collection )
191- receiver = self .altdriver .wait_for_object (By .NAME , "Receiver2" )
192- receiver .set_text ("0x0000000000000000000000000000000000000000" )
193- self .altdriver .find_object (By .NAME , "TransferButton" ).tap ()
194- time .sleep (30 )
195- output = self .altdriver .find_object (By .NAME , "Output" )
196- text = output .get_text ()
197- print (f"Batch transfer output: { text } " )
198- self .assertEqual ("Successfully transferred 2 NFTs." , text )
199-
200- # Go back to authenticated scene
201- self .altdriver .find_object (By .NAME , "CancelButton" ).tap ()
202- self .altdriver .wait_for_current_scene_to_be ("AuthenticatedScene" )
203-
20490 @pytest .mark .skip (reason = "Base test should not be executed directly" )
20591 def test_3_zkevm_functions (self ):
20692 output = self .altdriver .find_object (By .NAME , "Output" )
0 commit comments