diff --git a/README.md b/README.md index 7628caa..05ef8fe 100644 --- a/README.md +++ b/README.md @@ -118,9 +118,9 @@ References: https://www.nextgenerationautomation.com/post/python-test-automation ## Developer area ### Testing -#### Run the tests on you local machine +#### Run the tests on your local machine ```shell -pytest --cov=paf -n=4 test +PAF_TEST_HEADLESS=1 PAF_TEST_LOCAL_SELENIUM=0 pytest --cov=paf -n=4 test ``` #### Build test base container (for use in GitHub Actions) diff --git a/paf/manager.py b/paf/manager.py index c1f0df7..d36b67b 100644 --- a/paf/manager.py +++ b/paf/manager.py @@ -1,14 +1,14 @@ from datetime import datetime from pathlib import Path -from typing import Type, TypeVar, Iterable, List +from typing import Type, TypeVar, List import inject -from is_empty import empty import selenium.webdriver as webdriver +from is_empty import empty from selenium.webdriver.common import service as webdriver_service -from selenium.webdriver import ChromeService, Chrome, Firefox, Edge, Safari, Remote, ChromeOptions, EdgeOptions, FirefoxOptions, WPEWebKitOptions from selenium.webdriver.common.options import BaseOptions from selenium.webdriver.remote.webdriver import WebDriver, BaseWebDriver + from paf.common import Property, Formatter from paf.request import WebDriverRequest diff --git a/test/test_component.py b/test/test_component.py index bd504c7..6c452ae 100644 --- a/test/test_component.py +++ b/test/test_component.py @@ -56,7 +56,7 @@ def test_component_name_path(components_page: ComponentsPage): def test_component_name(components_page: ComponentsPage): component = components_page.custom_component.type - assert str(component) == "UiElement(By.id(input))[0]" + assert component.__str__() == "UiElement(By.id(input))[0]" def test_component_list_name(components_page: ComponentsPage): diff --git a/test/test_javascript.py b/test/test_javascript.py index 6c3f214..4ea764f 100644 --- a/test/test_javascript.py +++ b/test/test_javascript.py @@ -1,7 +1,12 @@ +import inject + from paf.common import Size, Rect -from paf.javascript import get_viewport +import paf.javascript as javascript +from paf.manager import WebDriverManager +from paf.page import FinderPage from paf.request import WebDriverRequest from test import create_webdriver +from test import finder def test_viewport(): @@ -9,9 +14,22 @@ def test_viewport(): request.browser = "chrome" request.window_size = Size(1024, 768) webdriver = create_webdriver(request) - viewport = get_viewport(webdriver) + viewport = javascript.get_viewport(webdriver) assert isinstance(viewport, Rect) assert viewport.top == 0 assert viewport.left == 0 assert viewport.width == 1024 assert viewport.height >= 600 + + +def test_set_attribute(finder: FinderPage): + finder.open("https://testpages.herokuapp.com/styled/basic-web-page-test.html") + p = finder.find("#para1") + with p.find_web_element() as web_element: + javascript.set_attribute(p.webdriver, web_element, "data-katze", "affe") + + p.expect.attribute("data-katze").be("affe") + + +def teardown_module(): + inject.instance(WebDriverManager).shutdown_all() diff --git a/test/test_page.py b/test/test_page.py index 06538b5..b73bd7f 100644 --- a/test/test_page.py +++ b/test/test_page.py @@ -30,10 +30,12 @@ def test_assertions(finder: FinderPage): def test_create_page_from_page(): page_factory = inject.instance(PageFactory) + webdriver = create_webdriver(WebDriverRequest()) page = page_factory.create_page(Page) other_page = page._create_page(Page) assert isinstance(other_page, Page) assert page.webdriver == other_page.webdriver + assert page.webdriver == webdriver def test_create_page_without_webdriver(): diff --git a/test/test_rect.py b/test/test_rect.py new file mode 100644 index 0000000..73842d5 --- /dev/null +++ b/test/test_rect.py @@ -0,0 +1,21 @@ +import inject + +from paf.common import Point +from paf.manager import WebDriverManager +from paf.page import FinderPage +from test import finder + + +def test_rect(finder: FinderPage): + finder.open("https://testpages.herokuapp.com/styled/basic-web-page-test.html") + p = finder.find("#para1") + rect = p.expect.bounds.actual + point = Point(10, 20) + point.add(rect) + + assert point.x > 10 + assert point.y > 20 + + +def teardown_module(): + inject.instance(WebDriverManager).shutdown_all() diff --git a/test/test_uielement.py b/test/test_uielement.py index d9abaf1..1cb90c6 100644 --- a/test/test_uielement.py +++ b/test/test_uielement.py @@ -29,6 +29,7 @@ def test_basics(finder: FinderPage): assert p2.name == "UiElement(By.css selector(#para2))[0]" assert p2.name_path == "UiElement(By.css selector(.centered))[0] > " + p2.name assert p_name.name == "paragraph" + assert len(p2.get_path()) == 2 # def test_rect():