Если интересны ежедневные отчеты моего 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');
// Тест продолжится даже если проверки упадут!