Test Pilot

Test Pilot проходит приложение вместо тестировщика. Вместо того чтобы собирать интеграционные тесты по шагам, вы описываете сценарий обычным текстом, группируете такие описания и запускаете группу целиком.

Это удобно, когда перед публикацией нужно проверить ключевые сценарии: войти с тестовыми данными, положить товар в корзину, открыть профиль, убедиться, что оформление заказа заканчивается нужным экраном.

Под капотом Test Pilot собирает веб-версию проекта, поднимает её в браузерной среде и отправляет ИИ-агента выполнять инструкции теста. После прогона видно, какие тесты прошли, а какие нет, есть краткий разбор по каждому, скриншоты, пошаговое воспроизведение, список выполненных действий и расход кредитов.

Как создать тест

Сначала создаётся Test Group — группа связанных тестов: авторизация, оформление заказа, настройки профиля, онбординг.

Затем в группу добавляются тесты. У каждого есть:

  • Test Name — название в группе и в результатах прогона.
  • Entry Page — стартовый экран. App default означает обычную точку входа приложения.
  • Переключатель включения — в прогон попадают только включённые тесты.
  • Instructions — шаги обычным текстом, их выполняет агент.
  • Expected Outcome — что должно получиться; агент это проверит после выполнения инструкций.
  • Restart before test — запускать приложение с нуля перед этим тестом. По умолчанию выключено: тесты идут подряд и подхватывают состояние, оставшееся от предыдущего. Включайте, когда тест должен начинаться с чистого состояния.

Инструкции пишите так, будто ставите задачу коллеге-тестировщику: назовите экран, элемент интерфейса, действие и ожидаемый результат.

Тест на вход, например, выглядит так:

  • Instructions: Wait for the screen to load, then enter $email and $password into the text fields and click the continue button.
  • Expected Outcome: The app should land on the home page.
совет

$email и $password — это параметры теста. Созданный параметр подставляется в инструкции по имени со знаком $ впереди.

Параметры теста

Параметры хранят значения, которые Test Pilot подставляет в инструкции: учётные данные, адреса, зависящие от среды, и всё остальное, что не хочется вписывать в каждый тест руками.

Параметры задаются отдельно для каждой среды FlutterFlow. Переключите среду списком Environment и заполните значения для неё.

У параметра есть:

  • Name — имя переменной, по которому на неё ссылаются в инструкциях.
  • Value — значение, которое подставится при прогоне.
  • Description — для чего значение используется.
  • Переключатель шифрования — для чувствительных значений.
осторожно

Для тестов на вход заведите отдельный тестовый аккаунт. Шифрование прячет значение, но боевые учётные данные в прогонах Test Pilot использовать не стоит.

Запуск

Выберите группу, нажмите Run Test Group, задайте параметры прогона и нажмите Run Tests.

Параметры прогона:

  • Device Sizes — по умолчанию берётся текущий размер холста. Можно добавить готовые устройства или свои значения ширины и высоты; в одном прогоне не больше трёх устройств.
  • Brightness — светлая или тёмная тема. Тёмная доступна, только если она включена в дизайн-системе проекта.
инфо

Прогон не начнётся, если в группе нет ни одного включённого теста, в проекте есть блокирующие ошибки, выбрана недопустимая среда или для этого проекта уже идёт другой прогон.

Результаты

В разделе Run History собраны прошлые и текущие прогоны выбранной группы. Кнопка View Results открывает подробности: каждый тест прогона и объяснение агента, почему результат такой.

По каждому тесту доступно:

  • View Test Playback — пошаговое воспроизведение работы агента. Шаги листаются кнопками Previous и Next, снимок выбирается в ленте миниатюр. В боковой панели:
    • Goal — что агент пытался сделать на этом шаге.
    • Observation — что он увидел на экране.
    • Actions — какое действие выполнил и получилось ли.
    • Config — длительность прогона, размер экрана, показ рамки устройства и наложения, а также View JSON с исходными данными шага.
  • Screenshots — снимки экрана из прогона.
  • Actions Taken — все действия агента: щелчки, ввод текста, нажатия клавиш, завершение шагов и результат каждого.
  • Open Snapshot — сборка, на которой шёл прогон.

