İçeriğe geç

API testlerini sürekli entegrasyonda otomatikleştirme

Arayüzde kurulan bir senaryo, hattınızda olduğu gibi çalışır. Bu rehber ölçeğe geçişi ele alır.

  • Bir Pro ya da Enterprise planı.
  • CI’nızın gizli değer kasasına konacak bir kuruluş token’ı (rstk_…). (Bu token’ın kontrol panelinden self servis olarak oluşturulması yakında geliyor.)
Terminal window
RESTORM_TOKEN=$RESTORM_TOKEN restorm \
--open ./api.restorm \
--run "Tests de fumée" \
--headless \
--all-logs \
--out run.log \
--param baseUrl=$BASE_URL

Çıkış kodu 0 = başarı, 1 = senaryonun başarısız olması, 2 = çağrı hatası, 3 = yetki reddi.

Restorm bir masaüstü uygulamasıdır: penceresi olmasa bile bir görüntü sunucusuna ihtiyaç duyar. Bir Linux runner’ında komutun önüne xvfb-run -a ekleyin.

Terminal window
xvfb-run -a restorm --open ./api.restorm --run "Tests de fumée" --headless

Bir gizli değeri asla projenin içine yazmayın. Hassas değişkenlerinizi ortam değişkeni gizli değer kaynağıyla bildirin; CI’nızın kasası bunları enjekte eder, Restorm okur. Bkz. Gizli değerler.

env:
API_TOKEN: ${{ secrets.API_TOKEN }}

Birbirini tamamlayan iki yaklaşım vardır:

  1. environment türünde bir senaryo parametresi: --param Env=staging. Aynı senaryo herhangi bir hedefe karşı çalışır.
  2. Basit parametreler: --param baseUrl=…, --param tenant=….

Dönüştürme, parametrenin bildirilen türünü izler; olanaksız bir dönüştürme, yanlış bir değerle çalıştırmak yerine başlatmayı anında başarısız kılar. Bkz. Senaryoda değişkenler ve veriler.

--out run.log günlüğü akış hâlinde yazar. Bunu, iş başarısız olduğunda da dâhil olmak üzere bir artefakt olarak yayımlayın — asıl işe yaradığı yer tam orasıdır.

- uses: actions/upload-artifact@v4
if: always()
with:
name: journal-restorm
path: run.log

Sabahın üçünde kırmızı bir iş göründüğünde her şeyi değiştiren birkaç alışkanlık:

  • Açık doğrulama mesajları. Assert eyleminin message alanı günlükte görünecek olan şeydir: oraya neyin beklendiğini yazın.
  • Kilit adımlarda günlük. --all-logs olmadan yalnızca Log eyleminin girdileri yayılır: anlatı ipiniz budur.
  • Alan alan doğrulama yerine şema doğrulaması. Şema doğrulama eyleminin errors çıkışını bir Log’a bağlayın: ihlallerin tam listesini elde edersiniz.
  • Çıkış kodunun başarısızlığı yansıtması için kritik else çıkışlarına Throw.
  • Aralıklı başarısız olan testleri kabullenmek yerine kararsız ağ çağrılarının çevresine Retry. Bkz. Kontrol.

Temizliği ana senaryonun done portuna zincirleyin: done, alt grafiğin tamamının bitmesini bekler. Bkz. Portlar ve bağlantılar.

TuzakÇözüm
İş bir girdi bekliyorTüm parametreleri --param ile verin; headless modda hiçbir şey sorulamaz
Bir Toast eylemi görünmüyorBu normaldir: headless modda etkisizdir. Log kullanın
MCP sunucusu görünmüyorBu bilinçlidir: gerçek bir görüntü olmadan hiç başlamaz
3 çıkışıToken ya da plan — mesaj dört durumdan hangisi olduğunu belirtir
Proje dosyası yer değiştirdi--open depoya göreli bir yol kabul eder: yolu göreli tutun

GitHub Actions ve GitLab CI hatları Headless çalıştırma ve sürekli entegrasyon sayfasındadır.