SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Тестирование

Playwright: устойчивый клик и проверка результата

В Playwright найдите элемент локатором, выполните click() и проверьте видимый результат. Для доступной кнопки начните с getByRole: это выражает намерение теста и меньше зависит от вложенности div.

Нажать кнопку и проверить результат

import { test, expect } from '@playwright/test';

test('сохранение настроек', async ({ page }) => {
  await page.goto('/settings');
  await page.getByRole('button', {
    name: 'Сохранить', exact: true
  }).click();
  await expect(page.getByRole('status'))
    .toHaveText('Настройки сохранены');
});

Это пример теста для приложения с указанными маршрутом, кнопкой и статусом. Настройка baseURL должна быть задана в конфигурации вашего тестового проекта.

Если элемент не найден или неоднозначен

  1. Проверьте доступную роль и имя элемента.
  2. Убедитесь, что локатор выбирает ровно одну цель.
  3. Для нескольких одинаковых кнопок сузьте область до конкретного диалога или строки.
  4. Если элемент находится во фрейме, используйте локатор нужного фрейма.

Если клик блокируется

Перед действием Playwright проверяет готовность элемента. Найдите причину: перекрывающий диалог, disabled-состояние, анимация или элемент за пределами видимой области. Не добавляйте force только для получения зелёного теста: это может скрыть реальную невозможность действия для пользователя.

Почему не нужна фиксированная пауза

Пауза в несколько секунд может быть слишком короткой на медленном запуске и лишней на быстром. Ожидайте конкретное состояние интерфейса и используйте web-first assertions. Успешный click() подтверждает выполнение действия, но сам по себе не доказывает, что настройки сохранились на сервере.

Документация