Документация
ОС Аврора 5.1.6

Настройка эмулятора для запуска UI-автотестов

UI-автотесты можно запускать на эмуляторе начиная с версии 5.1.5.

Эмулятору должен быть выделен IP-адрес в одной подсети с хостом для подключения к виртуальной машине по стандартному порту 22, а не по 2223, как это реализовано по умолчанию после установки.

Перед настройкой эмулятора необходимо убедиться, что:

  1. Аврора SDK установлен в директорию по умолчанию ~/AuroraOS.
  2. Виртуальная машина эмулятор остановлена.
  3. В системе отсутствуют следы от установок предыдущих версий Аврора SDK.

Сначала должна быть настроена виртуальная машина, затем настроен сам эмулятор:

Настройка виртуальной машины VirtualBox

Описанная ниже настройка актуальна для VirtualBox версии 7.1.6. Пользовательский интерфейс и команды могут отличаться, если на момент прочтения данной инструкции актуальной будет другая версия VirtualBox.

Если по какой-то причине сетевой адаптер №3 у виртуальной машины эмулятора включён и настроен, его следует отключить:

AURORA_EMULATOR_VM_NAME=$(vboxmanage list vms | grep AuroraOS | cut -d " " -f 1 | tr -d '"')
vboxmanage modifyvm $AURORA_EMULATOR_VM_NAME --nic3 none

Есть два варианта настройки эмулятора:

Добавление нового подключения типа "Сетевой мост"

Подключение типа "Сетевой мост" даёт возможность выделить IP-адрес эмулятору в одной подсети с хостом (как правило 192.168.1.X или 192.168.0.X, зависит от настроек роутера). Этот вариант больше подходит для домашней сети.

Выделение IP-адреса для эмулятора — процесс нестабильный. Иногда после создания нового сетевого адаптера и запуска виртуальной машины IP-адреса на эмуляторе нет. В данной ситуации можно выполнить удаление созданного сетевого адаптера, перезагрузить хост и повторить настройку виртуальной машины.

Для добавления нового подключения в настройках виртуальной машины эмулятора следует включить сетевой адаптер №3 со следующими параметрами:

  • Тип подключения — выбрать Сетевой мост.
  • Имя — выбрать сетевой интерфейс, по которому к роутеру подключён хост. Например, для ноутбука, подключённого по WiFi, это будет беспроводной интерфейс wlo1. Уточнить имя сетевого интерфейса можно командами ip route и vboxmanage list bridgedifs. Подсеть, к которой подключён хост, будет использоваться для автоматического выделения IP-адреса для виртуальной машины эмулятора.
  • Тип адаптера — стабильно показал себя вариант Intel PRO/1000 MT Server (82545EM).
  • Неразборчивый режим — выбрать Разрешить всё.
  • MAC-адрес — сгенерировать новый.

Настройка сетевого адаптера эмулятора

Автоматизация настройки сетевого интерфейса Сетевой мост:

AURORA_EMULATOR_VM_NAME=$(vboxmanage list vms | grep AuroraOS | cut -d " " -f1| tr -d '"')
BRIDGED_INTERFACE=$(ip route | grep default | awk '{print $5}')

vboxmanage modifyvm $AURORA_EMULATOR_VM_NAME \
--nic3 bridged \
--bridgeadapter3 $BRIDGED_INTERFACE \
--nictype3 82545EM \
--nicpromisc3 allow-all \
--macaddress3 auto \
--cableconnected3 on

Добавление нового подключения типа "Виртуальный адаптер"

В отличие от подключения типа "Сетевой мост", где выделяемые в подсети IP-адреса зависят от настроек роутера, у виртуального адаптера подсеть заранее известна и определяется настройками VirtualBox.

  1. Сначала следует убедиться, что в настройках VirtualBox создан подходящий сетевой интерфейс. Для этого в окне менеджера VirtualBox следует открыть раздел Инструменты → Сеть и перейти на вкладку Виртуальные сети. Если виртуальные сети отсутствуют, следует нажать кнопку Создать. В результате создастся сетевой интерфейс с именем vboxnetN (где N – 0, 1, 2 и т.д., каждое последующее нажатие кнопки увеличивает индекс в имени интерфейса на 1).

    Создание виртуальной сети

    Для интерфейса vboxnet0 на вкладке Адаптер по умолчанию используется подсеть 192.168.56.XXX, для vboxnet1 — 192.168.57.XXX, для vboxnet2 — 192.168.58.XXX, и т.д.

  2. Далее для выбранного интерфейса необходимо перейти на вкладку DHCP сервер и задать параметры выделения IP-адресов в созданной виртуальной сети. Установить чекбокс Включить сервер и принять значения по умолчанию. В этом случае IP-адрес эмулятора будет выделяться в подсети 192.168.56.XXX в диапазоне от 3 до 254:

    Настройка виртуальной сети

  3. В настройках виртуальной машины эмулятора включить сетевой адаптер №3 со следующими параметрами:

    • Тип подключения — выбрать Виртуальный адаптер.
    • Имя — выбрать сетевой интерфейс vboxnet0.
    • Тип адаптера — стабильно показал себя вариант Intel PRO/1000 MT Server (82545EM).
    • Неразборчивый режим — выбрать Разрешить всё.
    • MAC-адрес — сгенерировать новый.

    Настройка сетевого адаптера эмулятора

    Автоматизация настройки сетевого интерфейса Виртуальный адаптер:

    if [[ -z $(vboxmanage list hostonlyifs) ]]; then vboxmanage hostonlyif create; fi
    vboxmanage hostonlyif ipconfig "vboxnet0" --ip 192.168.56.1 --netmask 255.255.255.0
    vboxmanage dhcpserver modify \
    --ifname "vboxnet0" \
    --ip 192.168.56.1 \
    --netmask 255.255.255.0 \
    --lowerip 192.168.56.3 \
    --upperip 192.168.56.254 \
    --enable
     
    AURORA_EMULATOR_VM_NAME=$(vboxmanage list vms | grep AuroraOS | cut -d " " -f 1 | tr -d '"')
     
    vboxmanage modifyvm $AURORA_EMULATOR_VM_NAME \
    --nic3 hostonly \
    --hostonlyadapter3 vboxnet0 \
    --nictype3 82545EM \
    --nicpromisc3 allow-all \
    --macaddress3 auto \
    --cableconnected3 on
    

