added public chat management test, disabled group chat tests, added more errors to the rerun tests list
Signed-off-by: yevh-berdnyk <ie.berdnyk@gmail.com>
This commit is contained in:
parent
1752c5bc17
commit
b8e41cb464
|
@ -2,7 +2,11 @@ RERUN_ERRORS = [
|
||||||
'Original error: Error: ESOCKETTIMEDOUT',
|
'Original error: Error: ESOCKETTIMEDOUT',
|
||||||
"The server didn't respond in time.",
|
"The server didn't respond in time.",
|
||||||
'An unknown server-side error occurred while processing the command.',
|
'An unknown server-side error occurred while processing the command.',
|
||||||
'Could not proxy command to remote server. Original error: Error: socket hang up'
|
'Could not proxy command to remote server. Original error: Error: socket hang up',
|
||||||
|
'The server returned an invalid or incomplete response.',
|
||||||
|
'502 Bad Gateway',
|
||||||
|
'Unexpected server error',
|
||||||
|
'504 Gateway Time-out'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ def find_transaction_on_ropsten(address: str, transaction_hash: str):
|
||||||
pytest.fail('Transaction is not found in Ropsten network')
|
pytest.fail('Transaction is not found in Ropsten network')
|
||||||
|
|
||||||
|
|
||||||
def verify_balance_is_updated(initial_balance, recipient_address, wait_time=240):
|
def verify_balance_is_updated(initial_balance, recipient_address, wait_time=360):
|
||||||
counter = 0
|
counter = 0
|
||||||
while True:
|
while True:
|
||||||
if counter >= wait_time:
|
if counter >= wait_time:
|
||||||
|
|
|
@ -42,10 +42,10 @@ def pytest_addoption(parser):
|
||||||
action='store',
|
action='store',
|
||||||
default=None,
|
default=None,
|
||||||
help='Pull Request number')
|
help='Pull Request number')
|
||||||
parser.addoption('--nightly',
|
parser.addoption('--testrail_report',
|
||||||
action='store',
|
action='store',
|
||||||
default=False,
|
default=False,
|
||||||
help='boolean; For running extended test suite against nightly build')
|
help='boolean; For creating testrail report per run')
|
||||||
parser.addoption('--rerun_count',
|
parser.addoption('--rerun_count',
|
||||||
action='store',
|
action='store',
|
||||||
default=0,
|
default=0,
|
||||||
|
@ -74,7 +74,7 @@ def pytest_configure(config):
|
||||||
test_suite_data.apk_name = ([i for i in [i for i in config.getoption('apk').split('/')
|
test_suite_data.apk_name = ([i for i in [i for i in config.getoption('apk').split('/')
|
||||||
if '.apk' in i]])[0]
|
if '.apk' in i]])[0]
|
||||||
if is_master(config):
|
if is_master(config):
|
||||||
if config.getoption('nightly'):
|
if config.getoption('testrail_report'):
|
||||||
testrail_report.add_run(test_suite_data.apk_name)
|
testrail_report.add_run(test_suite_data.apk_name)
|
||||||
if config.getoption('env') == 'sauce':
|
if config.getoption('env') == 'sauce':
|
||||||
if not is_uploaded():
|
if not is_uploaded():
|
||||||
|
@ -99,7 +99,7 @@ def pytest_unconfigure(config):
|
||||||
repo = Github(github_token).get_user('status-im').get_repo('status-react')
|
repo = Github(github_token).get_user('status-im').get_repo('status-react')
|
||||||
pull = repo.get_pull(int(config.getoption('pr_number')))
|
pull = repo.get_pull(int(config.getoption('pr_number')))
|
||||||
pull.create_issue_comment(github_report.build_html_report())
|
pull.create_issue_comment(github_report.build_html_report())
|
||||||
if config.getoption('nightly'):
|
if config.getoption('testrail_report'):
|
||||||
testrail_report.add_results()
|
testrail_report.add_results()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,3 +8,4 @@ chat = pytest.mark.chat
|
||||||
chat_management = pytest.mark.chat_management
|
chat_management = pytest.mark.chat_management
|
||||||
transaction = pytest.mark.transaction
|
transaction = pytest.mark.transaction
|
||||||
wallet = pytest.mark.wallet
|
wallet = pytest.mark.wallet
|
||||||
|
skip = pytest.mark.skip
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
import time
|
import time
|
||||||
import pytest
|
import pytest
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
import emoji
|
||||||
from tests import transaction_users, marks, group_chat_users, get_current_time
|
from tests import transaction_users, marks, group_chat_users, get_current_time
|
||||||
from tests.base_test_case import MultipleDeviceTestCase, SingleDeviceTestCase
|
from tests.base_test_case import MultipleDeviceTestCase, SingleDeviceTestCase
|
||||||
from views.sign_in_view import SignInView
|
from views.sign_in_view import SignInView
|
||||||
|
|
||||||
|
|
||||||
@marks.all
|
@marks.all
|
||||||
@marks.chat_management
|
@marks.chat_management
|
||||||
class TestChatManagementMultiple(MultipleDeviceTestCase):
|
class TestChatManagementMultiple(MultipleDeviceTestCase):
|
||||||
|
@ -71,7 +73,65 @@ class TestChatManagementMultiple(MultipleDeviceTestCase):
|
||||||
device_1_chat_view = device_1_home_view.start_1_1_chat(self.senders['h_user']['username'])
|
device_1_chat_view = device_1_home_view.start_1_1_chat(self.senders['h_user']['username'])
|
||||||
if not device_1_chat_view.no_messages_in_chat.is_element_present():
|
if not device_1_chat_view.no_messages_in_chat.is_element_present():
|
||||||
pytest.fail('Message history is shown in a chat which was previously deleted')
|
pytest.fail('Message history is shown in a chat which was previously deleted')
|
||||||
|
self.verify_no_errors()
|
||||||
|
|
||||||
|
@marks.testrail_case_id(3419)
|
||||||
|
def test_public_chat_management(self):
|
||||||
|
self.create_drivers(2)
|
||||||
|
device_1, device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||||
|
users = []
|
||||||
|
chat_name = ''.join(random.choice(string.ascii_lowercase) for _ in range(19))
|
||||||
|
for sign_in in device_1, device_2:
|
||||||
|
users.append(sign_in.create_user())
|
||||||
|
home = sign_in.get_home_view()
|
||||||
|
home.join_public_chat(chat_name)
|
||||||
|
chat_1, chat_2 = device_1.get_chat_view(), device_2.get_chat_view()
|
||||||
|
message_1, message_2, message_3, message_4, message_5 = 'm1', 'm2', 'm3', 'm4', 'm5'
|
||||||
|
chat_1.chat_message_input.send_keys(message_1)
|
||||||
|
chat_1.send_message_button.click()
|
||||||
|
chat_2.element_by_text(message_1).is_element_present()
|
||||||
|
|
||||||
|
chat_2.chat_message_input.send_keys(message_2)
|
||||||
|
chat_2.send_message_button.click()
|
||||||
|
chat_1.element_by_text(message_2).is_element_present()
|
||||||
|
chat_1.chat_options.click()
|
||||||
|
chat_1.clear_history_button.click()
|
||||||
|
chat_1.clear_button.click()
|
||||||
|
chat_2.chat_message_input.send_keys(message_3)
|
||||||
|
chat_2.send_message_button.click()
|
||||||
|
chat_1.element_by_text(message_3).is_element_present()
|
||||||
|
for message in message_1, message_2:
|
||||||
|
if chat_1.element_starts_with_text(message).is_element_present():
|
||||||
|
self.errors.append("Message '%s' is shown, but public chat history has been cleared" % message)
|
||||||
|
chat_2.chat_options.click()
|
||||||
|
chat_2.delete_chat_button.click()
|
||||||
|
chat_2.delete_button.click()
|
||||||
|
chat_1.chat_message_input.send_keys(message_4)
|
||||||
|
chat_1.send_message_button.click()
|
||||||
|
public_chat_name = '#' + chat_name
|
||||||
|
chat_2.element_by_text(public_chat_name).click()
|
||||||
|
for message in message_1, message_2, message_3, message_4:
|
||||||
|
if not chat_2.element_starts_with_text(message).is_element_present():
|
||||||
|
self.errors.append("Message '%s' is not shown in public chat which has been deleted" % message)
|
||||||
|
chat_1.chat_options.click()
|
||||||
|
chat_1.leave_chat_button.click()
|
||||||
|
chat_1.leave_button.click()
|
||||||
|
chat_2.chat_message_input.send_keys(message_5)
|
||||||
|
chat_2.send_message_button.click()
|
||||||
|
if chat_1.element_starts_with_text(message_5).is_element_present(20):
|
||||||
|
self.errors.append("Message '%s' is shown, but the user left public chat" % message_5)
|
||||||
|
|
||||||
|
chat_2.get_back_to_home_view()
|
||||||
|
home_2, home_1 = chat_2.get_home_view(), chat_1.get_home_view()
|
||||||
|
home_2.swipe_and_delete_chat('#' + chat_name)
|
||||||
|
|
||||||
|
for home in home_2, home_1:
|
||||||
|
home.relogin()
|
||||||
|
if home_1.element_by_text(public_chat_name).is_element_present(20):
|
||||||
|
self.errors.append("Public chat '%s' is shown, but the user left public chat" % public_chat_name)
|
||||||
|
if home_2.element_by_text(public_chat_name).is_element_present(20):
|
||||||
|
self.errors.append("Public chat '%s' is shown, but the chat has been deleted via 'swipe to delete'"
|
||||||
|
% public_chat_name)
|
||||||
self.verify_no_errors()
|
self.verify_no_errors()
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,6 +156,7 @@ class TestChatManagement(SingleDeviceTestCase):
|
||||||
pytest.fail('The chat is present after re-login')
|
pytest.fail('The chat is present after re-login')
|
||||||
|
|
||||||
@marks.testrail_case_id(3418)
|
@marks.testrail_case_id(3418)
|
||||||
|
@marks.skip
|
||||||
def test_swipe_and_delete_group_chat(self):
|
def test_swipe_and_delete_group_chat(self):
|
||||||
recipient = group_chat_users['A_USER']
|
recipient = group_chat_users['A_USER']
|
||||||
sign_in_view = SignInView(self.driver)
|
sign_in_view = SignInView(self.driver)
|
||||||
|
|
|
@ -79,6 +79,7 @@ class TestMessages(MultipleDeviceTestCase):
|
||||||
|
|
||||||
@marks.pr
|
@marks.pr
|
||||||
@marks.testrail_case_id(3391)
|
@marks.testrail_case_id(3391)
|
||||||
|
@marks.skip
|
||||||
def test_group_chat_messages_and_delete_chat(self):
|
def test_group_chat_messages_and_delete_chat(self):
|
||||||
self.create_drivers(3)
|
self.create_drivers(3)
|
||||||
|
|
||||||
|
@ -212,19 +213,20 @@ class TestMessages(MultipleDeviceTestCase):
|
||||||
if not chat_1.contact_profile_picture.is_element_image_equals_template(file_name):
|
if not chat_1.contact_profile_picture.is_element_image_equals_template(file_name):
|
||||||
self.errors.append("Updated profile picture is not shown in one-to-one chat")
|
self.errors.append("Updated profile picture is not shown in one-to-one chat")
|
||||||
|
|
||||||
home_1.get_back_to_home_view()
|
# home_1.get_back_to_home_view()
|
||||||
chat_name = 'a_chat_%s' % get_current_time()
|
# chat_name = 'a_chat_%s' % get_current_time()
|
||||||
home_1.create_group_chat([username_2], chat_name)
|
# home_1.create_group_chat([username_2], chat_name)
|
||||||
group_chat_1 = home_1.get_chat_view()
|
# group_chat_1 = home_1.get_chat_view()
|
||||||
|
#
|
||||||
|
# home_2.get_back_to_home_view()
|
||||||
|
# group_chat_2 = home_2.get_chat_with_user(chat_name).click()
|
||||||
|
# message_text = 'test message'
|
||||||
|
# group_chat_2.chat_message_input.send_keys(message_text)
|
||||||
|
# group_chat_2.send_message_button.click()
|
||||||
|
#
|
||||||
|
# group_chat_1.wait_for_messages(username_2, message_text, self.errors)
|
||||||
|
# group_chat_1.verify_username_is_shown_per_message(username_2, message_text, self.errors)
|
||||||
|
|
||||||
home_2.get_back_to_home_view()
|
|
||||||
group_chat_2 = home_2.get_chat_with_user(chat_name).click()
|
|
||||||
message_text = 'test message'
|
|
||||||
group_chat_2.chat_message_input.send_keys(message_text)
|
|
||||||
group_chat_2.send_message_button.click()
|
|
||||||
|
|
||||||
group_chat_1.wait_for_messages(username_2, message_text, self.errors)
|
|
||||||
group_chat_1.verify_username_is_shown_per_message(username_2, message_text, self.errors)
|
|
||||||
self.verify_no_errors()
|
self.verify_no_errors()
|
||||||
|
|
||||||
@marks.testrail_case_id(3429)
|
@marks.testrail_case_id(3429)
|
||||||
|
@ -300,6 +302,7 @@ class TestOfflineMessages(MultipleDeviceTestCase):
|
||||||
self.verify_no_errors()
|
self.verify_no_errors()
|
||||||
|
|
||||||
@marks.testrail_case_id(3430)
|
@marks.testrail_case_id(3430)
|
||||||
|
@marks.skip
|
||||||
def test_offline_messaging_group_chat(self):
|
def test_offline_messaging_group_chat(self):
|
||||||
self.create_drivers(2)
|
self.create_drivers(2)
|
||||||
device_1, device_2 = self.drivers[0], self.drivers[1]
|
device_1, device_2 = self.drivers[0], self.drivers[1]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
from tests import marks
|
||||||
from tests import transaction_users, transaction_users_wallet
|
from tests import transaction_users, transaction_users_wallet
|
||||||
from tests.base_test_case import SingleDeviceTestCase
|
from tests.base_test_case import SingleDeviceTestCase
|
||||||
from tests import basic_user
|
from tests import basic_user
|
||||||
|
@ -38,6 +39,7 @@ class TestSanity(SingleDeviceTestCase):
|
||||||
pytest.fail('Password in logcat!!!', pytrace=False)
|
pytest.fail('Password in logcat!!!', pytrace=False)
|
||||||
|
|
||||||
@pytest.mark.group_chat
|
@pytest.mark.group_chat
|
||||||
|
@marks.skip
|
||||||
def test_group_chat_members(self):
|
def test_group_chat_members(self):
|
||||||
sign_in_view = SignInView(self.driver)
|
sign_in_view = SignInView(self.driver)
|
||||||
sign_in_view.create_user()
|
sign_in_view.create_user()
|
||||||
|
|
|
@ -66,6 +66,7 @@ class TestTransaction(SingleDeviceTestCase):
|
||||||
send_transaction_view.find_full_text('Wrong password', 20)
|
send_transaction_view.find_full_text('Wrong password', 20)
|
||||||
|
|
||||||
@marks.pr
|
@marks.pr
|
||||||
|
@marks.skip
|
||||||
@marks.testrail_case_id(3403)
|
@marks.testrail_case_id(3403)
|
||||||
def test_transaction_send_command_group_chat(self):
|
def test_transaction_send_command_group_chat(self):
|
||||||
recipient = transaction_users['A_USER']
|
recipient = transaction_users['A_USER']
|
||||||
|
@ -218,6 +219,7 @@ class TestTransactions(MultipleDeviceTestCase):
|
||||||
|
|
||||||
@marks.pr
|
@marks.pr
|
||||||
@marks.testrail_case_id(3408)
|
@marks.testrail_case_id(3408)
|
||||||
|
@marks.skip
|
||||||
def test_send_eth_to_request_in_group_chat(self):
|
def test_send_eth_to_request_in_group_chat(self):
|
||||||
recipient = transaction_users['E_USER']
|
recipient = transaction_users['E_USER']
|
||||||
sender = self.senders['f_user'] = transaction_users['F_USER']
|
sender = self.senders['f_user'] = transaction_users['F_USER']
|
||||||
|
|
|
@ -76,6 +76,34 @@ class DeleteChatButton(BaseButton):
|
||||||
self.locator = self.Locator.xpath_selector('//*[@text="Delete chat"]')
|
self.locator = self.Locator.xpath_selector('//*[@text="Delete chat"]')
|
||||||
|
|
||||||
|
|
||||||
|
class ClearHistoryButton(BaseButton):
|
||||||
|
|
||||||
|
def __init__(self, driver):
|
||||||
|
super(ClearHistoryButton, self).__init__(driver)
|
||||||
|
self.locator = self.Locator.xpath_selector('//*[@text="Clear history"]')
|
||||||
|
|
||||||
|
|
||||||
|
class LeaveChatButton(BaseButton):
|
||||||
|
|
||||||
|
def __init__(self, driver):
|
||||||
|
super(LeaveChatButton, self).__init__(driver)
|
||||||
|
self.locator = self.Locator.xpath_selector('//*[@text="Leave public chat"]')
|
||||||
|
|
||||||
|
|
||||||
|
class ClearButton(BaseButton):
|
||||||
|
|
||||||
|
def __init__(self, driver):
|
||||||
|
super(ClearButton, self).__init__(driver)
|
||||||
|
self.locator = self.Locator.xpath_selector('//*[@text="CLEAR"]')
|
||||||
|
|
||||||
|
|
||||||
|
class LeaveButton(BaseButton):
|
||||||
|
|
||||||
|
def __init__(self, driver):
|
||||||
|
super(LeaveButton, self).__init__(driver)
|
||||||
|
self.locator = self.Locator.xpath_selector('//*[@text="LEAVE"]')
|
||||||
|
|
||||||
|
|
||||||
class ChatSettings(BaseButton):
|
class ChatSettings(BaseButton):
|
||||||
def __init__(self, driver):
|
def __init__(self, driver):
|
||||||
super(ChatSettings, self).__init__(driver)
|
super(ChatSettings, self).__init__(driver)
|
||||||
|
@ -171,6 +199,10 @@ class ChatView(BaseView):
|
||||||
self.chat_options = ChatMenuButton(self.driver)
|
self.chat_options = ChatMenuButton(self.driver)
|
||||||
self.members_button = MembersButton(self.driver)
|
self.members_button = MembersButton(self.driver)
|
||||||
self.delete_chat_button = DeleteChatButton(self.driver)
|
self.delete_chat_button = DeleteChatButton(self.driver)
|
||||||
|
self.clear_history_button = ClearHistoryButton(self.driver)
|
||||||
|
self.clear_button = ClearButton(self.driver)
|
||||||
|
self.leave_chat_button = LeaveChatButton(self.driver)
|
||||||
|
self.leave_button = LeaveButton(self.driver)
|
||||||
|
|
||||||
self.chat_settings = ChatSettings(self.driver)
|
self.chat_settings = ChatSettings(self.driver)
|
||||||
self.view_profile_button = ViewProfileButton(self.driver)
|
self.view_profile_button = ViewProfileButton(self.driver)
|
||||||
|
|
|
@ -112,6 +112,7 @@ class HomeView(BaseView):
|
||||||
start_new_chat = self.plus_button.click()
|
start_new_chat = self.plus_button.click()
|
||||||
start_new_chat.join_public_chat_button.click()
|
start_new_chat.join_public_chat_button.click()
|
||||||
start_new_chat.chat_name_editbox.send_keys(chat_name)
|
start_new_chat.chat_name_editbox.send_keys(chat_name)
|
||||||
|
time.sleep(2)
|
||||||
start_new_chat.confirm()
|
start_new_chat.confirm()
|
||||||
|
|
||||||
def get_public_key(self):
|
def get_public_key(self):
|
||||||
|
|
Loading…
Reference in New Issue