Gå til indhold

Headless-kørsel og continuous integration

Et scenarie, der er bygget i brugerfladen, kan køres uden vindue fra kommandolinjen. Det er vejen, der forvandler dine API-tests til et trin i en pipeline.

Scenariet »Find pets by status« i editoren: en Input/Param-handling ved navn status, anmodningen »Finds Pets by status« og en Log

Terminal window
restorm \
--open ./projet.restorm \
--run "Find pets by status" \
--headless \
--param status=available
ArgumentRolle
--open <path>, -oProjektet, der skal åbnes. Obligatorisk sammen med --run
--run <target>Scenariet, der skal køres. Dets tilstedeværelse aktiverer kommandolinjetilstanden
--by <name|id>Hvordan --run udpeger scenariet: ved navn (standard) eller ved id
--headlessIntet vindue. Uden det vises vinduet, mens loggen ruller i konsollen
--param name=valueEn værdi til en inputparameter i scenariet (en Input / Param-boks). Kan gentages
--all-logsInkluderer motorens poster; som standard udsendes kun dem fra Log-handlingen
--out <file>Skriver også loggen til en fil, løbende
--clear-settings, -clsNulstiller præferencerne inden start

En forkert formet --param (uden =) meldes på fejloutputtet og ignoreres. name= (tom værdi) accepteres.

Værdierne konverteres efter parameterens erklærede type — se Variabler og data.

KodeBetydning
0Scenariet blev afsluttet korrekt
1Fejl, annullering eller fejl i motoren
2Målet blev ikke fundet, --out-filen kunne ikke tilgås, eller --run uden --open
3Adgang nægtet: RESTORM_TOKEN mangler, er ugyldig eller tilbagekaldt, planen er utilstrækkelig, eller kontrolpunktet kunne ikke nås

Det er denne konvention, der gør resultatet direkte anvendeligt for en CI-runner.

Loggen skrives til standardoutputtet, én post ad gangen, så snart den er produceret, som en YAML-sekvens:

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

Niveauerne indledes med en prik: ⚪ debug, 🔵 info, 🟠 warn, 🔴 error. Linjerne brydes aldrig — outputtet kan stadig grep’es. Fejl går til standardfejloutputtet.

Det er nøjagtig den tekst, som brugerfladens knap »kopiér loggen« producerer: samme format på begge sider.

Brug hemmelighedskilden miljøvariabel: hemmeligheden injiceres af din CI’s vault, Restorm læser den blot, og intet skrives ind i projektet. Se Hemmeligheder.

  • Fra npm — npm i -g restorm-cli@<version> og derefter restorm …. Den officielle bygning hentes én gang, kontrolleres mod sin offentliggjorte tjeksum og gemmes i cachen, så senere job på samme maskine ikke henter noget. Versionsnummeret på npm-pakken er den Restorm-version, den starter: fastlåser du det ene, fastlåser du det andet.
  • Fra systempakken (.deb, .rpm), som i eksemplerne nedenfor — det bedste valg, hvis du bygger dit eget runner-image, for så henter jobbet slet ingenting.

På GitHub samler Monsieur-Dev/restorm-action alt, hvad denne side beskriver, i ét trin: den installerer Restorm via restorm-cli (én tjeksumverificeret download, cachet mellem jobs), pakker det ind i xvfb, kører dit scenarie headless og oversætter hver exitkode til en navngiven jobfejl.

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

Actionens tag fastlåser Restorm-versionen (@v1.2.3 kører Restorm 1.2.3), eller angiv et eksplicit version:-input. Alle inputs er dokumenteret i repositoriets README. Den manuelle opskrift nedenfor findes stadig for dem, der vil have fuld kontrol.

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 version que vous voulez épingler
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 version que vous voulez épingler
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]
  • Toast-handlinger gør ingenting; kørslen fortsætter som normalt.
  • Parametre kan ikke udbedes interaktivt: angiv dem alle med --param, eller lad dem antage deres standardværdi.
  • MCP-serveren starter aldrig på en maskine uden skærm, uanset indstillingen.

Tokenet RESTORM_TOKEN (med præfikset rstk_) genereres fra din kontos dashboard. Det er knyttet til organisationen, ikke til en person: det er det token, man lægger i CI’ens vault. Se Konti og login.