Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add POM and main page tests #19

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
Open

Add POM and main page tests #19

wants to merge 13 commits into from

Conversation

ezoenovak
Copy link
Collaborator

No description provided.

def test_is_logo_visible(driver):
page = MainPage(driver)
page.open_main_page()
page.logo_visibility()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так как это проверка, лучше назвать метод check_logo_is_visible

test_main.py Outdated
Comment on lines 13 to 31
def test_about_us_clickable(driver):
page = MainPage(driver)
page.open_main_page()
page.hover_over_element(MainPageLocators.ABOUT_US_BUTTON)
page.is_element_clickable_after_hover(MainPageLocators.ABOUT_US_BUTTON)


def test_tasks_button_visible(driver):
page = MainPage(driver)
page.open_main_page()
page.hover_over_element(MainPageLocators.TASKS_BUTTON)
page.is_element_clickable_after_hover(MainPageLocators.ABOUT_US_BUTTON)


def test_enter_clickable(driver):
page = MainPage(driver)
page.open_main_page()
page.hover_over_element(MainPageLocators.REG_BUTTON)
page.is_element_clickable_after_hover(MainPageLocators.REG_BUTTON)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В этих тестах одинаковый код с разными аргументами. Круче всего было бы сделать вместо трех тестов один с разными данными, используя parametrize

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправила это и другие моменты

class MainPage(BasePage):

def open_main_page(self):
self.driver.get(MAIN_PAGE)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А для чего у нас в BasePage существует метод open, если здесь мы отдельным методом реализуем открытие страницы?

Copy link

@eugene-okulik eugene-okulik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не то, чтобы это было критично, но чем меньше раз в коде пишется одно и то же, тем меньше шансов словить косяки при последующей поддержке этого кода.
И еще, можно убрать инициализацию классов из тестов, перенеся ее в conftest. Например в конфтесте можно создать фикстуру

def main_page(driver):
    return MainPage(driver)

Только нужно импортнуть этот класс в конфтест
И тогда тест выглядел бы так:

def test_check_logo_visibility(main_page):
    main_page.open()
    main_page.logo_visibility()

Это делает тесты чище и меньше импортов будет в файле.
Эти все штуки можно сделать прямо сейчас, при желании, или можете создать задачу на внесение таких изменений и сделать это потом. А можете вообще решить, что вам это не нужно.

test_main.py Outdated

@pytest.mark.parametrize('button', MainPageLocators.HEADER_BUTTONS)
def test_check_header_buttons_clickability(driver, button):
page = MainPage(driver, MAIN_PAGE)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У main_page всегда будет один и тот же URL, можно в классе MainPage сразу инициализировать родительский класс с этим урлом и не пришлось бы каждый раз это писать в тесте.
Вот такое можно добавить в класс MainPage:

def __init__(self, driver):
        super().__init__(driver, MAIN_PAGE)

Ну, само собой, импортнуть эту константу нужно будет в этот файл.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тогда здесь в тесте будет

page = MainPage(driver)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants