TGViewer
Сергей Лебедев | QA Сергей Лебедев | QA @qabigtech · 5.69K subscribers
Post #233 2.79K
Сегодня 28 день моего погружения в автоматизацию 🎉

Если интересны ежедневные отчеты моего 60-дневного марафона по автотестам, можно приобрести доступ в закрытое сообществе: QA-Profi
Там я и коллеги помогаем с разбором резюме, поиском работы и ответами на все вопросы новичков в тестировании!


Сегодня хочу поговорить про проверки в Playwright

Потому что это спрашивают как на собесах, так и в работе без этого никуда!😺


Главное преимущество: проверки в Playwright - это не статичные сравнения, а динамические ожидания, которые подстраиваются под реальное поведение веб-приложений.

Playwright повторяет проверки каждые несколько миллисекунд, пока условие не выполнится или не истечет таймаут. Это исключает flaky тесты из-за временных задержек DOM.

А еще информативные ошибки - это отдельный кайф 😅


Вместо AssertionError: false Playwright показывает:
• Что ожидалось vs что получили
• Скриншот момента ошибки
• Путь к элементу и его текущее состояние
• Лог всех действий до ошибки

Собрал для вас шпаргалку по проверкам в Playwright:

Проверки текста :

// Точное совпадение
await expect(page.locator('h1')).toHaveText('Добро пожаловать');

// Частичное совпадение
await expect(page.locator('.error')).toContainText('Ошибка');

// Регулярки для сложных случаев
await expect(page.locator('#phone')).toHaveText(/^\+7\s\d{3}\s\d{3}-\d{2}-\d{2}$/);


Проверки состояний элементов:

await expect(page.locator('#submit')).toBeEnabled();
await expect(page.locator('#terms')).toBeChecked();
await expect(page.locator('.modal')).toBeVisible();


Проверки атрибутов и стилей:

await expect(page.locator('#link')).toHaveAttribute('href', '/dashboard');
await expect(page.locator('.btn')).toHaveClass('btn-primary');
await expect(page.locator('#error')).toHaveCSS('color', 'rgb(255, 0, 0)');


Проверка количества элементов:

await expect(page.locator('.product')).toHaveCount(12);
await expect(page.locator('.review')).toHaveCount({ gte: 5 }); // минимум 5


Проверки страницы:

await expect(page).toHaveURL(/.*dashboard.*/);
await expect(page).toHaveTitle('Личный кабинет');


Soft assertions (не останавливают тест):

await expect.soft(page.locator('#optional')).toBeVisible();
await expect.soft(page.locator('#another')).toHaveText('test');
// Тест продолжится даже если проверки упадут!
  • 🔥 16
  • ❤ 6
  • 👍 5
More from @qabigtech
  1. Sep 27, 2026Всем добрейшего воскресенья 🎉 Через час, в 19:00 по мск, встречаемся на эфире: https://ww…
  2. Sep 25, 2026Всех с пятницей, коллеги! У нас в чате тестировщиков весь день одни мемы и крайне нерабоча…
  3. Sep 24, 2026Сегодня финал нашего марафона в «AQA за 60 дней». 18 уроков, 243 пулреквеста, десятки заме…
  4. Sep 23, 2026Мой последний SQA Days прошёл примерно так как на фото выше! Я слушал много докладов, сним…
  5. Sep 21, 2026Уже через несколько минут, в 21:00, пишем крутое резюме для хордового QA Джуна с автоматиз…
  6. Sep 20, 2026На YouTube вышла 2-я часть нашего исследования рынка QA-профессии: https://www.youtube.com…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →