test: 통합 테스트 오류 및 경고 수정
- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정 - TestDataGenerator 제거하고 직접 객체 생성으로 변경 - 모델 필드명 및 타입 불일치 수정 - 불필요한 Either 패턴 사용 제거 - null safety 관련 이슈 해결 수정된 파일: - test/integration/screens/company_integration_test.dart - test/integration/screens/equipment_integration_test.dart - test/integration/screens/user_integration_test.dart - test/integration/screens/login_integration_test.dart
This commit is contained in:
349
test_reports/equipment_test_report.html
Normal file
349
test_reports/equipment_test_report.html
Normal file
@@ -0,0 +1,349 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SUPERPORT 테스트 리포트 - Automated Test Suite</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.report-header {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.report-header h1 {
|
||||
font-size: 2.5em;
|
||||
margin-bottom: 10px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.header-info {
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.header-info span {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
section {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.8em;
|
||||
margin-bottom: 20px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.summary-cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.card {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
|
||||
.card.total { background: #e3f2fd; color: #1976d2; }
|
||||
.card.success { background: #e8f5e9; color: #388e3c; }
|
||||
.card.failure { background: #ffebee; color: #d32f2f; }
|
||||
.card.skipped { background: #fff3e0; color: #f57c00; }
|
||||
|
||||
.card-value {
|
||||
font-size: 2.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.card-label {
|
||||
font-size: 0.9em;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
height: 30px;
|
||||
background: #e0e0e0;
|
||||
border-radius: 15px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, #4caf50, #45a049);
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.failure-item {
|
||||
border: 1px solid #ffcdd2;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
background: #ffebee;
|
||||
}
|
||||
|
||||
.failure-item h3 {
|
||||
color: #c62828;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.failure-message {
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
overflow-x: auto;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
details {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
summary {
|
||||
cursor: pointer;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.stack-trace {
|
||||
background: #f5f5f5;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.8em;
|
||||
overflow-x: auto;
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
text-align: left;
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f5f5f5;
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
td.success { color: #388e3c; }
|
||||
td.failure { color: #d32f2f; }
|
||||
|
||||
.fix-item {
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fix-item.success {
|
||||
background: #e8f5e9;
|
||||
border: 1px solid #c8e6c9;
|
||||
}
|
||||
|
||||
.fix-item.failure {
|
||||
background: #ffebee;
|
||||
border: 1px solid #ffcdd2;
|
||||
}
|
||||
|
||||
.fix-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.fix-type {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.env-table {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.env-key {
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.report-footer {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="report-header">
|
||||
<h1>🚀 Automated Test Suite</h1>
|
||||
<div class="header-info">
|
||||
<span class="date">생성 시간: 2025-08-05 16:13:08.321826</span>
|
||||
<span class="duration">소요 시간: 6초</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="summary">
|
||||
<h2>📊 테스트 요약</h2>
|
||||
<div class="summary-cards">
|
||||
<div class="card total">
|
||||
<div class="card-value">10</div>
|
||||
<div class="card-label">전체 테스트</div>
|
||||
</div>
|
||||
<div class="card success">
|
||||
<div class="card-value">5</div>
|
||||
<div class="card-label">성공</div>
|
||||
</div>
|
||||
<div class="card failure">
|
||||
<div class="card-value">5</div>
|
||||
<div class="card-label">실패</div>
|
||||
</div>
|
||||
<div class="card skipped">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">건너뜀</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" style="width: 50.0%"></div>
|
||||
<div class="progress-text">성공률: 50.0%</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="failures">
|
||||
<h2>❌ 실패한 테스트</h2>
|
||||
<div class="failure-list">
|
||||
<div class="failure-item">
|
||||
<h3>EquipmentIn</h3>
|
||||
<pre class="failure-message">DioException [bad response]: null
|
||||
Error: ServerException: 서버 오류가 발생했습니다. (code: 500)</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>EquipmentIn</h3>
|
||||
<pre class="failure-message">Exception: Assertion failed: 삭제된 장비가 여전히 조회됨</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>EquipmentIn</h3>
|
||||
<pre class="failure-message">Exception: Assertion failed: 변경된 상태가 일치해야 합니다</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>EquipmentIn</h3>
|
||||
<pre class="failure-message">Exception: Assertion failed: 이력 추가 응답 코드가 201이어야 합니다</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>EquipmentIn</h3>
|
||||
<pre class="failure-message">Exception: Assertion failed: 입고 이력 추가 응답 코드가 201이어야 합니다</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>장비 검색 및 필터링</h3>
|
||||
<pre class="failure-message">테스트 실패: DioException [bad response]: null
|
||||
Error: ServerException: 서버 오류가 발생했습니다. (code: 500)</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>장비 삭제</h3>
|
||||
<pre class="failure-message">테스트 실패: Exception: Assertion failed: 삭제된 장비가 여전히 조회됨</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>장비 상태 변경</h3>
|
||||
<pre class="failure-message">테스트 실패: Exception: Assertion failed: 변경된 상태가 일치해야 합니다</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>장비 이력 추가</h3>
|
||||
<pre class="failure-message">테스트 실패: Exception: Assertion failed: 이력 추가 응답 코드가 201이어야 합니다</pre>
|
||||
</div>
|
||||
<div class="failure-item">
|
||||
<h3>입고 완료 처리</h3>
|
||||
<pre class="failure-message">테스트 실패: Exception: Assertion failed: 입고 이력 추가 응답 코드가 201이어야 합니다</pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="features">
|
||||
<h2>🎯 기능별 테스트 결과</h2>
|
||||
<table class="feature-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>기능</th>
|
||||
<th>전체</th>
|
||||
<th>성공</th>
|
||||
<th>실패</th>
|
||||
<th>성공률</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>EquipmentIn</td>
|
||||
<td>10</td>
|
||||
<td class="success">5</td>
|
||||
<td class="failure">5</td>
|
||||
<td>50.0%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<section class="environment">
|
||||
<h2>⚙️ 테스트 환경</h2>
|
||||
<table class="env-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="env-key">platform</td>
|
||||
<td class="env-value">Flutter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">dartVersion</td>
|
||||
<td class="env-value">3.0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">testFramework</td>
|
||||
<td class="env-value">flutter_test</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="report-footer">
|
||||
<p>이 리포트는 SUPERPORT 자동화 테스트 시스템에 의해 생성되었습니다.</p>
|
||||
<p>생성 시간: 2025-08-05 16:13:08.324316</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
88
test_reports/equipment_test_report.json
Normal file
88
test_reports/equipment_test_report.json
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"reportId": "TEST-1754377988329",
|
||||
"testName": "Automated Test Suite",
|
||||
"timestamp": "2025-08-05T16:13:08.330258",
|
||||
"duration": 6513,
|
||||
"environment": {
|
||||
"platform": "Flutter",
|
||||
"dartVersion": "3.0",
|
||||
"testFramework": "flutter_test"
|
||||
},
|
||||
"summary": {
|
||||
"totalTests": 10,
|
||||
"passedTests": 5,
|
||||
"failedTests": 5,
|
||||
"skippedTests": 0,
|
||||
"successRate": "50.0"
|
||||
},
|
||||
"statistics": {
|
||||
"totalSteps": 10,
|
||||
"successfulSteps": 5,
|
||||
"failedSteps": 5,
|
||||
"totalErrors": 0,
|
||||
"totalAutoFixes": 0,
|
||||
"totalFeatures": 1,
|
||||
"totalApiCalls": 0,
|
||||
"duration": 6
|
||||
},
|
||||
"features": {
|
||||
"EquipmentIn": {
|
||||
"totalTests": 10,
|
||||
"passedTests": 5,
|
||||
"failedTests": 5
|
||||
}
|
||||
},
|
||||
"failures": [
|
||||
{
|
||||
"feature": "EquipmentIn",
|
||||
"message": "DioException [bad response]: null\nError: ServerException: 서버 오류가 발생했습니다. (code: 500)",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "EquipmentIn",
|
||||
"message": "Exception: Assertion failed: 삭제된 장비가 여전히 조회됨",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "EquipmentIn",
|
||||
"message": "Exception: Assertion failed: 변경된 상태가 일치해야 합니다",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "EquipmentIn",
|
||||
"message": "Exception: Assertion failed: 이력 추가 응답 코드가 201이어야 합니다",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "EquipmentIn",
|
||||
"message": "Exception: Assertion failed: 입고 이력 추가 응답 코드가 201이어야 합니다",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "장비 검색 및 필터링",
|
||||
"message": "테스트 실패: DioException [bad response]: null\nError: ServerException: 서버 오류가 발생했습니다. (code: 500)",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "장비 삭제",
|
||||
"message": "테스트 실패: Exception: Assertion failed: 삭제된 장비가 여전히 조회됨",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "장비 상태 변경",
|
||||
"message": "테스트 실패: Exception: Assertion failed: 변경된 상태가 일치해야 합니다",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "장비 이력 추가",
|
||||
"message": "테스트 실패: Exception: Assertion failed: 이력 추가 응답 코드가 201이어야 합니다",
|
||||
"stackTrace": null
|
||||
},
|
||||
{
|
||||
"feature": "입고 완료 처리",
|
||||
"message": "테스트 실패: Exception: Assertion failed: 입고 이력 추가 응답 코드가 201이어야 합니다",
|
||||
"stackTrace": null
|
||||
}
|
||||
],
|
||||
"autoFixes": []
|
||||
}
|
||||
90
test_reports/equipment_test_report.md
Normal file
90
test_reports/equipment_test_report.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# Automated Test Suite
|
||||
|
||||
## 📊 테스트 실행 결과
|
||||
|
||||
- **실행 시간**: 2025-08-05 16:13:01.815767 ~ 2025-08-05 16:13:08.328060
|
||||
- **소요 시간**: 6초
|
||||
- **환경**: Flutter (null)
|
||||
|
||||
## 📈 테스트 요약
|
||||
|
||||
| 항목 | 수치 |
|
||||
|------|------|
|
||||
| 전체 테스트 | 10 |
|
||||
| ✅ 성공 | 5 |
|
||||
| ❌ 실패 | 5 |
|
||||
| ⏭️ 건너뜀 | 0 |
|
||||
| 성공률 | 50.0% |
|
||||
|
||||
## 🎯 기능별 테스트 결과
|
||||
|
||||
| 기능 | 전체 | 성공 | 실패 | 성공률 |
|
||||
|------|------|------|------|--------|
|
||||
| EquipmentIn | 10 | 5 | 5 | 50.0% |
|
||||
|
||||
## ❌ 실패한 테스트
|
||||
|
||||
### EquipmentIn
|
||||
|
||||
```
|
||||
DioException [bad response]: null
|
||||
Error: ServerException: 서버 오류가 발생했습니다. (code: 500)
|
||||
```
|
||||
|
||||
### EquipmentIn
|
||||
|
||||
```
|
||||
Exception: Assertion failed: 삭제된 장비가 여전히 조회됨
|
||||
```
|
||||
|
||||
### EquipmentIn
|
||||
|
||||
```
|
||||
Exception: Assertion failed: 변경된 상태가 일치해야 합니다
|
||||
```
|
||||
|
||||
### EquipmentIn
|
||||
|
||||
```
|
||||
Exception: Assertion failed: 이력 추가 응답 코드가 201이어야 합니다
|
||||
```
|
||||
|
||||
### EquipmentIn
|
||||
|
||||
```
|
||||
Exception: Assertion failed: 입고 이력 추가 응답 코드가 201이어야 합니다
|
||||
```
|
||||
|
||||
### 장비 검색 및 필터링
|
||||
|
||||
```
|
||||
테스트 실패: DioException [bad response]: null
|
||||
Error: ServerException: 서버 오류가 발생했습니다. (code: 500)
|
||||
```
|
||||
|
||||
### 장비 삭제
|
||||
|
||||
```
|
||||
테스트 실패: Exception: Assertion failed: 삭제된 장비가 여전히 조회됨
|
||||
```
|
||||
|
||||
### 장비 상태 변경
|
||||
|
||||
```
|
||||
테스트 실패: Exception: Assertion failed: 변경된 상태가 일치해야 합니다
|
||||
```
|
||||
|
||||
### 장비 이력 추가
|
||||
|
||||
```
|
||||
테스트 실패: Exception: Assertion failed: 이력 추가 응답 코드가 201이어야 합니다
|
||||
```
|
||||
|
||||
### 입고 완료 처리
|
||||
|
||||
```
|
||||
테스트 실패: Exception: Assertion failed: 입고 이력 추가 응답 코드가 201이어야 합니다
|
||||
```
|
||||
|
||||
---
|
||||
*이 리포트는 2025-08-05 16:13:08.328790에 자동 생성되었습니다.*
|
||||
279
test_reports/html/equipment_out_test_report.html
Normal file
279
test_reports/html/equipment_out_test_report.html
Normal file
@@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SUPERPORT 테스트 리포트 - Automated Test Suite</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.report-header {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.report-header h1 {
|
||||
font-size: 2.5em;
|
||||
margin-bottom: 10px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.header-info {
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.header-info span {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
section {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.8em;
|
||||
margin-bottom: 20px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.summary-cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.card {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
|
||||
.card.total { background: #e3f2fd; color: #1976d2; }
|
||||
.card.success { background: #e8f5e9; color: #388e3c; }
|
||||
.card.failure { background: #ffebee; color: #d32f2f; }
|
||||
.card.skipped { background: #fff3e0; color: #f57c00; }
|
||||
|
||||
.card-value {
|
||||
font-size: 2.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.card-label {
|
||||
font-size: 0.9em;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
height: 30px;
|
||||
background: #e0e0e0;
|
||||
border-radius: 15px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, #4caf50, #45a049);
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.failure-item {
|
||||
border: 1px solid #ffcdd2;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
background: #ffebee;
|
||||
}
|
||||
|
||||
.failure-item h3 {
|
||||
color: #c62828;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.failure-message {
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
overflow-x: auto;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
details {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
summary {
|
||||
cursor: pointer;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.stack-trace {
|
||||
background: #f5f5f5;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.8em;
|
||||
overflow-x: auto;
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
text-align: left;
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f5f5f5;
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
td.success { color: #388e3c; }
|
||||
td.failure { color: #d32f2f; }
|
||||
|
||||
.fix-item {
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fix-item.success {
|
||||
background: #e8f5e9;
|
||||
border: 1px solid #c8e6c9;
|
||||
}
|
||||
|
||||
.fix-item.failure {
|
||||
background: #ffebee;
|
||||
border: 1px solid #ffcdd2;
|
||||
}
|
||||
|
||||
.fix-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.fix-type {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.env-table {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.env-key {
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.report-footer {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="report-header">
|
||||
<h1>🚀 Automated Test Suite</h1>
|
||||
<div class="header-info">
|
||||
<span class="date">생성 시간: 2025-08-05 18:06:29.842386</span>
|
||||
<span class="duration">소요 시간: 0초</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="summary">
|
||||
<h2>📊 테스트 요약</h2>
|
||||
<div class="summary-cards">
|
||||
<div class="card total">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">전체 테스트</div>
|
||||
</div>
|
||||
<div class="card success">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">성공</div>
|
||||
</div>
|
||||
<div class="card failure">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">실패</div>
|
||||
</div>
|
||||
<div class="card skipped">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">건너뜀</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" style="width: 0.0%"></div>
|
||||
<div class="progress-text">성공률: 0.0%</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="environment">
|
||||
<h2>⚙️ 테스트 환경</h2>
|
||||
<table class="env-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="env-key">platform</td>
|
||||
<td class="env-value">Flutter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">dartVersion</td>
|
||||
<td class="env-value">3.0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">testFramework</td>
|
||||
<td class="env-value">flutter_test</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="report-footer">
|
||||
<p>이 리포트는 SUPERPORT 자동화 테스트 시스템에 의해 생성되었습니다.</p>
|
||||
<p>생성 시간: 2025-08-05 18:06:29.844246</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
279
test_reports/html/overview_test_report.html
Normal file
279
test_reports/html/overview_test_report.html
Normal file
@@ -0,0 +1,279 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SUPERPORT 테스트 리포트 - Automated Test Suite</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.report-header {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.report-header h1 {
|
||||
font-size: 2.5em;
|
||||
margin-bottom: 10px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.header-info {
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.header-info span {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
section {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.8em;
|
||||
margin-bottom: 20px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.summary-cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.card {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
|
||||
.card.total { background: #e3f2fd; color: #1976d2; }
|
||||
.card.success { background: #e8f5e9; color: #388e3c; }
|
||||
.card.failure { background: #ffebee; color: #d32f2f; }
|
||||
.card.skipped { background: #fff3e0; color: #f57c00; }
|
||||
|
||||
.card-value {
|
||||
font-size: 2.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.card-label {
|
||||
font-size: 0.9em;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
height: 30px;
|
||||
background: #e0e0e0;
|
||||
border-radius: 15px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, #4caf50, #45a049);
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.failure-item {
|
||||
border: 1px solid #ffcdd2;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
background: #ffebee;
|
||||
}
|
||||
|
||||
.failure-item h3 {
|
||||
color: #c62828;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.failure-message {
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
overflow-x: auto;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
details {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
summary {
|
||||
cursor: pointer;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.stack-trace {
|
||||
background: #f5f5f5;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.8em;
|
||||
overflow-x: auto;
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
text-align: left;
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f5f5f5;
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
td.success { color: #388e3c; }
|
||||
td.failure { color: #d32f2f; }
|
||||
|
||||
.fix-item {
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fix-item.success {
|
||||
background: #e8f5e9;
|
||||
border: 1px solid #c8e6c9;
|
||||
}
|
||||
|
||||
.fix-item.failure {
|
||||
background: #ffebee;
|
||||
border: 1px solid #ffcdd2;
|
||||
}
|
||||
|
||||
.fix-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.fix-type {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.env-table {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.env-key {
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.report-footer {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="report-header">
|
||||
<h1>🚀 Automated Test Suite</h1>
|
||||
<div class="header-info">
|
||||
<span class="date">생성 시간: 2025-08-05 18:06:30.183513</span>
|
||||
<span class="duration">소요 시간: 0초</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="summary">
|
||||
<h2>📊 테스트 요약</h2>
|
||||
<div class="summary-cards">
|
||||
<div class="card total">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">전체 테스트</div>
|
||||
</div>
|
||||
<div class="card success">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">성공</div>
|
||||
</div>
|
||||
<div class="card failure">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">실패</div>
|
||||
</div>
|
||||
<div class="card skipped">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">건너뜀</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" style="width: 0.0%"></div>
|
||||
<div class="progress-text">성공률: 0.0%</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="environment">
|
||||
<h2>⚙️ 테스트 환경</h2>
|
||||
<table class="env-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="env-key">platform</td>
|
||||
<td class="env-value">Flutter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">dartVersion</td>
|
||||
<td class="env-value">3.0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">testFramework</td>
|
||||
<td class="env-value">flutter_test</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="report-footer">
|
||||
<p>이 리포트는 SUPERPORT 자동화 테스트 시스템에 의해 생성되었습니다.</p>
|
||||
<p>생성 시간: 2025-08-05 18:06:30.185789</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
31
test_reports/json/equipment_out_test_report.json
Normal file
31
test_reports/json/equipment_out_test_report.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"reportId": "TEST-1754384789851",
|
||||
"testName": "Automated Test Suite",
|
||||
"timestamp": "2025-08-05T18:06:29.851718",
|
||||
"duration": 23,
|
||||
"environment": {
|
||||
"platform": "Flutter",
|
||||
"dartVersion": "3.0",
|
||||
"testFramework": "flutter_test"
|
||||
},
|
||||
"summary": {
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"skippedTests": 0,
|
||||
"successRate": "0.0"
|
||||
},
|
||||
"statistics": {
|
||||
"totalSteps": 0,
|
||||
"successfulSteps": 0,
|
||||
"failedSteps": 0,
|
||||
"totalErrors": 0,
|
||||
"totalAutoFixes": 0,
|
||||
"totalFeatures": 0,
|
||||
"totalApiCalls": 0,
|
||||
"duration": 0
|
||||
},
|
||||
"features": {},
|
||||
"failures": [],
|
||||
"autoFixes": []
|
||||
}
|
||||
31
test_reports/json/overview_test_report.json
Normal file
31
test_reports/json/overview_test_report.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"reportId": "TEST-1754384790191",
|
||||
"testName": "Automated Test Suite",
|
||||
"timestamp": "2025-08-05T18:06:30.192105",
|
||||
"duration": 19,
|
||||
"environment": {
|
||||
"platform": "Flutter",
|
||||
"dartVersion": "3.0",
|
||||
"testFramework": "flutter_test"
|
||||
},
|
||||
"summary": {
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"skippedTests": 0,
|
||||
"successRate": "0.0"
|
||||
},
|
||||
"statistics": {
|
||||
"totalSteps": 0,
|
||||
"successfulSteps": 0,
|
||||
"failedSteps": 0,
|
||||
"totalErrors": 0,
|
||||
"totalAutoFixes": 0,
|
||||
"totalFeatures": 0,
|
||||
"totalApiCalls": 0,
|
||||
"duration": 0
|
||||
},
|
||||
"features": {},
|
||||
"failures": [],
|
||||
"autoFixes": []
|
||||
}
|
||||
20
test_reports/markdown/equipment_out_test_report.md
Normal file
20
test_reports/markdown/equipment_out_test_report.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Automated Test Suite
|
||||
|
||||
## 📊 테스트 실행 결과
|
||||
|
||||
- **실행 시간**: 2025-08-05 18:06:29.828327 ~ 2025-08-05 18:06:29.850204
|
||||
- **소요 시간**: 0초
|
||||
- **환경**: Flutter (null)
|
||||
|
||||
## 📈 테스트 요약
|
||||
|
||||
| 항목 | 수치 |
|
||||
|------|------|
|
||||
| 전체 테스트 | 0 |
|
||||
| ✅ 성공 | 0 |
|
||||
| ❌ 실패 | 0 |
|
||||
| ⏭️ 건너뜀 | 0 |
|
||||
| 성공률 | 0.0% |
|
||||
|
||||
---
|
||||
*이 리포트는 2025-08-05 18:06:29.850411에 자동 생성되었습니다.*
|
||||
20
test_reports/markdown/overview_test_report.md
Normal file
20
test_reports/markdown/overview_test_report.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Automated Test Suite
|
||||
|
||||
## 📊 테스트 실행 결과
|
||||
|
||||
- **실행 시간**: 2025-08-05 18:06:30.172786 ~ 2025-08-05 18:06:30.191012
|
||||
- **소요 시간**: 0초
|
||||
- **환경**: Flutter (null)
|
||||
|
||||
## 📈 테스트 요약
|
||||
|
||||
| 항목 | 수치 |
|
||||
|------|------|
|
||||
| 전체 테스트 | 0 |
|
||||
| ✅ 성공 | 0 |
|
||||
| ❌ 실패 | 0 |
|
||||
| ⏭️ 건너뜀 | 0 |
|
||||
| 성공률 | 0.0% |
|
||||
|
||||
---
|
||||
*이 리포트는 2025-08-05 18:06:30.191191에 자동 생성되었습니다.*
|
||||
@@ -0,0 +1,57 @@
|
||||
# SUPERPORT 마스터 테스트 리포트
|
||||
|
||||
## 📊 실행 개요
|
||||
- **테스트 날짜**: 2025-08-05 15:28:37.914463
|
||||
- **총 소요시간**: 0초
|
||||
- **실행 모드**: 병렬
|
||||
- **환경**: Production API (https://api-dev.beavercompany.co.kr)
|
||||
|
||||
## 📈 전체 결과
|
||||
| 항목 | 수치 |
|
||||
|------|------|
|
||||
| 전체 화면 | 4개 |
|
||||
| ✅ 성공 | 3개 |
|
||||
| ❌ 실패 | 1개 |
|
||||
| 📊 성공률 | 75.0% |
|
||||
|
||||
## 📋 화면별 결과
|
||||
|
||||
| 화면 | 상태 | 테스트 수 | 성공 | 실패 | 소요시간 |
|
||||
|------|------|-----------|------|------|----------|
|
||||
| EquipmentInScreen | ✅ | 0 | 0 | 0 | 0초 |
|
||||
| LicenseScreen | ✅ | 0 | 0 | 0 | 0초 |
|
||||
| OverviewScreen | ❌ | 0 | 0 | 1 | 0초 |
|
||||
| EquipmentOutScreen | ✅ | 0 | 0 | 0 | 0초 |
|
||||
|
||||
## ❌ 실패 상세
|
||||
|
||||
### OverviewScreen
|
||||
|
||||
#### OverviewScreen
|
||||
```
|
||||
테스트 실행 중 치명적 오류: TestSetupError: 테스트 환경 설정 실패 ({error: Bad state: GetIt: Object/factory with type DashboardService is not registered inside GetIt.
|
||||
(Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance;
|
||||
Did you forget to register it?), sessionId: OverviewScreen_1754375317790})
|
||||
```
|
||||
|
||||
|
||||
## ⚡ 성능 분석
|
||||
|
||||
### 가장 느린 테스트 (Top 5)
|
||||
| 순위 | 화면 | 소요시간 |
|
||||
|------|------|----------|
|
||||
| 1 | EquipmentInScreen | 0초 |
|
||||
| 2 | EquipmentOutScreen | 0초 |
|
||||
| 3 | LicenseScreen | 0초 |
|
||||
| 4 | OverviewScreen | 0초 |
|
||||
|
||||
## 💡 권장사항
|
||||
|
||||
- **병렬 실행 효율성**: 8.3%
|
||||
- 더 높은 병렬 처리 수준을 고려해보세요 (현재: 3)
|
||||
- **1개 화면**에서 테스트 실패가 발생했습니다
|
||||
- 실패한 테스트를 우선적으로 수정하세요
|
||||
|
||||
---
|
||||
*이 리포트는 자동으로 생성되었습니다.*
|
||||
*생성 시간: 2025-08-05 15:28:37.915089*
|
||||
320
test_reports/master_test_report_2025-08-05T15-28-37.918542.html
Normal file
320
test_reports/master_test_report_2025-08-05T15-28-37.918542.html
Normal file
@@ -0,0 +1,320 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SUPERPORT 테스트 리포트 - SUPERPORT Master Test Suite</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.report-header {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.report-header h1 {
|
||||
font-size: 2.5em;
|
||||
margin-bottom: 10px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.header-info {
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.header-info span {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
section {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.8em;
|
||||
margin-bottom: 20px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.summary-cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.card {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
|
||||
.card.total { background: #e3f2fd; color: #1976d2; }
|
||||
.card.success { background: #e8f5e9; color: #388e3c; }
|
||||
.card.failure { background: #ffebee; color: #d32f2f; }
|
||||
.card.skipped { background: #fff3e0; color: #f57c00; }
|
||||
|
||||
.card-value {
|
||||
font-size: 2.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.card-label {
|
||||
font-size: 0.9em;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
height: 30px;
|
||||
background: #e0e0e0;
|
||||
border-radius: 15px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, #4caf50, #45a049);
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.failure-item {
|
||||
border: 1px solid #ffcdd2;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
background: #ffebee;
|
||||
}
|
||||
|
||||
.failure-item h3 {
|
||||
color: #c62828;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.failure-message {
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
overflow-x: auto;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
details {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
summary {
|
||||
cursor: pointer;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.stack-trace {
|
||||
background: #f5f5f5;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.8em;
|
||||
overflow-x: auto;
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
text-align: left;
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f5f5f5;
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
td.success { color: #388e3c; }
|
||||
td.failure { color: #d32f2f; }
|
||||
|
||||
.fix-item {
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fix-item.success {
|
||||
background: #e8f5e9;
|
||||
border: 1px solid #c8e6c9;
|
||||
}
|
||||
|
||||
.fix-item.failure {
|
||||
background: #ffebee;
|
||||
border: 1px solid #ffcdd2;
|
||||
}
|
||||
|
||||
.fix-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.fix-type {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.env-table {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.env-key {
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.report-footer {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="report-header">
|
||||
<h1>🚀 SUPERPORT Master Test Suite</h1>
|
||||
<div class="header-info">
|
||||
<span class="date">생성 시간: 2025-08-05 15:28:37.918648</span>
|
||||
<span class="duration">소요 시간: 0초</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="summary">
|
||||
<h2>📊 테스트 요약</h2>
|
||||
<div class="summary-cards">
|
||||
<div class="card total">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">전체 테스트</div>
|
||||
</div>
|
||||
<div class="card success">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">성공</div>
|
||||
</div>
|
||||
<div class="card failure">
|
||||
<div class="card-value">1</div>
|
||||
<div class="card-label">실패</div>
|
||||
</div>
|
||||
<div class="card skipped">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">건너뜀</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" style="width: 0.0%"></div>
|
||||
<div class="progress-text">성공률: 0.0%</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="failures">
|
||||
<h2>❌ 실패한 테스트</h2>
|
||||
<div class="failure-list">
|
||||
<div class="failure-item">
|
||||
<h3>OverviewScreen</h3>
|
||||
<pre class="failure-message">테스트 실행 중 치명적 오류: TestSetupError: 테스트 환경 설정 실패 ({error: Bad state: GetIt: Object/factory with type DashboardService is not registered inside GetIt.
|
||||
(Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance;
|
||||
Did you forget to register it?), sessionId: OverviewScreen_1754375317790})</pre>
|
||||
<details>
|
||||
<summary>스택 트레이스</summary>
|
||||
<pre class="stack-trace">#0 BaseScreenTest.setupTestEnvironment (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/screens/base/base_screen_test.dart:96:7)
|
||||
<asynchronous suspension>
|
||||
#1 BaseScreenTest.runTests (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/screens/base/base_screen_test.dart:138:7)
|
||||
<asynchronous suspension>
|
||||
#2 MasterTestSuite._runSingleTest (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:345:26)
|
||||
<asynchronous suspension>
|
||||
#3 _Semaphore.run (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:765:14)
|
||||
<asynchronous suspension>
|
||||
#4 Future.wait.<anonymous closure> (dart:async/future.dart:525:21)
|
||||
<asynchronous suspension>
|
||||
#5 MasterTestSuite._runTestsInParallel (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:313:21)
|
||||
<asynchronous suspension>
|
||||
#6 MasterTestSuite.runAllTests (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:160:9)
|
||||
<asynchronous suspension>
|
||||
#7 main.<anonymous closure>.<anonymous closure> (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:815:7)
|
||||
<asynchronous suspension>
|
||||
#8 Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:229:9)
|
||||
<asynchronous suspension>
|
||||
#9 Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:227:7)
|
||||
<asynchronous suspension>
|
||||
#10 Invoker._waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:258:9)
|
||||
<asynchronous suspension>
|
||||
</pre>
|
||||
</details>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="environment">
|
||||
<h2>⚙️ 테스트 환경</h2>
|
||||
<table class="env-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="env-key">platform</td>
|
||||
<td class="env-value">Flutter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">api</td>
|
||||
<td class="env-value">https://api-dev.beavercompany.co.kr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">mode</td>
|
||||
<td class="env-value">parallel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">maxParallel</td>
|
||||
<td class="env-value">3</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="report-footer">
|
||||
<p>이 리포트는 SUPERPORT 자동화 테스트 시스템에 의해 생성되었습니다.</p>
|
||||
<p>생성 시간: 2025-08-05 15:28:37.920410</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"metadata": {
|
||||
"testSuite": "SUPERPORT Master Test Suite",
|
||||
"timestamp": "2025-08-05T15:28:37.921951",
|
||||
"duration": 418,
|
||||
"environment": {
|
||||
"platform": "Flutter",
|
||||
"api": "https://api-dev.beavercompany.co.kr",
|
||||
"executionMode": "parallel"
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"totalScreens": 4,
|
||||
"passedScreens": 3,
|
||||
"failedScreens": 1,
|
||||
"successRate": "75.0"
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"screenName": "EquipmentInScreen",
|
||||
"passed": true,
|
||||
"duration": 117,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"startTime": "2025-08-05T15:28:37.792734",
|
||||
"endTime": "2025-08-05T15:28:37.910230",
|
||||
"failures": []
|
||||
},
|
||||
{
|
||||
"screenName": "LicenseScreen",
|
||||
"passed": true,
|
||||
"duration": 99,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"startTime": "2025-08-05T15:28:37.795026",
|
||||
"endTime": "2025-08-05T15:28:37.894979",
|
||||
"failures": []
|
||||
},
|
||||
{
|
||||
"screenName": "OverviewScreen",
|
||||
"passed": false,
|
||||
"duration": 5,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 1,
|
||||
"startTime": "2025-08-05T15:28:37.796344",
|
||||
"endTime": "2025-08-05T15:28:37.801623",
|
||||
"failures": [
|
||||
{
|
||||
"feature": "OverviewScreen",
|
||||
"message": "테스트 실행 중 치명적 오류: TestSetupError: 테스트 환경 설정 실패 ({error: Bad state: GetIt: Object/factory with type DashboardService is not registered inside GetIt. \n(Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance;\nDid you forget to register it?), sessionId: OverviewScreen_1754375317790})"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"screenName": "EquipmentOutScreen",
|
||||
"passed": true,
|
||||
"duration": 107,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"startTime": "2025-08-05T15:28:37.801897",
|
||||
"endTime": "2025-08-05T15:28:37.909736",
|
||||
"failures": []
|
||||
}
|
||||
],
|
||||
"exitCode": 1
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
# SUPERPORT 마스터 테스트 리포트
|
||||
|
||||
## 📊 실행 개요
|
||||
- **테스트 날짜**: 2025-08-05 15:30:40.657069
|
||||
- **총 소요시간**: 0초
|
||||
- **실행 모드**: 병렬
|
||||
- **환경**: Production API (https://api-dev.beavercompany.co.kr)
|
||||
|
||||
## 📈 전체 결과
|
||||
| 항목 | 수치 |
|
||||
|------|------|
|
||||
| 전체 화면 | 4개 |
|
||||
| ✅ 성공 | 4개 |
|
||||
| ❌ 실패 | 0개 |
|
||||
| 📊 성공률 | 100.0% |
|
||||
|
||||
## 📋 화면별 결과
|
||||
|
||||
| 화면 | 상태 | 테스트 수 | 성공 | 실패 | 소요시간 |
|
||||
|------|------|-----------|------|------|----------|
|
||||
| EquipmentInScreen | ✅ | 0 | 0 | 0 | 0초 |
|
||||
| LicenseScreen | ✅ | 0 | 0 | 0 | 0초 |
|
||||
| OverviewScreen | ✅ | 0 | 0 | 0 | 0초 |
|
||||
| EquipmentOutScreen | ✅ | 0 | 0 | 0 | 0초 |
|
||||
|
||||
## ⚡ 성능 분석
|
||||
|
||||
### 가장 느린 테스트 (Top 5)
|
||||
| 순위 | 화면 | 소요시간 |
|
||||
|------|------|----------|
|
||||
| 1 | EquipmentInScreen | 0초 |
|
||||
| 2 | OverviewScreen | 0초 |
|
||||
| 3 | LicenseScreen | 0초 |
|
||||
| 4 | EquipmentOutScreen | 0초 |
|
||||
|
||||
## 💡 권장사항
|
||||
|
||||
- **병렬 실행 효율성**: 8.3%
|
||||
- 더 높은 병렬 처리 수준을 고려해보세요 (현재: 3)
|
||||
|
||||
---
|
||||
*이 리포트는 자동으로 생성되었습니다.*
|
||||
*생성 시간: 2025-08-05 15:30:40.657572*
|
||||
283
test_reports/master_test_report_2025-08-05T15-30-40.661677.html
Normal file
283
test_reports/master_test_report_2025-08-05T15-30-40.661677.html
Normal file
@@ -0,0 +1,283 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SUPERPORT 테스트 리포트 - SUPERPORT Master Test Suite</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.report-header {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.report-header h1 {
|
||||
font-size: 2.5em;
|
||||
margin-bottom: 10px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.header-info {
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.header-info span {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
section {
|
||||
background: white;
|
||||
padding: 30px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.8em;
|
||||
margin-bottom: 20px;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.summary-cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.card {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
|
||||
.card.total { background: #e3f2fd; color: #1976d2; }
|
||||
.card.success { background: #e8f5e9; color: #388e3c; }
|
||||
.card.failure { background: #ffebee; color: #d32f2f; }
|
||||
.card.skipped { background: #fff3e0; color: #f57c00; }
|
||||
|
||||
.card-value {
|
||||
font-size: 2.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.card-label {
|
||||
font-size: 0.9em;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
height: 30px;
|
||||
background: #e0e0e0;
|
||||
border-radius: 15px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
background: linear-gradient(90deg, #4caf50, #45a049);
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.failure-item {
|
||||
border: 1px solid #ffcdd2;
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 15px;
|
||||
background: #ffebee;
|
||||
}
|
||||
|
||||
.failure-item h3 {
|
||||
color: #c62828;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.failure-message {
|
||||
background: #fff;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
overflow-x: auto;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
details {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
summary {
|
||||
cursor: pointer;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.stack-trace {
|
||||
background: #f5f5f5;
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.8em;
|
||||
overflow-x: auto;
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
text-align: left;
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f5f5f5;
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
td.success { color: #388e3c; }
|
||||
td.failure { color: #d32f2f; }
|
||||
|
||||
.fix-item {
|
||||
border-radius: 4px;
|
||||
padding: 15px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fix-item.success {
|
||||
background: #e8f5e9;
|
||||
border: 1px solid #c8e6c9;
|
||||
}
|
||||
|
||||
.fix-item.failure {
|
||||
background: #ffebee;
|
||||
border: 1px solid #ffcdd2;
|
||||
}
|
||||
|
||||
.fix-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.fix-type {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.env-table {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.env-key {
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.report-footer {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="report-header">
|
||||
<h1>🚀 SUPERPORT Master Test Suite</h1>
|
||||
<div class="header-info">
|
||||
<span class="date">생성 시간: 2025-08-05 15:30:40.661864</span>
|
||||
<span class="duration">소요 시간: 0초</span>
|
||||
</div>
|
||||
</header>
|
||||
<section class="summary">
|
||||
<h2>📊 테스트 요약</h2>
|
||||
<div class="summary-cards">
|
||||
<div class="card total">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">전체 테스트</div>
|
||||
</div>
|
||||
<div class="card success">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">성공</div>
|
||||
</div>
|
||||
<div class="card failure">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">실패</div>
|
||||
</div>
|
||||
<div class="card skipped">
|
||||
<div class="card-value">0</div>
|
||||
<div class="card-label">건너뜀</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" style="width: 0.0%"></div>
|
||||
<div class="progress-text">성공률: 0.0%</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="environment">
|
||||
<h2>⚙️ 테스트 환경</h2>
|
||||
<table class="env-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="env-key">platform</td>
|
||||
<td class="env-value">Flutter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">api</td>
|
||||
<td class="env-value">https://api-dev.beavercompany.co.kr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">mode</td>
|
||||
<td class="env-value">parallel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="env-key">maxParallel</td>
|
||||
<td class="env-value">3</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
<footer class="report-footer">
|
||||
<p>이 리포트는 SUPERPORT 자동화 테스트 시스템에 의해 생성되었습니다.</p>
|
||||
<p>생성 시간: 2025-08-05 15:30:40.663309</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"metadata": {
|
||||
"testSuite": "SUPERPORT Master Test Suite",
|
||||
"timestamp": "2025-08-05T15:30:40.664362",
|
||||
"duration": 330,
|
||||
"environment": {
|
||||
"platform": "Flutter",
|
||||
"api": "https://api-dev.beavercompany.co.kr",
|
||||
"executionMode": "parallel"
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"totalScreens": 4,
|
||||
"passedScreens": 4,
|
||||
"failedScreens": 0,
|
||||
"successRate": "100.0"
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"screenName": "EquipmentInScreen",
|
||||
"passed": true,
|
||||
"duration": 120,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"startTime": "2025-08-05T15:30:40.491947",
|
||||
"endTime": "2025-08-05T15:30:40.612195",
|
||||
"failures": []
|
||||
},
|
||||
{
|
||||
"screenName": "LicenseScreen",
|
||||
"passed": true,
|
||||
"duration": 101,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"startTime": "2025-08-05T15:30:40.494624",
|
||||
"endTime": "2025-08-05T15:30:40.596613",
|
||||
"failures": []
|
||||
},
|
||||
{
|
||||
"screenName": "OverviewScreen",
|
||||
"passed": true,
|
||||
"duration": 118,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"startTime": "2025-08-05T15:30:40.495953",
|
||||
"endTime": "2025-08-05T15:30:40.614556",
|
||||
"failures": []
|
||||
},
|
||||
{
|
||||
"screenName": "EquipmentOutScreen",
|
||||
"passed": true,
|
||||
"duration": 55,
|
||||
"totalTests": 0,
|
||||
"passedTests": 0,
|
||||
"failedTests": 0,
|
||||
"startTime": "2025-08-05T15:30:40.596817",
|
||||
"endTime": "2025-08-05T15:30:40.652122",
|
||||
"failures": []
|
||||
}
|
||||
],
|
||||
"exitCode": 0
|
||||
}
|
||||
Reference in New Issue
Block a user