@ihyeon/flow-qa 0.1.0-alpha.2 → 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 +2 -2
- package/README.md +1 -1
- package/dist/src/report.js +9 -2
- package/dist/src/ui/server.js +3 -2
- package/docs/releases.md +31 -0
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
|
|
12
12
|
## 로컬 데모 시작
|
|
13
13
|
|
|
14
|
-
Node.js 24 이상이 필요합니다. 패키지는 `@ihyeon/flow-qa@0.1.0-alpha.
|
|
14
|
+
Node.js 24 이상이 필요합니다. 패키지는 `@ihyeon/flow-qa@0.1.0-alpha.3`입니다. 브라우저는 첫 실행 전에 설치합니다.
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
|
-
npm install -g @ihyeon/flow-qa@0.1.0-alpha.
|
|
17
|
+
npm install -g @ihyeon/flow-qa@0.1.0-alpha.3
|
|
18
18
|
flow-qa browser install
|
|
19
19
|
flow-qa ui --demo
|
|
20
20
|
```
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Flow QA turns a user flow into reviewable test cases, runs them in a real browse
|
|
|
14
14
|
Requires Node.js 24 or later. Install Chromium before the first run:
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
|
-
npm install -g @ihyeon/flow-qa@0.1.0-alpha.
|
|
17
|
+
npm install -g @ihyeon/flow-qa@0.1.0-alpha.3
|
|
18
18
|
flow-qa browser install
|
|
19
19
|
flow-qa ui --demo
|
|
20
20
|
```
|
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,9 +1,40 @@
|
|
|
1
1
|
# Alpha release and verification
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.3
|
|
4
|
+
|
|
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
|
+
|
|
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
|
+
|
|
3
32
|
## 0.1.0-alpha.2
|
|
4
33
|
|
|
5
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.
|
|
6
35
|
|
|
36
|
+
The verification record and reproduction commands below describe alpha.2. Use its matching source tag when reproducing that historical release.
|
|
37
|
+
|
|
7
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.
|
|
8
39
|
|
|
9
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
|