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.

  • A partir do npm — npm i -g restorm-cli@<versão> e depois restorm …. A compilação oficial é transferida uma única vez, verificada pela soma de verificação publicada e guardada em cache, pelo que as tarefas seguintes na mesma máquina não transferem nada. O número de versão do pacote npm é a versão do Restorm que ele executa: fixar um fixa o outro.
  • A partir do pacote do sistema (.deb, .rpm), como nos exemplos abaixo — a melhor opção se construir a sua própria imagem de runner, já que a tarefa deixa de transferir seja o que for.

No GitHub, a Monsieur-Dev/restorm-action reúne tudo o que esta página descreve num único passo: instala o Restorm através do restorm-cli (uma transferência verificada por soma de verificação e guardada em cache entre tarefas), envolve-o em xvfb, executa o seu cenário sem interface e traduz cada código de saída num erro de tarefa com nome.

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

A tag da action fixa a versão do Restorm (@v1.2.3 executa o Restorm 1.2.3), ou passe uma entrada version: explícita. Todas as entradas estão documentadas no README do repositório. A receita manual abaixo continua disponível para quem quiser controlo total.

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.