For migration, it is recommended to download the project from scratch and remove old build images if you used Docker.
# To prepare, run:
npm ci && npm link
# To prepare WebDriverAgent (for Apple devices) in Xcode, run:
npm run setup-wda
# To save the settings (provisioning profile) of WebDriverAgent, run:
npm run save-wda-sign
# To apply saved changes to WebDriverAgent (after any `npm install / npm ci`), run:
npm run apply-wda-sign
# To run locally, run:
devicehub localThe purpose of this update was to optimize the Apple device workflow:
- Replaced the embedded WebDriverAgent source with the
appium-webdriveragentnpm package - The build / installation / validation / cleanup processes are now controlled by the
appium-webdriveragentpackage - Refactored
touchevents, optimized thetouchMoveevent, which can now have intermediate points in the path instead of a straight line with "from - to" coordinates - Added
setup-wdanpm script that opensWebDriverAgent.xcodeprojfrom./node_modulesin Xcode - Added
save-wda-signnpm script to save the user's signature forWebDriverAgent.xcodeproj, which must be used after each Xcode project edit, as dependency reinstallation (npm install) causes a reset - Added
apply-wda-signnpm script to apply the saved user signature to theWebDriverAgent.xcodeprojproject - When releasing an
Appledevice, it goes into lock mode and stops the currentWDA Session - Implemented a
healthcheckmechanism for theWebDriverAgent Serverrunning on the device, which terminates the process after 4 failed attempts
( theios-providerunit will automatically restart the device process ) - Fix incorrect device
modelandmarketNamedisplay inui - Replaced
usbmuxwithusb-hotplugto reduce USB monitoring overhead
( now using native macOSIOKit API)
During the work, bugs and technical debt were fixed:
- Removed
tsxfrom the project, added apostinstallscript that initiates the project build with copying all necessary assets to the build folder and installing dependencies inui - Added a
postinstallscript inuithat initiates the project build - Devices now always correctly reflect their status
(OFFLINE = 1 | ONLINE = 3 | CONNECTING = 4 | PREPARING = 6) - Fixed the
No display width or heightbug that preventeduifrom displaying the screen broadcast - Fixed a bug that prevented releasing
Appledevices - Fixed a bug where repeated device connections were ignored
- Added important flags when launching
ios-deviceby theios-providerunit
Целью данного обновления была оптимизация работы Apple устройств:
- Локальный клон WebDriverAgent заменен на установку пакета
appium-webdriveragentчерез npm - Процессы билда / установки / валидации / очистки теперь контролируются пакетом
appium-webdriveragent - Отрефакторены
touchсобытия, оптимизированоtouchMoveсобытие, теперь оно может иметь промежуточные точки в пути вместо прямой с координатами "от - до" - Добавлен npm скрипт
setup-wdaоткрывающийWebDriverAgent.xcodeprojизnode_modulesв xcode - Добавлен npm скрипт
save-wda-signдля сохранения подписи пользователя дляWebDriverAgent.xcodeproj, его необходимо использовать после каждого редактирования xcode проекта, ведь при повторной установки зависимостей (npm install) происходит сброс - Добавлен npm скрипт
apply-wda-signдля применения сохраненной подписи пользователя проектаWebDriverAgent.xcodeproj - При освобождении
Appleустройства оно уходит в блокировку и останавливает текущуюWDA Session - Реализован
healthcheckмеханизм для запущенного на устройствеWebDriverAgent Server, который останавливает процесс при достижении 4х неудачных попыток
( юнитios-providerавтоматически запустит процесс девайса вновь ) - Исправлено некорректное отображение
modelиmarketNameдевайса вui - Заменен
usbmuxнаusb-hotplugдля минимизации оверхеда при прослушке usb
( теперь используется нативный macOSIOKit API)
В процессе работы были исправлены баги и техдолг:
- Убран
tsxиз проекта, добавленpostinstallскрипт инициирующий билд проекта с копированием всех необходимых ассетов в папку билда и установкой зависимостей вui - В
uiдобавленpostinstallскрипт инициирующий билд проекта - Устройства теперь всегда корректно отражают свой статус
(OFFLINE = 1 | ONLINE = 3 | CONNECTING = 4 | PREPARING = 6) - Исправлен баг
No display width or height, из-за которогоuiне мог отобразить трансляцию экрана - Исправлен баг, из-за которого невозможно было освободить
Appleустройство - Исправлен баг, при котором игнорировалось повторное переподключение девайса
- Добавлены важные флаги при запуске
ios-deviceюнитовios-provider
Full Changelog: v1.5.1...v1.5.2