diff --git a/ci/tests/Jenkinsfile.e2e-nightly b/ci/tests/Jenkinsfile.e2e-nightly index afc3596a0e..d686c5de54 100644 --- a/ci/tests/Jenkinsfile.e2e-nightly +++ b/ci/tests/Jenkinsfile.e2e-nightly @@ -58,7 +58,7 @@ pipeline { sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py' sh """ python3 -m pytest \ - --numprocesses 15 \ + --numprocesses 9 \ --rerun_count=2 \ --testrail_report=True \ -m testrail_id \ diff --git a/ci/tests/Jenkinsfile.e2e-prs b/ci/tests/Jenkinsfile.e2e-prs index 60ae2c9251..1136003028 100644 --- a/ci/tests/Jenkinsfile.e2e-prs +++ b/ci/tests/Jenkinsfile.e2e-prs @@ -97,7 +97,7 @@ pipeline { sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py' sh """ python3 -m pytest \ - --numprocesses 15 \ + --numprocesses 9 \ --rerun_count=2 \ --testrail_report=True \ -m \"${params.TEST_MARKERS}\" \ diff --git a/test/appium/support/testrail_report.py b/test/appium/support/testrail_report.py index 5e4d983a1a..3c214f1902 100644 --- a/test/appium/support/testrail_report.py +++ b/test/appium/support/testrail_report.py @@ -114,6 +114,7 @@ class TestrailReport(BaseTestReport): test_cases['pr']['1_1_chat_commands'] = 50825 test_cases['pr']['ens'] = 50827 test_cases['pr']['sync'] = 50834 + test_cases['pr']['browser'] = 50812 ## Nightly e2e test_cases['nightly']['medium'] = 736 test_cases['nightly']['chat'] = 50811 diff --git a/test/appium/tests/base_test_case.py b/test/appium/tests/base_test_case.py index e5d2574647..26142c83ea 100644 --- a/test/appium/tests/base_test_case.py +++ b/test/appium/tests/base_test_case.py @@ -81,7 +81,7 @@ def get_capabilities_sauce_lab(): desired_caps['deviceName'] = 'Android GoogleAPI Emulator' desired_caps['deviceOrientation'] = "portrait" desired_caps['commandTimeout'] = 600 - desired_caps['idleTimeout'] = 800 + desired_caps['idleTimeout'] = 1000 desired_caps['unicodeKeyboard'] = True desired_caps['automationName'] = 'UiAutomator2' desired_caps['setWebContentDebuggingEnabled'] = True diff --git a/test/appium/tests/critical/chats/test_1_1_public_chats.py b/test/appium/tests/critical/chats/test_1_1_public_chats.py index b713286c76..e5bc5878e8 100644 --- a/test/appium/tests/critical/chats/test_1_1_public_chats.py +++ b/test/appium/tests/critical/chats/test_1_1_public_chats.py @@ -1007,6 +1007,7 @@ class TestEnsStickersMultipleDevicesMerged(MultipleSharedDeviceTestCase): send_transaction.ok_got_it_button.click() send_transaction.sign_transaction() chat_1_sender_message = self.chat_1.get_outgoing_transaction(transaction_value=amount) + self.home_2.put_app_to_background_and_back() self.network_api.wait_for_confirmation_of_transaction(self.sender['address'], amount, confirmations=3) chat_1_sender_message.transaction_status.wait_for_element_text(chat_1_sender_message.confirmed) diff --git a/test/appium/tests/critical/chats/test_group_chat.py b/test/appium/tests/critical/chats/test_group_chat.py index 0d6b74d35d..ca6d97a2a4 100644 --- a/test/appium/tests/critical/chats/test_group_chat.py +++ b/test/appium/tests/critical/chats/test_group_chat.py @@ -19,8 +19,10 @@ class TestGroupChatMultipleDeviceMerged(MultipleSharedDeviceTestCase): for key in cls.drivers: sign_in = SignInView(cls.drivers[key]) cls.homes[key] = sign_in.create_user(enable_notifications=True) + SignInView(cls.drivers[2]).put_app_to_background_and_back() cls.public_keys[key], cls.usernames[key] = sign_in.get_public_key_and_username(True) sign_in.home_button.click() + SignInView(cls.drivers[0]).put_app_to_background_and_back() cls.chat_name = cls.homes[0].get_random_chat_name() cls.homes[0].just_fyi('Admin adds future members to contacts') @@ -42,6 +44,7 @@ class TestGroupChatMultipleDeviceMerged(MultipleSharedDeviceTestCase): @marks.testrail_id(3994) def test_group_chat_push_system_messages_when_invited(self): self.homes[1].just_fyi("Check system messages in PNs") + self.homes[2].put_app_to_background_and_back() self.homes[1].put_app_to_background() self.homes[1].open_notification_bar() pns = [self.chats[0].pn_invited_to_group_chat(self.usernames[0], self.chat_name), diff --git a/test/appium/tests/critical/onboarding/test_onboarding_flows.py b/test/appium/tests/critical/onboarding/test_onboarding_flows.py index 7b10adac28..afeeb9d916 100644 --- a/test/appium/tests/critical/onboarding/test_onboarding_flows.py +++ b/test/appium/tests/critical/onboarding/test_onboarding_flows.py @@ -84,8 +84,9 @@ class TestOnboardingOneDeviceMerged(MultipleSharedDeviceTestCase): wallet.click_system_back_button() self.home.just_fyi("Check that can paste wallet address in chat message input") - wallet.home_button.double_click() - self.home.get_chat('#%s' % self.public_chat_name).click() + wallet.home_button.click() + if not self.chat.chat_message_input.is_element_displayed(): + self.home.get_chat('#%s' % self.public_chat_name).click() self.chat.chat_message_input.click() self.chat.paste_text() if self.chat.chat_message_input.text != address: diff --git a/test/appium/tests/critical/test_pairing_devices_sync.py b/test/appium/tests/critical/test_pairing_devices_sync.py index 5c4829e8df..d163f75f17 100644 --- a/test/appium/tests/critical/test_pairing_devices_sync.py +++ b/test/appium/tests/critical/test_pairing_devices_sync.py @@ -113,6 +113,7 @@ class TestPairingSyncMultipleDevicesMerged(MultipleSharedDeviceTestCase): cls.profile_1.close_button.click() cls.profile_1.home_button.click() cls.profile_1.get_recovery_phrase() + cls.device_2.put_app_to_background_and_back() cls.home_1.just_fyi('Add contact, 1-1 chat (main device): 3-random, contact with ENS, start 1-1') cls.chat_1 = cls.home_1.add_contact(cls.contact_before_sync['public_key']) diff --git a/test/appium/tests/critical/test_public_chat_browsing.py b/test/appium/tests/critical/test_public_chat_browsing.py index e60b3d39a6..3c852e24bc 100644 --- a/test/appium/tests/critical/test_public_chat_browsing.py +++ b/test/appium/tests/critical/test_public_chat_browsing.py @@ -38,9 +38,10 @@ class TestPublicChatMultipleDeviceMerged(MultipleSharedDeviceTestCase): self.chat_2.dapp_tab_button.click() sent_time_variants = self.chat_1.convert_device_time_to_chat_timestamp() timestamp = self.chat_1.chat_element_by_text(message).timestamp_on_tap - if timestamp not in sent_time_variants: - self.errors.append("Timestamp is not shown, expected: '%s', in fact: '%s'" % - (sent_time_variants.join(','), timestamp)) + if sent_time_variants and timestamp: + if timestamp not in sent_time_variants: + self.errors.append("Timestamp is not shown, expected: '%s', in fact: '%s'" % + (sent_time_variants.join(','), timestamp)) self.chat_2.home_button.click(desired_view='chat') for chat in self.chat_1, self.chat_2: chat.verify_message_is_under_today_text(message, self.errors) @@ -50,6 +51,8 @@ class TestPublicChatMultipleDeviceMerged(MultipleSharedDeviceTestCase): @marks.testrail_id(700734) def test_public_chat_message_edit(self): + if not self.chat_2.chat_message_input.is_element_displayed(): + self.chat_2.home_button.click(desired_view='chat') message_before_edit, message_after_edit = self.text_message, "Message AFTER edit 2" self.chat_1.edit_message_in_chat(message_before_edit, message_after_edit) for chat in (self.chat_1, self.chat_2): diff --git a/test/appium/tests/critical/wallet_and_tx/test_wallet.py b/test/appium/tests/critical/wallet_and_tx/test_wallet.py index e1792879c2..7f0cd34eea 100644 --- a/test/appium/tests/critical/wallet_and_tx/test_wallet.py +++ b/test/appium/tests/critical/wallet_and_tx/test_wallet.py @@ -252,10 +252,9 @@ class TestWalletManagementDeviceMerged(MultipleSharedDeviceTestCase): self.errors.verify_no_errors() @marks.testrail_id(700762) - @marks.skip - # TODO: skipped due to #13016 - def test_wallet_add_account_seed_phrase_collectibles_mainnet_rinkeby(self): + def test_wallet_add_account_seed_phrase_collectibles_rinkeby_set_as_profile_image(self): user = wallet_users['E'] + self.wallet.driver.set_network_connection(6) account_seed_collectibles = self.account_seed_collectibles self.wallet.get_back_to_home_view() if not self.wallet.add_account_button.is_element_displayed(3): @@ -290,57 +289,11 @@ class TestWalletManagementDeviceMerged(MultipleSharedDeviceTestCase): if not self.wallet.element_by_translation_id("no-collectibles").is_element_displayed(): self.errors.append("Collectibles are shown on Ropsten network!") - self.wallet.just_fyi('Check collectibles amount in wallet') - profile = self.home.profile_button.click() - profile.switch_network() - profile.wallet_button.click() - if not account_button.is_element_displayed(): - self.wallet.accounts_status_account.swipe_left_on_element() - account_button.click() - self.wallet.collectibles_button.click() - self.wallet.element_by_translation_id("display-collectibles").scroll_and_click() - collectible_amount = self.wallet.get_collectibles_amount() - collectible_amount.wait_for_visibility_of_element(30) - if collectible_amount.text != '1': - self.errors.append('Wrong number is shown on CK assets: %s' % collectible_amount.text) - - self.wallet.just_fyi('Check that you can open collectible to view') - collectible_amount.click() - if not self.wallet.nft_asset_button.is_element_displayed(60): - self.driver.fail("Kitty is not shown after opening it from collectibles!") - self.wallet.nft_asset_button.click() - self.wallet.set_collectible_as_profile_photo_button.scroll_and_click() - - self.wallet.just_fyi('Check that you can set collectible as profile photo') - web_view = self.wallet.get_base_web_view() - self.wallet.view_collectible_on_opensea_button.click_until_presence_of_element( - web_view.browser_previous_page_button) - web_view.wait_for_d_aap_to_load() - if not web_view.element_by_text('Princess Gunklater').is_element_displayed(30): - self.errors.append("Collectible can't be opened when tapping 'View on OpenSea' via NFT page") - self.wallet.wallet_button.click() - - self.wallet.just_fyi('Check that collectibles are not shown when sending assets from wallet') - send_transaction = self.wallet.send_transaction_button.click() - send_transaction.select_asset_button.click() - if send_transaction.asset_by_name("CryptoKitties").is_element_displayed(): - self.errors.append('Collectibles can be sent from wallet') - self.wallet.close_send_transaction_view_button.double_click() - - self.wallet.just_fyi('Check "Open in OpenSea" (that user is signed in)') - self.wallet.element_by_translation_id("check-on-opensea").click_until_presence_of_element( - web_view.browser_previous_page_button) - web_view.wait_for_d_aap_to_load(10) - self.wallet.element_by_text('e2ecryptokitty').wait_for_element(60) - - self.wallet.just_fyi("Check that custom image from collectible is set as profile photo") - self.wallet.profile_button.double_click() - if not profile.profile_picture.is_element_image_similar_to_template('collectible_pic.png'): - self.errors.append("Collectible image is not set as profile image") - self.home.just_fyi('Check that collectibles amount is shown on Rinkeby') profile = self.home.profile_button.click() profile.switch_network('Rinkeby with upstream RPC') + # Additional login as a workaround for issue when collectibles are not shown on test network + self.wallet.reopen_app() profile = self.home.profile_button.click() profile.wallet_button.click() if not account_button.is_element_displayed(): @@ -350,13 +303,40 @@ class TestWalletManagementDeviceMerged(MultipleSharedDeviceTestCase): self.wallet.transaction_history_button.click() self.wallet.collectibles_button.click() self.wallet.swipe_up() - if self.wallet.element_by_translation_id("display-collectibles").is_element_displayed: - self.wallet.element_by_translation_id("display-collectibles").click() for asset in user['collectibles']: self.wallet.get_collectibles_amount(asset).scroll_to_element() if self.wallet.get_collectibles_amount(asset).text != user['collectibles'][asset]: self.errors.append( '%s %s is not shown in Collectibles for Rinkeby!' % (user['collectibles'][asset], asset)) + + self.wallet.just_fyi('Check that you can open collectible to view') + nft, nft_name = 'Coins & Steel Exclusive Item Skin V2', "Warlock's Arm" + self.wallet.get_collectibles_amount(nft).click() + if not self.wallet.nft_asset_button.is_element_displayed(60): + self.driver.fail("No card is not shown for %s after opening it from collectibles!" % nft) + self.wallet.nft_asset_button.click() + self.wallet.set_collectible_as_profile_photo_button.scroll_and_click() + + self.wallet.just_fyi('Check that you can set collectible as profile photo') + web_view = self.wallet.get_base_web_view() + self.wallet.view_collectible_on_opensea_button.click_until_presence_of_element( + web_view.browser_previous_page_button) + web_view.wait_for_d_aap_to_load() + if not web_view.element_by_text(nft_name).is_element_displayed(30): + self.errors.append("Collectible can't be opened when tapping 'View on OpenSea' via NFT page") + self.wallet.wallet_button.click() + + self.wallet.just_fyi('Check that collectibles are not shown when sending assets from wallet') + send_transaction = self.wallet.send_transaction_button.click() + send_transaction.select_asset_button.click() + if send_transaction.asset_by_name(nft).is_element_displayed(): + self.errors.append('Collectibles can be sent from wallet') + self.wallet.close_send_transaction_view_button.double_click() + + self.wallet.just_fyi("Check that custom image from collectible is set as profile photo") + self.wallet.profile_button.double_click() + if not profile.profile_picture.is_element_image_similar_to_template('collectible_pic.png'): + self.errors.append("Collectible image is not set as profile image") self.errors.verify_no_errors() @marks.testrail_id(700766) diff --git a/test/appium/tests/medium/test_browser_profile.py b/test/appium/tests/medium/test_browser_profile.py index 69abc4ce81..66d827bb03 100644 --- a/test/appium/tests/medium/test_browser_profile.py +++ b/test/appium/tests/medium/test_browser_profile.py @@ -188,7 +188,7 @@ class TestBrowserProfileOneDevice(MultipleSharedDeviceTestCase): @marks.testrail_id(702159) def test_profile_invite_friends(self): - self.home.home_button.click() + self.home.home_button.double_click() self.home.just_fyi("Check it via 'Invite friends' on home view") self.home.invite_friends_button.click() diff --git a/test/appium/views/base_view.py b/test/appium/views/base_view.py index 0823561874..abd2f74005 100644 --- a/test/appium/views/base_view.py +++ b/test/appium/views/base_view.py @@ -564,7 +564,8 @@ class BaseView(object): def share_via_messenger(self): self.driver.info("Sharing via messenger", device=False) - self.element_by_text('Messages').wait_and_click(40) + self.element_by_text('Messages').wait_for_visibility_of_element(40) + self.element_by_text('Messages').click_until_presence_of_element(self.element_by_text('New message')) self.element_by_text('New message').wait_and_click() self.send_as_keyevent('+0100100101') self.confirm() diff --git a/test/appium/views/elements_templates/collectible_pic.png b/test/appium/views/elements_templates/collectible_pic.png index ad88450f5e..1e7ec3cde7 100644 Binary files a/test/appium/views/elements_templates/collectible_pic.png and b/test/appium/views/elements_templates/collectible_pic.png differ