테스트는 계속 Playwright, Selenium 및 pytest를 사용합니다. 저희는 이를 대체하지 않습니다. 기업 환경에 적합하게 만들어 드리며, 코드, 증빙 자료 및 이력을 모두 고객이 소유합니다.
실패한 테스트 하나. 디스크에 남긴 모든 것.
시연용 모형이 아닌 실제 실행 결과입니다: 2026-09-30에 Chromium, Firefox, WebKit에서 화면 없이 실행한 TC92입니다. example.com을 열고 Learn more를 따라 IANA로 이동한 뒤 제목이 Example Domain인지 확인합니다. 페이지에는 Example Domains라고 표시되어 있습니다. 다음은 Chromium 실행에서 생성된 파일과 실제 크기, 각 파일의 내용입니다.
테스트가 실패하면 포렌식 보고서, 메타데이터, 원본 로그, 실패 시점 화면의 스크린샷이 담긴 폴더가 저장되며, 실제 실패인 경우 영상도 포함됩니다. TC92_Iana_heading.js의 23번째 줄은 제목이 Example Domain일 것으로 예상합니다. IANA 페이지에는 Example Domains라고 되어 있습니다: 10000 ms 동안 로케이터가 23번 요소를 찾았고 매번 복수형을 읽었습니다. 세 엔진 모두에서 BREACHED 판정이 나왔습니다. 아래는 실패 시점의 화면과 생성된 모든 파일입니다.
https://www.iana.org/help/example-domains
screenshot.png · 89.8 kB · 마지막 프레임의 뷰포트 스크린샷 한 장, 1280×720: 검사 실행 당시 사용자에게 보였을 화면
활용 방법 실패 전후 페이지의 동작을 확인하세요. FLAKY 또는 AUTO_RECOVER로 통과한 경우에도 실패한 시도의 raw-data.json이 보관되므로, 재시도로 실패가 가려져도 해당 로그는 남습니다.
Telemetry측정됨
테스트가 끝날 때 측정하여 설정한 허용 기준과 비교합니다. 막대는 허용 기준 대비 측정값을 나타냅니다.
LCP992 / 2500 ms
FCP992 / 1800 ms
CLS0.0295 / 0.1
TTFB727 / 800 ms
TBT0 / 200 ms
DOM114 / 1500 nodes
Heap5 / 50 MB
INPnot measured
모두 허용 기준 이내이며, 보고서는 TTFB가 한계에 가깝다고 표시합니다. INP는 통과가 아닌 측정되지 않음으로 표시됩니다: 측정한 페이지에서 클릭이나 입력이 없었기 때문입니다. 지연 로딩 점검에서 이 페이지는 100점 만점에 85점, B 등급을 받았습니다: 너비와 높이가 지정되지 않은 이미지가 하나 있었습니다.
활용 방법 페이지가 느린 것인지 검증 조건이 잘못된 것인지 구분하세요.
video.webm428.8 kB
0:08 / 0:16
전체 세션, 16.6초: example.com에서 Learn more를 클릭한 뒤 검사를 재시도하는 동안 IANA 페이지가 표시됩니다. 실행 결과가 BREACHED여서 보관되었으며, 증거 보관함에서 재생할 수 있습니다. 실제 실패가 발생하면 영상이 보관됩니다: BREACHED, BREACHED_FLAKY 및 CHAOS_BREACHED는 기본으로, TIMEOUT 및 BLOCKED는 설정에서 활성화한 경우에 보관됩니다. CRASHED 및 UNREACHABLE은 녹화본이 손상되거나 빈 화면으로 나오므로 제공되지 않습니다. Playwright 웹 및 모바일 에뮬레이션 실행만 녹화됩니다: 실제 Android 휴대전화, Selenium 실행 및 API 테스트는 녹화되지 않습니다.
활용 방법 페이지가 실패한 검사에 이르기까지의 과정을 단계별로 확인하세요; 위 스크린샷은 마지막 프레임입니다.
AI 분석사용자의 AI
사용자의 AI가 연결되어 있으면 기본으로 활성화됩니다. 기본값인 로컬 Ollama 모델이나 사용자가 선택한 다른 제공업체를 사용하면, 엔진이 보고서에 진단, 추정 원인, 영향, 권장 조치의 네 항목을 추가합니다. AI 작성 도구에서 사용자의 AI 명령줄 도구를 활성화하면, 대신 실행 후 report.md를 읽어 실행당 최대 다섯 건의 실패를 처리하고 다섯 번째 항목을 추가합니다:
Diagnosis
분류 (명령줄 도구 전용)
Probable cause
Impact
Recommended action
분류는 APP_BUG, APP_CHANGE, TEST_AUTHORSHIP, TEST_SETUP 또는 INFRA_FLAKY 중 정확히 하나입니다. 연결된 AI가 없으면: 분석하지 않으며, 다섯 파일은 그대로 유지됩니다.
trace.zip은 여섯 번째 파일입니다. 기본값인 실패 시 포렌식 추적 기록이 켜져 있으면 BREACHED 폴더에 Playwright 추적 파일(DOM 스냅샷, 스크린샷 및 소스)도 저장되며, npx playwright show-trace trace.zip으로 열 수 있습니다. 실제 Android 휴대전화에서는 기록되지 않습니다. TC92는 추적이 기본값이 되기 전에 실행되었으므로 해당 폴더에는 위의 다섯 파일이 들어 있습니다.
실패 한 건에 보관되는 자료
chromium에서 실행한 TC91, 2026-09-30 13:26 TIMEOUT
홈페이지 상단 시연에서 재생한 실행의 실제 폴더로, example.com의 이전 링크 문구를 대상으로 의도적으로 구성한 테스트입니다. Evidence Locker에서 여는 경로는 다음과 같습니다: bug-reports/chromium/TC91 - Example more info/2026-09-30_13-26 [TIMEOUT].
https://example.com/
screenshot.png · 12.6 kB · 실패 순간의 정확한 화면
report.md4.9 kB문제 요약, 근본 원인, 네트워크 측정 데이터, 실패 시간 순서, 과거 안정성, 자동 복구 로그, 증거 자료, 성능 예산 및 지연 로딩 점검.
metadata.json2.3 kB선택자, 30000ms 제한 시간, 안정성 CRITICAL, 연속 실패, 총 2회 중 2번째 시도, 탐지 회피 및 지연 로딩 점수 (100, A)를 포함한 32개 필드.
raw-data.json4.2 kB원시 로그: 콘솔 출력, 네트워크 오류, 보안 문제 (여기서는 2건: CSP 누락), JS 오류 및 성능 지표.
Telemetry보고서에서LCP 156 ms · FCP 156 ms · CLS 0.0018 · TTFB 122 ms · TBT 0 ms · DOM 노드 808개 · 힙 2 MB. INP 미측정: 측정할 상호작용 없음.
video.webm실제 실패실제 실패 시 녹화됩니다. 이와 같은 TIMEOUT의 경우 기본적으로 TIMEOUT 녹화가 꺼져 있어 영상이 보관되지 않으며, 보고서에도 그 사실이 명시됩니다.
AI 분석사용자의 AI사용자의 AI를 연결하면 보고서에 진단, 추정 원인, 영향 및 권장 조치가 추가됩니다; 사용자의 AI 명령줄 도구를 통해 실패 유형도 분류합니다.
판정
14가지 판정은 무엇이며, 다음에 무엇을 해야 하나요?
14가지 판정은 각각 다음 조치를 누가 맡아야 하는지 알려줍니다: 없음, 테스트, 애플리케이션, 환경 또는 하네스. 판정은 폴더 이름에 표시됩니다: TC92의 폴더 이름은 [BREACHED]로 끝납니다. 분류기는 정해진 순서로 실패를 분석합니다: 먼저 하네스, 그다음 비정상 종료, 차단, 호스트 연결 불가, 시간 초과를 확인한 뒤에야 BREACHED_FLAKY 또는 BREACHED로 판정합니다. 따라서 BREACHED는 어떤 환경 패턴으로도 설명되지 않는 실패입니다. 각 카드에는 다음 조치의 담당 주체와 해당 판정으로 기록되는 내용이 표시됩니다.
SECURE없음
재시도나 선택자 수정 없이 자체적으로 통과했습니다. 조치할 사항이 없습니다. evidence-passed-test에 테스트 및 브라우저별로 최신 5개가 저장됩니다.
screenshot.pngmetadata.json
CHAOS_RESILIENT없음
결함이 주입된 상태에서도 통과했으므로 앱이 정상적으로 버텼습니다. 버그 보고서와 별도로 chaos-runs에 저장되어, 장애 주입 테스트가 안정성 수치에 영향을 주지 않습니다.
통과했지만 도움을 받았습니다: 자동 복구 기능이 작동하지 않는 선택자를 교체했습니다. 테스트의 요소 지정자는 이미 유효하지 않으며, 다음 DOM 변경 시 테스트 모음이 실제로 실패하게 됩니다. 요소 지정자를 수정하세요. 재시도가 필요했던 경우 raw-data.json이 생성되며, 이는 실패한 시도의 데이터입니다.
screenshot.pngmetadata.jsonraw-data.json
FLAKY테스트 또는 앱
실패 후 재시도에서 통과했으며, 수정된 것은 없습니다. 이는 해결된 것이 아니라 앱이나 테스트에 원인 불명의 불안정성이 있다는 뜻입니다. 실패한 시도의 raw-data.json을 읽은 다음 기록의 추세를 확인하세요.
screenshot.pngmetadata.jsonraw-data.json
PERFORMANCE_DEGRADEDApp
검증은 통과했지만 페이지가 너무 느렸습니다: Web Vitals 또는 지연 로딩의 허용 한도를 초과했습니다. 검사를 엄격하게 설정하기 전까지는 권고 사항입니다.
screenshot.pngmetadata.json
A11Y_VIOLATIONApp
검증은 통과했지만 접근성 검사는 통과하지 못했습니다. metadata.json에는 위반된 각 axe-core 규칙과 그 영향도 및 노드 수가 나열됩니다. 검사를 엄격하게 설정하기 전까지는 권고 사항입니다.
screenshot.pngmetadata.json
SECURITY_VIOLATIONApp
검증은 통과했지만 보안 헤더 검사는 통과하지 못했습니다(예: CSP 누락). 응답 헤더를 수정하세요. 검사를 엄격하게 설정하기 전까지는 권고 사항입니다.
screenshot.pngmetadata.json
BREACHEDApp
검증이 실패했으며, 환경이나 테스트 실행 도구의 알려진 패턴으로는 이 오류를 설명할 수 없습니다. report.md에서 예상값과 실제값을 읽고 영상을 확인한 다음, 이유와 함께 실제 버그 또는 오탐으로 표시하세요.
제시간에 응답하지 않았지만, 이것이 앱에 문제가 있다는 증거는 아닙니다. 설정을 조정하기 전에 원격 측정에서 페이지 속도를 확인하세요: 제한 시간을 늘려도 작동하지 않는 요소가 감춰지는 것이 아니라, 더 늦게 실패할 뿐입니다. 영상 보관은 기본적으로 꺼져 있습니다; 설정의 실패 영상 보관 대상에서 켜세요.
사이트가 방어 조치를 취했습니다: 403, 429, 차단 페이지 또는 봇 확인 절차입니다. 화면에 방어 조치가 표시된 경우 metadata.json에 해당 조치가 명시됩니다. 앱에 관한 발견 사항은 아니며, Jira에는 차단 건이 등록되지 않습니다. 영상 보관은 기본적으로 꺼져 있습니다; 설정의 실패 영상 보관 대상에서 켜세요.
14가지에 포함되지 않는 항목: CONFIG_ERROR(잘못된 가져오기, 누락된 .env 값 등으로 테스트 실행 도구가 테스트를 시작하지 못함), SKIPPED 및 INTERRUPTED. 어느 것도 앱에 대한 결과가 아니므로 증거 폴더나 기록 행을 생성하지 않습니다. 다만 문제가 있는 테스트를 수정할 수 있도록 CONFIG_ERROR는 .run-cache/config-errors/ 아래의 로그에 도움말과 함께 전체 내용이 기록됩니다. API 테스트에는 별도의 판정 일곱 가지가 있습니다: API 테스트.
History
History는 실행할 때마다 무엇을 기록하나요?
폴더 외에도 실행할 때마다 history/<browser>/<test>/runs.json에 행 하나가 추가됩니다: 기본으로 브라우저별 각 테스트의 최근 50회 실행이 보관됩니다. 아래는 TC92의 브라우저별 세 행을 기록된 그대로 보여줍니다. 세 행 모두 error_signature가 같으므로, 오류가 세 개가 아니라 하나라는 뜻입니다.
통과하면 스크린샷과 메타데이터를 보관하고, 실패하면 재현에 필요한 모든 자료를 보관하며, 가장 오래된 파일부터 삭제합니다. 매일 밤 실행되는 테스트 모음은 디스크를 가득 채웁니다. 엔진은 테스트와 브라우저별로 생성하는 모든 폴더의 용량을 제한하고, 모든 증거 자료를 하나의 총용량 한도 내에서 관리합니다. 기본 한도는 20 GB이며, 디스크에는 10 GB의 여유 공간을 유지하므로 저장 용량은 사용자가 정한 크기를 넘지 않습니다. 실패 시에는 여전히 재현에 필요한 자료를 보관합니다: 선택자와 값이 포함된 오류, 페이지 URL, 프레임, 콘솔, 네트워크 및 페이지 오류 기록, 실행 환경과 플랫폼, 그리고 무엇을 기준으로 측정했는지를 포함한 실행 맥락입니다. 폴더별 한도와 총용량 한도는 설정의 증거 자료 & 보관 항목에서 지정합니다.
TIMEOUT의 영상 녹화는 기본으로 꺼져 있으므로 녹화본을 제외한 동일한 파일이 남습니다: 홈페이지의 연출된 시연인 TC91의 TIMEOUT은 23.9 kB입니다.
통과
screenshot.pngmetadata.json
버그 보고서와 별도로 테스트 및 브라우저별 최신 5개가 저장됩니다. 시각적 회귀 검사에서는 스크린샷을 비교합니다. FLAKY / AUTO_RECOVER 통과 증거 보관이 켜져 있으면 FLAKY 또는 AUTO_RECOVER로 통과한 경우에도 실패한 시도의 raw-data.json과 함께 폴더가 보관됩니다.
설정 · 증거 & 보관 · 기본값
Bug reports kept per test20NEXUS_BUGREPORT_RETAIN
Passing screenshots kept5NEXUS_PASSED_RETAIN
Keep evidence of a FLAKY / AUTO_RECOVER passonNEXUS_RECOVERED_RETAIN
Raw run history window50 runsNEXUS_HISTORY_RETAIN
Smart Monkey sessions kept10NEXUS_MONKEY_RETAIN
Run contexts kept (what each run tested against)100NEXUS_RUN_CONTEXT_RETAIN
Record failure videoonNEXUS_VIDEO_ENABLED
Keep failure video for3 verdictsNEXUS_VIDEO_VERDICTS=BREACHED,BREACHED_FLAKY,CHAOS_BREACHED
Record a forensic trace on failureonNEXUS_TRACE_ENABLED
이 세 줄은 TC92 실행 직후에 표시되었습니다. 실행 중 생성된 원격 측정 임시 파일은 증거로 취급되지 않습니다: zip으로 묶은 뒤 개별 파일은 삭제하며, 최대 7일 동안 zip을 2개까지만, 총 500 MB 이내로 보관합니다. 이 세 가지 제한은 설정 화면의 항목이 아니라 .env의 NEXUS_CACHE_ZIPS, NEXUS_CACHE_RETENTION_DAYS, NEXUS_CACHE_MAX_MB입니다.
설정의 캐시 지우기는 작업 공간의 test-results 및 playwright-report 폴더를 삭제하고, 충돌하거나 강제 종료된 실행이 남긴 브라우저를 모두 닫습니다. 순찰 실행 중에는 사용할 수 없습니다.
작업 공간 · 디스크 · 각 폴더에 현재 적용되는 제한
area limit today
Bug reports newest 20 runs per test and browser
Passed tests newest 5 runs per test and browser
API evidence newest 20 passing runs per test; failures kept
Chaos runs newest 20 held runs; runs that broke kept
Smart Monkey newest 10 sessions
Visual regressions newest 10 per test and checkpoint
Run context newest 100 runs
Run history newest 50 runs per test and browser
Chain of custody append-only, never trimmed
Archive no automatic limit
디스크 패널은 실행 중 파일이 기록되는 모든 폴더를 크기순으로 나열하고, 각 폴더의 크기, 파일 수, 가장 오래된 날짜와 함께 전체 크기 및 드라이브의 여유 공간을 표시합니다. 자동 제한이 없는 폴더는 별도로 표시됩니다. 정리 기능은 안전한 대상에만 제공됩니다: 실행 캐시, 14일이 지난 테스트 파일 버전, 30일이 지난 경영진용 보고서입니다. 증거나 보관 자료는 절대 건드리지 않습니다.
개수 상한 외에도 모든 증거 자료에는 기본 20 GB의 공통 용량 한도가 적용되며, 디스크 여유 공간은 10 GB로 유지됩니다. 실행이 끝날 때마다 엔진은 두 조건을 확인하고, 어느 하나라도 충족하지 못하면 둘 다 충족할 때까지 가장 오래된 실행 기록부터 삭제합니다. 실패보다 통과 기록을 먼저 삭제하며, 각 테스트 및 브라우저의 최신 실행 기록은 항상 유지됩니다. 패널에는 용량 한도 대비 증거 자료 사용량, 최소 기준 대비 여유 공간, 마지막 정리로 확보한 공간과 함께 지금 유지 관리 실행이 표시됩니다.
보관…은 선택한 부분만 보기 → 보관 자료로 복사하며, 처음에는 스크린샷과 보고서가 선택되어 있습니다. 복사본은 증거 폴더 내부가 아닌 그 옆에 저장되므로 보관 기간에 따른 정리 대상이 되지 않으며, 증거 보관함의 실행 기록도 그대로 유지됩니다.
보관 자료 화면의 복원은 기록을 원래 위치로 되돌리고 집계에 다시 포함합니다. 폴더가 비워진 경우에는 보관된 부분을 증거 보관함에 다시 기록합니다. 오탐으로 판정된 기록은 여전히 집계에서 제외됩니다.
디스크 비우기는 폴더를 휴지통으로 보냅니다. 기록이 봉인된 경우 엔진이 먼저 삭제 내역을 기록하므로 nexus verify는 TAMPERED가 아닌 PURGED를 보고합니다. 보관 기간에 따라 가장 오래된 폴더를 삭제할 때도 같은 방식으로 처리하며, 원장은 해당 폴더의 해시값과 삭제한 사람, 삭제 시점을 계속 증명합니다. 봉인은 선택 사항입니다: 처음으로 실제 버그 또는 오탐 판정을 내리거나 nexus verify --seal을 실행하기 전까지 증거 보관함에는 UNVERIFIED가 표시됩니다.