t.me/atinfo_chat Telegram группа по автоматизации тестирования

[Appium/ Real iOS device] При запуске Serenity тестов автоматически удаляется WebDriverAgent из iPhone

serenity
bdd
iphone
mobile
appium
ios
webdriveragent
wda
Теги: #<Tag:0x00007fb2f796f058> #<Tag:0x00007fb2f796ee78> #<Tag:0x00007fb2f796ed38> #<Tag:0x00007fb2f796ebf8> #<Tag:0x00007fb2f796e748> #<Tag:0x00007fb2f796e388> #<Tag:0x00007fb2f796e090> #<Tag:0x00007fb2f796dd48>

#1

Всем привет :wink:

Ребята, сейчас на проекте разбираюсь с автоматизацией мобильных приложений, и немного застряла :frowning:
Есть уже готовый проект, я пытаюсь запустить тесты на с iPhone-е, но, увы, никак.
Каждый раз получаю новые ошибки, и, как я подозреваю, ето связано с запуском WebDriverAgent.

Основние технологии:
Последние версии Appium (1.16.0 - Desktop, и - 1.15.1 - npm), Serenity BDD, Java, jUnit

Девайсы:
iPhone 6, OS:12.4.2, xCode: 11.2.1, OSX: 10.14.6

Так как проект уже существующий, я с нуля не писала, то некоторые capabilities уже были прописаны, но настраивала я WebDriverAgent сама, смотря пример здесь https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md

Итак, проблема заключается в том, что при запуске Serenity тестов автоматически удаляется WebDriverAgent из iPhone.

WDA деплою вручную, через терминал, с помощью следующей команды:

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=39a8bc60c8b4d62417f9d953abc2289daac60709 CODE_SIGNING_REQUIRED=YES test -allowProvisioningUpdates

(может, в будущем, перепишу запуск WDA как отдельного сервера в тестовый фреймворк (http://appium.io/docs/en/advanced-concepts/wda-custom-server/), но пока времени нет совсем)

И, как понимаю, все идет хорошо, так как в самом конце получаю результат:

Test Case '-[UITestingUITests testRunner]' started.
    t =     0.01s Start Test at 2020-01-16 16:41:53.459
    t =     0.02s Set Up
2020-01-16 16:41:53.551422+0200 WebDriverAgentRunner-Runner[1923:249336] xpc error: Connection interrupted
2020-01-16 16:41:53.571830+0200 WebDriverAgentRunner-Runner[1923:249336] Built at Jan 16 2020 15:40:35
2020-01-16 16:41:53.683492+0200 WebDriverAgentRunner-Runner[1923:249336] ServerURLHere->http://10.25.173.28:8100<-ServerURLHere

Беру оттуда IP адрес и прописываю как значение для “wdaBaseUrl” (DesiredCapabilities).

Когда запускаю тесты (через IntellijIIDEA, запускаю по отдельности каждый feature file), получаю кучу логов, а впоследствии такой аутпут:

[debug] [WD Proxy] Proxying [GET /status] to [GET http://null:null/status] with no body
[WD Proxy] Got an unexpected response with status undefined: {"errno":"ENOTFOUND","code":"ENOTFOUND","syscall":"getaddrinfo","hostname":"null"}

К этому времени WDA автоматически удален из айфона.

Сейчас пробую дебажить, где сетаются значения для WDA (URL & port), а также пытаюсь обнаружыть, почему удаляется сам WDA, но пока безрезультатно :frowning:

Какие решения уже смотрела?

Посмотрите пожалуйста, что я делаю не так.

И если у вас есть полезные материалы по автоматизации и настройке appium+iOS, поделитесь пожалуйста!

Заранее благодарна за любую помощь! :kissing_heart:

P.S. Список всех DesiredCapabilities

    cap = new DesiredCapabilities();
       cap.setCapability("noReset", "true");
       cap.setCapability("fullReset", "false");
       cap.setCapability("showXcodeLog", "true");
       cap.setCapability("showIOSLog", "true");
       cap.setCapability("wdaStartupRetries", "2");
       cap.setCapability("bundleId", com.notes.preprod");
       cap.setCapability("useNewWDA", "false");
       cap.setCapability("usePrebuiltWDA", "false");
       cap.setCapability("automationName", "XCUITest");
       cap.setCapability("wdaBaseUrl", "10.25.173.28");
       cap.setCapability("wdaLocalPort", "8100");
       cap.setCapability("platformName", "IOS");
       cap.setCapability("platformVersion", "12.4.3");
       cap.setCapability("deviceName", "Lucky’s iPhone");
       cap.setCapability("udid", "39a8bc60c8b4d62417f9d953abc2289daac60709");
       cap.setCapability("appium.app", "app/MyNotes-Preprod.ipa");

(Vladislav Sobol) #2

Обычно WDA билдится вручную один раз.
Затем все работает нормально.

Проблема скорее всего в этом

cap.setCapability("usePrebuiltWDA", "false");

Попробуйте

cap.setCapability("usePrebuiltWDA", "true");

#3

Спасибо, Владислав!
Буду пробовать :slight_smile:


#4

Привет, всем :wink:

Ребята, пофиксалось все :tada: :confetti_ball:
Как я поняла,

cap.setCapability("wdaBaseUrl", "10.25.173.28");
cap.setCapability("wdaLocalPort", "8100");

это для запуска WDA на айфоне через WiFi. А так как я тесты запускала через USB, то этих настроек вообще не нужно - я закомментировала их, и - о, чудо! - приложение запустилось :slight_smile:
Но вот почему WDA удалялся тогда, а сейчас нет, для меня до сих пор остается загадкой :male_detective: