Додаємо тести Флаттер застосунку в Гітлаб пайплайн
Опубліковано

Сподіваюсь цей сніпет збереже Вам і мені майбутьному 5 хвилин при наступному сетапі флатер додатку.
зд;нч?🤔
В .gitlab-ci.yml
image: instrumentisto/flutter:latest
stages:
- test
test:
stage: test
before_script:
- export PATH="$PATH":"$HOME/.pub-cache/bin"
- flutter pub get
- flutter clean
- flutter pub global activate junitreport
- flutter pub global activate cobertura
script:
- flutter test --coverage --machine | tojunit -o report.xml
- genhtml coverage/lcov.info --output=coverage
- cobertura convert
coverage: '/^\s*lines\.+: (\d+\.\d+)% .*/'
artifacts:
when: always
paths:
- report.xml
- coverage/
reports:
junit:
- report.xml
coverage_report:
coverage_format: cobertura
path: coverage/cobertura.xml
expire_in: 1 week
Трошки пояснень
- export PATH="$PATH":"$HOME/.pub-cache/bin"
- Потрібно аби дати змогу скрипту викликати додатки які ми встановлюємо глобально нижче.
- flutter pub get
- Скоріш за все тобі потрібні твої пакети аби запустити тести.
- flutter pub global activate junitreport
- Бібліотека що зконвертує результати дартовських тестів в junit формат зрозумілий Гітлабу.
- flutter pub global activate cobertura
- Бібліотека що зконвертує звіт покриття формату lcov
, який використовується Дартом, в cobertura.xml
зрозумілий Гітлабу.
| tojunit -o report.xml
- власне сама конвертація тестів. Звіт, за замовчанням, буде в %project_root%/report.xml
, ви, звичайно ж, можете змінити це, але не забудьте тоді підправити і artifacts
.
- genhtml coverage/lcov.info --output=coverage
- Конвертація Дартовського звіту покриття в xml звіт. За замовчанням Дарт генерує звіт в coverage/lcov.info
. Команда genhtml
ж зконвертує lcov.info
в xml зрозумілий cobertura`і. Для цього вам буде потрібен застосунок lcov. Я використовую докер імідж instrumentisto/flutter який вже містить цей застосунок.
cobertura convert
- Генерає кінцевий результат. Cobertura згенерує файл під назвою cobertura.xml
в теці вказаній в команді, в нашому випадку це %project_root/coverage/
.
coverage: '/^\s*lines\.+: (\d+\.\d+)% .*/'
- Регулярка яка парсить лог и відтягує звідти загальний відсоток покриття проекту. Ця цифра буде вказана в результатах пайплайну і в графіку покриття на сторінці аналітики репозиторію. (Див. зображення нижче, але не саму цифру. Прошу 🫠)
В artifacts
ми пояснюємо гітлабу де знайти попередньо згенеровані звіти та що кожен з них містить. Зміни імена файлів тут якщо змінював їх в самих командах.
В результаті ви отримуєте результати кожного тесту окремо в пайплайні, з розбивкою по часу який кожен тест виконується. Ну і покриття буде підсвічуватись в РМ діфі і в пайплайні також.