Перейти до вмісту

Автоматизація тестів API у безперервній інтеграції

Сценарій, побудований в інтерфейсі, працює у вашому конвеєрі як є. Цей посібник охоплює перехід до промислового використання.

  • План Pro або Enterprise.
  • Токен організації (rstk_…), який слід покласти до сховища секретів вашого CI. (Самостійне створення цього токена з панелі керування з’явиться найближчим часом.)
Terminal window
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.

Terminal window
xvfb-run -a restorm --open ./api.restorm --run "Tests de fumée" --headless

Ніколи не записуйте секрет до проєкту. Оголошуйте чутливі змінні з джерелом секрету змінна середовища; сховище вашого CI їх підставляє, а Restorm читає. Див. Секрети.

env:
API_TOKEN: ${{ secrets.API_TOKEN }}

Параметризація за середовищами

Section titled “Параметризація за середовищами”

Два взаємодоповнювальні підходи:

  1. Параметр сценарію типу environment: --param Env=staging. Той самий сценарій працює проти будь-якої цілі.
  2. Прості параметри: --param baseUrl=…, --param tenant=….

Перетворення відбувається за оголошеним типом параметра, а неможливе перетворення одразу зриває запуск, замість того щоб виконуватися з хибним значенням. Див. Змінні та дані.

--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 навколо нестабільних мережевих викликів, замість того щоб миритися з переривчастими тестами. Див. Керування.

Під’єднуйте прибирання до порту done головного сценарію: done чекає, поки завершиться весь підграф. Див. Порти та зв’язки.

Пастки, про які варто знати

Section titled “Пастки, про які варто знати”
ПасткаРішення
Завдання чекає на введенняПередайте всі параметри через --param; у безекранному режимі нічого запитати неможливо
Дія Toast не показуєтьсяЦе нормально: у безекранному режимі вона не діє. Використовуйте Log
Сервер MCP не з’являєтьсяТак і задумано: без справжнього дисплея він ніколи не запускається
Вихід 3Токен або план — повідомлення уточнює, який саме з чотирьох випадків
Файл проєкту перемістився--open приймає шлях, відносний до репозиторію: тримайте його відносним

Конвеєри GitHub Actions і GitLab CI наведено на сторінці Безекранне виконання та CI.