def pytest_addoption(parser):
parser.addoption("-U", action="append", default=[], help="list of users to pass to CLI to test functions")
def pytest_generate_tests(metafunc):
if "U" in metafunc.fixturenames:
metafunc.parametrize("U", metafunc.config.getoption("U"))
def login(browser, user, password='default_password'):
if user == 'user5': password = 'special_password'
context = browser.new_context()
page = context.new_page()
page.set_default_timeout(45000)
page.goto(url + '/login.jsp')
page.wait_for_load_state("networkidle")
expect(page.get_by_text("MyApp")).to_be_visible()
if page.get_by_text("I do not have a PKI certificate").is_visible():
page.get_by_text("I do not have a PKI certificate").click()
page.get_by_placeholder("Username").fill(user)
page.get_by_placeholder("Password").fill(password)
page.get_by_role("button", name="Sign In").click()
page.close()
ValueStorage.contexts.update({user: context})
return context
class ValueStorage:
contexts = {}
non_us_ms_hidden = None
@pytest.fixture()
def cli_user(browser, U):
page = find_context(browser, U)
yield page
page.close()
@pytest.fixture()
def user1(browser):
page = find_context(browser, 'user1')
yield page
page.close()
@pytest.fixture()
def user2(browser):
page = find_context(browser, 'user2')
yield page
page.close()
@pytest.fixture()
def user3(browser):
page = find_context(browser, 'user3')
yield page
page.close()
@pytest.fixture()
def user3(browser):
page = find_context(browser, 'user3')
yield page
page.close()
def find_context(browser, user):
try:
user_context = ValueStorage.contexts[user]
except KeyError:
user_context = login(browser, user)
return user_context.new_page()