@unotest/viewer 0.6.2 → 0.9.1
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/CHANGELOG.md +54 -0
- package/dist/server/main.d.ts +30 -8
- package/dist/server/main.js +1 -1
- package/dist/web/assets/DslEditor-DBQtlhBZ.css +1 -0
- package/dist/web/assets/DslEditor-zB5InaLf.js +4 -0
- package/dist/web/assets/codicon-DCmgc-ay.ttf +0 -0
- package/dist/web/assets/editor.worker-ocd_pgt2.js +2 -0
- package/dist/web/assets/index-DJW8nS7t.css +32 -0
- package/dist/web/assets/index-DKOdLwrE.js +55 -0
- package/dist/web/index.html +2 -2
- package/package.json +8 -20
- package/dist/web/assets/index-B9jLOAmW.css +0 -32
- package/dist/web/assets/index-BRldde9E.js +0 -54
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@unotest/viewer` are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.9.1] - 2026-06-14
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **System console.** The System inspector tab is now a Chrome-style console:
|
|
10
|
+
the agent's MCP tool calls stream in (name + args, then duration + ok/err, with
|
|
11
|
+
expandable args/result JSON, pretty-printed and syntax-highlighted), and a `>`
|
|
12
|
+
input lets the human run a read-only locator `probe` against the live debug
|
|
13
|
+
page — same result as the agent's `check_locator`.
|
|
14
|
+
- **Run breakpoints in the editor gutter.** The live run's active breakpoints
|
|
15
|
+
(including a `run_test --breakpoints` override that isn't persisted in
|
|
16
|
+
`.debugger.json`) now paint glyph dots, so the gutter shows where the run pauses.
|
|
17
|
+
- **"Copy link" in the scenario tree context menu** — copies the node's
|
|
18
|
+
project-relative path (`unotest/e2e/<…>`) to the clipboard for easy sharing.
|
|
19
|
+
- **Theme switcher** and **target/doctor** stores for app-target setup.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- **Probe result no longer hangs on "probing…".** The probe row is now an
|
|
24
|
+
`observer`, so the runner's reply repaints it (the parent only reads the
|
|
25
|
+
entry's timestamp/id, so a status flip wasn't triggering a re-render).
|
|
26
|
+
- **Aborted-mid-step runs stop pulsing.** A step still open when a run is aborted
|
|
27
|
+
was left in `running` state and its dot pulsed forever; the trace now demotes
|
|
28
|
+
it to `aborted`, and `aggregateStatus` treats `aborted` as terminal rather than
|
|
29
|
+
pending (which had made the parent re-pulse).
|
|
30
|
+
|
|
31
|
+
## [0.9.0] - 2026-06-11
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- **Folder + scenario management in the tree.** Right-click context menu — New
|
|
36
|
+
scenario, New folder, Copy, Paste, Rename, Delete — with arbitrary folder
|
|
37
|
+
nesting, a clipboard, inline rename, and keyboard shortcuts (F2 / ⌘C / ⌘V).
|
|
38
|
+
Collapse/expand state persists across reloads.
|
|
39
|
+
- **Breakpoints in the code editor.** Click the Monaco glyph margin to set/clear
|
|
40
|
+
a breakpoint on a statement; dots render in the gutter and persist to
|
|
41
|
+
`.debugger.json` (picked up by the next Debug run).
|
|
42
|
+
- **Split inspector tabs.** System (the runner log stream) vs Console (the
|
|
43
|
+
page's browser console from `console.json`); a Chrome-style Network table
|
|
44
|
+
(name / status / type / size / time) from `network.json`. Both read per-run
|
|
45
|
+
artifacts, so they work on any run, not only failures.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- The run view defaults to **Steps** for a plain Run and **Code** for Debug /
|
|
50
|
+
agent / authoring sessions.
|
|
51
|
+
- Scenario tree rows show just the filename; the active scenario is highlighted.
|
|
52
|
+
- The Vars inspector puts name + value on one line.
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- The steps tree now follows the live editable source in authoring sessions
|
|
57
|
+
(it was parsing the frozen run snapshot, so edits/recordings didn't appear).
|
|
58
|
+
|
|
5
59
|
## [0.6.2] - 2026-06-05
|
|
6
60
|
|
|
7
61
|
### Changed
|
package/dist/server/main.d.ts
CHANGED
|
@@ -1,18 +1,40 @@
|
|
|
1
|
-
import { IRunnerAdapter } from '@unotest/protocol';
|
|
1
|
+
import { IRunnerAdapter, IDslLanguageService, IProcessLauncher } from '@unotest/protocol';
|
|
2
|
+
|
|
3
|
+
interface RunnerEntry {
|
|
4
|
+
/** Short target id derived from the runner package name —
|
|
5
|
+
* `web`/`mobile`/`unity`. Drives the UI switcher and per-target tree
|
|
6
|
+
* scoping. */
|
|
7
|
+
readonly target: string;
|
|
8
|
+
readonly adapter: IRunnerAdapter;
|
|
9
|
+
readonly dsl: IDslLanguageService;
|
|
10
|
+
}
|
|
2
11
|
|
|
3
12
|
interface StartViewerOptions {
|
|
4
13
|
/** Absolute path to the project root (the dir containing `unotest/`). */
|
|
5
14
|
projectRoot: string;
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
15
|
+
/** Explicit runner entries from the launcher. Optional — when omitted
|
|
16
|
+
* the viewer relies purely on auto-detection. A launcher passes its own
|
|
17
|
+
* entry when it carries project-specific config (e.g. `@unotest/web`'s
|
|
18
|
+
* viewer-launcher builds a dsl service with per-project linter
|
|
19
|
+
* severities). Explicit entries win per target id; auto-detected
|
|
20
|
+
* runners (mobile/unity, if installed) are merged in. The viewer NEVER
|
|
21
|
+
* statically imports a concrete runner — DIP boundary. */
|
|
22
|
+
runners?: readonly RunnerEntry[];
|
|
23
|
+
/** Target id selected at boot (`web`/`mobile`/…). Defaults to the first
|
|
24
|
+
* available runner. */
|
|
25
|
+
activeTarget?: string;
|
|
12
26
|
/** Port to bind. `0` = OS picks a free port. Default 0. */
|
|
13
27
|
port?: number;
|
|
14
28
|
/** Host to bind. Default 'localhost' (loopback only). */
|
|
15
29
|
host?: string;
|
|
30
|
+
/** Process launcher — HOW the runner subprocess is spawned. Optional;
|
|
31
|
+
* defaults to the current Node (`NodeProcessLauncher`). The Electron
|
|
32
|
+
* studio passes a utilityProcess-backed launcher. */
|
|
33
|
+
launcher?: IProcessLauncher;
|
|
34
|
+
/** Absolute dirs prepended to `PATH` in docked-terminal sessions (studio
|
|
35
|
+
* injects its bundled `node` + runner bin so terminal commands resolve
|
|
36
|
+
* without a system install). */
|
|
37
|
+
terminalPathPrefix?: readonly string[];
|
|
16
38
|
}
|
|
17
39
|
interface ViewerHandle {
|
|
18
40
|
url: string;
|
|
@@ -22,4 +44,4 @@ interface ViewerHandle {
|
|
|
22
44
|
* `await import('@unotest/viewer/server').startViewerServer({...})`. */
|
|
23
45
|
declare function startViewerServer(opts: StartViewerOptions): Promise<ViewerHandle>;
|
|
24
46
|
|
|
25
|
-
export { type StartViewerOptions, type ViewerHandle, startViewerServer };
|
|
47
|
+
export { type RunnerEntry, type StartViewerOptions, type ViewerHandle, startViewerServer };
|