Как стать автором
Обновить

Комментарии 5

Как решаете проблемы с тестирование на андроиде?
Возможно достучаться до элемента, если вместо testID вставлять accessabilityLabel. Но при таком подходе уже нельзя использовать testID для ios и приходится писать «platform specific code», где в элемент вставляется либо testID, либо accessabilityLabel.
Но даже в этом случае не соблюдается полная уникальность, так как идентификаторы наследуются в финальном дереве представления.
Добрый вечер.

Проблемы только с Appium, в Detox testID работает на обоих платформах. Appium и Android работают как надо с accessabilityLabel, поэтому стоит использовать его, или, как вы указали, «platform specific code».
beforeAll(async () => {
try { // до того, как запустить тест
await driver.init(capabilities) // запускаем драйвер
await driver.sleep(4000) // да уж, вручную ставим таймер и ждем загрузку приложения, вот она хрупкость!
} catch(err) {
console.log(err) // если что, мы хотим знать, что не так
}


По моему, тут неправильно обрабатываются исключения. При ошибке на этапе подготовки теста выполнение теста должно отменяться. У вас же просто выплевывается сообщение в консоль и продолжается выполнение с потенциально неработающим драйвером.

> Со временем и с увеличением количества тестов, мы будем устанавливать таймеры чаще — запросы http, анимация, сам React Native — мост между нативным кодом и JavaScript только усложняет ситуацию.

А нельзя делать поллинг, раз в N секунд проверяя появление какого-то элемента? Так делают в браузерах.

Добрый день.


Вы правы, можно добавить строку driver.quit(), можно попробовать вместо try...catch использовать try...finally.


Под поллингом вы имеете ввиду "Implicit Wait"? Если честно, не пробовал, но похоже, что это возможно. Так или иначе, мы "ждем".


Также хочу добавить, что лучше отделить настройки Appium от тестов, как я показал на примере Detox. Потом сделать два отдельных скрипта, вроде, yarn test:ui:ios и yarn test:ui:android.

Все правильно! Надо ждать нужный экран, а не ставить слипы. Со временем это придет. Когда тестов станет 100+. Ибо каждая секунда ожидания это уже более 100секунд.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории