Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import os

import pytest
from selenium.webdriver.support.event_firing_webdriver import EventFiringWebDriver

from drivers.driver_factory import Driver
from drivers.event_listener import AppEventListener


@pytest.hookimpl
Expand Down Expand Up @@ -50,14 +54,38 @@
@pytest.fixture(scope="function")
def driver(request):
platform = request.config.getoption("--platform")
driver = None

try:
e_listener = AppEventListener()
driver = Driver.get_driver(platform)
event_driver = EventFiringWebDriver(driver, e_listener)
except Exception as e:
pytest.fail(f"Failed to initialize driver: {e}")

yield driver
yield event_driver

Check warning on line 65 in conftest.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unbound local variables

Local variable 'event_driver' might be referenced before assignment

if event_driver is not None:
event_driver.quit()

Check warning on line 68 in conftest.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unbound local variables

Local variable 'event_driver' might be referenced before assignment


if driver is not None:
driver.quit()
# def pytest_runtest_makereport(item, call):
# """Capture screenshot on test failure."""
# if call.excinfo is not None:
# driver = item.funcargs.get("driver", None)
#
# if driver is not None:
# screenshot_dir = "reports/screenshots"
# os.makedirs(
# screenshot_dir, exist_ok=True
# ) # Create directory if it does not exist
# screenshot_path = os.path.join(screenshot_dir, f"{item.name}.png")
#
# try:
# driver.save_screenshot(screenshot_path)
# # log.info(f"Screenshot saved to: {screenshot_path}")
# except Exception as e:
# pass
# # log.error(f"Failed to save screenshot: {e}")
# else:
# pass
# # log.error("Driver instance is not available for capturing screenshot.")
32 changes: 32 additions & 0 deletions src/drivers/event_listener.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import logging

from selenium.webdriver.support.abstract_event_listener import AbstractEventListener

# TODO make logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)


class AppEventListener(AbstractEventListener):
"""Custom Event Listener for Appium WebDriver."""

def before_find(self, by, value, driver):

Check notice on line 13 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Method is not declared static

Method `before_find` may be 'static'

Check notice on line 13 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'driver' value is not used
logger.info(f"Looking for element: {by} -> {value}")

def after_find(self, by, value, driver):

Check notice on line 16 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Method is not declared static

Method `after_find` may be 'static'

Check notice on line 16 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'driver' value is not used
logger.info(f"Found element: {by} -> {value}")

def before_click(self, element, driver):

Check notice on line 19 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Method is not declared static

Method `before_click` may be 'static'

Check notice on line 19 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'driver' value is not used
logger.info(f"Before clicking: {element}")

def after_click(self, element, driver):

Check notice on line 22 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Method is not declared static

Method `after_click` may be 'static'

Check notice on line 22 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'driver' value is not used
logger.info(f"Clicked on: {element}")

def before_quit(self, driver):

Check notice on line 25 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Method is not declared static

Method `before_quit` may be 'static'

Check notice on line 25 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'driver' value is not used
logger.info("Driver is about to quit.")

def after_quit(self, driver):

Check notice on line 28 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Method is not declared static

Method `after_quit` may be 'static'

Check notice on line 28 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'driver' value is not used
logger.info("Driver has quit.")

def on_exception(self, exception, driver) -> None:

Check notice on line 31 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Method is not declared static

Method `on_exception` may be 'static'

Check notice on line 31 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'driver' value is not used

Check notice on line 31 in src/drivers/event_listener.py

View workflow job for this annotation

GitHub Actions / Qodana Community for Python

Unused local symbols

Parameter 'exception' value is not used
logger.info(f"On exception")
Loading