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.

  • Din npm — npm i -g restorm-cli@<versiune>, apoi restorm …. 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.

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.

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.