Bỏ qua để đến nội dung

Chạy headless và tích hợp liên tục

Một kịch bản dựng trong giao diện có thể chạy không cần cửa sổ từ dòng lệnh. Đây chính là con đường biến các bài kiểm thử API của bạn thành một bước trong pipeline.

Kịch bản “Find pets by status” trong trình biên tập: một hành động Input/Param tên là status, yêu cầu “Finds Pets by status” và một Log

Terminal window
restorm \
--open ./projet.restorm \
--run "Find pets by status" \
--headless \
--param status=available
Đối sốVai trò
--open <chemin>, -oDự án cần mở. Bắt buộc khi dùng --run
--run <cible>Kịch bản cần chạy. Sự có mặt của nó kích hoạt chế độ dòng lệnh
--by <name|id>Cách --run chỉ định kịch bản: theo tên (mặc định) hoặc theo định danh
--headlessKhông có cửa sổ nào. Nếu không có nó, cửa sổ sẽ hiện ra trong lúc nhật ký cuộn trên bảng điều khiển
--param nom=valeurMột giá trị cho một tham số đầu vào của kịch bản (một chiếc hộp Input / Param). Lặp lại được
--all-logsBao gồm cả các mục của cỗ máy; mặc định chỉ những mục của hành động Log mới được phát ra
--out <fichier>Ghi nhật ký thêm vào một tệp, theo thời gian thực
--clear-settings, -clsĐặt lại các tùy chọn trước khi khởi chạy

Một --param sai định dạng (thiếu =) sẽ được báo trên đầu ra lỗi và bị bỏ qua. nom= (giá trị rỗng) thì được chấp nhận.

Các giá trị được chuyển đổi theo kiểu đã khai báo của tham số — xem Biến và dữ liệu.

Ý nghĩa
0Kịch bản đã kết thúc đúng đắn
1Thất bại, bị hủy, hoặc lỗi của cỗ máy
2Không tìm thấy đích, tệp --out không truy cập được, hoặc --run mà không có --open
3Quyền bị từ chối: RESTORM_TOKEN bị thiếu, không hợp lệ hoặc bị thu hồi, gói không đủ, hoặc điểm kiểm tra không liên lạc được

Chính quy ước này làm cho kết quả dùng được ngay bởi một runner CI.

Nhật ký được ghi ra đầu ra chuẩn, mỗi lần một mục, ngay khi mục đó được tạo ra, dưới dạng một chuỗi YAML:

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

Các mức được đặt trước một chấm tròn: ⚪ debug, 🔵 info, 🟠 warn, 🔴 error. Các dòng không bao giờ bị cắt — đầu ra vẫn grep được. Các lỗi đi ra đầu ra lỗi chuẩn.

Đó chính xác là đoạn văn bản mà nút “sao chép nhật ký” của giao diện tạo ra: cùng một định dạng ở cả hai phía.

Hãy dùng nguồn bí mật biến môi trường: bí mật được kho khóa của hệ thống CI chèn vào, Restorm chỉ đọc nó, và không có gì được ghi vào dự án. Xem Bí mật.

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' # phiên bản bạn muốn ghim
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' # phiên bản bạn muốn ghim
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]

Những gì thay đổi ở chế độ headless

Section titled “Những gì thay đổi ở chế độ headless”
  • Các hành động Toast không làm gì cả; quá trình chạy vẫn tiếp tục bình thường.
  • Không thể hỏi tham số theo cách tương tác: hãy cung cấp tất cả bằng --param, hoặc để chúng lấy giá trị mặc định.
  • Máy chủ MCP không bao giờ khởi động trên một máy không có màn hình, bất kể cấu hình ra sao.

Token RESTORM_TOKEN (có tiền tố rstk_) được tạo từ bảng điều khiển tài khoản của bạn. Nó gắn với tổ chức, không gắn với một cá nhân: đó là token bạn đặt vào kho khóa của CI. Xem Tài khoản và đăng nhập.