test: 통합 테스트 오류 및 경고 수정
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled

- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정
- 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:
JiWoong Sul
2025-08-05 20:24:05 +09:00
parent d6f34c0a52
commit 198aac6525
145 changed files with 41527 additions and 5220 deletions

View 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>

View 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": []
}

View 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에 자동 생성되었습니다.*

View 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>

View 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>

View 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": []
}

View 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": []
}

View 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에 자동 생성되었습니다.*

View 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에 자동 생성되었습니다.*

View File

@@ -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*

View 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)
&lt;asynchronous suspension&gt;
#1 BaseScreenTest.runTests (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/screens/base/base_screen_test.dart:138:7)
&lt;asynchronous suspension&gt;
#2 MasterTestSuite._runSingleTest (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:345:26)
&lt;asynchronous suspension&gt;
#3 _Semaphore.run (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:765:14)
&lt;asynchronous suspension&gt;
#4 Future.wait.&lt;anonymous closure&gt; (dart:async/future.dart:525:21)
&lt;asynchronous suspension&gt;
#5 MasterTestSuite._runTestsInParallel (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:313:21)
&lt;asynchronous suspension&gt;
#6 MasterTestSuite.runAllTests (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:160:9)
&lt;asynchronous suspension&gt;
#7 main.&lt;anonymous closure&gt;.&lt;anonymous closure&gt; (file:///Users/maximilian.j.sul/Documents/flutter/superport/test/integration/automated/master_test_suite.dart:815:7)
&lt;asynchronous suspension&gt;
#8 Declarer.test.&lt;anonymous closure&gt;.&lt;anonymous closure&gt; (package:test_api/src/backend/declarer.dart:229:9)
&lt;asynchronous suspension&gt;
#9 Declarer.test.&lt;anonymous closure&gt; (package:test_api/src/backend/declarer.dart:227:7)
&lt;asynchronous suspension&gt;
#10 Invoker._waitForOutstandingCallbacks.&lt;anonymous closure&gt; (package:test_api/src/backend/invoker.dart:258:9)
&lt;asynchronous suspension&gt;
</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>

View File

@@ -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
}

View File

@@ -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*

View 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>

View File

@@ -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
}