Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
94 lines (76 loc) · 2.64 KB

File metadata and controls

94 lines (76 loc) · 2.64 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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
from utils.logger import Logger, LogLevel
log = Logger(log_lvl=LogLevel.INFO).get_instance()
@pytest.hookimpl
def pytest_addoption(parser):
"""
Adds command-line options for pytest.
"""
parser.addoption(
"--app", action="store", default="ios", help="Define App: ios or android"
)
parser.addoption(
"--device", action="store", default="emulator", help="Define Device Type"
)
parser.addoption(
"--platform", action="store", default="ios", help="Define Platform"
)
parser.addoption(
"--env",
action="store",
default="stage",
help="Define test environment (e.g., stage, prod)",
)
parser.addoption(
"--listeners",
action="store",
default="events",
help="Define listeners for the test run",
)
@pytest.fixture(scope="session")
def app(request):
"""
Retrieves the application type specified via the --app command-line option.
"""
return request.config.getoption("--app")
@pytest.fixture(scope="session")
def device(request):
"""
Retrieves the device type specified via the --device command-line option.
"""
return request.config.getoption("--device")
@pytest.fixture(scope="function")
def driver(request):
platform = request.config.getoption("--platform")
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 event_driver
if event_driver is not None:
event_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.")
Morty Proxy This is a proxified and sanitized view of the page, visit original site.