Skip to content

Commit 2ad149b

Browse files
author
dmy.berezovskyi
committed
updated chrome driver
added event listener
1 parent 053eeda commit 2ad149b

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ This is a simple UI automation framework built with:
3232
2. Install required dependencies with
3333
```pip install -r requirements.txt```
3434
3. Create .env file and add
35+
4. Download driver to resources directory:
36+
- rename chromedriver to local if you want to run tests locally
3537
```
3638
DEV_URL = "your-dev-project-url"
3739
STAG_URL = "your-staging-project-url"

conftest.py

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,61 @@
11
import pytest
2+
from core import CustomEventListener
23
from dotenv import load_dotenv
34
from selenium import webdriver
5+
from selenium.webdriver.support.event_firing_webdriver import EventFiringWebDriver
46

57
from src.utils.driver_factory import WebDriverFactory
68
from src.utils.logger import Logger, LogLevel
79

810
log = Logger(log_lvl=LogLevel.INFO).get_instance()
911

1012

13+
def event_listener(driver) -> EventFiringWebDriver:
14+
"""Attach the event listener to the driver."""
15+
e_driver: EventFiringWebDriver = EventFiringWebDriver(
16+
driver, CustomEventListener()
17+
)
18+
return e_driver
19+
20+
1121
@pytest.fixture(params=["local", "firefox"])
1222
def driver_types(request):
13-
# To run tests on several browsers, we can pass the driver_types fixture as a parameter to the fixture make_drive
23+
# To run tests on several browsers, we can pass the driver_types fixture as
24+
# a parameter to the fixture make_drive
1425
return request.param
1526

1627

17-
@pytest.fixture(scope="function")
18-
def make_driver(request) -> webdriver.Remote:
28+
@pytest.fixture
29+
def make_driver(request) -> EventFiringWebDriver:
1930
load_dotenv(dotenv_path=f"{request.config.getoption('--env')}")
2031
env = request.config.getoption('--env')
2132
dr_type = request.config.getoption('--type')
2233
driver = None
2334

24-
def _make_driver() -> webdriver.Remote:
35+
def _make_driver() -> EventFiringWebDriver:
2536
nonlocal driver
26-
driver = WebDriverFactory().create_driver(environment=env, driver_type=dr_type)
27-
return driver
37+
# Create WebDriver instance
38+
driver = WebDriverFactory().create_driver(
39+
environment=env,
40+
driver_type=dr_type
41+
)
42+
# Attach event listener
43+
driver_with_listener = event_listener(driver)
44+
return driver_with_listener
2845

29-
yield _make_driver()
46+
driver_instance = _make_driver()
3047

31-
def finalizer():
32-
if driver is not None:
33-
driver.quit()
48+
yield driver_instance
3449

35-
request.addfinalizer(finalizer)
50+
# Teardown code to quit the driver
51+
if driver is not None:
52+
driver.quit()
3653

3754

3855
def pytest_addoption(parser):
39-
parser.addoption("--browser-version", action="store", default="116", help="Specify the browser version")
40-
parser.addoption("--env", action="store", default='stage', help="Run browser in headless mode")
41-
parser.addoption("--type", action="store", default='local', help="Run browser in os type")
56+
parser.addoption("--browser-version", action="store", default="129",
57+
help="Specify the browser version")
58+
parser.addoption("--env", action="store", default='stage',
59+
help="Run browser in headless mode")
60+
parser.addoption("--type", action="store", default='local',
61+
help="Run browser in os type")

requirements.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ python-dotenv == 1.0.0
99
asyncio~=3.4.3
1010
aioselenium~=0.0.1
1111
pytest-xdist~=3.3.1
12-
cryptography~=41.0.3
13-
beautifulsoup4==4.12.2
12+
cryptography~=43.0.1
13+
beautifulsoup4==4.12.2
14+
requests~=2.31.0
15+
setuptools~=68.2.2

0 commit comments

Comments
 (0)