Skip to content

Commit aaee24d

Browse files
Merge pull request #6 from dmberezovskyii/PPA-0004
Ppa 0004
2 parents af6cf68 + 28ec3b5 commit aaee24d

File tree

2 files changed

+64
-4
lines changed

2 files changed

+64
-4
lines changed

conftest.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import os
2+
13
import pytest
4+
from selenium.webdriver.support.event_firing_webdriver import EventFiringWebDriver
25

36
from drivers.driver_factory import Driver
7+
from drivers.event_listener import AppEventListener
48

59

610
@pytest.hookimpl
@@ -50,14 +54,38 @@ def device(request):
5054
@pytest.fixture(scope="function")
5155
def driver(request):
5256
platform = request.config.getoption("--platform")
53-
driver = None
5457

5558
try:
59+
e_listener = AppEventListener()
5660
driver = Driver.get_driver(platform)
61+
event_driver = EventFiringWebDriver(driver, e_listener)
5762
except Exception as e:
5863
pytest.fail(f"Failed to initialize driver: {e}")
5964

60-
yield driver
65+
yield event_driver
66+
67+
if event_driver is not None:
68+
event_driver.quit()
69+
6170

62-
if driver is not None:
63-
driver.quit()
71+
# def pytest_runtest_makereport(item, call):
72+
# """Capture screenshot on test failure."""
73+
# if call.excinfo is not None:
74+
# driver = item.funcargs.get("driver", None)
75+
#
76+
# if driver is not None:
77+
# screenshot_dir = "reports/screenshots"
78+
# os.makedirs(
79+
# screenshot_dir, exist_ok=True
80+
# ) # Create directory if it does not exist
81+
# screenshot_path = os.path.join(screenshot_dir, f"{item.name}.png")
82+
#
83+
# try:
84+
# driver.save_screenshot(screenshot_path)
85+
# # log.info(f"Screenshot saved to: {screenshot_path}")
86+
# except Exception as e:
87+
# pass
88+
# # log.error(f"Failed to save screenshot: {e}")
89+
# else:
90+
# pass
91+
# # log.error("Driver instance is not available for capturing screenshot.")

src/drivers/event_listener.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import logging
2+
3+
from selenium.webdriver.support.abstract_event_listener import AbstractEventListener
4+
5+
# TODO make logger
6+
logger = logging.getLogger(__name__)
7+
logger.setLevel(logging.INFO)
8+
9+
10+
class AppEventListener(AbstractEventListener):
11+
"""Custom Event Listener for Appium WebDriver."""
12+
13+
def before_find(self, by, value, driver):
14+
logger.info(f"Looking for element: {by} -> {value}")
15+
16+
def after_find(self, by, value, driver):
17+
logger.info(f"Found element: {by} -> {value}")
18+
19+
def before_click(self, element, driver):
20+
logger.info(f"Before clicking: {element}")
21+
22+
def after_click(self, element, driver):
23+
logger.info(f"Clicked on: {element}")
24+
25+
def before_quit(self, driver):
26+
logger.info("Driver is about to quit.")
27+
28+
def after_quit(self, driver):
29+
logger.info("Driver has quit.")
30+
31+
def on_exception(self, exception, driver) -> None:
32+
logger.info(f"On exception")

0 commit comments

Comments
 (0)