Sari la conținut

Rulare headless și integrare continuă

Un scenariu construit în interfață se execută fără fereastră din linia de comandă. Este calea care vă transformă testele de API într-o etapă de pipeline.

Scenariul „Find pets by status” în editor: o acțiune Input/Param numită status, cererea „Finds Pets by status” și un Log

Terminal window
restorm \
--open ./projet.restorm \
--run "Find pets by status" \
--headless \
--param status=available
ArgumentRol
--open <path>, -oProiectul de deschis. Obligatoriu împreună cu --run
--run <target>Scenariul de rulat. Prezența sa activează modul linie de comandă
--by <name|id>Cum desemnează --run scenariul: după nume (implicit) sau după identificator
--headlessNicio fereastră. Fără el, fereastra se afișează în timp ce jurnalul defilează în consolă
--param name=valueO valoare pentru un parametru de intrare al scenariului (o cutie Input / Param). Se poate repeta
--all-logsInclude intrările motorului; implicit sunt emise numai cele ale acțiunii Log
--out <file>Scrie jurnalul și într-un fișier, pe măsură ce se produce
--clear-settings, -clsResetează preferințele înainte de lansare

Un --param prost format (fără =) este semnalat la ieșirea de eroare și ignorat. name= (valoare vidă) este acceptat.

Valorile sunt convertite în funcție de tipul declarat al parametrului — vedeți Variabile și date.

CodSemnificație
0Scenariul s-a încheiat corect
1Eșec, anulare sau eroare a motorului
2Țintă negăsită, fișier --out inaccesibil sau --run fără --open
3Drept refuzat: RESTORM_TOKEN absent, invalid sau revocat, plan insuficient ori punct de verificare inaccesibil

Această convenție este cea care face rezultatul direct utilizabil de un runner de CI.

Jurnalul este scris la ieșirea standard, o intrare pe rând, de îndată ce este produsă, sub forma unei secvențe YAML:

- message: "🔵 [2026-07-29 10:30:00.123] Commande créée"
data: { id: 4271 }

Nivelurile sunt prefixate cu o pastilă: ⚪ debug, 🔵 info, 🟠 warn, 🔴 error. Liniile nu sunt niciodată tăiate — ieșirea rămâne grep-abilă. Erorile pleacă la ieșirea de eroare standard.

Este exact textul pe care îl produce butonul „copiază jurnalul” din interfață: același format de ambele părți.

Folosiți sursa de secret variabilă de mediu: secretul este injectat de seiful sistemului dumneavoastră de CI, Restorm nu face decât să îl citească și nimic nu este scris în proiect. Vedeți Secrete.

name: Tests d'API
on: [push]
jobs:
api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Installer Restorm
env:
RESTORM_VERSION: '1.4.2' # versiunea pe care doriți să o fixați
run: |
curl -sSL -o restorm.deb \
"https://dl.restorm.app/restorm_${RESTORM_VERSION}_amd64.deb"
sudo apt-get install -y ./restorm.deb
- name: Exécuter les tests de fumée
env:
RESTORM_TOKEN: ${{ secrets.RESTORM_TOKEN }}
API_TOKEN: ${{ secrets.API_TOKEN }}
run: |
xvfb-run -a restorm \
--open ./api.restorm \
--run "Find pets by status" \
--headless \
--all-logs \
--out run.log \
--param status=available
- name: Publier le journal
if: always()
uses: actions/upload-artifact@v4
with:
name: journal-restorm
path: run.log
tests-api:
image: ubuntu:24.04
variables:
RESTORM_TOKEN: $RESTORM_TOKEN
RESTORM_VERSION: '1.4.2' # versiunea pe care doriți să o fixați
before_script:
- apt-get update && apt-get install -y curl xvfb
- curl -sSL -o restorm.deb "https://dl.restorm.app/restorm_${RESTORM_VERSION}_amd64.deb"
- apt-get install -y ./restorm.deb
script:
- >
xvfb-run -a restorm
--open ./api.restorm
--run "Find pets by status"
--headless --all-logs --out run.log
--param status=$PET_STATUS
artifacts:
when: always
paths: [run.log]
  • Acțiunile Toast nu fac nimic; execuția continuă normal.
  • Parametrii nu pot fi ceruți interactiv: furnizați-i pe toți cu --param sau lăsați-i să își ia valoarea implicită.
  • Serverul MCP nu pornește niciodată pe o mașină fără afișaj, oricare ar fi setarea.

Tokenul RESTORM_TOKEN (prefixat cu rstk_) se generează din tabloul de bord al contului dumneavoastră. Este atașat organizației, nu unei persoane: este tokenul care se pune în seiful sistemului de CI. Vedeți Conturi și conectare.