Playwright-pytest - Постоянный контекст для тестов - Как создать новую вкладку для каждого теста
Интересно, может ли кто-нибудь помочь?
В настоящее время я использую playwright-pytest для своей автоматизации тестирования пользовательского интерфейса.
В старой версии вы могли настроить постоянный контекст в файле конкурса, например:
@pytest.fixture(scope="session")
def context(
browser_type: BrowserType,
browser_type_launch_args: Dict,
browser_context_args: Dict
):
context = browser_type.launch_persistent_context("./foobar", **{
**browser_type_launch_args,
**browser_context_args,
"locale": "en_GB",
})
yield context
context.close()
Когда playwright-pytest был обновлен, вы теперь вынуждены использовать scope="function", который, кажется, загружает новый браузер для каждого нового теста, где до этого он загружал браузер один раз. Если вы измените область действия обратно на сеанс, это приведет к ошибке:
ScopeMismatch: вы пытались получить доступ к фикстуре с областью видимости «функция» browser_context_args с объектом запроса с областью действия «сеанс», задействованные фабрики.
Есть ли способ загрузить браузер только один раз, используя область функции, и создать новую вкладку для каждого теста в тестовом классе?
Пример одного из моих тестовых классов:
@pytest.mark.usefixtures("context")
class TestImportData:
@pytest.fixture(autouse=True)
def classSetup(self, page):
self.home_page = HomePage(page)
self.import_data = ImportData(page)
self.login_page = LoginPage(page)
self.manage_candidate = ManageCandidate(page)
self.new_candidate = NewCandidate(page)
self.approved_timesheets = ApprovedTimesheets(page)
self.manage_placements = ManagePlacements(page)
self.manage_companies = ManageCompanies(page)
self.manage_clients = ManageClients(page)
@pytest.mark.order(1)
def test_import_data_page_loads(self, env, page):
self.login_page.login_to_evertime(env, "SysAdmin")
self.home_page.click_import_data_button()
@pytest.mark.order(2)
def test_import_candidate(self, env, page):
word = string.ascii_lowercase
cand_id = (''.join(random.choice(word) for i in range(10)))
self.import_data.create_candidate_import_file(cand_id)
self.login_page.login_to_evertime(env, "SysAdmin")
self.home_page.click_import_data_button()
Любая помощь будет принята с благодарностью, поскольку мои тесты сейчас выполняются так медленно по сравнению с тем, как они были во время сеанса осциллографа.