Comments 8
К сожалению, на практике вещь досататочно бесполезная, так как в fixture нельзя передать параметры.
Вот здесь хотелось бы задавать разное имя пользователя для каждого теста , но это невозможно сделать адекватным способом.
test('Тест с фикстурой loginPage', async ({ loginPage })
Хак с test.use({ login: 'aloha' })
не не будет работать с несколькими тестами.
Хак с передачей парамертов через tag больше похож на злую шутку.
В этом моменте согласен
Однако что насчет создания фикстур через фабрику, куда в свою очередь можно прокидывать параметры
Я собираюсь подробнее описать этот кейс во второй части статьи
А если рассматривать глобально фикстуры, то не соглашусь что это бесполезно
В большинстве кейсов они полезны и существенно уменьшают время написания тестов, а если рассмотреть их возможности настройки, в частности настройки для запуска с каждым тестом отдельно, или один раз для всего скопа тестов - тут уже фикстуры могут быть мощной штукой
Можно сделать столько фикстур, сколько пользователей.
Юзать POM и метод логина в нем + фикстуры, как в примере автора.
Не совсем понял, что значит нельзя передать параметры? При вызове фикстуры это делается легко. Так же как и при регистрации фикстуры. Вот пример, очень упрощенный:
const loginManager = (page: Page, api: string) => {
// Возвращаем функцию, которую будем вызывать в тесте.
// Она принимает аргумент, персональный для каждого вызова.
return async (userId: number) => {
await page.request.fetch(`${api}/login/${userId}`)
}
}
// Playwright мощно задействует typescript, используем это:
export const test = base.extend<{
loginUser: (userId: number) => Promise<void>
}>({
async loginUser({ page }, use) {
// Подготавливаем фикстуру.
// Передаем аргумент, общий для всех тестов.
await use(loginManager(page, 'https://service.ru'))
},
})
test('Тест страницы', async ({ page, loginUser }) => {
await loginUser(100500)
})
Пользователи требуют больше возможностей — и желательно «еще вчера».
Нет. Этого требуют менеджеры. Пользователям 95% изменений не нужны, более того - неприятны.
Интересная статья. Спасибо. В следующий раз попробую. А так все время использую import/export функций из соседнего файла. Выглядит читаемо и чисто, тобиш mission success.
Введение в фикстуры Playwright