Комментарии 19
День добрый. Очень интересно но ничего не понятно. А почему просто через fastlane не запускать тесты на реальном девайсе (рассмотрим кейс когда одна машина как у вас на скрине один макбук чтобы не учитывать распиливание тестов на несколько машин) ?
Интересное предложение, но я не изучал и не прорабатывал решение с fastlane. Да и каких-то преимуществ по сравнению с selenoid я не вижу. Нужно также поднимать и настраивать окружение, судя по документации к fatlane. Плюс мы хотели получить единую точку подключения через ggr-router.
Можете подсветить моменты, которые непонятны в статье по настройке тестового окружения для iOS?)
Стыдно признать, но ни слова в статье не понял )
Думаю, лучше объяснить на сравнении с нашим подходом.
У нас есть CI Gitlab и есть Mac mini (там стоят все нужные версии Xcode) на котором запускаются задачи с гитлаба на различные эвенты. Например, у нас в Gitlab на создание мерж реквеста создается задача для запуска UI тестов на Mac mini. Описание задачи выглядит следующим образом (gitlab-ci.yml):
ui_tests:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
script:
- fastlane ui_tests
что означает, что на создание МР скачивается репозиторий нашего приложения на Mac mini и запускается баш скрипт который в свою очередь запускает fastlane.
Fastlane логика лежит в папке /fastlane в корне проекта и там описана вся логика, что нужно сделать. Команда:
fastlane ui_tests
означает запустить lane с именем ui_tests в файле /fastlane/Fastfile, который и запустит наши UI тесты. Сам lane пускатель тестов выглядит в базовой версии примерно так:
lane :ui_tests do |options|
# set Xcode for current proccess.
xcodes(version: "15.4", select_for_current_build_only: true)
result_bundle_path = "fastlane/test_output/Tests-AppBaseUITestTestPlan.xcresult"
run_tests(
workspace: "MyApp.xcworkspace",
scheme: "MyAppUITests",
testplan: "AppBaseUITestTestPlan",
skip_detect_devices: true,
result_bundle: true,
result_bundle_path: result_bundle_path,
parallel_testing: true,
concurrent_workers: 5, # run all the tests on 5 simulators in parallel
destination: "platform=iOS Simulator,id=4CC7A737-839E-4DFB-82C0-7648DA9C43E7" # iPhone 15 simulator
# destination: "platform=iOS,id=400008220-00182D69332B801A" # Real iPhone 15 connected to MacOs
)
sendResultToAllureForQAVerification(result_bundle_path)
end
В целом это всё, делаем фичу в своей ветке, потом в основную ветку создаем МР и запускается каскад различных тестов, в том числе и UI тесты.
пс. может быть у вас не нативные приложения, а в webview где нужны свои специальные UI тесты (никогда не сталкивался с web разработкой).
Очень жаль, что ни слова не поняли) видимо не на том языке писал статью, надо было на китайском 🤭
Да, круто, что у вас такое решение используется, опишите свой опыт на хабре, люди почитают, оценят, используют ваш опыт.
Я почитал что такое appium, и теперь понял весь контекст вашей статьи. Это получается у вас отдельный от android и iOS команды человек пишет кроссплатформенные тесты (не на нативном для платформы языке), а appium позволяет унифицировать апи для тестирования независимо под какую платформу запускаются тесты. Прикольно конечно, не знал что так можно) Но, к сожалению, нас, нативных разработчиков, заставляют писать тесты самим, поэтому мы пишем их на нативном Swift / Kotlin и запускаем сразу через Xcode / JUnit (fastlane просто мелкая прослойка).
Наверное статью стоило назвать "Разворачиваем стенд для Appium кроссплатформенных UI-тестов iOS на базе Selenoid" чтобы не вводить в заблуждение нативных разработчиков.
За статью спасибо, много нового для себя открыл)
Да для appium у нас пишут тесты сами тестировщики) А нативные тесты пишут разработчики)
Selenoid не умеет работать с нативом, это аналог Selenium Grid. Поэтому подразумевается, что Selenoid в название статьи сразу все раставит на свои места)
Хотя и fastlane умеет работать с appium)
Вам тоже спасибо, что почитали статью и предложили альтернативное решение)
у нас пишут тесты сами тестировщики
завидую вам, у нас они нам тоже помогали писать тесты (но на нативе) и релизы тестили еще ручным, но потом они устали и пролобировали у начальства чтобы мобилки больше не тестировать им (даже ручным), а нам выбили время чтобы сделать 100% тест коверажд, сидим уже квартал пилим коверадж до приемлемого уровня. А тестировщики ушли на веб, там вроде с тестами совсем всё плохо. Сейчас мы релизим в пятницу в конец рабочего дня чтобы еще сильнее подстегнуть писать хорошие тесты))
А вы все тесты сами пишете? И ненатив тоже?
У нас нет ненативных тестов. Андроид разработчики пишут тесты на колтине (UI тесты + Unit тесты + Snapshot тесты + UI_Prod_API тесты), а мы пишем на Swift тоже самое. Я сначала был не восторге, но теперь поменял своё мнение, мы теперь можем рефакторить весь проект не боясь что-то сломать, потому что высокий коверадж, и как говорил выше, мы можем хоть в субботу ночью катнуть релиз, у нас релиз настроен одной кнопкой в CI.
Но хочу подчеркнуть, у нас намного проще приложение чем клиент для банка. Возможно в ваших условиях у нас бы такое не заработало.
Не указана версия аппиума.
В блоке с конфигами для аппиума и селеноида нет пояснения, где создавать файлы и как называть. В конфиге селеноида есть пути до файлов, но снова нет пояснения, что то за файлы и что в них должно быть и почему такие пути.
Нет объяснения параметров запуска селеноида.
Опечатка в команде для аппиум-доктора.
И нет варианта с запуском симулятора.
Пока что по этой статье шаг за шагом выполнить вряд ли получится задуманное.
А вот и критика подъехала 🤣
За очепятку спасибо 👍
Наверное логично, что по команде ставится версия appium актуальная для вашей ОС
Если вам непонятно, что за файлы, то читайте документацию к selenoid и appium
Для настройки под симуляторы есть ссылка в статье, а я настраивал для реальных девайсов. Поэтому и описывал свой опыт
И если вам нужно настроить тестовую среду под ключ, так это денег стоит)
Интересная реакция. Вам дали список недочетов, некоторые из которых будут блокировать повтор действий из этой статьи, а в ответ — 🤣. Прошлый материал был более профессиональным.
Может, надо более точечно было написать, что вот тут:Appium настроен, теперь можно переходить к настройке конфигурации. Создаем конфиг для Appium и конфиг для Selenoid:
неплохо было бы указать, какой именно файл создается и где.
А тут "image": ["appium", "--config", "/Users/mobilefarm.am/selenoid/config/appium/iphonex.json"]
поделиться секретным содержимым файла iphonex.json
.
Для людей же пишете, а не для KPI по статьям на отдел.
С версиями аппиума тоже есть нюанс. Видимо, вы не в курсе, но раньше при установке беты второго аппиума для IP из России сыпались интересные сообщения в консоль. А может там еще и какие-то скрипты дополнительно исполнялись. И потому было бы неплохо иметь какие-то гарантии, что никаких сюрпризов не будет при установке и после (вы же в альфе делаете какие-то проверки, а не тупо ставите всё подряд?).И если вам нужно
, нет, спасибо, давайте без предположений. Я просто хотел почитать качественную статью.
А вы тут за ревью статей отвечаете, что даете мне список недочетов?
И потому было бы неплохо иметь какие-то гарантии, что никаких сюрпризов не будет при установке и после
Интересный вы конечно человек, какие вам и кто может дать гарантии, что у вас не будет сюрпризов? Да никто вам таких гарантий не даст.
Если у вас Intel, тогда нужна версия AMD для M1, M2 и т.д. Соответственно, нужна версия ARM.
Можете объяснить эту фразу?
Разворачиваем стенд для UI-тестирования iOS на базе Selenoid