İçeriğe geç

Headless çalıştırma ve sürekli entegrasyon

Arayüzde oluşturulmuş bir senaryo, komut satırından pencere olmadan çalışır. API testlerinizi bir pipeline adımına dönüştüren yol budur.

Düzenleyicideki “Find pets by status” senaryosu: status adlı bir Input/Param eylemi, “Finds Pets by status” isteği ve bir Log

Terminal window
restorm \
--open ./projet.restorm \
--run "Find pets by status" \
--headless \
--param status=available
ArgümanRol
--open <path>, -oAçılacak proje. --run ile birlikte zorunludur
--run <target>Çalıştırılacak senaryo. Varlığı komut satırı kipini etkinleştirir
--by <name|id>--run senaryoyu nasıl belirtir: ada göre (varsayılan) ya da tanımlayıcıya göre
--headlessHiç pencere yok. Bu argüman olmadan, günlük konsolda akarken pencere de görünür
--param name=valueBir senaryo giriş parametresi (bir Input / Param kutusu) için değer. Yinelenebilir
--all-logsMotorun girdilerini de içerir; varsayılan olarak yalnızca Log eyleminin girdileri yayılır
--out <file>Günlüğü akış hâlinde bir dosyaya da yazar
--clear-settings, -clsBaşlatmadan önce tercihleri sıfırlar

Hatalı biçimlendirilmiş bir --param (= içermeyen) hata çıktısında bildirilir ve yok sayılır. name= (boş değer) kabul edilir.

Değerler, parametrenin bildirilen türüne göre dönüştürülür — bkz. Senaryoda değişkenler ve veriler.

KodAnlamı
0Senaryo düzgün biçimde tamamlandı
1Başarısızlık, iptal ya da motor hatası
2Hedef bulunamadı, --out dosyasına erişilemiyor ya da --run verilmiş ama --open yok
3Hak reddedildi: RESTORM_TOKEN yok, geçersiz ya da iptal edilmiş, plan yetersiz, veya doğrulama noktasına ulaşılamıyor

Sonucu bir CI runner’ı tarafından doğrudan kullanılabilir kılan şey bu uzlaşımdır.

Günlük, üretildiği anda birer girdi hâlinde standart çıktıya, bir YAML dizisi biçiminde yazılır:

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

Düzeylerin önüne renkli bir nokta konur: ⚪ debug, 🔵 info, 🟠 warn, 🔴 error. Satırlar asla bölünmez — çıktı grep-lenebilir kalır. Hatalar standart hata çıktısına gider.

Bu, arayüzdeki “günlüğü kopyala” düğmesinin ürettiği metnin tam olarak aynısıdır: iki tarafta da aynı biçim.

Ortam değişkeni gizli değer kaynağını kullanın: gizli değer CI’nızın kasası tarafından enjekte edilir, Restorm onu yalnızca okur ve projeye hiçbir şey yazılmaz. Bkz. Gizli değerler.

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' # sabitlemek istediğiniz sürüm
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' # sabitlemek istediğiniz sürüm
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 eylemleri hiçbir şey yapmaz; çalıştırma normal biçimde sürer.
  • Parametreler etkileşimli olarak sorulamaz: hepsini --param ile verin ya da varsayılan değerlerini almalarına izin verin.
  • MCP sunucusu, ayar ne olursa olsun, ekranı olmayan bir makinede asla başlamaz.

RESTORM_TOKEN token’ı (rstk_ ön ekli) hesabınızın panosundan üretilir. Bir kişiye değil, kuruluşa bağlıdır: CI’nın kasasına konacak token budur. Bkz. Hesaplar ve oturum açma.