Библиотека для автоматизации ui-тестирования мобильных приложений
Решение создано для упрощения написания сценариев ui-тестов для мобильных приложений, для сохранения единообразия подходов к описанию процессов в едином стиле.
- enviroment - содержит описания девайсов и нод для запуска фреймворка на устройствах
- pages - содержит описания экранов приложений
- planTestCycle - содержит перечень флагов для фильтрации story по meta-данным
плюс <имя метки> - добавить story в выборку
минус <имя метки> - исключить story в выборку
- stories - папка для размещения сценариев
- users - описание юзеров
Локальный запуск осуществляется на порту 4723. Запуск на CI в конфигурации с хабом запускается на порту хаба - 5566. Порт общения с девайсом задается в файлах /environment/def/environment*.properties
- заходим в корень проекта, папка в которой лежит build.gradle;
- в консоли выполняем
sh scripts/start_hub.sh
Результат удачного запуска: появился файл seleniumhub.pid в папке scripts и соответствующие логи в консоли.
- заходим в корень проекта, папка в которой лежит build.gradle;
- в консоли выполняем 'sh scripts/start_node.sh <запускаемая_платформа> <порт>' Например,
sh scripts/start_node.sh ios10 4726
sh scripts/start_node.sh android5 4721
Результат удачного запуска: появился файл appium.pid в папке ресурсов соответствующей платформы и логи в консоли.
- Заходим в корень проекта, папка в которой лежит build.gradle;
- В консоли выполняем
sh scripts/stop.sh <платформа>
Результат удачного запуска: исчез файл appium.pid в папке ресурсов соответствующей платформы и есть логи в консоли об остановке процесса
1) ./gradlew --info clean test --tests "*AndroidStories*" -Pplatform=android5 -Puser=6016680 -PtestType=smoke -PbuildVersion=8.4.0.0-SNAPSHOT
2) ./gradlew --info clean test --tests "*AndroidStories*" -Pplatform=android4 -Puser=5773935 -PtestType=smoke -PbuildVersion=8.4.0.0-SNAPSHOT
3) ./gradlew --info clean test --tests "*IOSStories*" -Pplatform=ios10.2 -Puser=1907306 -PtestType=regress -PbuildVersion=8.3_7426
- pkill -f selenium
- pkill -f appium
Для автотестирования на новом (который не был добавлен ранее) устройстве, добавьте новую папку в раздел проекта по аналогии с существующими
/src/test/resources/environment
В файле device.properties нужно прописать имя устройства, его udid и порт. первые два параметра можно найти в окне Window->Devices в Xcode для iOS-устройств. Порт присваивается икрементально от последнего добавленного. Стоит обратить внимание, что добавленное устройство iOS также должно быть добавлено в сертификат разработки - добавить могут ios-разработчики команды.
В случае ios, нужно переподписать приложение драйвера и раннера appium-а сертификатом ios-разработчика. Для этого нужно быть добавленным сертификат разработчиков - добавить могут ios-разработчики команды. По данном адресу /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/ Необходимо открыть при помощи xcode файл с расширением .xcodeproj, выбрать верхний пункт в левой панели и установить Team в двух элементах из раздела Targets - WebDriverAgentLib и WebDriverAgentRunner. В выпадающем списке выберите любой сертификат разработчика с возможностью установки приложения на реальный девайс. Для работы с симулятором подобный сертификат не обязателен.
Мы приветствуем участие в open source проектах. Для упрощения приема pull request'ов мы просим соблюдать простые правила:
- Если мы пишем общие шаги, то в них не должно быть действий зависящих от приложения либо от особенностей платформы (например наботает только на одном девайсе).
- Если предлагаются изменения в ядро - они должны быть покрыты тестами, и тесты должны проходить.
- Стараемся делать PR с одним коммитом.