UI-тест должен имитировать поведение пользователя, а не внутреннюю структуру CSS. Поэтому предпочтительны role-based selectors, понятные test ids для сложных компонентов, явные ожидания состояния и trace при падении. Flaky test — это дефект тестовой системы: его нельзя просто перезапускать бесконечно.
Тестовые данные должны быть управляемыми: fixture, seed, cleanup или изолированное окружение. Иначе тесты будут падать не из-за продукта, а из-за случайного состояния.