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()

Любая помощь будет принята с благодарностью, поскольку мои тесты сейчас выполняются так медленно по сравнению с тем, как они были во время сеанса осциллографа.

0 ответов

Другие вопросы по тегам