diff --git a/test/desktop.sikuli/tests/account_management/test_create_account.py b/test/desktop.sikuli/tests/account_management/test_create_account.py index 4e3ebeea73..4e92d1f761 100644 --- a/test/desktop.sikuli/tests/account_management/test_create_account.py +++ b/test/desktop.sikuli/tests/account_management/test_create_account.py @@ -1,5 +1,3 @@ -import org.sikuli.script.SikulixForJython -from sikuli import * from tests.base_test_case import BaseTestCase from views.sign_in_view import SignInView @@ -20,9 +18,12 @@ class TestCreateAccount(BaseTestCase): def test_create_account_proceed_with_enter(self): sign_in = SignInView() sign_in.create_account_button.click() - sign_in.create_password_input.input_value('123456' + Key.ENTER) - sign_in.confirm_password_input.input_value('123456' + Key.ENTER) - sign_in.username_input.input_value('test' + Key.ENTER) + sign_in.create_password_input.input_value('123456') + sign_in.press_enter() + sign_in.confirm_password_input.input_value('123456') + sign_in.press_enter() + sign_in.username_input.input_value('test') + sign_in.press_enter() sign_in.home_button.find_element() def test_create_account_go_back(self): @@ -31,12 +32,15 @@ class TestCreateAccount(BaseTestCase): sign_in.create_password_input.find_element() sign_in.back_button.click() sign_in.create_account_button.click() - sign_in.create_password_input.input_value('123456' + Key.ENTER) + sign_in.create_password_input.input_value('123456') + sign_in.press_enter() sign_in.confirm_password_input.find_element() sign_in.back_button.click() sign_in.create_password_input.find_element() - sign_in.create_password_input.input_value('123456' + Key.ENTER) - sign_in.confirm_password_input.input_value('123456' + Key.ENTER) + sign_in.create_password_input.input_value('123456') + sign_in.press_enter() + sign_in.confirm_password_input.input_value('123456') + sign_in.press_enter() sign_in.username_input.find_element() sign_in.back_button.verify_element_is_not_present() @@ -51,6 +55,7 @@ class TestCreateAccount(BaseTestCase): profile.log_out_button.click() sign_in.other_accounts_button.click() sign_in.element_by_text('user_2').click() - sign_in.password_input.input_value('qwerty' + Key.ENTER) + sign_in.password_input.input_value('qwerty') + sign_in.press_enter() sign_in.profile_button.click() profile.find_text('user_2') diff --git a/test/desktop.sikuli/tests/account_management/test_profile.py b/test/desktop.sikuli/tests/account_management/test_profile.py index 9dedf4230b..ef9e787378 100644 --- a/test/desktop.sikuli/tests/account_management/test_profile.py +++ b/test/desktop.sikuli/tests/account_management/test_profile.py @@ -22,5 +22,5 @@ class TestProfile(BaseTestCase): profile = sign_in.profile_button.click() profile.element_by_text('Advanced settings').click() s_names = profile.get_mail_servers_list() - profile.aa(s_names[0]).is_active() + profile.get_mail_server(s_names[0]).is_active() diff --git a/test/desktop.sikuli/tests/account_management/test_recover_access.py b/test/desktop.sikuli/tests/account_management/test_recover_access.py index 0ac1d5f77b..f704f006ff 100644 --- a/test/desktop.sikuli/tests/account_management/test_recover_access.py +++ b/test/desktop.sikuli/tests/account_management/test_recover_access.py @@ -1,6 +1,3 @@ -import org.sikuli.script.SikulixForJython -from sikuli import * - from tests import base_user from tests.base_test_case import BaseTestCase from views.sign_in_view import SignInView @@ -11,8 +8,8 @@ class TestRecoverAccess(BaseTestCase): def test_recover_access(self): sign_in = SignInView() sign_in.i_have_account_button.click() - sign_in.recovery_phrase_input.send_as_key_event(base_user['passphrase']) - sign_in.recover_password_input.send_as_key_event('123456') + sign_in.recovery_phrase_input.send_keys(base_user['passphrase']) + sign_in.recover_password_input.send_keys('123456') sign_in.sign_in_button.click() sign_in.home_button.find_element() profile = sign_in.profile_button.click() @@ -22,8 +19,11 @@ class TestRecoverAccess(BaseTestCase): def test_recover_access_proceed_with_enter(self): sign_in = SignInView() sign_in.i_have_account_button.click() - sign_in.recovery_phrase_input.send_as_key_event(base_user['passphrase'] + Key.TAB) - type('123456' + Key.ENTER) + sign_in.recovery_phrase_input.send_keys(base_user['passphrase']) + sign_in.press_tab() + sign_in.recover_password_input.verify_is_focused() + sign_in.recover_password_input.input_value('123456') + sign_in.press_enter() sign_in.home_button.find_element() def test_recover_access_go_back(self): diff --git a/test/desktop.sikuli/tests/conftest.py b/test/desktop.sikuli/tests/conftest.py index b0f9d0b733..8f12fc27a4 100644 --- a/test/desktop.sikuli/tests/conftest.py +++ b/test/desktop.sikuli/tests/conftest.py @@ -18,7 +18,9 @@ def pytest_addoption(parser): def pytest_configure(config): - pass + import logging + logging.basicConfig(level=logging.INFO) + @pytest.mark.hookwrapper def pytest_runtest_makereport(item, call): diff --git a/test/desktop.sikuli/views/base_element.py b/test/desktop.sikuli/views/base_element.py index 1efe638e90..5c1a2ed59d 100644 --- a/test/desktop.sikuli/views/base_element.py +++ b/test/desktop.sikuli/views/base_element.py @@ -1,6 +1,7 @@ import logging import time import pytest +import re import org.sikuli.script.SikulixForJython from sikuli import * @@ -9,22 +10,27 @@ from sikuli import * class BaseElement(object): def __init__(self, screenshot): self.screenshot = screenshot + self.name = re.findall('([^\/]+)(?=.png)', self.screenshot)[0].replace('_', ' ').title() - def find_element(self): + def find_element(self, log=True): + if log: + logging.info('Find %s' % self.name) try: wait(self.screenshot, 10) except FindFailed: - pytest.fail('%s was not found' % self.__class__.__name__) + pytest.fail('%s was not found' % self.name) - def click(self): - logging.info('Click %s' % self.__class__.__name__) - self.find_element() + def click(self, log=True): + if log: + logging.info('Click %s' % self.name) + self.find_element(log=False) click(self.screenshot) def verify_element_is_not_present(self): + logging.info('Verify: %s is not present' % self.name) try: wait(self.screenshot, 10) - pytest.fail('%s is displayed but not expected' % self.__class__.__name__) + pytest.fail('%s is displayed but not expected' % self.name) except FindFailed: pass @@ -32,15 +38,26 @@ class BaseElement(object): class InputField(BaseElement): def input_value(self, value): - self.click() + logging.info("%s field: set value '%s'" % (self.name, value)) + self.click(log=False) type(value) - def send_as_key_event(self, value): - self.click() + def send_keys(self, value): + logging.info("Type '%s' to %s field" % (value, self.name)) + self.click(log=False) for i in str(value): type(i) time.sleep(0.5) + def is_focused(self): + self.find_element(log=False) + return find(self.screenshot).getTarget() == Env.getMouseLocation() + + def verify_is_focused(self): + logging.info('Verify %s is focused' % self.name) + if not self.is_focused(): + pytest.fail('%s is not focused' % self.name) + class TextElement(object): def __init__(self, text): diff --git a/test/desktop.sikuli/views/base_view.py b/test/desktop.sikuli/views/base_view.py index ac1b3ff7ef..cc801ef693 100644 --- a/test/desktop.sikuli/views/base_view.py +++ b/test/desktop.sikuli/views/base_view.py @@ -1,3 +1,4 @@ +import logging import org.sikuli.script.SikulixForJython from sikuli import * import os @@ -12,8 +13,8 @@ class ProfileButton(BaseElement): def __init__(self): super(ProfileButton, self).__init__(IMAGES_PATH + '/profile_button.png') - def click(self): - super(ProfileButton, self).click() + def click(self, log=True): + super(ProfileButton, self).click(log=log) from views.profile_view import ProfileView return ProfileView() @@ -27,6 +28,7 @@ class BaseView(object): self.back_button = BaseElement(IMAGES_PATH + '/back_button.png') def find_text(self, expected_text): + logging.info("Find text '%s'" % expected_text) for _ in range(3): current_text = text().encode('ascii', 'ignore').replace('\n', ' ') if expected_text in current_text: @@ -38,3 +40,11 @@ class BaseView(object): def element_by_text(self, text): return TextElement(text) + + def press_enter(self): + logging.info('Press Enter button') + type(Key.ENTER) + + def press_tab(self): + logging.info('Press Tab button') + type(Key.TAB) diff --git a/test/desktop.sikuli/views/sign_in_view.py b/test/desktop.sikuli/views/sign_in_view.py index afbf12ebeb..e18e822a15 100644 --- a/test/desktop.sikuli/views/sign_in_view.py +++ b/test/desktop.sikuli/views/sign_in_view.py @@ -16,12 +16,12 @@ class CreateAccountButton(BaseElement): def __init__(self): super(CreateAccountButton, self).__init__(IMAGES_PATH + '/create_account.png') - def find_element(self): + def find_element(self, log=False): try: - super(CreateAccountButton, self).find_element() + super(CreateAccountButton, self).find_element(log=log) except Failed: self.screenshot = IMAGES_PATH + '/create_new_account.png' - super(CreateAccountButton, self).find_element() + super(CreateAccountButton, self).find_element(log=log) class SignInView(BaseView): @@ -53,8 +53,8 @@ class SignInView(BaseView): def recover_access(self, passphrase): self.i_have_account_button.click() - self.recovery_phrase_input.send_as_key_event(passphrase) - self.recover_password_input.send_as_key_event('123456') + self.recovery_phrase_input.send_keys(passphrase) + self.recover_password_input.send_keys('123456') self.sign_in_button.click() self.home_button.find_element() return HomeView()