Перейти к содержимому

Команды flow

Каждый шаг сценария — одна команда. Команды с селектором принимают простую строку (видимый текст) или объект-селектор — см. Flow-файл и селекторы.

Команда Кратко web android ios
launchApp Запустить (опц. сбросить) приложение
stopApp Остановить приложение
tapOn Тапнуть по элементу
longPressOn Долгое нажатие на элемент
doubleTapOn Двойной тап по элементу
inputText Ввести в сфокусированное поле
clearText Очистить сфокусированное поле
clearState Стереть данные приложения
assertVisible Проверить, что элемент виден
assertNotVisible Проверить, что элемента нет
waitForVisible Ждать, пока станет виден
copyText Скопировать текст элемента в переменную
assertTrue Проверка над подставленными значениями
scroll Прокрутить экран
scrollUntilVisible Прокручивать, пока элемент не появится
swipe Свайп по точкам или направлению
openLink Открыть deep link / URL
setLocation Подменить GPS-координаты
grantPermissions Выдать runtime-разрешения
hideKeyboard Убрать клавиатуру
back Навигация назад
runFlow Запустить под-сценарий (include)
repeat Повторить блок

Запустить приложение под тестом. Объектная форма: { appId, clearState, stopApp } для холодного/чистого старта.

- launchApp: "appId"

Завершить приложение под тестом.

- stopApp: true

Тапнуть по элементу по селектору (text/id/…) или { point: "x, y" }. Цели за пределами экрана подскролливаются в видимую область.

- tapOn: "text"

Нажать и удерживать элемент.

- longPressOn: "text"

Тапнуть по элементу дважды подряд.

- doubleTapOn: "text"

Ввести текст в текущее сфокусированное поле.

- inputText: "text"

Очистить сфокусированное текстовое поле (на iOS нужен драйвер XCUITest).

- clearText: true

Сбросить сохранённое состояние приложения (чистая установка). iOS — только симулятор, best-effort.

- clearState: true

Провалить шаг, если селектор не совпадает с видимым элементом.

- assertVisible: "text"

Провалить шаг, если селектор совпадает с видимым элементом.

- assertNotVisible: "text"

Опрашивать, пока селектор не станет видимым. Объектная форма добавляет { timeout } (мс).

- waitForVisible: "text"

Прочитать текст элемента для последующей подстановки ${} / assertTrue.

- copyText: "text"

Проверка { equals | contains: [a, b] } над значениями с подстановкой ${}.

- assertTrue:
equals: [a, b]

Прокрутить вверх/вниз/влево/вправо.

- scroll: down

Прокручивать, пока селектор не станет видимым.

- scrollUntilVisible: "text"

Свайп { start, end } (px или % экрана) либо по направлению.

- swipe:
start: "50%, 80%"
end: "50%, 20%"

Открыть URL или deep link (web navigate / iOS idb open / Android am start VIEW).

- openLink: "url"

Переопределить координаты устройства { lat, lon }.

- setLocation:
lat: 0
lon: 0

Выдать частые runtime-разрешения (iOS simctl / Android pm grant / web CDP).

- grantPermissions: true

Убрать экранную клавиатуру. Недоступно на iOS.

Платформы: web, android

- hideKeyboard: true

Назад (история браузера / аппаратная кнопка Android). Недоступно на iOS (нет аппаратной кнопки назад).

Платформы: web, android

- back: true

Подключить другой flow-файл или инлайн { commands, when }. when принимает { visible | notVisible: selector } или { platform: android | [web, ios] }.

- runFlow: "file"

Повторить блок { times | while, commands }.

- repeat:
times: 2
commands:
-

HTTP-запрос для API-тестирования: { method, url, headers, query, json | body, auth, extract, assert, retryUntil, timeout }. extract кладёт значения по JSONPath в ${переменные}, общие с UI-шагами; assert проверяет status (код или "2xx"), равенства json / { contains }, headers и JSON-schema; retryUntil поллит запрос, пока проверка не пройдёт. С device: none флоу становится чисто-API — устройство не резолвится и не бутится.

- request:
url: "url"