@ihyeon/flow-qa 0.1.0-alpha.1 → 0.1.0-alpha.3
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 +4 -3
- package/README.md +3 -2
- package/dist/src/report.js +9 -2
- package/dist/src/ui/server.js +3 -2
- package/docs/releases.md +38 -6
- package/docs/ui.md +1 -1
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -8,14 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
11
|
-
[1분 데모 영상](https://github.com/hyeonse-swing/flow-qa/releases/download/v0.1.0-alpha.1/flow-qa-demo.mp4) · 로컬 할 일 앱에서 예제 불러오기 → 케이스 검토 → 실제 Chromium 실행 → 리포트 확인. 영상은 모델 없이 고정된 세 케이스를 실행합니다.
|
|
12
11
|
|
|
13
12
|
## 로컬 데모 시작
|
|
14
13
|
|
|
15
|
-
Node.js 24 이상이 필요합니다. 패키지는 `@ihyeon/flow-qa@0.1.0-alpha.
|
|
14
|
+
Node.js 24 이상이 필요합니다. 패키지는 `@ihyeon/flow-qa@0.1.0-alpha.3`입니다. 브라우저는 첫 실행 전에 설치합니다.
|
|
16
15
|
|
|
17
16
|
```sh
|
|
18
|
-
npm install -g @ihyeon/flow-qa@0.1.0-alpha.
|
|
17
|
+
npm install -g @ihyeon/flow-qa@0.1.0-alpha.3
|
|
19
18
|
flow-qa browser install
|
|
20
19
|
flow-qa ui --demo
|
|
21
20
|
```
|
|
@@ -67,6 +66,8 @@ flow-qa plan flows/my-flow.md --workspace my-qa
|
|
|
67
66
|
|
|
68
67
|
리포트와 원본 증거에는 테스트 앱의 데이터가 포함될 수 있습니다. `.flowqa/`는 Git에서 제외되지만 외부 공유 전에는 내용을 확인하세요. 마스킹이 모든 개인정보를 탐지한다고 보장하지 않습니다. 세션 준비, 모바일 기기, 예약 CI 실행, 팀 권한과 공유 서버는 이 알파의 지원 범위 밖입니다.
|
|
69
68
|
|
|
69
|
+

|
|
70
|
+
|
|
70
71
|
## 구현과 출처
|
|
71
72
|
|
|
72
73
|
Flow QA가 구현한 부분은 플로우·케이스 스키마, 설계 모델 연결, 컴파일, 실행 조율, 결과 해석과 로컬 UI입니다. 실제 브라우저 테스트 엔진은 [tester-army/e2e](https://github.com/tester-army/e2e)와 관련 패키지를 의존성으로 사용합니다. UI는 [Hyeonse Design System](https://github.com/hyeonse-swing/hyeonse-design-system)의 스타일 토큰과 선호 설정 유틸을 사용하며 화면 구성은 이 프로젝트에서 작성했습니다. [제3자 고지](https://github.com/hyeonse-swing/flow-qa/blob/main/THIRD_PARTY_NOTICES.md)와 [아키텍처](https://github.com/hyeonse-swing/flow-qa/blob/main/docs/architecture.md)에 경계를 자세히 적었습니다.
|
package/README.md
CHANGED
|
@@ -8,14 +8,13 @@ Flow QA turns a user flow into reviewable test cases, runs them in a real browse
|
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
11
|
-
[Watch the one-minute demo](https://github.com/hyeonse-swing/flow-qa/releases/download/v0.1.0-alpha.1/flow-qa-demo.mp4) · Load a local to-do app example, review its cases, run them in Chromium, and inspect the report. The 67-second recording uses the English UI, runs three fixed cases without a model, and demonstrates switching to Korean.
|
|
12
11
|
|
|
13
12
|
## Try the local demo
|
|
14
13
|
|
|
15
14
|
Requires Node.js 24 or later. Install Chromium before the first run:
|
|
16
15
|
|
|
17
16
|
```sh
|
|
18
|
-
npm install -g @ihyeon/flow-qa@0.1.0-alpha.
|
|
17
|
+
npm install -g @ihyeon/flow-qa@0.1.0-alpha.3
|
|
19
18
|
flow-qa browser install
|
|
20
19
|
flow-qa ui --demo
|
|
21
20
|
```
|
|
@@ -67,6 +66,8 @@ For authenticated models, add `--key-env FLOW_QA_API_KEY` to the model command a
|
|
|
67
66
|
|
|
68
67
|
Reports and raw evidence can contain data from the tested app. `.flowqa/` is Git-ignored, but inspect files before sharing them. Redaction cannot be assumed to catch every personal detail. Session setup, mobile devices, scheduled CI runs, team permissions, and a shared server are outside this alpha's scope.
|
|
69
68
|
|
|
69
|
+

|
|
70
|
+
|
|
70
71
|
## Implementation and credits
|
|
71
72
|
|
|
72
73
|
Flow QA owns the flow and case schema, planner integration, compilation, run orchestration, result interpretation, and local UI. [tester-army/e2e](https://github.com/tester-army/e2e) and related packages provide the browser test engine. The UI uses style tokens and preference utilities from [Hyeonse Design System](https://github.com/hyeonse-swing/hyeonse-design-system); this project's workflow screens are its own implementation. See the [third-party notices](https://github.com/hyeonse-swing/flow-qa/blob/main/THIRD_PARTY_NOTICES.md) and [architecture](https://github.com/hyeonse-swing/flow-qa/blob/main/docs/architecture.md) for those boundaries.
|
package/dist/src/report.js
CHANGED
|
@@ -166,11 +166,18 @@ export function normalizeReport1(raw, context) {
|
|
|
166
166
|
const attempts = array(result.attempts, 'result.attempts').map((attempt) => normalizeAttempt(attempt, context.rawDir));
|
|
167
167
|
if (status !== 'skipped' && attempts.length === 0)
|
|
168
168
|
throw new Error(`Test result has no attempts: ${id}`);
|
|
169
|
-
|
|
169
|
+
const finalAttemptStatus = attempts.at(-1)?.status;
|
|
170
|
+
if (status === 'passed' && (attempts.length !== 1 || attempts[0]?.index !== 0 || finalAttemptStatus !== 'passed')) {
|
|
170
171
|
throw new Error(`Passed status and attempts disagree: ${id}`);
|
|
171
|
-
|
|
172
|
+
}
|
|
173
|
+
if (status === 'flaky' && (attempts.length < 2 || finalAttemptStatus !== 'passed'
|
|
174
|
+
|| attempts.some((attempt, index) => attempt.index !== index
|
|
175
|
+
|| (index < attempts.length - 1 && attempt.status !== 'failed' && attempt.status !== 'timed-out')))) {
|
|
172
176
|
throw new Error(`Flaky status and attempts disagree: ${id}`);
|
|
173
177
|
}
|
|
178
|
+
if ((status === 'failed' || status === 'timed-out') && finalAttemptStatus === 'passed') {
|
|
179
|
+
throw new Error(`Failed or timed-out status and attempts disagree: ${id}`);
|
|
180
|
+
}
|
|
174
181
|
if (context.blockedReasons.has(id) && status !== 'skipped')
|
|
175
182
|
throw new Error(`A blocked case was recorded as executed: ${id}`);
|
|
176
183
|
const skip = result.skip === undefined ? undefined : object(result.skip, 'result.skip');
|
package/dist/src/ui/server.js
CHANGED
|
@@ -753,6 +753,8 @@ export async function startUIServer(options) {
|
|
|
753
753
|
closing = true;
|
|
754
754
|
controller?.abort();
|
|
755
755
|
closeTask = (async () => {
|
|
756
|
+
const stopped = new Promise((resolve, reject) => server.close((error) => error ? reject(error) : resolve()));
|
|
757
|
+
server.closeIdleConnections();
|
|
756
758
|
if (requestTasks.size) {
|
|
757
759
|
let requestTimeout;
|
|
758
760
|
try {
|
|
@@ -765,8 +767,7 @@ export async function startUIServer(options) {
|
|
|
765
767
|
clearTimeout(requestTimeout);
|
|
766
768
|
}
|
|
767
769
|
}
|
|
768
|
-
|
|
769
|
-
server.closeIdleConnections();
|
|
770
|
+
server.closeAllConnections();
|
|
770
771
|
await stopped;
|
|
771
772
|
const pending = runTask;
|
|
772
773
|
if (pending) {
|
package/docs/releases.md
CHANGED
|
@@ -1,11 +1,44 @@
|
|
|
1
1
|
# Alpha release and verification
|
|
2
2
|
|
|
3
|
-
## 0.1.0-alpha.
|
|
3
|
+
## 0.1.0-alpha.3
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
This maintenance release keeps the existing CLI, UI, and case schema. It tightens result validation, bounds UI shutdown, and checks the command that npm installs for consumers.
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
7
|
+
- A result marked `passed` must contain a single first attempt that passed. A passing retry must have a consistent `flaky` history. Contradictory histories are rejected instead of producing a misleading success report.
|
|
8
|
+
- UI shutdown stops accepting connections immediately, allows existing requests up to one second to finish, and then closes remaining HTTP connections. An incomplete JSON request can no longer hold shutdown open. Planner cancellation responses and run cancellation are preserved.
|
|
9
|
+
- Consumer smoke checks verify npm's installed `flow-qa` command and invoke it offline for help, workspace initialization, validation, and runtime diagnostics. The installed UI still runs three real Chromium cases.
|
|
10
|
+
|
|
11
|
+
Both runtime fixes have regression tests that failed before the changes and passed afterward. Verification uses local test data and no model calls; it does not establish external authentication or model quality.
|
|
12
|
+
|
|
13
|
+
Checked on macOS with Node.js 24.14.1 on 2026-10-12: all 47 tests, type checking, UI syntax, and the design-system audit passed. Real Chromium checks preserved normal pass, intentional assertion failure, and unreachable-app classifications. The bilingual UI smoke passed, including report downloads and a 390px viewport. The runtime dependency audit reported zero known vulnerabilities at that time.
|
|
14
|
+
|
|
15
|
+
- Package: [`@ihyeon/flow-qa@0.1.0-alpha.3`](https://www.npmjs.com/package/@ihyeon/flow-qa/v/0.1.0-alpha.3)
|
|
16
|
+
- Source and package: [GitHub alpha release](https://github.com/hyeonse-swing/flow-qa/releases/tag/v0.1.0-alpha.3)
|
|
17
|
+
- Public checks: [GitHub Actions](https://github.com/hyeonse-swing/flow-qa/actions/workflows/ci.yml)
|
|
18
|
+
|
|
19
|
+
To reproduce this release's checks from its source:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
npm ci
|
|
23
|
+
npm run check
|
|
24
|
+
npm run qa -- browser install
|
|
25
|
+
npm run demo:smoke
|
|
26
|
+
npm run smoke:ui
|
|
27
|
+
npm run check:package
|
|
28
|
+
npm run smoke:package
|
|
29
|
+
FLOWQA_PACKAGE_SPEC=@ihyeon/flow-qa@0.1.0-alpha.3 npm run smoke:package
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 0.1.0-alpha.2
|
|
33
|
+
|
|
34
|
+
This update replaces the introductory video link with two UI screenshots. Runtime behavior is unchanged from alpha.1. Media files are not included in the npm tarball.
|
|
35
|
+
|
|
36
|
+
The verification record and reproduction commands below describe alpha.2. Use its matching source tag when reproducing that historical release.
|
|
37
|
+
|
|
38
|
+
This public alpha provides a local CLI and UI, structured case validation, browser-run orchestration, and QA reports linked to evidence. Its bundled to-do app demo runs without a model.
|
|
39
|
+
|
|
40
|
+
- Package: [`@ihyeon/flow-qa@0.1.0-alpha.2`](https://www.npmjs.com/package/@ihyeon/flow-qa/v/0.1.0-alpha.2), with the `alpha` dist-tag
|
|
41
|
+
- Source and package: [GitHub alpha release](https://github.com/hyeonse-swing/flow-qa/releases/tag/v0.1.0-alpha.2)
|
|
9
42
|
- Public checks: [GitHub Actions](https://github.com/hyeonse-swing/flow-qa/actions/workflows/ci.yml)
|
|
10
43
|
|
|
11
44
|
### Local evidence
|
|
@@ -18,7 +51,6 @@ Checked on macOS with Node.js 24.14.1 on 2026-10-08. The English-default and Kor
|
|
|
18
51
|
| Real Chromium | Three normal cases passed; an intentional assertion failure and an unreachable app were classified separately |
|
|
19
52
|
| Package contents | Compiled CLI, UI, demo, and bundled design system included; workspace data, run results, and secret files excluded |
|
|
20
53
|
| Tarball in a fresh consumer workspace | Installed with Git execution disabled; CLI, UI, fonts, and the three actual cases passed |
|
|
21
|
-
| Demo recording | 67.04-second H.264 video of the English UI with a Korean language-switch demonstration; both UI and stored JSON reported three passing cases, and full-video decoding passed |
|
|
22
54
|
| Language behavior in Chromium | English first visit, Korean switching, persisted preference, cross-tab sync, preserved edits and review, live run completion, localized Markdown downloads, and 390px viewport passed |
|
|
23
55
|
| Runtime dependency audit | `npm audit --omit=dev` found no known vulnerabilities at the time of the check |
|
|
24
56
|
|
|
@@ -41,7 +73,7 @@ npm run smoke:package
|
|
|
41
73
|
Check the published registry version separately. The script requires the installed package name and version to match the current `package.json` exactly.
|
|
42
74
|
|
|
43
75
|
```sh
|
|
44
|
-
FLOWQA_PACKAGE_SPEC=@ihyeon/flow-qa@0.1.0-alpha.
|
|
76
|
+
FLOWQA_PACKAGE_SPEC=@ihyeon/flow-qa@0.1.0-alpha.2 npm run smoke:package
|
|
45
77
|
```
|
|
46
78
|
|
|
47
79
|
Registry results are written to `output/package/registry-smoke.json`. GitHub CI checks types and tests, Chromium pass/fail/blocked cases, and tarball installation on Linux; its artifacts contain the check results. Confirm publication and CI independently on the package page and the workflow run for the relevant commit.
|
package/docs/ui.md
CHANGED
|
@@ -7,7 +7,7 @@ Use the target app's URL and a user flow to review cases, run them, and inspect
|
|
|
7
7
|
Node.js 24 or later is required. Install the alpha and start the local demo:
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
npm install -g @ihyeon/flow-qa@0.1.0-alpha.
|
|
10
|
+
npm install -g @ihyeon/flow-qa@0.1.0-alpha.2
|
|
11
11
|
flow-qa browser install
|
|
12
12
|
flow-qa ui --demo
|
|
13
13
|
```
|