Outry в CI
Те же .outry- (и .http-) файлы, что вы гоняете в приложении, могут запускаться как API-тесты на каждый
пуш. Пройдёт ли джоба, решают проверки expect.
GitHub Actions
Заголовок раздела «GitHub Actions»name: API tests
on: [push, pull_request]
jobs: api: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
# Здесь поднимите тестируемый сервис (docker compose, бинарь, …)
- name: Install outry run: | curl -fsSL https://raw.githubusercontent.com/1rowvy/outry/master/install.sh | sh echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Check request files run: outry check api --format github
- name: Run API tests run: outry run api --env ci --no-keyring --fail-fast env: OUTRY_TOKEN: ${{ secrets.API_TOKEN }}- Для воспроизводимых сборок зафиксируйте версию:
OUTRY_VERSION=v0.2.0передsh. - Секреты приходят из переменных
OUTRY_<ИМЯ>— см. Секреты. --no-keyringотключает обращение к хранилищу паролей — на раннерах его всё равно нет.- Напоминание о новой версии отключается само, когда задана переменная
CI.
Вывод для машин
Заголовок раздела «Вывод для машин»--json печатает по JSON-объекту на запрос (JSON Lines) вместо отчёта для человека:
outry run api --json > results.jsonl{"file":"api/users/get.outry","name":"GetUser","passed":true,"outcome":{"kind":"request","request":{…},"response":{"status":200,…},"asserts":[…],"calls":[…],"saved":{}}}{"file":"api/users/bad.outry","name":"GetUser","passed":false,"error":"undefined variable(s): id"}У сценария в outcome — "kind":"flow" с полями checks, calls, saved и error.
Проверка без отправки
Заголовок раздела «Проверка без отправки»outry check проверяет весь проект без отправки запросов — один быстрый шаг линтинга: синтаксис, имена
вызываемых запросов, их аргументы, формы и циклы вызовов, каждое окружение (запросы, которым only его
запрещает, переменные, которых в нём нет), формат и — если выше проекта есть go.mod — роуты в Go-коде
(как outry import go --check):
outry check # проект, найденный от текущего каталогаoutry check api --env ci # одно окружение, секреты из хранилища паролей / OUTRY_*outry check --format github # аннотации прямо в диффе PRapi/orders/create.outry:1:1: error: not formatted (`outry fmt`)api/orders/create.outry:7:22: error: variable `api_key` is not defined in staging, prodapi/orders/create.outry:9:13: error: `Seed` is limited to dev and cannot be called in prodmain.go:42:1: error: route DELETE /orders/{id} has no request (`outry import go` creates api/orders/delete.outry)12 files, 3 environments, 18 Go routes: 4 errors, 0 warningsПодробности и флаги: outry check.