Несколько советов по Playwright

«Моя команда разработчиков использует Playwright в качестве фреймворка сквозного тестирования в проекте на TypeScript/Svelte. Хотя создатели Playwright хвастаются устойчивостью и «отсутствием flaky-тестов«, по моему опыту это не всегда так. Если у вас проблемы с Playwright, попробуйте воспользоваться этими советами.

Настройка ретраев падающих тестов

Иногда тесты Playwright обнаруживают проблемы, которые не проявляются при ручном тестировании. Это может указывать на то, что тесты нестабильные, то есть тесты, которые не срабатывают изначально, но проходят при повторном запуске (retry). Если это так, возможно, вам следует увеличить количество повторных попыток (ретраев) для такого теста (здесь документация). По умолчанию Playwright запускает все тесты один раз. Повторные запуски настраиваются в конфигурационном файле Playwright:

import type { PlaywrightTestConfig } from "@playwright/test";
const config: PlaywrightTestConfig = {
  // ...
  retries: 3,
}

Забывайте о .type

Метод .type устарел и должен быть заменен на .fill (документация), если у вас на странице нет слушателей событий, которые срабатывают только при вводе текста. Мы использовали .type в случаях, которые зависели от событий нажатия клавиш. В этих случаях нужно использовать .pressSequentially. Метод .pressSequentially фокусирует элемент, а затем отправляет события клавиши “Нажатие”, “Удержание” и “Отпускание” для каждого символа в тексте, в то время как .fill лишь устанавливает значение поля ввода.

waitForTimeout

Хотя я не рекомендую использовать его во всех ситуациях, waitForTimeout может быть последним вариантом, если у вас постоянные проблемы, вызванные тем, что тесты запускаются до того как все элементы загрузятся на странице.

await page.waitForTimeout(500);

Группировка тестов

Удобно группировать тесты внутри блоков describe, объединяя тесты, проверяющие схожие действия. Это облегчает поиск тестов и устранение проблем на нужных страницах.

test.describe('Login page', {
  tag: '@login’,
}, () => {
  test('Incorrect password validation', async ({ page }) => {
    // ...
  });
  test('Successful login', async ({ page }) => {
    // ...
  });
});

Также можно запустить группу тестов с определенным тегом из терминала. Это удобная альтернатива добавлению .only во все файлы тестов.

npx playwright test --grep @login

Если ошибки у вас возникают не часто, надеюсь, эти советы вам пригодятся.»

Danielle Wisen


Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас