Почему автотест падает после успешного клика
Тест нажал "Сохранить", команда click() завершилась, а проверка сообщения об успехе упала. При повторном запуске всё проходит. Одна из возможных причин такого поведения: проверка успела выполниться раньше, чем приложение получило ответ и обновило страницу.
В Playwright обычный клик через локатор сам ждёт готовности элемента. Для кнопки проверяются видимость, стабильность, доступность для нажатия и возможность получить событие мыши в точке клика. Локатор должен указывать на один элемент. Эти условия помогают выполнить клик, но завершение сохранения нужно проверить отдельно.
Что меняет ожидание состояния
Фиксированная пауза лишь откладывает следующую команду. Если сохранение заняло дольше, тест всё ещё может упасть. На быстром ответе он потратит лишнее время. Документация Playwright рекомендует использовать waitForTimeout для отладки и избегать его в рабочих тестах.
В Playwright Test проверки вроде toHaveText и toBeVisible повторно обращаются к элементу до выполнения условия либо истечения тайм-аута. Повторяется проверка; кнопку заново они не нажимают. По умолчанию на такую проверку отводится пять секунд, настройку можно изменить.
Учебный фрагмент на JavaScript: после клика по "Сохранить" ожидаем нужный текст и видимый элемент. Здесь expect импортирован из @playwright/test, а save-status обозначает test id области статуса в учебном приложении.
const status = page.getByTestId("save-status"); await expect(status).toHaveText("Сохранено"); await expect(status).toBeVisible();
Обычный isVisible() возвращает текущее состояние видимости и не ждёт её появления. Если передать полученный boolean в expect, повторная проверка страницы сама собой не возникнет. Для ожидания видимости подходит await expect(locator).toBeVisible().
Как выбрать условие
Сначала сформулируйте результат действия: изменился текст статуса, появилась строка в таблице, открылся нужный экран. Затем выберите точный локатор и проверку этого состояния. Одной видимости бывает недостаточно: область статуса может отображаться с текстом "Сохранение...".
Текст "Сохранено" подтверждает проверенное состояние интерфейса. Если цель теста включает сохранность данных после повторного открытия, понадобится соответствующий шаг проверки. Даже корректное ожидание не устраняет ошибки приложения и проблемы тестовых данных.
Если падение остаётся, полезно открыть trace и сопоставить действия, состояние страницы и сетевые запросы. Тайм-аут стоит выбирать с учётом допустимого времени ответа: бесконечное ожидание тоже скроет проблему.
Источники: официальная документация Playwright, разделы Assertions, Auto-waiting, Best Practices и API Page. Проверено 16 октября 2026 года.
#тестирование #Playwright #вебразработка
Какое состояние после клика в ваших тестах оказалось самым сложным для проверки?