Pular para o conteúdo

Execução headless e integração contínua

Um cenário construído na interface executa-se sem janela a partir da linha de comandos. É o caminho que transforma os seus testes de API numa etapa de pipeline.

O cenário “Find pets by status” no editor: uma ação Input/Param chamada status, o pedido “Finds Pets by status” e um Log

Terminal window
restorm \
--open ./projet.restorm \
--run "Find pets by status" \
--headless \
--param status=available
ArgumentoFunção
--open <path>, -oO projeto a abrir. Obrigatório com --run
--run <target>O cenário a executar. A sua presença ativa o modo linha de comandos
--by <name|id>Como --run designa o cenário: pelo nome (predefinição) ou pelo identificador
--headlessNenhuma janela. Sem ele, a janela aparece enquanto o registo corre na consola
--param name=valueUm valor para um parâmetro de entrada do cenário (uma caixa Input / Param). Repetível
--all-logsInclui as entradas do motor; por predefinição só são emitidas as da ação Log
--out <file>Escreve também o registo num ficheiro, em tempo real
--clear-settings, -clsReinicia as preferências antes do lançamento

Um --param mal formado (sem =) é sinalizado na saída de erro e ignorado. name= (valor vazio) é aceite.

Os valores são convertidos segundo o tipo declarado do parâmetro — ver Variáveis e dados.

CódigoSignificado
0O cenário terminou corretamente
1Falha, cancelamento ou erro do motor
2Alvo não encontrado, ficheiro --out inacessível ou --run sem --open
3Direito recusado: RESTORM_TOKEN ausente, inválido ou revogado, plano insuficiente ou ponto de verificação inalcançável

É esta convenção que torna o resultado diretamente utilizável por um runner de CI.

O registo é escrito na saída standard, uma entrada de cada vez, assim que é produzida, sob a forma de uma sequência YAML:

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

Os níveis são prefixados por um círculo colorido: ⚪ debug, 🔵 info, 🟠 warn, 🔴 error. As linhas nunca são cortadas — a saída continua a poder ser filtrada com grep. Os erros saem pela saída de erro standard.

É exatamente o texto que o botão “copiar o registo” da interface produz: o mesmo formato de ambos os lados.

Use a fonte de segredo variável de ambiente: o segredo é injetado pelo cofre da sua CI, o Restorm limita-se a lê-lo e nada é escrito no projeto. Ver Segredos.

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' # a versão que quiser fixar
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' # a versão que quiser fixar
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]
  • As ações Toast não fazem nada; a execução prossegue normalmente.
  • Os parâmetros não podem ser pedidos interativamente: forneça-os todos com --param ou deixe-os assumir o seu valor predefinido.
  • O servidor MCP nunca arranca numa máquina sem ecrã, qualquer que seja a definição.

O token RESTORM_TOKEN (prefixado rstk_) gera-se a partir do painel de controlo da sua conta. Está associado à organização, não a uma pessoa: é o token que se coloca no cofre da CI. Ver Contas e ligação.