@ait-co/devtools 0.1.111 → 0.1.113
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/dist/bundle-KFs4t-wc.d.ts.map +1 -1
- package/dist/mcp/cli.js +58 -22
- package/dist/mcp/cli.js.map +1 -1
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/panel/index.js +1 -1
- package/dist/{pool-Bf6rQci4.d.ts → pool-mZlgCmNQ.d.ts} +2 -2
- package/dist/{pool-Bf6rQci4.d.ts.map → pool-mZlgCmNQ.d.ts.map} +1 -1
- package/dist/{relay-worker-xxanNQGs.d.ts → relay-worker-Dppp2yZj.d.ts} +2 -2
- package/dist/{relay-worker-xxanNQGs.d.ts.map → relay-worker-Dppp2yZj.d.ts.map} +1 -1
- package/dist/{runtime-Wi5d6Ywz.d.ts → runtime-C7uxh3Mf.d.ts} +14 -2
- package/dist/runtime-C7uxh3Mf.d.ts.map +1 -0
- package/dist/test-runner/bundle.js +52 -16
- package/dist/test-runner/bundle.js.map +1 -1
- package/dist/test-runner/cli.js +55 -19
- package/dist/test-runner/cli.js.map +1 -1
- package/dist/test-runner/config.d.ts +2 -2
- package/dist/test-runner/config.js +1 -1
- package/dist/test-runner/config.js.map +1 -1
- package/dist/test-runner/pool.d.ts +1 -1
- package/dist/test-runner/relay-worker.d.ts +1 -1
- package/dist/test-runner/rpc.d.ts +1 -1
- package/dist/test-runner/runtime.d.ts +2 -0
- package/dist/test-runner/runtime.js +162 -0
- package/dist/test-runner/runtime.js.map +1 -0
- package/dist/test-runner/task-graph.d.ts +1 -1
- package/package.json +2 -1
- package/dist/runtime-Wi5d6Ywz.d.ts.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as createRelayPool, n as RelayConnectionFactory, r as RelayPoolOptions, t as RELAY_POOL_NAME } from "../pool-
|
|
1
|
+
import { i as createRelayPool, n as RelayConnectionFactory, r as RelayPoolOptions, t as RELAY_POOL_NAME } from "../pool-mZlgCmNQ.js";
|
|
2
2
|
export { RELAY_POOL_NAME, RelayConnectionFactory, RelayPoolOptions, createRelayPool };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as runTestFilesOverRelay, i as flattenResults, n as RelayRunOptions, r as RelayRunReport, t as FileResult } from "../relay-worker-
|
|
1
|
+
import { a as runTestFilesOverRelay, i as flattenResults, n as RelayRunOptions, r as RelayRunReport, t as FileResult } from "../relay-worker-Dppp2yZj.js";
|
|
2
2
|
export { FileResult, RelayRunOptions, RelayRunReport, flattenResults, runTestFilesOverRelay };
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
//#region src/test-runner/runtime.ts
|
|
2
|
+
/** Thrown by expect matchers on failure. */
|
|
3
|
+
var AssertionError = class extends Error {
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = "AssertionError";
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
/** Minimal expect builder compatible with Vitest's jest-style API. */
|
|
10
|
+
var Expectation = class Expectation {
|
|
11
|
+
#received;
|
|
12
|
+
#negated = false;
|
|
13
|
+
constructor(received) {
|
|
14
|
+
this.#received = received;
|
|
15
|
+
}
|
|
16
|
+
get not() {
|
|
17
|
+
const neg = new Expectation(this.#received);
|
|
18
|
+
neg.#negated = true;
|
|
19
|
+
return neg;
|
|
20
|
+
}
|
|
21
|
+
#assert(pass, msg) {
|
|
22
|
+
if (!(this.#negated ? !pass : pass)) throw new AssertionError(this.#negated ? `Expected NOT: ${msg}` : msg);
|
|
23
|
+
}
|
|
24
|
+
toBe(expected) {
|
|
25
|
+
this.#assert(Object.is(this.#received, expected), `Expected ${String(expected)}, received ${String(this.#received)}`);
|
|
26
|
+
}
|
|
27
|
+
toEqual(expected) {
|
|
28
|
+
this.#assert(JSON.stringify(this.#received) === JSON.stringify(expected), `Expected ${JSON.stringify(expected)}, received ${JSON.stringify(this.#received)}`);
|
|
29
|
+
}
|
|
30
|
+
toBeTruthy() {
|
|
31
|
+
this.#assert(Boolean(this.#received), `Expected truthy, received ${String(this.#received)}`);
|
|
32
|
+
}
|
|
33
|
+
toBeFalsy() {
|
|
34
|
+
this.#assert(!this.#received, `Expected falsy, received ${String(this.#received)}`);
|
|
35
|
+
}
|
|
36
|
+
toBeNull() {
|
|
37
|
+
this.#assert(this.#received === null, `Expected null, received ${String(this.#received)}`);
|
|
38
|
+
}
|
|
39
|
+
toBeUndefined() {
|
|
40
|
+
this.#assert(this.#received === void 0, `Expected undefined, received ${String(this.#received)}`);
|
|
41
|
+
}
|
|
42
|
+
toBeGreaterThan(n) {
|
|
43
|
+
this.#assert(typeof this.#received === "number" && this.#received > n, `Expected > ${n}, received ${String(this.#received)}`);
|
|
44
|
+
}
|
|
45
|
+
toBeLessThan(n) {
|
|
46
|
+
this.#assert(typeof this.#received === "number" && this.#received < n, `Expected < ${n}, received ${String(this.#received)}`);
|
|
47
|
+
}
|
|
48
|
+
toContain(sub) {
|
|
49
|
+
this.#assert(typeof this.#received === "string" && this.#received.includes(sub), `Expected to contain "${sub}", received "${String(this.#received)}"`);
|
|
50
|
+
}
|
|
51
|
+
toThrow(msgFragment) {
|
|
52
|
+
if (typeof this.#received !== "function") throw new AssertionError("toThrow: expected a function");
|
|
53
|
+
let threw = false;
|
|
54
|
+
let errorMsg = "";
|
|
55
|
+
try {
|
|
56
|
+
this.#received();
|
|
57
|
+
} catch (e) {
|
|
58
|
+
threw = true;
|
|
59
|
+
errorMsg = e instanceof Error ? e.message : String(e);
|
|
60
|
+
}
|
|
61
|
+
if (msgFragment !== void 0) this.#assert(threw && errorMsg.includes(msgFragment), `Expected to throw containing "${msgFragment}", got "${errorMsg}"`);
|
|
62
|
+
else this.#assert(threw, "Expected function to throw");
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/** The `expect` function installed as a global. */
|
|
66
|
+
function expect(received) {
|
|
67
|
+
return new Expectation(received);
|
|
68
|
+
}
|
|
69
|
+
const _pendingTests = [];
|
|
70
|
+
const _suiteStack = [];
|
|
71
|
+
/** Registers a suite scope; calls `fn` synchronously to collect inner tests. */
|
|
72
|
+
function describe(name, fn) {
|
|
73
|
+
_suiteStack.push(name);
|
|
74
|
+
fn();
|
|
75
|
+
_suiteStack.pop();
|
|
76
|
+
}
|
|
77
|
+
/** Registers a test. */
|
|
78
|
+
function it(name, fn) {
|
|
79
|
+
_pendingTests.push({
|
|
80
|
+
suitePath: [..._suiteStack],
|
|
81
|
+
name,
|
|
82
|
+
fn,
|
|
83
|
+
skip: false
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/** Alias for `it`. */
|
|
87
|
+
const test = it;
|
|
88
|
+
/** Skipped test — registered but not executed. */
|
|
89
|
+
describe.skip = (name, _fn) => {};
|
|
90
|
+
it.skip = (name, _fn) => {
|
|
91
|
+
_pendingTests.push({
|
|
92
|
+
suitePath: [..._suiteStack],
|
|
93
|
+
name,
|
|
94
|
+
fn: () => {},
|
|
95
|
+
skip: true
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
test.skip = it.skip;
|
|
99
|
+
/**
|
|
100
|
+
* Installs describe/it/test/expect as globals, invokes `moduleFactory` to
|
|
101
|
+
* register the user's tests, then executes them and returns a RunReport.
|
|
102
|
+
*
|
|
103
|
+
* This function is exported as `__testBundle.runTestModule` by the IIFE wrapper
|
|
104
|
+
* that bundle.ts generates. The Node-side rpc.ts calls it via `Runtime.evaluate`.
|
|
105
|
+
*
|
|
106
|
+
* @param moduleFactory - A zero-argument function that contains the user's
|
|
107
|
+
* top-level test code (describe/it/test calls). The bundler wraps the entire
|
|
108
|
+
* test module so that its top-level statements become the body of this factory.
|
|
109
|
+
*/
|
|
110
|
+
async function runTestModule(moduleFactory) {
|
|
111
|
+
_pendingTests.length = 0;
|
|
112
|
+
_suiteStack.length = 0;
|
|
113
|
+
const g = globalThis;
|
|
114
|
+
g.describe = describe;
|
|
115
|
+
g.it = it;
|
|
116
|
+
g.test = test;
|
|
117
|
+
g.expect = expect;
|
|
118
|
+
if (moduleFactory) await moduleFactory();
|
|
119
|
+
const wallStart = Date.now();
|
|
120
|
+
const startedAt = new Date(wallStart).toISOString();
|
|
121
|
+
const results = [];
|
|
122
|
+
for (const pending of _pendingTests) {
|
|
123
|
+
const fullName = [...pending.suitePath, pending.name].join(" > ");
|
|
124
|
+
if (pending.skip) {
|
|
125
|
+
results.push({
|
|
126
|
+
name: fullName,
|
|
127
|
+
status: "skip",
|
|
128
|
+
duration: 0
|
|
129
|
+
});
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const tStart = Date.now();
|
|
133
|
+
try {
|
|
134
|
+
await pending.fn();
|
|
135
|
+
results.push({
|
|
136
|
+
name: fullName,
|
|
137
|
+
status: "pass",
|
|
138
|
+
duration: Date.now() - tStart
|
|
139
|
+
});
|
|
140
|
+
} catch (e) {
|
|
141
|
+
const errorMsg = e instanceof Error ? e.message : String(e);
|
|
142
|
+
results.push({
|
|
143
|
+
name: fullName,
|
|
144
|
+
status: "fail",
|
|
145
|
+
duration: Date.now() - tStart,
|
|
146
|
+
error: errorMsg
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
startedAt,
|
|
152
|
+
duration: Date.now() - wallStart,
|
|
153
|
+
passed: results.filter((r) => r.status === "pass").length,
|
|
154
|
+
failed: results.filter((r) => r.status === "fail").length,
|
|
155
|
+
skipped: results.filter((r) => r.status === "skip").length,
|
|
156
|
+
tests: results
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//#endregion
|
|
160
|
+
export { runTestModule };
|
|
161
|
+
|
|
162
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","names":["#received","#negated","#assert"],"sources":["../../src/test-runner/runtime.ts"],"sourcesContent":["/**\n * Thin test runtime for WebView execution.\n *\n * This file is bundled by `bundle.ts` together with the user's test file\n * into a single IIFE injected into the WebView via `Runtime.evaluate`.\n * It MUST stay browser-compatible — no Node.js APIs allowed.\n *\n * Design: rather than shipping @vitest/runner verbatim into a WebView (where\n * its Node-side internals cause issues), this runtime provides a minimal\n * compatible API surface — describe/it/test/expect globals — collects results\n * into a plain JSON-safe object, and exports `runTestModule` as the entry point.\n *\n * @vitest/runner and @vitest/expect are listed as dependencies so that the\n * package's type contracts are available and so the browser-compatible subsets\n * can be referenced. The Vitest custom pool that drives this runtime through\n * Vitest's `PoolRunnerInitializer` lives in `pool.ts`.\n *\n * NOTE: this file is imported by type from Node-side code (rpc.ts / relay-worker.ts)\n * for the RunReport / TestResult type shapes. The runtime ITSELF is not imported\n * at runtime on the Node side — only the types are used.\n */\n\n/* -------------------------------------------------------------------------- */\n/* Public result types (used by rpc.ts and relay-worker.ts) */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Result of a single test case.\n * All fields are JSON-serialisable.\n */\nexport interface TestResult {\n /** Full dot-joined test name including nested suite names. */\n name: string;\n /** `'pass'` or `'fail'`. `'skip'` for skipped tests. */\n status: 'pass' | 'fail' | 'skip';\n /** Duration in milliseconds. */\n duration: number;\n /** Error message (fail only). Does NOT include the expression/secret. */\n error?: string;\n}\n\n/** Aggregate report returned by `runTestModule`. */\nexport interface RunReport {\n /** ISO timestamp of when `runTestModule` was called. */\n startedAt: string;\n /** Total elapsed milliseconds (wall-clock). */\n duration: number;\n passed: number;\n failed: number;\n skipped: number;\n tests: TestResult[];\n}\n\n/* -------------------------------------------------------------------------- */\n/* Lightweight expect implementation */\n/* -------------------------------------------------------------------------- */\n\n/** Thrown by expect matchers on failure. */\nclass AssertionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AssertionError';\n }\n}\n\n/** Minimal expect builder compatible with Vitest's jest-style API. */\nclass Expectation {\n #received: unknown;\n #negated = false;\n\n constructor(received: unknown) {\n this.#received = received;\n }\n\n get not(): this {\n const neg = new Expectation(this.#received) as this;\n neg.#negated = true;\n return neg;\n }\n\n #assert(pass: boolean, msg: string): void {\n const actual = this.#negated ? !pass : pass;\n if (!actual) {\n throw new AssertionError(this.#negated ? `Expected NOT: ${msg}` : msg);\n }\n }\n\n toBe(expected: unknown): void {\n this.#assert(\n Object.is(this.#received, expected),\n `Expected ${String(expected)}, received ${String(this.#received)}`,\n );\n }\n\n toEqual(expected: unknown): void {\n this.#assert(\n JSON.stringify(this.#received) === JSON.stringify(expected),\n `Expected ${JSON.stringify(expected)}, received ${JSON.stringify(this.#received)}`,\n );\n }\n\n toBeTruthy(): void {\n this.#assert(Boolean(this.#received), `Expected truthy, received ${String(this.#received)}`);\n }\n\n toBeFalsy(): void {\n this.#assert(!this.#received, `Expected falsy, received ${String(this.#received)}`);\n }\n\n toBeNull(): void {\n this.#assert(this.#received === null, `Expected null, received ${String(this.#received)}`);\n }\n\n toBeUndefined(): void {\n this.#assert(\n this.#received === undefined,\n `Expected undefined, received ${String(this.#received)}`,\n );\n }\n\n toBeGreaterThan(n: number): void {\n this.#assert(\n typeof this.#received === 'number' && this.#received > n,\n `Expected > ${n}, received ${String(this.#received)}`,\n );\n }\n\n toBeLessThan(n: number): void {\n this.#assert(\n typeof this.#received === 'number' && this.#received < n,\n `Expected < ${n}, received ${String(this.#received)}`,\n );\n }\n\n toContain(sub: string): void {\n this.#assert(\n typeof this.#received === 'string' && this.#received.includes(sub),\n `Expected to contain \"${sub}\", received \"${String(this.#received)}\"`,\n );\n }\n\n toThrow(msgFragment?: string): void {\n if (typeof this.#received !== 'function') {\n throw new AssertionError('toThrow: expected a function');\n }\n let threw = false;\n let errorMsg = '';\n try {\n (this.#received as () => unknown)();\n } catch (e) {\n threw = true;\n errorMsg = e instanceof Error ? e.message : String(e);\n }\n if (msgFragment !== undefined) {\n this.#assert(\n threw && errorMsg.includes(msgFragment),\n `Expected to throw containing \"${msgFragment}\", got \"${errorMsg}\"`,\n );\n } else {\n this.#assert(threw, 'Expected function to throw');\n }\n }\n}\n\n/** The `expect` function installed as a global. */\nfunction expect(received: unknown): Expectation {\n return new Expectation(received);\n}\n\n/* -------------------------------------------------------------------------- */\n/* describe / it / test registry */\n/* -------------------------------------------------------------------------- */\n\ninterface PendingTest {\n suitePath: string[];\n name: string;\n fn: () => void | Promise<void>;\n skip: boolean;\n}\n\nconst _pendingTests: PendingTest[] = [];\nconst _suiteStack: string[] = [];\n\n/** Registers a suite scope; calls `fn` synchronously to collect inner tests. */\nfunction describe(name: string, fn: () => void): void {\n _suiteStack.push(name);\n fn();\n _suiteStack.pop();\n}\n\n/** Registers a test. */\nfunction it(name: string, fn: () => void | Promise<void>): void {\n _pendingTests.push({ suitePath: [..._suiteStack], name, fn, skip: false });\n}\n\n/** Alias for `it`. */\nconst test = it;\n\n/** Skipped test — registered but not executed. */\ndescribe.skip = (name: string, _fn: () => void): void => {\n void name;\n};\nit.skip = (name: string, _fn?: () => void | Promise<void>): void => {\n _pendingTests.push({ suitePath: [..._suiteStack], name, fn: () => {}, skip: true });\n};\ntest.skip = it.skip;\n\n/* -------------------------------------------------------------------------- */\n/* Runtime entry point */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Installs describe/it/test/expect as globals, invokes `moduleFactory` to\n * register the user's tests, then executes them and returns a RunReport.\n *\n * This function is exported as `__testBundle.runTestModule` by the IIFE wrapper\n * that bundle.ts generates. The Node-side rpc.ts calls it via `Runtime.evaluate`.\n *\n * @param moduleFactory - A zero-argument function that contains the user's\n * top-level test code (describe/it/test calls). The bundler wraps the entire\n * test module so that its top-level statements become the body of this factory.\n */\nexport async function runTestModule(\n moduleFactory?: () => void | Promise<void>,\n): Promise<RunReport> {\n // Reset state for re-entrant calls within the same page context.\n _pendingTests.length = 0;\n _suiteStack.length = 0;\n\n // Install globals that user test code expects.\n type G = typeof globalThis & {\n describe: typeof describe;\n it: typeof it;\n test: typeof test;\n expect: typeof expect;\n };\n const g = globalThis as G;\n g.describe = describe;\n g.it = it;\n g.test = test;\n g.expect = expect;\n\n // Run the factory (which registers describe/it/test blocks via globals).\n if (moduleFactory) {\n await moduleFactory();\n }\n\n const wallStart = Date.now();\n const startedAt = new Date(wallStart).toISOString();\n const results: TestResult[] = [];\n\n for (const pending of _pendingTests) {\n const fullName = [...pending.suitePath, pending.name].join(' > ');\n if (pending.skip) {\n results.push({ name: fullName, status: 'skip', duration: 0 });\n continue;\n }\n const tStart = Date.now();\n try {\n await pending.fn();\n results.push({ name: fullName, status: 'pass', duration: Date.now() - tStart });\n } catch (e) {\n const errorMsg = e instanceof Error ? e.message : String(e);\n results.push({\n name: fullName,\n status: 'fail',\n duration: Date.now() - tStart,\n error: errorMsg,\n });\n }\n }\n\n const duration = Date.now() - wallStart;\n const passed = results.filter((r) => r.status === 'pass').length;\n const failed = results.filter((r) => r.status === 'fail').length;\n const skipped = results.filter((r) => r.status === 'skip').length;\n\n return { startedAt, duration, passed, failed, skipped, tests: results };\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ait-co/devtools",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.113",
|
|
4
4
|
"description": "Development tools for Apps in Toss mini-apps — mock SDK, floating devtools panel, and universal bundler plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -133,6 +133,7 @@
|
|
|
133
133
|
"build:dashboard-html": "tsx --tsconfig scripts/tsconfig.json scripts/build-dashboard-html.ts",
|
|
134
134
|
"build": "pnpm build:dashboard-html && tsdown",
|
|
135
135
|
"check:mcp-react-free": "bash scripts/check-mcp-react-free.sh",
|
|
136
|
+
"check:test-runner-dist": "bash scripts/check-test-runner-dist.sh",
|
|
136
137
|
"check:debug-surface-absent": "bash scripts/check-debug-surface-absent.sh",
|
|
137
138
|
"check:dashboard-html-fresh": "pnpm build:dashboard-html && git diff --exit-code src/mcp/dashboard.generated.ts",
|
|
138
139
|
"dev": "tsdown --watch",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-Wi5d6Ywz.d.ts","names":[],"sources":["../src/test-runner/runtime.ts"],"mappings":";;AA8BA;;;;;;;;;;AAYA;;;;;;;;;;;;;;UAZiB,UAAA;;EAEf,IAAA;;EAEA,MAAA;;EAEA,QAAA;;EAEA,KAAA;AAAA;;UAIe,SAAA;;EAEf,SAAA;;EAEA,QAAA;EACA,MAAA;EACA,MAAA;EACA,OAAA;EACA,KAAA,EAAO,UAAA;AAAA"}
|