Salta ai contenuti

Esecuzione headless e integrazione continua

Uno scenario costruito nell’interfaccia si esegue senza finestra dalla riga di comando. È la strada che trasforma i test di API in una fase di pipeline.

Lo scenario «Find pets by status» nell’editor: un’azione Input/Param denominata status, la richiesta «Finds Pets by status» e un Log

Terminal window
restorm \
--open ./projet.restorm \
--run "Find pets by status" \
--headless \
--param status=available
ArgomentoRuolo
--open <path>, -oIl progetto da aprire. Obbligatorio con --run
--run <target>Lo scenario da eseguire. La sua presenza attiva la modalità riga di comando
--by <name|id>Come --run designa lo scenario: per nome (predefinito) o per identificatore
--headlessNessuna finestra. Senza questo argomento la finestra appare mentre il log scorre sulla console
--param name=valueUn valore per un parametro di input dello scenario (un riquadro Input / Param). Ripetibile
--all-logsInclude le voci del motore; per impostazione predefinita vengono emesse solo quelle dell’azione Log
--out <file>Scrive il log anche in un file, man mano
--clear-settings, -clsReimposta le preferenze prima del lancio

Un --param mal formato (senza =) viene segnalato sull’output di errore e ignorato. nom= (valore vuoto) è accettato.

I valori vengono convertiti in base al tipo dichiarato del parametro — si veda Variabili e dati.

CodiceSignificato
0Lo scenario si è concluso correttamente
1Fallimento, annullamento oppure errore del motore
2Destinazione non trovata, file --out inaccessibile, oppure --run senza --open
3Diritto negato: RESTORM_TOKEN assente, non valido o revocato, piano insufficiente, oppure punto di verifica non raggiungibile

È questa convenzione che rende il risultato direttamente utilizzabile da un runner di CI.

Il log viene scritto sullo standard output, una voce alla volta, appena viene prodotta, sotto forma di sequenza YAML:

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

I livelli sono preceduti da una pastiglia: ⚪ debug, 🔵 info, 🟠 warn, 🔴 error. Le righe non vengono mai troncate — l’output resta grep-abile. Gli errori vanno sullo standard error.

È esattamente il testo che produce il pulsante «copia il log» dell’interfaccia: lo stesso formato da entrambe le parti.

Conviene usare la sorgente di segreti variabile d’ambiente: il segreto viene iniettato dal vault della CI, Restorm si limita a leggerlo e nulla viene scritto nel progetto. Si veda Segreti.

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' # la versione che si desidera fissare
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' # la versione che si desidera fissare
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]
  • Le azioni Toast non fanno nulla; l’esecuzione prosegue normalmente.
  • I parametri non possono essere richiesti in modo interattivo: occorre fornirli tutti con --param, oppure lasciare che assumano il valore predefinito.
  • Il server MCP non si avvia mai su una macchina senza display, indipendentemente dall’impostazione.

Il token RESTORM_TOKEN (con prefisso rstk_) si genera dal pannello di controllo del proprio account. È collegato all’organizzazione, non a una persona: è il token da mettere nel vault della CI. Si veda Account e accesso.