@ihyeon/flow-qa 0.8.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/dist/src/ui/public/app.js +4 -0
- package/dist/src/ui/public/i18n.js +1 -0
- package/docs/mobile.md +1 -1
- package/docs/releases.md +9 -0
- package/docs/ui.md +2 -2
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -16,7 +16,7 @@ CLI와 `127.0.0.1` 전용 웹 UI를 제공합니다. UI는 영어로 시작하
|
|
|
16
16
|
Node.js 24.x(24.22.1 이상) 또는 26.12.1 이상이 필요합니다. 브라우저는 첫 웹 실행 전에 설치합니다.
|
|
17
17
|
|
|
18
18
|
```sh
|
|
19
|
-
npm install -g @ihyeon/flow-qa@0.8.
|
|
19
|
+
npm install -g @ihyeon/flow-qa@0.8.2
|
|
20
20
|
flow-qa browser install
|
|
21
21
|
flow-qa ui --demo
|
|
22
22
|
```
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Flow QA is available as a CLI and a web UI bound to `127.0.0.1`. Provide a targe
|
|
|
16
16
|
Node.js 24.x (24.22.1 or later) or 26.12.1 or later is required. Install Chromium before the first web run:
|
|
17
17
|
|
|
18
18
|
```sh
|
|
19
|
-
npm install -g @ihyeon/flow-qa@0.8.
|
|
19
|
+
npm install -g @ihyeon/flow-qa@0.8.2
|
|
20
20
|
flow-qa browser install
|
|
21
21
|
flow-qa ui --demo
|
|
22
22
|
```
|
|
@@ -716,6 +716,10 @@
|
|
|
716
716
|
const attemptCount = (item.attempts || []).length;
|
|
717
717
|
const attemptCountLabel = t(attemptCount === 1 ? 'report.attemptCountSingular' : 'report.attemptCountPlural', { count: attemptCount });
|
|
718
718
|
const section = el('section', 'case-report'); section.append(el('h3', '', `${item.id} · ${item.title} · ${i18n.status(item.status)} · ${attemptCountLabel}`));
|
|
719
|
+
if (Array.isArray(item.attempts) && item.attempts.length > 0 && item.attempts.every((attempt) => typeof attempt?.durationMs === 'number' && Number.isFinite(attempt.durationMs) && attempt.durationMs >= 0)) {
|
|
720
|
+
const totalAttemptTime = item.attempts.reduce((total, attempt) => total + attempt.durationMs, 0);
|
|
721
|
+
if (Number.isFinite(totalAttemptTime)) section.append(el('p', 'hint case-attempt-time', t('report.totalAttemptTime', { duration: totalAttemptTime })));
|
|
722
|
+
}
|
|
719
723
|
if (item.reason) section.append(el('p', '', t('app.reason', { reason: item.reason })));
|
|
720
724
|
section.append(el('p', '', t('app.expected'))); const expected = el('ul', 'compact-list'); for (const check of item.expected || []) expected.append(el('li', '', check)); section.append(expected);
|
|
721
725
|
for (const [attemptIndex, attempt] of (item.attempts || []).entries()) {
|
|
@@ -152,6 +152,7 @@
|
|
|
152
152
|
'report.caseCount': ['Showing {shown} of {total} report cases', '보고서 케이스 {total}개 중 {shown}개 표시'],
|
|
153
153
|
'report.attemptCountSingular': ['{count} attempt', '시도 {count}회'],
|
|
154
154
|
'report.attemptCountPlural': ['{count} attempts', '시도 {count}회'],
|
|
155
|
+
'report.totalAttemptTime': ['Total attempt time: {duration}ms', '시도 시간 합계: {duration}ms'],
|
|
155
156
|
'report.empty': ['This report has no cases.', '이 보고서에는 케이스가 없습니다.'],
|
|
156
157
|
'report.noMatches': ['No cases match these filters.', '필터에 맞는 케이스가 없습니다.'],
|
|
157
158
|
'report.filterHint': ['Filters only change the displayed cases. Downloads include all cases, and failed/error preparation uses all recorded failed/error cases regardless of visibility.', '필터는 표시되는 케이스에만 적용됩니다. 다운로드에는 모든 케이스가 포함되고, 실패·오류 준비에는 표시 여부와 관계없이 기록된 모든 실패·오류 케이스가 사용됩니다.'],
|
package/docs/mobile.md
CHANGED
|
@@ -9,7 +9,7 @@ Choose **Mobile** on the scenario screen, describe the flow, and generate or dow
|
|
|
9
9
|
With the installed CLI:
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
npm install -g @ihyeon/flow-qa@0.8.
|
|
12
|
+
npm install -g @ihyeon/flow-qa@0.8.2
|
|
13
13
|
flow-qa init ./my-qa
|
|
14
14
|
# Write your mobile flow in my-qa/flows/my-flow.md first.
|
|
15
15
|
flow-qa plan flows/my-flow.md --platform mobile --prompt-only --workspace ./my-qa
|
package/docs/releases.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
The alpha entries below are historical release records. They document earlier package versions and checks.
|
|
4
4
|
|
|
5
|
+
## 0.8.2: show total recorded attempt time per case
|
|
6
|
+
|
|
7
|
+
Detailed report cases now show **Total attempt time**, summing saved attempt durations in milliseconds. The total includes all recorded attempts and supports English/Korean labels. No attempts, incomplete/invalid timing, or a non-finite sum omits the total; a valid measured zero remains visible. This is recorded attempt time, not overall elapsed run time. Search/filter behavior, report exports, and execution remain unchanged.
|
|
8
|
+
|
|
9
|
+
Locally verified on macOS with Node.js 24.22.1 on 2026-11-07 (Asia/Tokyo): 118 tests, type checking, UI syntax/design-system audit, the report-explorer browser smoke, and package checks passed. Browser fixtures covered single/multiple attempt totals, valid zero, no attempts, missing/negative/string/null timing, overflow, English/Korean, and a 390px layout. A fresh tarball installation ran seven passing browser cases and checked the total against the recorded duration in the installed UI. No model calls, external logins, or native-device runs were used.
|
|
10
|
+
|
|
11
|
+
- Package: [`@ihyeon/flow-qa@0.8.2`](https://www.npmjs.com/package/@ihyeon/flow-qa/v/0.8.2)
|
|
12
|
+
- Release: [GitHub 0.8.2](https://github.com/hyeonse-swing/flow-qa/releases/tag/v0.8.2)
|
|
13
|
+
|
|
5
14
|
## 0.8.1: show recorded attempt counts in report headings
|
|
6
15
|
|
|
7
16
|
Detailed report case headings now show their recorded attempt count, including zero, with English singular/plural and Korean labels. This makes repeated or absent attempts visible before reading the attempt details. The count uses only the saved attempt list; case status, search/filter behavior, evidence links, report exports, and execution remain unchanged.
|
package/docs/ui.md
CHANGED
|
@@ -7,7 +7,7 @@ Describe a user flow, review cases, and configure a target when ready to run. We
|
|
|
7
7
|
Node.js 24.x (24.22.1 or later) or 26.12.1 or later is required. Node 25 is unsupported. Upgrade the Node runtime and restart any running UI process; updating Flow QA alone does not patch Node. Install Flow QA and start the web demo:
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
npm install -g @ihyeon/flow-qa@0.8.
|
|
10
|
+
npm install -g @ihyeon/flow-qa@0.8.2
|
|
11
11
|
flow-qa browser install
|
|
12
12
|
flow-qa ui --demo
|
|
13
13
|
```
|
|
@@ -80,7 +80,7 @@ When recent run records change, a single loaded page refreshes automatically. If
|
|
|
80
80
|
|
|
81
81
|
### Explore cases in a report
|
|
82
82
|
|
|
83
|
-
From `0.8.1`, each case heading also shows the number of attempts recorded in that report. Zero attempts is shown explicitly. This count does not infer a retry policy or change the recorded case status.
|
|
83
|
+
From `0.8.1`, each case heading also shows the number of attempts recorded in that report. Zero attempts is shown explicitly. This count does not infer a retry policy or change the recorded case status. From `0.8.2`, **Total attempt time** sums the recorded attempt durations in milliseconds. It is not the overall elapsed run time. The total is shown only when at least one attempt exists and every duration is a finite, nonnegative number; incomplete/invalid timing is omitted, while a recorded total of zero is shown.
|
|
84
84
|
|
|
85
85
|
From `0.8.0`, open **Run history → Detailed report** and use **Search cases** with **Case status** to narrow the displayed results. Search ignores case and surrounding whitespace, and matches case IDs, titles, reasons, expected results, attempt errors, secondary errors, step labels, and step errors. User-written Korean text is supported. Artifact paths and translated status labels are not search fields.
|
|
86
86
|
|