Автоматизація тестів API у безперервній інтеграції
Сценарій, побудований в інтерфейсі, працює у вашому конвеєрі як є. Цей посібник охоплює перехід до промислового використання.
Передумови
Section titled “Передумови”- План Pro або Enterprise.
- Токен організації (
rstk_…), який слід покласти до сховища секретів вашого CI. (Самостійне створення цього токена з панелі керування з’явиться найближчим часом.)
Принцип
Section titled “Принцип”RESTORM_TOKEN=$RESTORM_TOKEN restorm \ --open ./api.restorm \ --run "Tests de fumée" \ --headless \ --all-logs \ --out run.log \ --param baseUrl=$BASE_URLКод виходу 0 = успіх, 1 = невдача сценарію, 2 = помилка виклику, 3 =
відмова в праві.
Потрібен віртуальний дисплей
Section titled “Потрібен віртуальний дисплей”Restorm — це настільний застосунок: навіть без вікна йому потрібен сервер
дисплея. На агенті Linux додайте префікс xvfb-run -a.
xvfb-run -a restorm --open ./api.restorm --run "Tests de fumée" --headlessСекрети
Section titled “Секрети”Ніколи не записуйте секрет до проєкту. Оголошуйте чутливі змінні з джерелом секрету змінна середовища; сховище вашого CI їх підставляє, а Restorm читає. Див. Секрети.
env: API_TOKEN: ${{ secrets.API_TOKEN }}Параметризація за середовищами
Section titled “Параметризація за середовищами”Два взаємодоповнювальні підходи:
- Параметр сценарію типу
environment:--param Env=staging. Той самий сценарій працює проти будь-якої цілі. - Прості параметри:
--param baseUrl=…,--param tenant=….
Перетворення відбувається за оголошеним типом параметра, а неможливе перетворення одразу зриває запуск, замість того щоб виконуватися з хибним значенням. Див. Змінні та дані.
Публікація журналу
Section titled “Публікація журналу”--out run.log пише журнал одразу під час роботи. Публікуйте його як артефакт,
зокрема й тоді, коли завдання зазнає невдачі, — саме тоді він і потрібен.
- uses: actions/upload-artifact@v4 if: always() with: name: journal-restorm path: run.logЯк писати сценарії, читабельні в CI
Section titled “Як писати сценарії, читабельні в CI”Кілька звичок, які все змінюють, коли червоне завдання з’являється о третій ночі:
- Явні повідомлення перевірок. Поле
messageдії Assert — це те, що з’явиться в журналі: напишіть у ньому, чого ви очікували. - Журнал на ключових кроках. Без
--all-logsвидаються лише записи дії Log: це ваша розповідна нитка. - Перевірка схеми замість перевірок поле за полем. Під’єднайте вихід
errorsдії Перевірка схеми до Log: ви отримаєте точний перелік порушень. - Throw на критичних виходах
else, щоб код виходу відображав невдачу. - Retry навколо нестабільних мережевих викликів, замість того щоб миритися з переривчастими тестами. Див. Керування.
Прибирання
Section titled “Прибирання”Під’єднуйте прибирання до порту done головного сценарію: done чекає, поки
завершиться весь підграф. Див.
Порти та зв’язки.
Пастки, про які варто знати
Section titled “Пастки, про які варто знати”| Пастка | Рішення |
|---|---|
| Завдання чекає на введення | Передайте всі параметри через --param; у безекранному режимі нічого запитати неможливо |
| Дія Toast не показується | Це нормально: у безекранному режимі вона не діє. Використовуйте Log |
| Сервер MCP не з’являється | Так і задумано: без справжнього дисплея він ніколи не запускається |
Вихід 3 | Токен або план — повідомлення уточнює, який саме з чотирьох випадків |
| Файл проєкту перемістився | --open приймає шлях, відносний до репозиторію: тримайте його відносним |
Повні приклади
Section titled “Повні приклади”Конвеєри GitHub Actions і GitLab CI наведено на сторінці Безекранне виконання та CI.