Автоматизированные тесты
Автоматизированные тесты позволяют проверять поведение и внешний вид вашего приложения, чтобы убедиться, что все функции работают как ожидается. По сути, это тестирование реального приложения без участия человека.
Внутренне при написании тестов FlutterFlow генерирует код для фреймворка интеграционного тестирования Flutter, который можно скачать и протестировать локально или с помощью сервисов, таких как Firebase Test Lab.
FlutterFlow пока не поддерживает запуск тестов на платформе.
- Бесплатный и базовый планы: Автоматизированное тестирование недоступно.
- План Growth: Включает 1 тест на проект.
- План Business: Позволяет до 3 тестов на проект.
- План Enterprise: Поддерживает неограниченное количество автоматизированных тестов.
Основы
Перед добавлением и запуском тестов важно понять рабочий процесс. При создании теста вы по сути описываете последовательность шагов, которые определяют, как тест будет взаимодействовать с приложением. Каждый шаг может выполнять отдельную функцию и классифицироваться следующим образом:
Тип шага
1. Взаимодействие с виджетом
Этот шаг имитирует взаимодействие пользователя с приложением, например, нажатие на кнопку или ввод текста в поле. При добавлении этого шага вы можете указать, какой тип действия хотите имитировать, и на каком виджете.
Тип действия
- Нажатие: Имитирует одиночное нажатие или клик.
- Двойное нажатие: Имитирует два быстрых нажатия.
- Длительное нажатие: Имитирует нажатие и удержание на мгновение.
- Ввод текста: Вводит точный текст, который вы хотите имитировать.
- Прокрутка до появления: При выборе этого варианта вы можете указать Delta — количество пикселей, на которое нужно повторять прокрутку, пока виджет не станет видимым. Если в приложении несколько прокручиваемых виджетов, выберите, какой из них прокручивать, с помощью свойства Scrollable.
2. Ожидание загрузки (Pump & Settle):
После взаимодействия тесту может потребоваться пауза, чтобы приложение обработало взаимодействие, загрузило что-то или обновило состояние. Здесь на помощь приходит механизм «Ожидание загрузки», который гарантирует, что у приложения было достаточно времени на отражение изменений.
При выборе этого варианта доступны следующие параметры:
- Длительность: Как долго ждать? Значение по умолчанию — 100 мс.
- Тайм-ауты: Максимальное время ожидания, после которого тест завершится неудачей.
- Начинайте тест с этого шага на 3 секунды (т. е. 3000 мс).
- После каждого шага «Взаимодействие с виджетом» обычно полезно добавить ещё один шаг «Ожидание загрузки».
3. Проверка результата
После выполнения действия в приложении важно убедиться, что результат соответствует ожиданиям. Это шаг верификации, на котором вы подтверждаете, что приложение ведет себя как ожидается после взаимодействия. Здесь вы проверяете наличие конкретного виджета на экране.
При выборе этого варианта необходимо выбрать виджет, который вы хотите проверить, и установить ожидаемый результат с помощью одного из следующих вариантов:
- Не найти ничего: Убеждается, что указанный виджет отсутствует на экране.
- Найти определённое количество виджетов: Ожидает наличие определённого количества виджетов.
- Найти один виджет: Подтверждает наличие ровно одного виджета.
- Найти несколько виджетов: Ожидает нахождение нескольких виджетов.
- Активен: Проверяет, что виджет не только видим, но и функционален.
- Неактивен: Проверяет, что виджет находится в неактивном состоянии и не реагирует на взаимодействия пользователя.
- Имеет состояние: Подтверждает, что виджет находится в конкретном состоянии, например True или False. Например, проверяет, выбран ли флажок.
Метод выбора
Это метод, с помощью которого вы находите виджет для выбора или проверки. FlutterFlow предлагает следующие способы идентификации виджетов:
- Выбор из UI Builder: Используйте интерфейс UI Builder для визуального выбора виджета, который нужно проверить.
- Поиск по ValueKey: Находит виджет по его уникальному ValueKey. Совет: Чтобы добавить ValueKey к виджету, используйте свойство «Value Key» в разделе «Testing» на панели свойств виджета.
- Поиск по типу: Ищет виджет по его типу, например
TextилиButton. - Поиск по семантической метке: Полезно для поиска виджетов с конкретной семантической меткой.
- Поиск по тексту: Находит виджет, отображающий конкретный текст.
- Поиск по потомку: Ищет виджет, имеющий конкретного потомка или предка.
Добавление тестов
Давайте разберём, как добавлять тесты, на примере, который обеспечит возможность добавления и удаления элементов из списка избранного.
Вот пошаговые инструкции по добавлению тестов:
- Создайте тест для проверки видимости страницы на экране.
- Далее найдите кнопку избранного и имитируйте событие нажатия с использованием 'ValueKey' как идентификатора продукта. Важно: Используя 'ValueKey', мы точно выбираем кнопку избранного для конкретного продукта. Без этой точности тест столкнётся с несколькими кнопками избранного и не сможет определить, на какую нажать, что приведёт к неудаче.
- Аналогично вы можете дублировать тест и внести изменения для теста 'RemoveFromFavorites'. Совет: При этом убедитесь, что на последнем шаге (т. е. Проверка результата) вы установите Ожидания в Не найти ничего. Это гарантирует, что удалённый элемент не виден в списке избранного.

Запуск тестов
Вы можете запускать тесты на локальных устройствах или использовать сервисы, такие как Firebase Test Lab.
Для локального запуска тестов:
- Скачайте код проекта.
- Перейдите в
your_project/integration_test/test.dart. - Чтобы запустить конкретный тест, нажмите кнопку воспроизведения рядом с ним. Чтобы выполнить все тесты сразу, дважды нажмите кнопку воспроизведения рядом с
void main. - В качестве альтернативы вы можете использовать терминал и ввести команду:
flutter test integration_test/test.dart."
Чтобы запустить тесты в Firebase Test Lab, следуйте инструкциям здесь.