e2e: fixes
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
This commit is contained in:
parent
cd24bc013f
commit
4b487f81f6
|
@ -150,7 +150,7 @@ class NetworkApi(object):
|
||||||
def faucet_backup(self, address):
|
def faucet_backup(self, address):
|
||||||
self.log("Trying to get funds from %s" % self.faucet_backup_address)
|
self.log("Trying to get funds from %s" % self.faucet_backup_address)
|
||||||
address = "0x" + address
|
address = "0x" + address
|
||||||
w3.donate_testnet_eth(address=address, amount=0.005, inscrease_default_gas_price=10)
|
w3.donate_testnet_eth(address=address, amount=0.01, inscrease_default_gas_price=10)
|
||||||
|
|
||||||
def get_donate(self, address, external_faucet=False, wait_time=300):
|
def get_donate(self, address, external_faucet=False, wait_time=300):
|
||||||
initial_balance = self.get_balance(address)
|
initial_balance = self.get_balance(address)
|
||||||
|
|
|
@ -812,7 +812,6 @@ class TestProfileMultipleDevice(MultipleDeviceTestCase):
|
||||||
|
|
||||||
@marks.testrail_id(5767)
|
@marks.testrail_id(5767)
|
||||||
@marks.medium
|
@marks.medium
|
||||||
@marks.flaky
|
|
||||||
def test_can_not_connect_to_mailserver(self):
|
def test_can_not_connect_to_mailserver(self):
|
||||||
self.create_drivers(2)
|
self.create_drivers(2)
|
||||||
home_1, home_2 = SignInView(self.drivers[0]).create_user(), SignInView(self.drivers[1]).create_user()
|
home_1, home_2 = SignInView(self.drivers[0]).create_user(), SignInView(self.drivers[1]).create_user()
|
||||||
|
@ -828,13 +827,16 @@ class TestProfileMultipleDevice(MultipleDeviceTestCase):
|
||||||
profile_1.mail_server_address_input.set_value(mailserver_address.replace('4', '5'))
|
profile_1.mail_server_address_input.set_value(mailserver_address.replace('4', '5'))
|
||||||
profile_1.save_button.click()
|
profile_1.save_button.click()
|
||||||
profile_1.mail_server_by_name(server_name).click()
|
profile_1.mail_server_by_name(server_name).click()
|
||||||
profile_1.mail_server_connect_button.click()
|
profile_1.mail_server_connect_button.wait_and_click()
|
||||||
profile_1.confirm_button.click()
|
profile_1.confirm_button.wait_and_click()
|
||||||
|
if profile_1.save_button.is_element_displayed():
|
||||||
|
profile_1.save_button.click()
|
||||||
|
sign_in_1 = home_1.get_sign_in_view()
|
||||||
|
sign_in_1.sign_in()
|
||||||
|
|
||||||
profile_1.just_fyi('check that popup "Error connecting" will not reappear if tap on "Cancel"')
|
profile_1.just_fyi('check that popup "Error connecting" will not reappear if tap on "Cancel"')
|
||||||
profile_1.element_by_translation_id('mailserver-error-title').wait_for_element(120)
|
profile_1.element_by_translation_id('mailserver-error-title').wait_for_element(120)
|
||||||
profile_1.cancel_button.click()
|
profile_1.cancel_button.click()
|
||||||
profile_1.home_button.click()
|
|
||||||
|
|
||||||
home_2.just_fyi('send several messages to public channel')
|
home_2.just_fyi('send several messages to public channel')
|
||||||
public_chat_name = home_2.get_random_chat_name()
|
public_chat_name = home_2.get_random_chat_name()
|
||||||
|
@ -849,20 +851,20 @@ class TestProfileMultipleDevice(MultipleDeviceTestCase):
|
||||||
public_chat_1 = home_1.join_public_chat(public_chat_name)
|
public_chat_1 = home_1.join_public_chat(public_chat_name)
|
||||||
public_chat_1.relogin()
|
public_chat_1.relogin()
|
||||||
|
|
||||||
|
profile_1.just_fyi('check that still connected to custom mailserver after relogin')
|
||||||
|
home_1.profile_button.click()
|
||||||
|
profile_1.sync_settings_button.click()
|
||||||
|
if not profile_1.element_by_text(server_name).is_element_displayed():
|
||||||
|
self.drivers[0].fail("Not connected to custom mailserver after re-login")
|
||||||
|
|
||||||
|
profile_1.just_fyi('check that can RETRY to connect')
|
||||||
# TODO: blocked due to 11786 (rechecked 23.11.21, valid)
|
# TODO: blocked due to 11786 (rechecked 23.11.21, valid)
|
||||||
# profile_1.just_fyi('check that still connected to custom mailserver after relogin')
|
# profile_1.element_by_translation_id('mailserver-error-title').wait_for_element(120)
|
||||||
# home_1.profile_button.click()
|
# public_chat_1.element_by_translation_id('mailserver-retry', uppercase=True).wait_and_click(60)
|
||||||
# profile_1.sync_settings_button.click()
|
|
||||||
# if not profile_1.element_by_text(server_name).is_element_displayed():
|
|
||||||
# self.drivers[0].fail("Not connected to custom mailserver after re-login")
|
|
||||||
#
|
|
||||||
# profile_1.just_fyi('check that can RETRY to connect')
|
|
||||||
# profile_1.element_by_translation_id(id='mailserver-error-title').wait_for_element(60)
|
|
||||||
# public_chat_1.element_by_translation_id(id='mailserver-retry', uppercase=True).wait_and_click(60)
|
|
||||||
#
|
#
|
||||||
# profile_1.just_fyi('check that can pick another mailserver and receive messages')
|
# profile_1.just_fyi('check that can pick another mailserver and receive messages')
|
||||||
# profile_1.element_by_translation_id(id='mailserver-error-title').wait_for_element(60)
|
# profile_1.element_by_translation_id('mailserver-error-title').wait_for_element(120)
|
||||||
# profile_1.element_by_translation_id(id='mailserver-pick-another', uppercase=True).wait_and_click(120)
|
# profile_1.element_by_translation_id('mailserver-pick-another', uppercase=True).wait_and_click(120)
|
||||||
# mailserver = profile_1.return_mailserver_name(mailserver_ams, used_fleet)
|
# mailserver = profile_1.return_mailserver_name(mailserver_ams, used_fleet)
|
||||||
# profile_1.element_by_text(mailserver).click()
|
# profile_1.element_by_text(mailserver).click()
|
||||||
# profile_1.confirm_button.click()
|
# profile_1.confirm_button.click()
|
||||||
|
|
|
@ -109,11 +109,11 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
|
||||||
|
|
||||||
home_1.just_fyi('go back online and check that 1-1 chat will be fetched')
|
home_1.just_fyi('go back online and check that 1-1 chat will be fetched')
|
||||||
home_1.toggle_airplane_mode()
|
home_1.toggle_airplane_mode()
|
||||||
chat_element = home_1.get_chat(username_2, wait_time=60)
|
chat_element = home_1.get_chat(username_2, wait_time=120)
|
||||||
chat_1 = chat_element.click()
|
chat_1 = chat_element.click()
|
||||||
chat_1.chat_element_by_text(message_1).wait_for_visibility_of_element(2)
|
chat_1.chat_element_by_text(message_1).wait_for_visibility_of_element(2)
|
||||||
|
|
||||||
home_1.just_fyi('checking offline fetching for another message, check delivered stutus for first message')
|
home_1.just_fyi('checking offline fetching for another message, check delivered status for first message')
|
||||||
chat_2.toggle_airplane_mode()
|
chat_2.toggle_airplane_mode()
|
||||||
if chat_2.chat_element_by_text(message_1).status != 'delivered':
|
if chat_2.chat_element_by_text(message_1).status != 'delivered':
|
||||||
self.errors.append(
|
self.errors.append(
|
||||||
|
@ -212,10 +212,10 @@ class TestMessagesOneToOneChatMultiple(MultipleDeviceTestCase):
|
||||||
|
|
||||||
device_1_one_to_one_chat_element = home_1.get_chat(username_2)
|
device_1_one_to_one_chat_element = home_1.get_chat(username_2)
|
||||||
chat_private_2.edit_message_in_chat(message_before_edit_1_1, message_after_edit_1_1)
|
chat_private_2.edit_message_in_chat(message_before_edit_1_1, message_after_edit_1_1)
|
||||||
if not home_1.element_by_text_part(message_after_edit_1_1).is_element_present():
|
if not home_1.element_by_text_part(message_after_edit_1_1).is_element_displayed(30):
|
||||||
self.errors.append('UNedited message version displayed on preview')
|
self.errors.append('UNedited message version displayed on preview')
|
||||||
chat_private_1 = device_1_one_to_one_chat_element.click()
|
chat_private_1 = device_1_one_to_one_chat_element.click()
|
||||||
if not home_1.element_by_text_part(message_after_edit_1_1).is_element_present(30):
|
if not home_1.element_by_text_part(message_after_edit_1_1).is_element_present():
|
||||||
self.errors.append('No edited message in 1-1 chat displayed')
|
self.errors.append('No edited message in 1-1 chat displayed')
|
||||||
if not home_1.element_by_text_part("⌫ Edited").is_element_present(30):
|
if not home_1.element_by_text_part("⌫ Edited").is_element_present(30):
|
||||||
self.errors.append('No mark in message bubble about this message was edited on receiver side')
|
self.errors.append('No mark in message bubble about this message was edited on receiver side')
|
||||||
|
|
|
@ -302,7 +302,7 @@ def create_shared_drivers(quantity):
|
||||||
else:
|
else:
|
||||||
loop = asyncio.new_event_loop()
|
loop = asyncio.new_event_loop()
|
||||||
asyncio.set_event_loop(loop)
|
asyncio.set_event_loop(loop)
|
||||||
capabilities = {'maxDuration': 1800}
|
capabilities = {'maxDuration': 2700}
|
||||||
drivers = loop.run_until_complete(start_threads(quantity,
|
drivers = loop.run_until_complete(start_threads(quantity,
|
||||||
Driver,
|
Driver,
|
||||||
drivers,
|
drivers,
|
||||||
|
|
|
@ -73,7 +73,7 @@ class BaseElement(object):
|
||||||
def find_element(self):
|
def find_element(self):
|
||||||
for _ in range(3):
|
for _ in range(3):
|
||||||
try:
|
try:
|
||||||
self.driver.info("Find '%s' by '%s': `%s`" % (self.name, self.by, self.exclude_emoji(self.locator)))
|
self.driver.info("Find `%s` by `%s`: `%s`" % (self.name, self.by, self.exclude_emoji(self.locator)))
|
||||||
return self.driver.find_element(self.by, self.locator)
|
return self.driver.find_element(self.by, self.locator)
|
||||||
except NoSuchElementException:
|
except NoSuchElementException:
|
||||||
raise NoSuchElementException(
|
raise NoSuchElementException(
|
||||||
|
@ -93,7 +93,7 @@ class BaseElement(object):
|
||||||
|
|
||||||
def click_until_presence_of_element(self, desired_element, attempts=4):
|
def click_until_presence_of_element(self, desired_element, attempts=4):
|
||||||
counter = 0
|
counter = 0
|
||||||
self.driver.info("Click until '%s' by '%s': `%s` will be presented" % (
|
self.driver.info("Click until `%s` by `%s`: `%s` will be presented" % (
|
||||||
desired_element.name, desired_element.by, desired_element.locator))
|
desired_element.name, desired_element.by, desired_element.locator))
|
||||||
while not desired_element.is_element_present(1) and counter <= attempts:
|
while not desired_element.is_element_present(1) and counter <= attempts:
|
||||||
try:
|
try:
|
||||||
|
@ -115,7 +115,7 @@ class BaseElement(object):
|
||||||
.until(expected_conditions.presence_of_element_located((self.by, self.locator)))
|
.until(expected_conditions.presence_of_element_located((self.by, self.locator)))
|
||||||
except TimeoutException:
|
except TimeoutException:
|
||||||
raise TimeoutException(
|
raise TimeoutException(
|
||||||
"Device %s: %s by %s: `%s` is not found on the screen" % (
|
"Device `%s`: `%s` by` %s`: `%s` is not found on the screen" % (
|
||||||
self.driver.number, self.name, self.by, self.locator)) from None
|
self.driver.number, self.name, self.by, self.locator)) from None
|
||||||
|
|
||||||
def wait_for_elements(self, seconds=10):
|
def wait_for_elements(self, seconds=10):
|
||||||
|
@ -146,11 +146,11 @@ class BaseElement(object):
|
||||||
|
|
||||||
def wait_for_element_text(self, text, wait_time=30):
|
def wait_for_element_text(self, text, wait_time=30):
|
||||||
counter = 0
|
counter = 0
|
||||||
self.driver.info("Wait for text element '%s' to be equal to '%s'" % (self.name, text))
|
self.driver.info("Wait for text element `%s` to be equal to `%s`" % (self.name, text))
|
||||||
while True:
|
while True:
|
||||||
if counter >= wait_time:
|
if counter >= wait_time:
|
||||||
self.driver.fail(
|
self.driver.fail(
|
||||||
"'%s' is not equal to expected '%s' in %s sec" % (self.find_element().text, text, wait_time))
|
"`%s` is not equal to expected `%s` in %s sec" % (self.find_element().text, text, wait_time))
|
||||||
elif self.find_element().text != text:
|
elif self.find_element().text != text:
|
||||||
counter += 10
|
counter += 10
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
@ -273,7 +273,7 @@ class BaseElement(object):
|
||||||
|
|
||||||
def long_press_element(self):
|
def long_press_element(self):
|
||||||
element = self.find_element()
|
element = self.find_element()
|
||||||
self.driver.info("Long press on '%s'" % self.name)
|
self.driver.info("Long press on `%s`" % self.name)
|
||||||
action = TouchAction(self.driver)
|
action = TouchAction(self.driver)
|
||||||
action.long_press(element).release().perform()
|
action.long_press(element).release().perform()
|
||||||
|
|
||||||
|
@ -313,25 +313,25 @@ class EditBox(BaseElement):
|
||||||
|
|
||||||
def send_keys(self, value):
|
def send_keys(self, value):
|
||||||
self.find_element().send_keys(value)
|
self.find_element().send_keys(value)
|
||||||
self.driver.info("Type '%s' to '%s'" % (self.exclude_emoji(value), self.name))
|
self.driver.info("Type `%s` to `%s`" % (self.exclude_emoji(value), self.name))
|
||||||
|
|
||||||
def set_value(self, value):
|
def set_value(self, value):
|
||||||
self.find_element().set_value(value)
|
self.find_element().set_value(value)
|
||||||
self.driver.info("Set '%s' value for '%s'" % (self.exclude_emoji(value), self.name))
|
self.driver.info("Set `%s` value for `%s`" % (self.exclude_emoji(value), self.name))
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
self.find_element().clear()
|
self.find_element().clear()
|
||||||
self.driver.info("Clear text in '%s'" % self.name)
|
self.driver.info("Clear text in `%s`" % self.name)
|
||||||
|
|
||||||
def delete_last_symbols(self, number_of_symbols_to_delete: int):
|
def delete_last_symbols(self, number_of_symbols_to_delete: int):
|
||||||
self.driver.info("Delete last %s symbols from '%s'" % (number_of_symbols_to_delete, self.name))
|
self.driver.info("Delete last `%s` symbols from `%s`" % (number_of_symbols_to_delete, self.name))
|
||||||
self.click()
|
self.click()
|
||||||
for _ in range(number_of_symbols_to_delete):
|
for _ in range(number_of_symbols_to_delete):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
self.driver.press_keycode(67)
|
self.driver.press_keycode(67)
|
||||||
|
|
||||||
def paste_text_from_clipboard(self):
|
def paste_text_from_clipboard(self):
|
||||||
self.driver.info("Paste text from clipboard into '%s'" % self.name)
|
self.driver.info("Paste text from clipboard into `%s`" % self.name)
|
||||||
self.long_press_element()
|
self.long_press_element()
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
action = TouchAction(self.driver)
|
action = TouchAction(self.driver)
|
||||||
|
@ -366,14 +366,13 @@ class Button(BaseElement):
|
||||||
super(Button, self).__init__(driver, **kwargs)
|
super(Button, self).__init__(driver, **kwargs)
|
||||||
|
|
||||||
def wait_and_click(self, sec=30):
|
def wait_and_click(self, sec=30):
|
||||||
self.driver.info("Wait for element '%s' for max %ss and click when it is available" % (self.name, sec))
|
self.driver.info("Wait for element `%s` for max %ss and click when it is available" % (self.name, sec))
|
||||||
self.wait_for_visibility_of_element(sec)
|
self.wait_for_visibility_of_element(sec)
|
||||||
self.click()
|
self.click()
|
||||||
|
|
||||||
|
|
||||||
def click_until_absense_of_element(self, desired_element, attempts=3):
|
def click_until_absense_of_element(self, desired_element, attempts=3):
|
||||||
counter = 0
|
counter = 0
|
||||||
self.driver.info("Click until '%s' by '%s': `%s` is NOT presented" % (
|
self.driver.info("Click until `%s` by `%s`: `%s` is NOT presented" % (
|
||||||
desired_element.name, desired_element.by, desired_element.locator))
|
desired_element.name, desired_element.by, desired_element.locator))
|
||||||
while desired_element.is_element_present(1) and counter <= attempts:
|
while desired_element.is_element_present(1) and counter <= attempts:
|
||||||
try:
|
try:
|
||||||
|
@ -390,7 +389,7 @@ class SilentButton(Button):
|
||||||
return self.driver.find_element(self.by, self.locator)
|
return self.driver.find_element(self.by, self.locator)
|
||||||
except NoSuchElementException:
|
except NoSuchElementException:
|
||||||
raise NoSuchElementException(
|
raise NoSuchElementException(
|
||||||
"Device %s: '%s' by %s:'%s' not found on the screen" % (
|
"Device %s: `%s` by `%s`:`%s` not found on the screen" % (
|
||||||
self.driver.number, self.name, self.by, self.locator)) from None
|
self.driver.number, self.name, self.by, self.locator)) from None
|
||||||
except Exception as exception:
|
except Exception as exception:
|
||||||
if 'Internal Server Error' in str(exception):
|
if 'Internal Server Error' in str(exception):
|
||||||
|
|
|
@ -62,7 +62,7 @@ class DappsView(BaseView):
|
||||||
web_view.open_new_tab_plus_button.click_if_shown()
|
web_view.open_new_tab_plus_button.click_if_shown()
|
||||||
self.enter_url_editbox.wait_for_visibility_of_element(20)
|
self.enter_url_editbox.wait_for_visibility_of_element(20)
|
||||||
self.enter_url_editbox.click()
|
self.enter_url_editbox.click()
|
||||||
self.enter_url_editbox.send_keys(url)
|
self.enter_url_editbox.set_value(url)
|
||||||
self.confirm()
|
self.confirm()
|
||||||
from views.web_views.base_web_view import BaseWebView
|
from views.web_views.base_web_view import BaseWebView
|
||||||
BaseWebView(self.driver).wait_for_d_aap_to_load()
|
BaseWebView(self.driver).wait_for_d_aap_to_load()
|
||||||
|
|
Loading…
Reference in New Issue