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.

restorm \ --open ./projet.restorm \ --run "Find pets by status" \ --headless \ --param status=availableArgumentele
Section titled “Argumentele”| Argument | Rol |
|---|---|
--open <path>, -o | Proiectul 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 |
--headless | Nicio fereastră. Fără el, fereastra se afișează în timp ce jurnalul defilează în consolă |
--param name=value | O valoare pentru un parametru de intrare al scenariului (o cutie Input / Param). Se poate repeta |
--all-logs | Include 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, -cls | Resetează 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.
Codurile de ieșire
Section titled “Codurile de ieșire”| Cod | Semnificație |
|---|---|
0 | Scenariul s-a încheiat corect |
1 | Eșec, anulare sau eroare a motorului |
2 | Țintă negăsită, fișier --out inaccesibil sau --run fără --open |
3 | Drept 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.
Ieșirea
Section titled “Ieșirea”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.
Secretele în CI
Section titled “Secretele în CI”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.
Instalarea Restorm pe runner
Section titled “Instalarea Restorm pe runner”- Din npm —
npm i -g restorm-cli@<versiune>, apoirestorm …. Versiunea oficială este descărcată o singură dată, verificată cu suma de control publicată și păstrată în cache, astfel încât sarcinile următoare de pe aceeași mașină nu descarcă nimic. Numărul de versiune al pachetului npm este versiunea de Restorm pe care o pornește: fixând-o pe una, o fixați și pe cealaltă. - Din pachetul de sistem (
.deb,.rpm), ca în exemplele de mai jos — alegerea mai bună dacă vă construiți propria imagine de runner, fiindcă atunci sarcina nu mai descarcă nimic.
Acțiunea GitHub oficială
Section titled “Acțiunea GitHub oficială”Pe GitHub, Monsieur-Dev/restorm-action reunește tot ce descrie această pagină într-un singur pas: instalează Restorm prin restorm-cli (o descărcare verificată prin sumă de control, păstrată în cache între sarcini), îl împachetează în xvfb, rulează scenariul fără interfață și traduce fiecare cod de ieșire într-o eroare de sarcină numită.
- uses: Monsieur-Dev/restorm-action@v1 with: project: ./api.restorm scenario: Smoke tests params: | status=available env: RESTORM_TOKEN: ${{ secrets.RESTORM_TOKEN }}Eticheta acțiunii fixează versiunea Restorm (@v1.2.3 rulează Restorm 1.2.3), sau transmiteți un input version: explicit. Toate intrările sunt documentate în README-ul depozitului. Rețeta manuală de mai jos rămâne pentru cine vrea control total.
GitHub Actions
Section titled “GitHub Actions”name: Tests d'APIon: [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.logGitLab CI
Section titled “GitLab CI”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]Ce se schimbă în mod headless
Section titled “Ce se schimbă în mod headless”- Acțiunile Toast nu fac nimic; execuția continuă normal.
- Parametrii nu pot fi ceruți interactiv: furnizați-i pe toți cu
--paramsau 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.
Obținerea unui token
Section titled “Obținerea unui token”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.