Рекомендация
Как писать устойчивые автотесты
Как писать устойчивые автотесты
Рекомендация для авторов автотестов в ComplexQA: как снизить хрупкость шагов Playwright на подтверждённом домене команды.
Зачем
Нестабильный локатор, клик по новой вкладке и длинная пауза вместо ожидания элемента дают ложные падения в запуске автотестов. Устойчивый сценарий опирается на точные Target, явные ожидания и статус READY только у готовых CASE.
Как устроить работу
- Предпочитайте локаторы
ROLE,LABEL,TESTIDточным CSS с подстрокой*=. - Перед действием дождитесь элемента:
waitForSelectorилиtoBeVisible, а не длинныйwaitForTimeout. - Не кликайте ссылки с
target=_blank. Откройте адрес черезgotoс полным URLhttpsна подтверждённом хосте. - Выносите повторяемые локаторы в репозиторий объектов.
- Выставляйте статус
READYуCASEтолько когда сценарий и синтаксис проверены. - Логин и пароль берите через
TEST_ACCOUNT, не черезINLINE.
Подробный порядок шагов: Составление шагов автотеста. Типичные ложные падения отчёта: Как задавать шаги автотеста без ложных падений.
Чего избегать
| Плохо | Хорошо |
|---|---|
CSS с *= «на всякий случай» | Точный TESTID или ROLE + имя |
waitForTimeout на 10000 ms перед каждым кликом | waitForSelector / toBeVisible по Target |
| Клик по ссылке с новой вкладкой | goto на полный URL |
| Локатор скопирован в десять автотестов | Один элемент в репозитории объектов |
CASE в READY с черновыми шагами | PENDING, пока сценарий не готов |
Пример: хрупкая пауза
json
{
"action_name": "waitForTimeout",
"value_text": "10000",
"value_source_type": "INLINE"
}Пример: ожидание элемента
json
{
"action_name": "waitForSelector",
"target": { "kind": "TESTID", "value": "results-table" },
"timeout_ms": 15000
}Страница не помогла?