desktop-qa-automation/fixtures/aut.py

80 lines
2.0 KiB
Python

import allure
import pytest
import logging
import configs
import constants
from constants import UserAccount
from driver.aut import AUT
from gui.main_window import MainWindow
from scripts.utils import system_path
from scripts.utils.system_path import SystemPath
LOG = logging.getLogger(__name__)
@pytest.fixture
def options(request):
if hasattr(request, 'param'):
return request.param
return ''
@pytest.fixture
def application_logs():
yield
if configs.testpath.STATUS_DATA.exists():
for app_data in configs.testpath.STATUS_DATA.iterdir():
for log in (app_data / 'logs').glob('*.log'):
allure.attach.file(log, name=str(log.name), attachment_type=allure.attachment_type.TEXT)
log.unlink()
@pytest.fixture
def user_data(request) -> system_path.SystemPath:
if hasattr(request, 'param'):
fp = request.param
assert fp.is_dir()
return fp
@pytest.fixture
def aut(user_data) -> AUT:
if not configs.AUT_PATH.exists():
pytest.exit(f"Application not found: {configs.AUT_PATH}")
_aut = AUT(user_data=user_data)
yield _aut
@pytest.fixture()
def multiple_instances(user_data):
def _aut(user_data: SystemPath = None) -> AUT:
if not configs.AUT_PATH.exists():
pytest.exit(f"Application not found: {configs.AUT_PATH}")
return AUT(user_data=user_data)
yield _aut
@pytest.fixture
def main_window(aut: AUT, user_data):
aut.launch()
LOG.debug('Waiting for main window...')
yield MainWindow().wait_until_appears().prepare()
aut.stop()
@pytest.fixture
def user_account(request) -> UserAccount:
if hasattr(request, 'param'):
user_account = request.param
assert isinstance(user_account, UserAccount)
else:
user_account = constants.user.user_account_one
yield user_account
@pytest.fixture
def main_screen(user_account: UserAccount, main_window: MainWindow) -> MainWindow:
main_window.authorize_user(user_account)
return main_window