Automatisér dine API-tests i continuous integration
Et scenarie, der er bygget i brugerfladen, kører uændret i din pipeline. Denne vejledning handler om at skalere det op.
Forudsætninger
Section titled “Forudsætninger”- En Pro- eller Enterprise-plan.
- Et organisationstoken (
rstk_…), som skal lægges i din CI’s vault. (Muligheden for selv at oprette dette token fra dashboardet kommer snart.)
Princippet
Section titled “Princippet”RESTORM_TOKEN=$RESTORM_TOKEN restorm \ --open ./api.restorm \ --run "Tests de fumée" \ --headless \ --all-logs \ --out run.log \ --param baseUrl=$BASE_URLExitkode 0 = succes, 1 = scenariet fejlede, 2 = fejl i kaldet, 3 = adgang
nægtet.
Der skal bruges en virtuel skærm
Section titled “Der skal bruges en virtuel skærm”Restorm er en desktopapplikation: selv uden vindue har den brug for en
skærmserver. På en Linux-runner sætter du xvfb-run -a foran.
xvfb-run -a restorm --open ./api.restorm --run "Tests de fumée" --headlessHemmelighederne
Section titled “Hemmelighederne”Skriv aldrig en hemmelighed ind i projektet. Erklær dine følsomme variabler med hemmelighedskilden miljøvariabel; din CI’s vault injicerer dem, og Restorm læser dem. Se Hemmeligheder.
env: API_TOKEN: ${{ secrets.API_TOKEN }}Parametrisér pr. miljø
Section titled “Parametrisér pr. miljø”To fremgangsmåder, der supplerer hinanden:
- En scenarieparameter af typen
environment:--param Env=staging. Det samme scenarie kører mod et hvilket som helst mål. - Simple parametre:
--param baseUrl=…,--param tenant=….
Konverteringen følger parameterens erklærede type, og en umulig konvertering får starten til at fejle med det samme frem for at køre med en forkert værdi. Se Variabler og data.
Udgiv loggen
Section titled “Udgiv loggen”--out run.log skriver loggen løbende. Udgiv den som artefakt, også når jobbet
fejler — det er jo netop dér, den gør nytte.
- uses: actions/upload-artifact@v4 if: always() with: name: journal-restorm path: run.logSkriv scenarier, der er læsbare i CI
Section titled “Skriv scenarier, der er læsbare i CI”Et par vaner, der gør hele forskellen, når et rødt job dukker op klokken tre om natten:
- Tydelige assertionsbeskeder. Feltet
messagei Assert-handlingen er dét, der dukker op i loggen: skriv dér, hvad du forventede. - Log ved de vigtige trin. Uden
--all-logsudsendes kun posterne fra Log-handlingen: det er din røde tråd. - Skemavalidering frem for assertion felt for felt. Kobl
errors-udgangen fra Schema validate til en Log: så får du den præcise liste over overtrædelser. - Throw på de kritiske
else-udgange, så exitkoden afspejler fejlen. - Retry omkring ustabile netværkskald frem for at leve med flaksende tests. Se Kontrolflow.
Ryd op
Section titled “Ryd op”Kæd oprydningen på hovedscenariets done-port: done venter på, at hele
delgrafen er færdig. Se
Porte og forbindelser.
Faldgruber, du bør kende
Section titled “Faldgruber, du bør kende”| Faldgrube | Løsning |
|---|---|
| Jobbet venter på en indtastning | Angiv alle parametre med --param; i headless kan der ikke spørges om noget |
| En Toast-handling vises ikke | Det er normalt: den har ingen virkning i headless. Brug Log |
| MCP-serveren dukker ikke op | Det er med vilje: uden en rigtig skærm starter den aldrig |
Exitkode 3 | Tokenet eller planen — beskeden fortæller, hvilket af de fire tilfælde det er |
| Projektfilen er flyttet | --open accepterer en sti relativ til repositoriet: hold den relativ |
Fuldstændige eksempler
Section titled “Fuldstændige eksempler”Pipelinene til GitHub Actions og GitLab CI står i Headless-kørsel og CI.