Ga naar inhoud

Headless uitvoering en continue integratie

Een scenario dat u in de interface hebt gebouwd, draait zonder venster vanaf de opdrachtregel. Dat is de weg die uw API-tests in een pipelinestap verandert.

Het scenario “Find pets by status” in de editor: een Input/Param-actie met de naam status, het verzoek “Finds Pets by status” en een Log

Terminal window
restorm \
--open ./projet.restorm \
--run "Find pets by status" \
--headless \
--param status=available
ArgumentRol
--open <chemin>, -oHet project dat wordt geopend. Verplicht met --run
--run <cible>Het scenario dat wordt uitgevoerd. De aanwezigheid ervan zet de opdrachtregelmodus aan
--by <name|id>Hoe --run het scenario aanwijst: op naam (standaard) of op identificator
--headlessGeen venster. Zonder deze optie verschijnt het venster terwijl het logboek over de console loopt
--param nom=valeurEen waarde voor een invoerparameter van het scenario (een Input / Param-vakje). Herhaalbaar
--all-logsNeemt ook de items van de engine op; standaard worden alleen die van de actie Log uitgestuurd
--out <fichier>Schrijft het logboek ook naar een bestand, doorlopend
--clear-settings, -clsZet de voorkeuren terug voordat de applicatie start

Een --param die niet goed is opgebouwd (zonder =) wordt op de foutuitvoer gemeld en overgeslagen. nom= (een lege waarde) wordt geaccepteerd.

De waarden worden omgezet volgens het gedeclareerde type van de parameter — zie Variabelen en gegevens.

CodeBetekenis
0Het scenario is correct afgerond
1Mislukking, afbreking, of een fout van de engine
2Doel niet gevonden, --out-bestand niet toegankelijk, of --run zonder --open
3Recht geweigerd: RESTORM_TOKEN ontbreekt, is ongeldig of ingetrokken, plan ontoereikend, of het controlepunt is onbereikbaar

Het is deze conventie die het resultaat direct bruikbaar maakt voor een CI-runner.

Het logboek wordt naar de standaarduitvoer geschreven, één item per keer, zodra het is geproduceerd, in de vorm van een YAML-reeks:

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

De niveaus krijgen een stip vooraan: ⚪ debug, 🔵 info, 🟠 warn, 🔴 error. De regels worden nooit afgebroken — de uitvoer blijft grep-baar. De fouten gaan naar de standaardfoutuitvoer.

Dit is precies de tekst die de knop “logboek kopiëren” in de interface oplevert: aan beide kanten hetzelfde formaat.

Gebruik de geheimenbron omgevingsvariabele: het geheim wordt geïnjecteerd door de kluis van uw CI, Restorm leest het alleen, en er wordt niets in het project geschreven. Zie Geheimen.

  • Via npm — npm i -g restorm-cli@<versie> en daarna restorm …. De officiële build wordt één keer gedownload, gecontroleerd aan de hand van de gepubliceerde checksum en in de cache bewaard, zodat latere taken op dezelfde machine niets downloaden. Het versienummer van het npm-pakket is de Restorm-versie die het start: het een vastzetten zet het ander vast.
  • Via het systeempakket (.deb, .rpm), zoals in de voorbeelden hieronder — de betere keuze als u uw eigen runner-image bouwt, want dan downloadt de taak helemaal niets.

Op GitHub bundelt Monsieur-Dev/restorm-action alles wat deze pagina beschrijft in één stap: het installeert Restorm via restorm-cli (één checksum-geverifieerde download, gecachet tussen jobs), wikkelt het in xvfb, draait uw scenario headless en vertaalt elke exitcode naar een benoemde jobfout.

- uses: Monsieur-Dev/restorm-action@v1
with:
project: ./api.restorm
scenario: Smoke tests
params: |
status=available
env:
RESTORM_TOKEN: ${{ secrets.RESTORM_TOKEN }}

De tag van de action pint de Restorm-versie (@v1.2.3 draait Restorm 1.2.3), of geef expliciet version: mee. Alle invoer is gedocumenteerd in de README van de repository. Het handmatige recept hieronder blijft er voor wie volledige controle wil.

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' # de versie die u wilt vastzetten
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' # de versie die u wilt vastzetten
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]
  • De acties Toast doen niets; de uitvoering gaat normaal verder.
  • Parameters kunnen niet interactief worden gevraagd: geef ze allemaal mee met --param, of laat ze hun standaardwaarde aannemen.
  • De MCP-server start nooit op een machine zonder beeldscherm, wat de instelling ook is.

Het token RESTORM_TOKEN (met voorvoegsel rstk_) genereert u vanuit het dashboard van uw account. Het hangt aan de organisatie, niet aan een persoon: dat is het token dat u in de kluis van de CI zet. Zie Accounts en aanmelden.