지속적 통합에서 API 테스트 자동화하기
인터페이스에서 만든 시나리오는 그대로 파이프라인에서 돌아갑니다. 이 안내서는 규모를 키우는 단계를 다룹니다.
- Pro 또는 Enterprise 플랜.
- CI의 비밀 값 보관소에 넣어 둘 조직 토큰(
rstk_…). (대시보드에서 이 토큰을 직접 발급하는 기능은 곧 제공됩니다.)
RESTORM_TOKEN=$RESTORM_TOKEN restorm \ --open ./api.restorm \ --run "Tests de fumée" \ --headless \ --all-logs \ --out run.log \ --param baseUrl=$BASE_URL종료 코드 0 은 성공, 1 은 시나리오 실패, 2 는 호출 오류, 3 은 권한
거부입니다.
가상 디스플레이가 필요합니다
Section titled “가상 디스플레이가 필요합니다”Restorm은 데스크톱 애플리케이션이므로 창을 띄우지 않아도 디스플레이 서버가
필요합니다. Linux 러너에서는 앞에 xvfb-run -a 를 붙이십시오.
xvfb-run -a restorm --open ./api.restorm --run "Tests de fumée" --headless비밀 값을 프로젝트에 적어 넣지 마십시오. 민감한 변수는 환경 변수 비밀 값 소스로 선언하십시오. CI의 보관소가 주입하고 Restorm이 그것을 읽습니다. 비밀 값을 참고하십시오.
env: API_TOKEN: ${{ secrets.API_TOKEN }}환경별로 파라미터 주기
Section titled “환경별로 파라미터 주기”서로 보완하는 두 가지 방법이 있습니다.
environment타입의 시나리오 파라미터:--param Env=staging. 같은 시나리오가 어떤 대상에도 돌아갑니다.- 단순 파라미터:
--param baseUrl=…,--param tenant=….
변환은 파라미터에 선언된 타입을 따르며, 변환이 불가능하면 잘못된 값으로 실행하는 대신 곧바로 실행이 실패합니다. 변수와 데이터를 참고하십시오.
로그 공개하기
Section titled “로그 공개하기”--out run.log 는 로그를 실시간으로 기록합니다. 작업이 실패했을 때도 포함해서
아티팩트로 올리십시오. 로그가 정말 필요한 순간이 바로 그때입니다.
- uses: actions/upload-artifact@v4 if: always() with: name: journal-restorm path: run.logCI에서 읽기 좋은 시나리오 쓰기
Section titled “CI에서 읽기 좋은 시나리오 쓰기”새벽 3 시에 빨간 작업이 뜰 때 결과를 완전히 갈라놓는 몇 가지 습관입니다.
- 어서션 메시지를 분명하게.
어서션 액션의
message필드가 로그에 그대로 나타납니다. 무엇을 기대했는지 적어 두십시오. - 핵심 단계마다 로그를.
--all-logs가 없으면 Log 액션의 항목만 나오므로, 이것이 이야기의 줄기가 됩니다. - 필드별 어서션보다 스키마 검증을.
Schema validate의
errors출력을 Log에 연결하면 위반 목록을 정확히 얻을 수 있습니다. - 중요한
else출력에는 Throw를 붙여 종료 코드가 실패를 반영하게 하십시오. - 불안정한 네트워크 호출은 간헐적으로 실패하는 테스트를 감수하는 대신 Retry 로 감싸십시오. 제어를 참고하십시오.
정리 작업은 주 시나리오의 done 포트에 이어 붙이십시오. done 은 하위 그래프
전체가 끝날 때까지 기다립니다.
포트와 링크를 참고하십시오.
알아 둘 함정
Section titled “알아 둘 함정”| 함정 | 해결 방법 |
|---|---|
| 작업이 입력을 기다린다 | --param 으로 모든 파라미터를 주십시오. 헤드리스에서는 무엇도 물어볼 수 없습니다 |
| Toast 액션이 보이지 않는다 | 정상입니다. 헤드리스에서는 아무 효과가 없습니다. Log를 쓰십시오 |
| MCP 서버가 나타나지 않는다 | 의도된 동작입니다. 실제 디스플레이가 없으면 결코 시작하지 않습니다 |
종료 코드 3 | 토큰이나 플랜 문제입니다. 네 경우 중 어느 것인지는 메시지가 알려 줍니다 |
| 프로젝트 파일 위치가 바뀌었다 | --open 은 저장소 기준 상대 경로를 받아들입니다. 상대 경로로 유지하십시오 |
완성된 예시
Section titled “완성된 예시”GitHub Actions와 GitLab CI 파이프라인은 헤드리스 실행과 지속적 통합에 있습니다.