e-nms_qa_automation.1/fixtures/pages.py.or

93 lines
3.5 KiB
Plaintext

import pytest
from playwright.sync_api import Browser, BrowserContext, Page, sync_playwright
import os
def pytest_addoption(parser):
"""Пользовательские опции командной строки"""
parser.addoption('--bn', action='store', default="chrome", help="Choose browser: chrome, remote_chrome or firefox")
parser.addoption('--h', action='store', default=False, help='Choose headless: True or False')
parser.addoption('--s', action='store', default={'width': 1920, 'height': 1080}, help='Size window: width,height')
parser.addoption('--slow', action='store', default=200, help='Choose slow_mo for robot action')
parser.addoption('--t', action='store', default=60000, help='Choose timeout')
parser.addoption('--l', action='store', default='ru-RU', help='Choose locale')
# parser.addini('qs_to_api_token', default=os.getenv("QASE_TOKEN"), help='Qase app token')
@pytest.fixture(scope='class')
def browser(request) -> Page:
playwright = sync_playwright().start()
if request.config.getoption("bn") == 'remote_chrome':
browser = get_remote_chrome(playwright, request)
context = get_context(browser, request, 'remote')
page_data = context.new_page()
elif request.config.getoption("bn") == 'firefox':
browser = get_firefox_browser(playwright, request)
context = get_context(browser, request, 'local')
page_data = context.new_page()
elif request.config.getoption("bn") == 'chrome':
browser = get_chrome_browser(playwright, request)
context = get_context(browser, request, 'local')
page_data = context.new_page()
else:
browser = get_chrome_browser(playwright, request)
context = get_context(browser, request, 'local')
page_data = context.new_page()
yield page_data
for context in browser.contexts:
context.close()
browser.close()
playwright.stop()
def get_firefox_browser(playwright, request) -> Browser:
return playwright.firefox.launch(
headless=request.config.getoption("h"),
slow_mo=request.config.getoption("slow"),
)
def get_chrome_browser(playwright, request) -> Browser:
return playwright.chromium.launch(
headless=request.config.getoption("h"),
slow_mo=request.config.getoption("slow"),
args=['--start-maximized']
)
def get_remote_chrome(playwright, request) -> Browser:
return playwright.chromium.launch(
headless=True,
slow_mo=request.config.getoption("slow")
)
def get_context(browser, request, start) -> BrowserContext:
if start == 'local':
context = browser.new_context(
no_viewport=True,
locale=request.config.getoption('l')
)
context.set_default_timeout(
timeout=request.config.getoption('t')
)
# context.add_cookies([{'url': 'https://example.ru', 'name': 'ab_test', 'value': 'd'}]) добавляем куки, если нужны
return context
elif start == 'remote':
context = browser.new_context(
viewport=request.config.getoption('s'),
locale=request.config.getoption('l')
)
context.set_default_timeout(
timeout=request.config.getoption('t')
)
# context.add_cookies([{'url': 'https://example.ru', 'name': 'ab_test', 'value': 'd'}]) добавляем куки, если нужны
return context
@pytest.fixture(scope="function")
def return_back(browser):
browser.go_back()