Что стоит делать

  • Один тест — один сценарий: вход, оформление заказа, открытие профиля.
  • Начинайте инструкции с подготовки: например, дождаться загрузки экрана.
  • Описывайте элементы точно: «click the profile icon on the top left side», а не «click the icon».
  • Задавайте ожидаемый результат там, где он важен: «the app should land on the home page».
  • Держите отдельные значения параметров для каждой среды.
  • Когда тест падает, смотрите скриншоты, воспроизведение и список действий: причина бывает в сборке, запуске, интерфейсе или в самой формулировке инструкции.
  • Включайте Restart before test, когда тест должен начинаться с чистого состояния, и оставляйте выключенным, когда тесты намеренно идут цепочкой.

Сколько это стоит

Test Pilot расходует кредиты. Каждому проекту даётся 5 бесплатных — это 5 прогонов одного теста. Дальше нужен Test Pilot Credits Pass, платное дополнение: от $5 в месяц за 100 кредитов. Один кредит — один прогон одного теста.

Расход считается по количеству тестов, устройств и режимов темы. Прогон из 3 тестов на 2 устройствах в светлой и тёмной теме стоит 3 × 2 × 2 = 12 кредитов.

Перед запуском FlutterFlow показывает, сколько кредитов уйдёт, — цену прогона видно до нажатия Run Tests.

Цены:

  • $5 в месяц за единицу пропуска, 100 кредитов за расчётный период. Единиц можно купить несколько: 10 единиц — $50 в месяц и 1000 кредитов.
  • В индийских рупиях — по тому же расчёту.
  • Региональных скидок нет. При оплате за год — около 25%.

Виды пропусков:

  • Личный — покупается в счетах аккаунта и назначается на один личный проект владельца.
  • Командный — покупается в счетах команды и назначается на один проект той же команды.

Назначение постоянное: снять, поменять или передать пропуск, пока проект существует, нельзя. Если проект удалён, пропуск освобождается. Если у проекта сменился владелец или он перешёл из команды в личные и пропуск перестал соответствовать, он снимается автоматически.

Удаление и отмена пропуска — обычная операция биллинга: как и другие подписки, пропуск работает до конца оплаченного периода.

Частые вопросы

Почему тесты не запускаются?

Проверьте: есть ли у проекта кредиты или бесплатные прогоны, включён ли хотя бы один тест, есть ли у вас права редактора, не идёт ли другой прогон, корректна ли выбранная среда и нет ли в проекте блокирующих ошибок.

Почему показано 0 кредитов?

Пропуск не назначен на проект, кредиты за текущий период израсходованы, пропуск перестал соответствовать проекту или статус кредитов не загрузился.

Почему пропуск не назначается?

Пропуск уже назначен на другой проект, у проекта уже есть пропуск, тип пропуска не совпадает с типом проекта или у вас нет прав на биллинг. Личный пропуск назначается только на личные проекты, командный — только на проекты той же команды.

Может ли поддержка перенести пропуск?

Назначение задумано как постоянное. Обращайтесь в поддержку, если подозреваете сбой в данных — например, пропуск остался занятым после удаления или переноса проекта.

Сколько бесплатных кредитов у проекта?

Пять. Один кредит — один прогон одного теста, то есть пять бесплатных тестов на проект. Дальше нужен назначенный Test Pilot Credits Pass.

Почему на пропуск нет региональной скидки?

На Test Pilot Credits Pass региональные скидки не распространяются. Актуальная цена для вашего аккаунта показана на странице оплаты.

Есть ли бесплатные кредиты у учебных аккаунтов?

Да, те же 5 бесплатных тестов на проект. Дополнительные кредиты покупаются так же, через пропуск.

перевод официальной документации FlutterFlow

обновлено

⌕ ESC