Настройка эмулятора

  1. При необходимости (актуально для автотестов) выключить отображение GUI для эмулятора:

    vboxmanage modifyvm $AURORA_EMULATOR_VM_NAME --defaultfrontend headless
    
  2. Проверить, что эмулятору на третьем сетевом адаптере eth2 (индексация начинается с нуля) выделился IP-адрес в одной подсети с хостом:

    ~/AuroraOS/bin/sfdk emulator start
    ~/AuroraOS/bin/sfdk emulator exec bash -c "/usr/sbin/ip a show eth2 | grep inet | grep -v inet6 | cut -d ' ' -f 6 | cut -d '/' -f 1"
    

    Результатом выполнения последней команды должен быть IP-адрес эмулятора, по которому в дальнейшем будет осуществляться подключение через qtium-driver. Например:

    • Для подключения типа Сетевой мост: 192.168.1.20.
    • Для подключения типа Виртуальный адаптер: 192.168.56.8.

    Здесь в вызове sfdk emulator exec указан полный путь к команде ip, т.к. по умолчанию в переменной окружения PATH на эмуляторе доступны лишь 3 директории, в число которых /usr/sbin/ не входит:

    ~/AuroraOS/bin/sfdk emulator exec bash -c "env | grep PATH"
    PATH=/usr/local/bin:/bin:/usr/bin
    

    Этот адрес потребуется в дальнейшем при конфигурации запуска автотестов.

  3. После включения этих опций виртуальную машину эмулятора следует перезапустить для применения изменений.

  4. Добавить в SSH-агент приватный ключ sdk, который создаётся во время установки Аврора SDK:

    ssh-add ~/AuroraOS/vmshare/ssh/private_keys/sdk
    
  5. Убедиться, что ввод команды подключения к эмулятору не требует ввода пароля. Например, если эмулятору выделился IP-адрес 192.168.56.37:

    ssh defaultuser@192.168.56.37
    
  6. На устройстве в приложении Настройки в разделе Средства разработчика убедиться, что Режим разработчика включён. Если по каким-либо причинам он выключен, то включить его вручную или командой:

    ~/AuroraOS/bin/sfdk emulator exec -tt bash -c "sudo gdbus call --system --dest ru.omp.developermode --object-path / --method ru.omp.developermode.SetEnabled true"
    
  7. В настройках режима разработчика активировать опцию Разрешить автотестирование пользовательского интерфейса. Если опция включена — то выключить и включить заново.

    Разрешить автотестирование пользовательского интерфейса

    Эта настройка нужна для поддержки автоматического UI-тестирования QT/QML приложений, запущенных в песочнице.

    Действие можно выполнить командой:

    ~/AuroraOS/bin/sfdk emulator exec -tt bash -c "sudo gdbus call --system --dest ru.omp.developermode --object-path / --method ru.omp.developermode.SetAutoTestUIEnabled false"
    ~/AuroraOS/bin/sfdk emulator exec -tt bash -c "sudo gdbus call --system --dest ru.omp.developermode --object-path / --method ru.omp.developermode.SetAutoTestUIEnabled true"
    

    Т.е. выключение опции Разрешить автотестирование пользовательского интерфейса останавливает службу qtium-bridge, а включение — запускает её.

  8. Также для удобства отладки можно включить отображение касаний:

    ~/AuroraOS/bin/sfdk emulator exec -tt bash -c "dconf write /desktop/lipstick-jolla-home/touch-tracker/enabled 'true'"
    
  9. Для вступления изменений в силу необходимо перезапустить эмулятор:

    ~/AuroraOS/bin/sfdk emulator stop; ~/AuroraOS/bin/sfdk emulator start
    
  10. После перезагрузки нужно убедиться, что служба qtium-bridge  на эмуляторе запущена и работает корректно:

    ~/AuroraOS/bin/sfdk emulator exec -tt bash -c "sudo systemctl status qtium-bridge"
    

    Служба должна быть включена и запущена. Например:

    ● qtium-bridge.service - qtium-bridge appium service
       Loaded: loaded (/usr/lib/systemd/system/qtium-bridge.service; enabled; vendor preset: enabled)
       Active: active (running) since Fri 2025-03-28 17:01:30 MSK; 3min 40s ago
     Main PID: 1281 (qtium-bridge)
       Memory: 1.9M
       CGroup: /system.slice/qtium-bridge.service
               └─1281 /usr/bin/qtium-bridge
    

Далее можно переходить к написанию тестов и их запуску.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.