1. Хрупкие локаторы
# ❌ Сломается при смене вёрстки
page.locator("div.container > div:nth-child(3) > button.btn.btn-primary")
# ✅ Устойчиво — по смыслу элемента
page.get_by_role("button", name="Сохранить")
2. Strict mode violation
Симптом:
Error: strict mode violation: locator resolved to 3 elements
# ❌ Несколько кнопок "Добавить"
page.get_by_role("button", name="Добавить").click()
# ✅ Уточнить контекст
page.get_by_role("listitem").filter(has_text="Молоко") \
.get_by_role("button", name="Добавить").click()
3. assert вместо expect()
# ❌ Снимок — флакает, если элемент не успел появиться
assert page.locator(".toast").is_visible()
# ✅ expect ждёт
expect(page.locator(".toast")).to_be_visible()
4. Лишние ручные ожидания
Не добавляйте time.sleep() «на всякий случай». Авто-ожидание уже встроено; ручные паузы лишь замедляют тесты.
5. type() вместо fill()
Для ввода значения используйте fill() (быстро, очищает поле). Посимвольный press_sequentially() нужен лишь там, где важны события клавиатуры (автодополнение).
⚠️ Тексты ошибок зависят от версии Playwright.