elasticdash-test 0.1.16 → 0.1.17-alpha-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/dist/cloud-client.d.ts +34 -0
- package/dist/cloud-client.d.ts.map +1 -0
- package/dist/cloud-client.js +103 -0
- package/dist/cloud-client.js.map +1 -0
- package/dist/dashboard-server.d.ts.map +1 -1
- package/dist/dashboard-server.js +425 -90
- package/dist/dashboard-server.js.map +1 -1
- package/dist/evaluators/determinism.d.ts +3 -0
- package/dist/evaluators/determinism.d.ts.map +1 -0
- package/dist/evaluators/determinism.js +116 -0
- package/dist/evaluators/determinism.js.map +1 -0
- package/dist/evaluators/index.d.ts +4 -0
- package/dist/evaluators/index.d.ts.map +1 -0
- package/dist/evaluators/index.js +61 -0
- package/dist/evaluators/index.js.map +1 -0
- package/dist/evaluators/latency-budget.d.ts +3 -0
- package/dist/evaluators/latency-budget.d.ts.map +1 -0
- package/dist/evaluators/latency-budget.js +45 -0
- package/dist/evaluators/latency-budget.js.map +1 -0
- package/dist/evaluators/llm-judge.d.ts +3 -0
- package/dist/evaluators/llm-judge.d.ts.map +1 -0
- package/dist/evaluators/llm-judge.js +122 -0
- package/dist/evaluators/llm-judge.js.map +1 -0
- package/dist/evaluators/output-contains.d.ts +3 -0
- package/dist/evaluators/output-contains.d.ts.map +1 -0
- package/dist/evaluators/output-contains.js +52 -0
- package/dist/evaluators/output-contains.js.map +1 -0
- package/dist/evaluators/output-schema.d.ts +3 -0
- package/dist/evaluators/output-schema.d.ts.map +1 -0
- package/dist/evaluators/output-schema.js +58 -0
- package/dist/evaluators/output-schema.js.map +1 -0
- package/dist/evaluators/token-budget.d.ts +3 -0
- package/dist/evaluators/token-budget.d.ts.map +1 -0
- package/dist/evaluators/token-budget.js +45 -0
- package/dist/evaluators/token-budget.js.map +1 -0
- package/dist/evaluators/types.d.ts +103 -0
- package/dist/evaluators/types.d.ts.map +1 -0
- package/dist/evaluators/types.js +6 -0
- package/dist/evaluators/types.js.map +1 -0
- package/dist/html/dashboard.html +359 -73
- package/dist/index.cjs +253 -14
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/telemetry-push.d.ts +40 -0
- package/dist/interceptors/telemetry-push.d.ts.map +1 -1
- package/dist/interceptors/telemetry-push.js +129 -6
- package/dist/interceptors/telemetry-push.js.map +1 -1
- package/dist/interceptors/tool.d.ts.map +1 -1
- package/dist/interceptors/tool.js +8 -1
- package/dist/interceptors/tool.js.map +1 -1
- package/dist/interceptors/workflow-ai.d.ts.map +1 -1
- package/dist/interceptors/workflow-ai.js +21 -6
- package/dist/interceptors/workflow-ai.js.map +1 -1
- package/dist/internals/mock-resolver.d.ts +70 -2
- package/dist/internals/mock-resolver.d.ts.map +1 -1
- package/dist/internals/mock-resolver.js +157 -6
- package/dist/internals/mock-resolver.js.map +1 -1
- package/dist/test-group/cli.d.ts +8 -0
- package/dist/test-group/cli.d.ts.map +1 -0
- package/dist/test-group/cli.js +162 -0
- package/dist/test-group/cli.js.map +1 -0
- package/dist/test-group/git-context.d.ts +3 -0
- package/dist/test-group/git-context.d.ts.map +1 -0
- package/dist/test-group/git-context.js +59 -0
- package/dist/test-group/git-context.js.map +1 -0
- package/dist/test-group/reporter.d.ts +4 -0
- package/dist/test-group/reporter.d.ts.map +1 -0
- package/dist/test-group/reporter.js +54 -0
- package/dist/test-group/reporter.js.map +1 -0
- package/dist/test-group/runner.d.ts +18 -0
- package/dist/test-group/runner.d.ts.map +1 -0
- package/dist/test-group/runner.js +234 -0
- package/dist/test-group/runner.js.map +1 -0
- package/dist/workflow-runner-worker.js +7 -1
- package/dist/workflow-runner-worker.js.map +1 -1
- package/package.json +1 -1
- package/src/dashboard-server.ts +101 -28
- package/src/html/dashboard.html +359 -73
- package/src/index.ts +2 -2
- package/src/interceptors/telemetry-push.ts +159 -7
- package/src/interceptors/tool.ts +9 -1
- package/src/interceptors/workflow-ai.ts +22 -6
- package/src/internals/mock-resolver.ts +190 -7
- package/src/workflow-runner-worker.ts +11 -3
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* - object → recurse on every value
|
|
21
21
|
* - other → return unchanged
|
|
22
22
|
*/
|
|
23
|
-
function normaliseMockResult(value) {
|
|
23
|
+
export function normaliseMockResult(value) {
|
|
24
24
|
if (typeof value === 'string') {
|
|
25
25
|
try {
|
|
26
26
|
return normaliseMockResult(JSON.parse(value));
|
|
@@ -148,8 +148,12 @@ export function replaceSystemPrompt(input, newSystemPrompt) {
|
|
|
148
148
|
* If a prompt mock is configured for the system prompt found in `input`, returns
|
|
149
149
|
* a copy of `input` with the system prompt replaced. Otherwise returns `undefined`.
|
|
150
150
|
*
|
|
151
|
-
* `__ELASTICDASH_PROMPT_MOCKS__` is `Record<string,
|
|
152
|
-
* system prompt text
|
|
151
|
+
* `__ELASTICDASH_PROMPT_MOCKS__` is `Record<string, SystemPromptMockEntry>` keyed by
|
|
152
|
+
* the original system prompt text. Supports replace-all and replace-specific modes
|
|
153
|
+
* with per-text call counting.
|
|
154
|
+
*
|
|
155
|
+
* For backward compatibility, also accepts the legacy `Record<string, string>` format
|
|
156
|
+
* (treated as replace-all).
|
|
153
157
|
*/
|
|
154
158
|
export function resolvePromptMock(input) {
|
|
155
159
|
const g = globalThis;
|
|
@@ -159,10 +163,157 @@ export function resolvePromptMock(input) {
|
|
|
159
163
|
const systemPrompt = extractSystemPrompt(input);
|
|
160
164
|
if (systemPrompt === undefined)
|
|
161
165
|
return undefined;
|
|
162
|
-
const
|
|
163
|
-
if (
|
|
166
|
+
const match = lookupMockEntry(mocks, systemPrompt);
|
|
167
|
+
if (!match)
|
|
168
|
+
return undefined;
|
|
169
|
+
const entry = match.entry;
|
|
170
|
+
// Legacy format: plain string replacement (treat as replace-all)
|
|
171
|
+
if (typeof entry === 'string') {
|
|
172
|
+
return replaceSystemPrompt(input, entry);
|
|
173
|
+
}
|
|
174
|
+
if (entry.mode === 'live')
|
|
164
175
|
return undefined;
|
|
165
|
-
|
|
176
|
+
// Initialise per-text call counters
|
|
177
|
+
if (!g['__ELASTICDASH_PROMPT_CALL_COUNTERS__']) {
|
|
178
|
+
g['__ELASTICDASH_PROMPT_CALL_COUNTERS__'] = {};
|
|
179
|
+
}
|
|
180
|
+
const counters = g['__ELASTICDASH_PROMPT_CALL_COUNTERS__'];
|
|
181
|
+
counters[match.key] = (counters[match.key] ?? 0) + 1;
|
|
182
|
+
const callNumber = counters[match.key];
|
|
183
|
+
if (entry.mode === 'replace-all') {
|
|
184
|
+
return replaceSystemPrompt(input, entry.replacement);
|
|
185
|
+
}
|
|
186
|
+
if (entry.mode === 'replace-specific') {
|
|
187
|
+
const indices = entry.callIndices ?? [];
|
|
188
|
+
if (indices.includes(callNumber)) {
|
|
189
|
+
return replaceSystemPrompt(input, entry.replacement);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Strips one layer of JSON string quoting if present.
|
|
196
|
+
* `'"hello"'` → `'hello'`, `'hello'` → `'hello'`
|
|
197
|
+
*/
|
|
198
|
+
function stripJsonQuotes(s) {
|
|
199
|
+
if (s.length >= 2 && s.startsWith('"') && s.endsWith('"')) {
|
|
200
|
+
try {
|
|
201
|
+
const parsed = JSON.parse(s);
|
|
202
|
+
if (typeof parsed === 'string')
|
|
203
|
+
return parsed;
|
|
204
|
+
}
|
|
205
|
+
catch { /* not valid JSON, return as-is */ }
|
|
206
|
+
}
|
|
207
|
+
return s;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Look up a mock entry by key, falling back to stripped-quotes variants
|
|
211
|
+
* to handle mismatches between trace-recorded text and runtime text.
|
|
212
|
+
*/
|
|
213
|
+
export function lookupMockEntry(mocks, text) {
|
|
214
|
+
if (mocks[text])
|
|
215
|
+
return { key: text, entry: mocks[text] };
|
|
216
|
+
// Try stripping quotes from the runtime text
|
|
217
|
+
const stripped = stripJsonQuotes(text);
|
|
218
|
+
if (stripped !== text && mocks[stripped])
|
|
219
|
+
return { key: stripped, entry: mocks[stripped] };
|
|
220
|
+
// Try adding quotes to the runtime text (mock key might have quotes)
|
|
221
|
+
const quoted = JSON.stringify(text);
|
|
222
|
+
if (quoted !== text && mocks[quoted])
|
|
223
|
+
return { key: quoted, entry: mocks[quoted] };
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Extracts all user-role message content strings from an LLM call input.
|
|
228
|
+
* Handles OpenAI-style `{ messages: [...] }` and plain message arrays.
|
|
229
|
+
*/
|
|
230
|
+
export function extractUserPrompts(input) {
|
|
231
|
+
if (!input || typeof input !== 'object')
|
|
232
|
+
return [];
|
|
233
|
+
const o = input;
|
|
234
|
+
const msgs = Array.isArray(o.messages) ? o.messages : (Array.isArray(input) ? input : null);
|
|
235
|
+
if (!msgs)
|
|
236
|
+
return [];
|
|
237
|
+
const results = [];
|
|
238
|
+
for (const m of msgs) {
|
|
239
|
+
if (m && typeof m === 'object') {
|
|
240
|
+
const msg = m;
|
|
241
|
+
if (msg.role === 'user' && typeof msg.content === 'string')
|
|
242
|
+
results.push(msg.content);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return results;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Returns a shallow copy of `input` with all user-role messages whose content
|
|
249
|
+
* matches `originalText` replaced with `newText`.
|
|
250
|
+
*/
|
|
251
|
+
export function replaceUserPrompt(input, originalText, newText) {
|
|
252
|
+
if (!input || typeof input !== 'object')
|
|
253
|
+
return input;
|
|
254
|
+
const o = input;
|
|
255
|
+
const replaceInMsgs = (msgs) => msgs.map(m => {
|
|
256
|
+
if (m && typeof m === 'object') {
|
|
257
|
+
const msg = m;
|
|
258
|
+
if (msg.role === 'user' && typeof msg.content === 'string' && msg.content === originalText) {
|
|
259
|
+
return { ...msg, content: newText };
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return m;
|
|
263
|
+
});
|
|
264
|
+
if (Array.isArray(input))
|
|
265
|
+
return replaceInMsgs(input);
|
|
266
|
+
if (Array.isArray(o.messages))
|
|
267
|
+
return { ...o, messages: replaceInMsgs(o.messages) };
|
|
268
|
+
return input;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* If user prompt mocks are configured, applies all matching replacements to `input`.
|
|
272
|
+
* Returns modified input or `undefined` if no replacements applied.
|
|
273
|
+
*
|
|
274
|
+
* `__ELASTICDASH_USER_PROMPT_MOCKS__` is `Record<string, UserPromptMockEntry>` keyed
|
|
275
|
+
* by original user message text.
|
|
276
|
+
*
|
|
277
|
+
* Call counting is per unique text — "the x-th LLM call where this text appears".
|
|
278
|
+
*/
|
|
279
|
+
export function resolveUserPromptMock(input) {
|
|
280
|
+
const g = globalThis;
|
|
281
|
+
const mocks = g['__ELASTICDASH_USER_PROMPT_MOCKS__'];
|
|
282
|
+
if (!mocks || Object.keys(mocks).length === 0)
|
|
283
|
+
return undefined;
|
|
284
|
+
const userPrompts = extractUserPrompts(input);
|
|
285
|
+
if (userPrompts.length === 0)
|
|
286
|
+
return undefined;
|
|
287
|
+
// Initialise per-text call counters
|
|
288
|
+
if (!g['__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__']) {
|
|
289
|
+
g['__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__'] = {};
|
|
290
|
+
}
|
|
291
|
+
const counters = g['__ELASTICDASH_USER_PROMPT_CALL_COUNTERS__'];
|
|
292
|
+
// Determine which texts in this call have active mock entries
|
|
293
|
+
const uniqueTexts = Array.from(new Set(userPrompts));
|
|
294
|
+
let modified = false;
|
|
295
|
+
let result = input;
|
|
296
|
+
for (const text of uniqueTexts) {
|
|
297
|
+
const match = lookupMockEntry(mocks, text);
|
|
298
|
+
if (!match || match.entry.mode === 'live')
|
|
299
|
+
continue;
|
|
300
|
+
const entry = match.entry;
|
|
301
|
+
// Increment counter for this text (this is the x-th call where this text appears)
|
|
302
|
+
counters[match.key] = (counters[match.key] ?? 0) + 1;
|
|
303
|
+
const callNumber = counters[match.key];
|
|
304
|
+
if (entry.mode === 'replace-all') {
|
|
305
|
+
result = replaceUserPrompt(result, text, entry.replacement);
|
|
306
|
+
modified = true;
|
|
307
|
+
}
|
|
308
|
+
else if (entry.mode === 'replace-specific') {
|
|
309
|
+
const indices = entry.callIndices ?? [];
|
|
310
|
+
if (indices.includes(callNumber)) {
|
|
311
|
+
result = replaceUserPrompt(result, text, entry.replacement);
|
|
312
|
+
modified = true;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
return modified ? result : undefined;
|
|
166
317
|
}
|
|
167
318
|
/**
|
|
168
319
|
* Resolves whether the current call to `modelName` should be mocked.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-resolver.js","sourceRoot":"","sources":["../../src/internals/mock-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock-resolver.js","sourceRoot":"","sources":["../../src/internals/mock-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-group CLI command tree.
|
|
3
|
+
* Fully self-contained — does not import dashboard-server, browser-ui,
|
|
4
|
+
* matchers, registry, or the .ai.test.ts runner.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
export declare function registerTestGroupCommand(program: Command): void;
|
|
8
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/test-group/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0K/D"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-group CLI command tree.
|
|
3
|
+
* Fully self-contained — does not import dashboard-server, browser-ui,
|
|
4
|
+
* matchers, registry, or the .ai.test.ts runner.
|
|
5
|
+
*/
|
|
6
|
+
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { resolveCloudConfig, fetchTestGroups, pushRunResult, pushBatchResult, exportTestGroups } from '../cloud-client.js';
|
|
9
|
+
import { runAllTestGroups } from './runner.js';
|
|
10
|
+
import { reportBatchResult } from './reporter.js';
|
|
11
|
+
import { collectGitContext } from './git-context.js';
|
|
12
|
+
export function registerTestGroupCommand(program) {
|
|
13
|
+
const tg = program
|
|
14
|
+
.command('test-group')
|
|
15
|
+
.description('Run, list, or export cloud-managed test groups (CI/CD mode)')
|
|
16
|
+
.option('--api-url <url>', 'ElasticDash API URL')
|
|
17
|
+
.option('--api-key <key>', 'ElasticDash API key')
|
|
18
|
+
.option('--project-id <id>', 'Project ID', '1');
|
|
19
|
+
// ── test-group run ──────────────────────────────────────────
|
|
20
|
+
tg.command('run')
|
|
21
|
+
.description('Fetch test groups from cloud, execute locally, evaluate, and push results')
|
|
22
|
+
.option('--all', 'Run all test groups for the project')
|
|
23
|
+
.option('--name <name>', 'Run a specific test group by name')
|
|
24
|
+
.option('--tag <tag>', 'Run test groups matching a tag')
|
|
25
|
+
.option('--override-run-count <n>', 'Override run count for all groups', (v) => parseInt(v))
|
|
26
|
+
.action(async (opts) => {
|
|
27
|
+
try {
|
|
28
|
+
const parentOpts = tg.opts();
|
|
29
|
+
const config = resolveCloudConfig({
|
|
30
|
+
apiUrl: parentOpts.apiUrl,
|
|
31
|
+
apiKey: parentOpts.apiKey,
|
|
32
|
+
projectId: parentOpts.projectId,
|
|
33
|
+
});
|
|
34
|
+
// Fetch test groups
|
|
35
|
+
console.log('[elasticdash] Fetching test groups...');
|
|
36
|
+
let groups = await fetchTestGroups(config, {
|
|
37
|
+
tags: opts.tag ? [opts.tag] : undefined,
|
|
38
|
+
});
|
|
39
|
+
if (opts.name) {
|
|
40
|
+
groups = groups.filter((g) => g.name === opts.name);
|
|
41
|
+
}
|
|
42
|
+
if (groups.length === 0) {
|
|
43
|
+
console.error('[elasticdash] No test groups found matching the filters.');
|
|
44
|
+
process.exit(2);
|
|
45
|
+
}
|
|
46
|
+
console.log(`[elasticdash] Running ${groups.length} test group(s)...`);
|
|
47
|
+
const cwd = process.cwd();
|
|
48
|
+
const gitContext = collectGitContext();
|
|
49
|
+
// Execute all groups
|
|
50
|
+
const batch = await runAllTestGroups(groups, cwd, {
|
|
51
|
+
overrideRunCount: opts.overrideRunCount,
|
|
52
|
+
});
|
|
53
|
+
// Attach git context
|
|
54
|
+
if (gitContext) {
|
|
55
|
+
batch.gitContext = gitContext;
|
|
56
|
+
for (const result of batch.results) {
|
|
57
|
+
result.gitContext = gitContext;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Push results to cloud
|
|
61
|
+
const runIds = [];
|
|
62
|
+
for (const result of batch.results) {
|
|
63
|
+
try {
|
|
64
|
+
const pushed = await pushRunResult(config, result.testGroupId, result);
|
|
65
|
+
runIds.push(pushed.id);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
console.error(`[elasticdash] Failed to push results for "${result.summary.split(':')[0]}": ${err.message}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Push batch
|
|
72
|
+
if (runIds.length > 0) {
|
|
73
|
+
try {
|
|
74
|
+
await pushBatchResult(config, {
|
|
75
|
+
testGroupRunIds: runIds,
|
|
76
|
+
gitBranch: gitContext?.branch,
|
|
77
|
+
gitCommit: gitContext?.commit,
|
|
78
|
+
passed: batch.passed,
|
|
79
|
+
summary: batch.summary,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
console.error(`[elasticdash] Failed to push batch result: ${err.message}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Print report
|
|
87
|
+
const cloudUrl = config.apiUrl ? `${config.apiUrl}/results` : undefined;
|
|
88
|
+
reportBatchResult(batch, cloudUrl);
|
|
89
|
+
process.exit(batch.passed ? 0 : 1);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
console.error(`[elasticdash] Error: ${err.message}`);
|
|
93
|
+
process.exit(2);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// ── test-group list ─────────────────────────────────────────
|
|
97
|
+
tg.command('list')
|
|
98
|
+
.description('List test groups from the cloud platform')
|
|
99
|
+
.action(async () => {
|
|
100
|
+
try {
|
|
101
|
+
const parentOpts = tg.opts();
|
|
102
|
+
const config = resolveCloudConfig({
|
|
103
|
+
apiUrl: parentOpts.apiUrl,
|
|
104
|
+
apiKey: parentOpts.apiKey,
|
|
105
|
+
projectId: parentOpts.projectId,
|
|
106
|
+
});
|
|
107
|
+
const groups = await fetchTestGroups(config);
|
|
108
|
+
if (groups.length === 0) {
|
|
109
|
+
console.log('No test groups found.');
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// Print table
|
|
113
|
+
console.log('');
|
|
114
|
+
console.log(`${'Name'.padEnd(35)} ${'Workflow'.padEnd(25)} ${'Runs'.padEnd(6)} ${'Expectations'.padEnd(14)} Tags`);
|
|
115
|
+
console.log('─'.repeat(100));
|
|
116
|
+
for (const g of groups) {
|
|
117
|
+
const name = (g.name || '(unnamed)').slice(0, 34).padEnd(35);
|
|
118
|
+
const workflow = (g.workflowName || '').slice(0, 24).padEnd(25);
|
|
119
|
+
const runs = String(g.runCount).padEnd(6);
|
|
120
|
+
const expectations = String(g.expectations?.length ?? 0).padEnd(14);
|
|
121
|
+
const tags = (g.tags ?? []).join(', ');
|
|
122
|
+
console.log(`${name} ${workflow} ${runs} ${expectations} ${tags}`);
|
|
123
|
+
}
|
|
124
|
+
console.log('');
|
|
125
|
+
console.log(`Total: ${groups.length} test group(s)`);
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
console.error(`[elasticdash] Error: ${err.message}`);
|
|
129
|
+
process.exit(2);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// ── test-group export ───────────────────────────────────────
|
|
133
|
+
tg.command('export')
|
|
134
|
+
.description('Export test groups to a local JSON file')
|
|
135
|
+
.option('--output <path>', 'Output file path', '.elasticdash/test-groups.json')
|
|
136
|
+
.action(async (opts) => {
|
|
137
|
+
try {
|
|
138
|
+
const parentOpts = tg.opts();
|
|
139
|
+
const config = resolveCloudConfig({
|
|
140
|
+
apiUrl: parentOpts.apiUrl,
|
|
141
|
+
apiKey: parentOpts.apiKey,
|
|
142
|
+
projectId: parentOpts.projectId,
|
|
143
|
+
});
|
|
144
|
+
const groups = await exportTestGroups(config);
|
|
145
|
+
const cwd = process.cwd();
|
|
146
|
+
const outputPath = path.resolve(cwd, opts.output);
|
|
147
|
+
// Prevent path traversal outside the project directory
|
|
148
|
+
if (!outputPath.startsWith(cwd + path.sep) && outputPath !== cwd) {
|
|
149
|
+
console.error(`[elasticdash] Error: Output path must be within the project directory.`);
|
|
150
|
+
process.exit(2);
|
|
151
|
+
}
|
|
152
|
+
mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
153
|
+
writeFileSync(outputPath, JSON.stringify(groups, null, 2) + '\n');
|
|
154
|
+
console.log(`[elasticdash] Exported ${groups.length} test group(s) to ${outputPath}`);
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
console.error(`[elasticdash] Error: ${err.message}`);
|
|
158
|
+
process.exit(2);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/test-group/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1H,OAAO,EAAsB,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,EAAE,GAAG,OAAO;SACf,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;SAChD,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;SAChD,MAAM,CAAC,mBAAmB,EAAE,YAAY,EAAE,GAAG,CAAC,CAAA;IAEjD,+DAA+D;IAE/D,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,2EAA2E,CAAC;SACxF,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC;SACtD,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC;SAC5D,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;SACvD,MAAM,CAAC,0BAA0B,EAAE,mCAAmC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAC3F,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;YAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC;gBAChC,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC,CAAA;YAEF,oBAAoB;YACpB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;YACpD,IAAI,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE;gBACzC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aACxC,CAAC,CAAA;YAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA;YACrD,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAA;gBACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAA;YAEtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YACzB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAA;YAEtC,qBAAqB;YACrB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBAChD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aACxC,CAAC,CAAA;YAEF,qBAAqB;YACrB,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;gBAC7B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAA;gBAChC,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;oBACtE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACxB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAO,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;gBACxH,CAAC;YACH,CAAC;YAED,aAAa;YACb,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,MAAM,eAAe,CAAC,MAAM,EAAE;wBAC5B,eAAe,EAAE,MAAM;wBACvB,SAAS,EAAE,UAAU,EAAE,MAAM;wBAC7B,SAAS,EAAE,UAAU,EAAE,MAAM;wBAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,8CAA+C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;gBACvF,CAAC;YACH,CAAC;YAED,eAAe;YACf,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;YACvE,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAElC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,+DAA+D;IAE/D,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;YAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC;gBAChC,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;YAE5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;gBACpC,OAAM;YACR,CAAC;YAED,cAAc;YACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;YAClH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAE5B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;gBACzC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACnE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC,CAAA;YACpE,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,MAAM,gBAAgB,CAAC,CAAA;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,+DAA+D;IAE/D,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,+BAA+B,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;YAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC;gBAChC,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAEjD,uDAAuD;YACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAA;gBACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACxD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;YAEjE,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,MAAM,qBAAqB,UAAU,EAAE,CAAC,CAAA;QACvF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../src/test-group/git-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD,wBAAgB,iBAAiB,IAAI,UAAU,GAAG,SAAS,CAqD1D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
export function collectGitContext() {
|
|
3
|
+
try {
|
|
4
|
+
// GitHub Actions — use CI-provided env vars for richer context
|
|
5
|
+
if (process.env.GITHUB_ACTIONS) {
|
|
6
|
+
const branch = process.env.GITHUB_HEAD_REF || // PR source branch
|
|
7
|
+
process.env.GITHUB_REF_NAME || // push branch
|
|
8
|
+
process.env.GITHUB_REF?.replace('refs/heads/', '') ||
|
|
9
|
+
'';
|
|
10
|
+
const commit = process.env.GITHUB_SHA || '';
|
|
11
|
+
const commitMessage = gitExec('log', '-1', '--format=%s');
|
|
12
|
+
const prNumber = process.env.GITHUB_REF?.match(/refs\/pull\/(\d+)/)?.[1];
|
|
13
|
+
const prUrl = prNumber && process.env.GITHUB_SERVER_URL && process.env.GITHUB_REPOSITORY
|
|
14
|
+
? `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/pull/${prNumber}`
|
|
15
|
+
: undefined;
|
|
16
|
+
return {
|
|
17
|
+
branch,
|
|
18
|
+
commit,
|
|
19
|
+
commitMessage: commitMessage || undefined,
|
|
20
|
+
prNumber: prNumber ? parseInt(prNumber) : undefined,
|
|
21
|
+
prUrl,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// GitLab CI
|
|
25
|
+
if (process.env.GITLAB_CI) {
|
|
26
|
+
return {
|
|
27
|
+
branch: process.env.CI_COMMIT_BRANCH || process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME || '',
|
|
28
|
+
commit: process.env.CI_COMMIT_SHA || '',
|
|
29
|
+
commitMessage: process.env.CI_COMMIT_MESSAGE || undefined,
|
|
30
|
+
prNumber: process.env.CI_MERGE_REQUEST_IID ? parseInt(process.env.CI_MERGE_REQUEST_IID) : undefined,
|
|
31
|
+
prUrl: process.env.CI_MERGE_REQUEST_URL || undefined,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Local or generic CI — try git commands
|
|
35
|
+
const branch = gitExec('rev-parse', '--abbrev-ref', 'HEAD');
|
|
36
|
+
const commit = gitExec('rev-parse', 'HEAD');
|
|
37
|
+
const commitMessage = gitExec('log', '-1', '--format=%s');
|
|
38
|
+
if (branch || commit) {
|
|
39
|
+
return {
|
|
40
|
+
branch: branch || '',
|
|
41
|
+
commit: commit || '',
|
|
42
|
+
commitMessage: commitMessage || undefined,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Not in a git repo or git not available
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
function gitExec(...args) {
|
|
52
|
+
try {
|
|
53
|
+
return execFileSync('git', args, { encoding: 'utf-8', timeout: 5000 }).trim();
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return '';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=git-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../src/test-group/git-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TestGroupRunResult, BatchResult } from '../evaluators/types.js';
|
|
2
|
+
export declare function reportTestGroupRun(result: TestGroupRunResult): void;
|
|
3
|
+
export declare function reportBatchResult(batch: BatchResult, cloudUrl?: string): void;
|
|
4
|
+
//# sourceMappingURL=reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/test-group/reporter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAqB,MAAM,wBAAwB,CAAA;AAchG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAmBnE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAkC7E"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
function formatMs(ms) {
|
|
3
|
+
return ms >= 1000 ? `${(ms / 1000).toFixed(1)}s` : `${ms}ms`;
|
|
4
|
+
}
|
|
5
|
+
function formatTokens(n) {
|
|
6
|
+
return n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n);
|
|
7
|
+
}
|
|
8
|
+
function expectationIcon(result) {
|
|
9
|
+
return result.passed ? chalk.green(' ✓') : chalk.red(' ✗');
|
|
10
|
+
}
|
|
11
|
+
export function reportTestGroupRun(result) {
|
|
12
|
+
const icon = result.passed ? chalk.green('✓') : chalk.red('✗');
|
|
13
|
+
const totalTokens = result.singleRuns.reduce((s, r) => s + r.tokenUsage.totalTokens, 0);
|
|
14
|
+
const totalDuration = result.singleRuns.reduce((s, r) => s + r.durationMs, 0);
|
|
15
|
+
const avgDuration = result.singleRuns.length > 0 ? Math.round(totalDuration / result.singleRuns.length) : 0;
|
|
16
|
+
const runCount = result.singleRuns.length;
|
|
17
|
+
console.log(`${icon} ${result.summary} (${runCount} runs, avg ${formatMs(avgDuration)}, ${formatTokens(totalTokens)} tokens)`);
|
|
18
|
+
// Show expectation results
|
|
19
|
+
for (const er of result.expectationResults) {
|
|
20
|
+
console.log(`${expectationIcon(er)} ${er.type}: ${er.detail}`);
|
|
21
|
+
}
|
|
22
|
+
// Show errors for failed runs
|
|
23
|
+
const failedRuns = result.singleRuns.filter((r) => r.error);
|
|
24
|
+
for (const run of failedRuns) {
|
|
25
|
+
console.log(chalk.red(` Run #${run.runIndex}: ${run.error}`));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function reportBatchResult(batch, cloudUrl) {
|
|
29
|
+
console.log('');
|
|
30
|
+
console.log(chalk.bold('Test Group Results'));
|
|
31
|
+
console.log(chalk.dim('─'.repeat(60)));
|
|
32
|
+
for (const result of batch.results) {
|
|
33
|
+
reportTestGroupRun(result);
|
|
34
|
+
console.log('');
|
|
35
|
+
}
|
|
36
|
+
console.log(chalk.dim('─'.repeat(60)));
|
|
37
|
+
const passedCount = batch.results.filter((r) => r.passed).length;
|
|
38
|
+
const totalCount = batch.results.length;
|
|
39
|
+
if (batch.passed) {
|
|
40
|
+
console.log(chalk.green.bold(`${passedCount}/${totalCount} test groups passed`));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log(chalk.red.bold(`${passedCount}/${totalCount} test groups passed`));
|
|
44
|
+
const failed = batch.results.filter((r) => !r.passed);
|
|
45
|
+
console.log(chalk.red(`Failed: ${failed.map((r) => r.summary.split(':')[0]).join(', ')}`));
|
|
46
|
+
}
|
|
47
|
+
const totalDuration = batch.results.reduce((s, r) => s + r.singleRuns.reduce((ss, sr) => ss + sr.durationMs, 0), 0);
|
|
48
|
+
console.log(chalk.dim(`Total duration: ${formatMs(totalDuration)}`));
|
|
49
|
+
if (cloudUrl) {
|
|
50
|
+
console.log(chalk.dim(`View results: ${cloudUrl}`));
|
|
51
|
+
}
|
|
52
|
+
console.log('');
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/test-group/reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test group runner — executes test groups locally via subprocess,
|
|
3
|
+
* evaluates expectations, and returns results for pushing to the cloud.
|
|
4
|
+
*
|
|
5
|
+
* This module is fully independent from the dashboard server.
|
|
6
|
+
* It reuses the same workflow-runner-worker subprocess pattern.
|
|
7
|
+
*/
|
|
8
|
+
import type { TestGroup, SingleRunData, TestGroupRunResult, BatchResult } from '../evaluators/types.js';
|
|
9
|
+
export declare function executeSingleRun(testGroup: TestGroup, runIndex: number, cwd: string): Promise<SingleRunData>;
|
|
10
|
+
export declare function runTestGroupNTimes(testGroup: TestGroup, cwd: string, options?: {
|
|
11
|
+
overrideRunCount?: number;
|
|
12
|
+
triggeredBy?: TestGroupRunResult['triggeredBy'];
|
|
13
|
+
}): Promise<TestGroupRunResult>;
|
|
14
|
+
export declare function runAllTestGroups(testGroups: TestGroup[], cwd: string, options?: {
|
|
15
|
+
overrideRunCount?: number;
|
|
16
|
+
triggeredBy?: TestGroupRunResult['triggeredBy'];
|
|
17
|
+
}): Promise<BatchResult>;
|
|
18
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/test-group/runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAc,MAAM,wBAAwB,CAAA;AAoKnH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,CAAC,CAsDxB;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAA;CAAE,GACvF,OAAO,CAAC,kBAAkB,CAAC,CAoC7B;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,SAAS,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAA;CAAE,GACvF,OAAO,CAAC,WAAW,CAAC,CA0BtB"}
|