@restormel/testing-runner 0.1.0 → 0.1.4

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.
Files changed (53) hide show
  1. package/LICENSE +1 -1
  2. package/dist/ac-agent-loop.d.ts +21 -0
  3. package/dist/ac-agent-loop.d.ts.map +1 -0
  4. package/dist/ac-agent-loop.js +174 -0
  5. package/dist/ac-agent-loop.js.map +1 -0
  6. package/dist/ac-judge.d.ts +12 -0
  7. package/dist/ac-judge.d.ts.map +1 -0
  8. package/dist/ac-judge.js +116 -0
  9. package/dist/ac-judge.js.map +1 -0
  10. package/dist/ac-llm.d.ts +19 -0
  11. package/dist/ac-llm.d.ts.map +1 -0
  12. package/dist/ac-llm.js +47 -0
  13. package/dist/ac-llm.js.map +1 -0
  14. package/dist/ac-post-checks.d.ts +18 -0
  15. package/dist/ac-post-checks.d.ts.map +1 -0
  16. package/dist/ac-post-checks.js +101 -0
  17. package/dist/ac-post-checks.js.map +1 -0
  18. package/dist/browser-goal.d.ts +2 -0
  19. package/dist/browser-goal.d.ts.map +1 -1
  20. package/dist/browser-goal.js +20 -5
  21. package/dist/browser-goal.js.map +1 -1
  22. package/dist/evaluate-criteria.d.ts.map +1 -1
  23. package/dist/evaluate-criteria.js +159 -19
  24. package/dist/evaluate-criteria.js.map +1 -1
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/lighthouse-structured-check.d.ts +28 -0
  30. package/dist/lighthouse-structured-check.d.ts.map +1 -0
  31. package/dist/lighthouse-structured-check.js +179 -0
  32. package/dist/lighthouse-structured-check.js.map +1 -0
  33. package/dist/post-mission-goal.d.ts +7 -0
  34. package/dist/post-mission-goal.d.ts.map +1 -0
  35. package/dist/post-mission-goal.js +23 -0
  36. package/dist/post-mission-goal.js.map +1 -0
  37. package/dist/run-ac-sequence-goal.d.ts +13 -0
  38. package/dist/run-ac-sequence-goal.d.ts.map +1 -0
  39. package/dist/run-ac-sequence-goal.js +430 -0
  40. package/dist/run-ac-sequence-goal.js.map +1 -0
  41. package/dist/run-suite.d.ts.map +1 -1
  42. package/dist/run-suite.js +306 -33
  43. package/dist/run-suite.js.map +1 -1
  44. package/dist/shell-hooks.d.ts +31 -0
  45. package/dist/shell-hooks.d.ts.map +1 -0
  46. package/dist/shell-hooks.js +93 -0
  47. package/dist/shell-hooks.js.map +1 -0
  48. package/dist/storage-state.d.ts.map +1 -1
  49. package/dist/storage-state.js +15 -4
  50. package/dist/storage-state.js.map +1 -1
  51. package/dist/types.d.ts +3 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +11 -9
package/dist/run-suite.js CHANGED
@@ -1,8 +1,25 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { formatConfigErrors, isSafeHttpUrl, loadConfigFromFile, resolvedKeysForEnvironment, resolveEnvironmentProfile, resolveSuite, } from "@restormel/testing-config";
3
- import { resolve } from "node:path";
4
- import { runBrowserGoal } from "./browser-goal.js";
3
+ import { dirname, resolve } from "node:path";
4
+ import { aggregateAcceptanceCriterionResults, } from "@restormel/testing-core";
5
+ import { goalEntryUrl, runBrowserGoal } from "./browser-goal.js";
6
+ import { runAcSequenceBrowserGoal } from "./run-ac-sequence-goal.js";
7
+ import { toPostMissionObserveGoal } from "./post-mission-goal.js";
5
8
  import { resolveStorageStatePath } from "./storage-state.js";
9
+ import { runMissionExecutorCommand, runShellHookCommands } from "./shell-hooks.js";
10
+ function hookWorkingDirectory(configFilePath) {
11
+ return configFilePath !== undefined ? dirname(configFilePath) : process.cwd();
12
+ }
13
+ function suiteAdapterCommandsBefore(hooks) {
14
+ return Object.entries(hooks)
15
+ .filter(([k]) => k !== "teardown")
16
+ .sort(([a], [b]) => a.localeCompare(b))
17
+ .map(([, v]) => v);
18
+ }
19
+ function suiteAdapterCommandsTeardown(hooks) {
20
+ const t = hooks["teardown"];
21
+ return t !== undefined && t.trim() !== "" ? [t] : [];
22
+ }
6
23
  function aggregateVerdict(goalVerdicts) {
7
24
  if (goalVerdicts.some((v) => v === "failed"))
8
25
  return "failed";
@@ -10,6 +27,11 @@ function aggregateVerdict(goalVerdicts) {
10
27
  return "indeterminate";
11
28
  return "passed";
12
29
  }
30
+ function acIdsOnRecord(goal) {
31
+ if (goal.acceptanceCriterionIds === undefined || goal.acceptanceCriterionIds.length === 0)
32
+ return {};
33
+ return { acceptanceCriterionIds: [...goal.acceptanceCriterionIds] };
34
+ }
13
35
  function mergeKeysMeta(fragments) {
14
36
  const byRef = new Map();
15
37
  for (const f of fragments) {
@@ -64,7 +86,21 @@ export async function runSuiteFromConfig(options) {
64
86
  return { ok: false, errors, traces, warnings };
65
87
  }
66
88
  const pick = new Set(options.goalIds);
67
- goals = suite.goals.filter((g) => pick.has(g.id));
89
+ goals = goals.filter((g) => pick.has(g.id));
90
+ }
91
+ if (options.acceptanceCriterionIds !== undefined && options.acceptanceCriterionIds.length > 0) {
92
+ const want = new Set(options.acceptanceCriterionIds.map((s) => s.trim()).filter((s) => s.length > 0));
93
+ if (want.size === 0) {
94
+ errors.push(`acceptance_criterion_ids filter is empty after trimming`);
95
+ return { ok: false, errors, traces, warnings };
96
+ }
97
+ const next = goals.filter((g) => g.acceptanceCriterionIds !== undefined &&
98
+ g.acceptanceCriterionIds.some((id) => want.has(id)));
99
+ if (next.length === 0) {
100
+ errors.push(`No goals reference acceptance criterion id(s): ${[...want].join(", ")} (set acceptance_criterion_ids on goals)`);
101
+ return { ok: false, errors, traces, warnings };
102
+ }
103
+ goals = next;
68
104
  }
69
105
  const resolvedKeys = resolvedKeysForEnvironment(options.config, envId);
70
106
  const storageStatePath = options.configFilePath !== undefined
@@ -80,38 +116,265 @@ export async function runSuiteFromConfig(options) {
80
116
  const goalRuns = [];
81
117
  let stepIndex = 0;
82
118
  const allKeysFragments = [];
83
- for (const goal of goals) {
84
- if (goal.type !== "browser") {
85
- goalRuns.push({
86
- goalId: goal.id,
87
- verdict: "indeterminate",
88
- reasonCode: "GOAL_TYPE_UNSUPPORTED",
89
- summary: `Goal type "${goal.type}" is not supported by the local runner (browser only in this slice)`,
90
- retriesUsed: 0,
91
- evidenceRefs: [],
119
+ const hookCwd = hookWorkingDirectory(options.configFilePath);
120
+ const beforeSuiteHooks = suiteAdapterCommandsBefore(options.config.adapterHooks);
121
+ if (beforeSuiteHooks.length > 0) {
122
+ const hookRes = await runShellHookCommands(beforeSuiteHooks, {
123
+ cwd: hookCwd,
124
+ label: "adapter_hooks (before suite)",
125
+ });
126
+ if (!hookRes.ok) {
127
+ return {
128
+ ok: false,
129
+ errors: [
130
+ `${hookRes.message}. Set RESTORMEL_TESTING_SKIP_SHELL_HOOKS=1 to skip hook execution (e.g. untrusted CI).`,
131
+ ],
132
+ traces,
133
+ warnings,
134
+ };
135
+ }
136
+ }
137
+ try {
138
+ for (const goal of goals) {
139
+ if (goal.type === "native") {
140
+ goalRuns.push({
141
+ goalId: goal.id,
142
+ verdict: "indeterminate",
143
+ reasonCode: "GOAL_TYPE_UNSUPPORTED",
144
+ summary: `Goal type "native" is not supported by this runner yet`,
145
+ retriesUsed: 0,
146
+ evidenceRefs: [],
147
+ ...acIdsOnRecord(goal),
148
+ });
149
+ continue;
150
+ }
151
+ if (goal.preconditions !== undefined && goal.preconditions.length > 0) {
152
+ const preRes = await runShellHookCommands(goal.preconditions, {
153
+ cwd: hookCwd,
154
+ label: `preconditions (${goal.id})`,
155
+ });
156
+ if (!preRes.ok) {
157
+ goalRuns.push({
158
+ goalId: goal.id,
159
+ verdict: "failed",
160
+ reasonCode: "PRECONDITION_FAILED",
161
+ summary: preRes.message,
162
+ retriesUsed: 0,
163
+ evidenceRefs: [],
164
+ ...acIdsOnRecord(goal),
165
+ });
166
+ continue;
167
+ }
168
+ }
169
+ if (goal.type !== "browser" && goal.type !== "performance") {
170
+ goalRuns.push({
171
+ goalId: goal.id,
172
+ verdict: "indeterminate",
173
+ reasonCode: "GOAL_TYPE_UNSUPPORTED",
174
+ summary: `Goal type "${goal.type}" is not supported`,
175
+ retriesUsed: 0,
176
+ evidenceRefs: [],
177
+ ...acIdsOnRecord(goal),
178
+ });
179
+ continue;
180
+ }
181
+ try {
182
+ const isAgentBrowser = goal.type === "browser" && goal.executionMode === "agent";
183
+ const isAcSequenceBrowser = goal.type === "browser" && goal.executionMode === "ac_sequence";
184
+ if (isAgentBrowser) {
185
+ const execCmd = goal.missionExecutor?.trim() ?? "";
186
+ const missionText = goal.mission?.trim() ?? "";
187
+ if (execCmd.length === 0 || missionText.length === 0) {
188
+ goalRuns.push({
189
+ goalId: goal.id,
190
+ verdict: "failed",
191
+ reasonCode: "CONFIG_INTERNAL",
192
+ summary: `Goal "${goal.id}": agent mode requires non-empty mission and mission_executor`,
193
+ retriesUsed: 0,
194
+ evidenceRefs: [],
195
+ ...acIdsOnRecord(goal),
196
+ });
197
+ }
198
+ else {
199
+ const extraEnv = {
200
+ RESTORMEL_TESTING_MISSION: missionText,
201
+ RESTORMEL_TESTING_BASE_URL: profile.baseUrl,
202
+ RESTORMEL_TESTING_GOAL_ID: goal.id,
203
+ RESTORMEL_TESTING_RUN_ID: runId,
204
+ };
205
+ if (goal.startPath !== undefined && goal.startPath.trim() !== "") {
206
+ extraEnv.RESTORMEL_TESTING_START_URL = goalEntryUrl(profile.baseUrl, goal.startPath);
207
+ }
208
+ if (options.artifactDir !== undefined && options.artifactDir.trim() !== "") {
209
+ extraEnv.RESTORMEL_TESTING_ARTIFACT_DIR = options.artifactDir;
210
+ }
211
+ if (storageStatePath !== undefined && storageStatePath.length > 0) {
212
+ extraEnv.RESTORMEL_TESTING_STORAGE_STATE_PATH = storageStatePath;
213
+ }
214
+ if (goal.missionConstraints !== undefined) {
215
+ extraEnv.RESTORMEL_TESTING_MISSION_CONSTRAINTS = JSON.stringify(goal.missionConstraints);
216
+ }
217
+ if (suite.userStory !== undefined || (suite.acceptanceCriteria !== undefined && suite.acceptanceCriteria.length > 0)) {
218
+ extraEnv.RESTORMEL_TESTING_USER_STORY = suite.userStory ?? "";
219
+ extraEnv.RESTORMEL_TESTING_ACCEPTANCE_CRITERIA_JSON = JSON.stringify({
220
+ userStory: suite.userStory,
221
+ acceptanceCriteria: suite.acceptanceCriteria ?? [],
222
+ });
223
+ }
224
+ const missRes = await runMissionExecutorCommand(execCmd, {
225
+ cwd: hookCwd,
226
+ label: `mission_executor (${goal.id})`,
227
+ extraEnv,
228
+ maxDurationMsHint: goal.missionConstraints?.maxDurationMs,
229
+ });
230
+ if (!missRes.ok) {
231
+ goalRuns.push({
232
+ goalId: goal.id,
233
+ verdict: "failed",
234
+ reasonCode: "MISSION_EXECUTOR_FAILED",
235
+ summary: missRes.message,
236
+ retriesUsed: 0,
237
+ evidenceRefs: [],
238
+ ...acIdsOnRecord(goal),
239
+ });
240
+ }
241
+ else {
242
+ const observeGoal = toPostMissionObserveGoal(goal);
243
+ const bg = await runBrowserGoal({
244
+ runId,
245
+ goal: observeGoal,
246
+ baseUrl: profile.baseUrl,
247
+ timeoutMs,
248
+ retryPolicy,
249
+ artifactDir: options.artifactDir,
250
+ captureScreenshotOnFailure,
251
+ headless: options.headless,
252
+ storageStatePath,
253
+ createBrowserSession: options.createBrowserSession,
254
+ resolvedKeys,
255
+ keysAdapterOptions: options.keysAdapterOptions,
256
+ startingStepIndex: stepIndex,
257
+ });
258
+ stepIndex = bg.nextStepIndex;
259
+ traces.push(...bg.traces);
260
+ warnings.push(...bg.warnings);
261
+ goalRuns.push({ ...bg.goalRecord, ...acIdsOnRecord(goal) });
262
+ allKeysFragments.push(...bg.keysModelMetaFragments);
263
+ }
264
+ }
265
+ }
266
+ else if (isAcSequenceBrowser) {
267
+ const suiteAcs = suite.acceptanceCriteria ?? [];
268
+ if (suiteAcs.length === 0) {
269
+ goalRuns.push({
270
+ goalId: goal.id,
271
+ verdict: "failed",
272
+ reasonCode: "CONFIG_INTERNAL",
273
+ summary: `Goal "${goal.id}": ac_sequence requires suite acceptance_criteria`,
274
+ retriesUsed: 0,
275
+ evidenceRefs: [],
276
+ ...acIdsOnRecord(goal),
277
+ });
278
+ }
279
+ else {
280
+ const acFilter = options.acceptanceCriterionIds !== undefined && options.acceptanceCriterionIds.length > 0
281
+ ? new Set(options.acceptanceCriterionIds.map((s) => s.trim()).filter((s) => s.length > 0))
282
+ : undefined;
283
+ const goalAcSet = goal.acceptanceCriterionIds !== undefined && goal.acceptanceCriterionIds.length > 0
284
+ ? new Set(goal.acceptanceCriterionIds)
285
+ : undefined;
286
+ const criteriaRun = suiteAcs.filter((c) => {
287
+ if (goalAcSet !== undefined && !goalAcSet.has(c.id))
288
+ return false;
289
+ if (acFilter !== undefined && !acFilter.has(c.id))
290
+ return false;
291
+ return true;
292
+ });
293
+ if (criteriaRun.length === 0) {
294
+ goalRuns.push({
295
+ goalId: goal.id,
296
+ verdict: "indeterminate",
297
+ reasonCode: "AC_SEQUENCE_NO_CRITERIA",
298
+ summary: "No acceptance criteria to run after goal and --ac filters",
299
+ retriesUsed: 0,
300
+ evidenceRefs: [],
301
+ ...acIdsOnRecord(goal),
302
+ });
303
+ }
304
+ else {
305
+ const bg = await runAcSequenceBrowserGoal({
306
+ runId,
307
+ goal,
308
+ baseUrl: profile.baseUrl,
309
+ timeoutMs,
310
+ retryPolicy,
311
+ artifactDir: options.artifactDir,
312
+ captureScreenshotOnFailure,
313
+ headless: options.headless,
314
+ storageStatePath,
315
+ createBrowserSession: options.createBrowserSession,
316
+ resolvedKeys,
317
+ keysAdapterOptions: options.keysAdapterOptions,
318
+ startingStepIndex: stepIndex,
319
+ suiteUserStory: suite.userStory,
320
+ acceptanceCriteria: criteriaRun,
321
+ hookCwd,
322
+ });
323
+ stepIndex = bg.nextStepIndex;
324
+ traces.push(...bg.traces);
325
+ warnings.push(...bg.warnings);
326
+ goalRuns.push({ ...bg.goalRecord, ...acIdsOnRecord(goal) });
327
+ allKeysFragments.push(...bg.keysModelMetaFragments);
328
+ }
329
+ }
330
+ }
331
+ else {
332
+ const bg = await runBrowserGoal({
333
+ runId,
334
+ goal,
335
+ baseUrl: profile.baseUrl,
336
+ timeoutMs,
337
+ retryPolicy,
338
+ artifactDir: options.artifactDir,
339
+ captureScreenshotOnFailure,
340
+ headless: options.headless,
341
+ storageStatePath,
342
+ createBrowserSession: options.createBrowserSession,
343
+ resolvedKeys,
344
+ keysAdapterOptions: options.keysAdapterOptions,
345
+ startingStepIndex: stepIndex,
346
+ });
347
+ stepIndex = bg.nextStepIndex;
348
+ traces.push(...bg.traces);
349
+ warnings.push(...bg.warnings);
350
+ goalRuns.push({ ...bg.goalRecord, ...acIdsOnRecord(goal) });
351
+ allKeysFragments.push(...bg.keysModelMetaFragments);
352
+ }
353
+ }
354
+ finally {
355
+ if (goal.cleanup !== undefined && goal.cleanup.length > 0) {
356
+ const cleanRes = await runShellHookCommands(goal.cleanup, {
357
+ cwd: hookCwd,
358
+ label: `cleanup (${goal.id})`,
359
+ });
360
+ if (!cleanRes.ok) {
361
+ warnings.push(`cleanup (${goal.id}): ${cleanRes.message}`);
362
+ }
363
+ }
364
+ }
365
+ }
366
+ }
367
+ finally {
368
+ const td = suiteAdapterCommandsTeardown(options.config.adapterHooks);
369
+ if (td.length > 0) {
370
+ const tearRes = await runShellHookCommands(td, {
371
+ cwd: hookCwd,
372
+ label: "adapter_hooks (teardown)",
92
373
  });
93
- continue;
374
+ if (!tearRes.ok) {
375
+ warnings.push(`adapter_hooks teardown: ${tearRes.message}`);
376
+ }
94
377
  }
95
- const bg = await runBrowserGoal({
96
- runId,
97
- goal,
98
- baseUrl: profile.baseUrl,
99
- timeoutMs,
100
- retryPolicy,
101
- artifactDir: options.artifactDir,
102
- captureScreenshotOnFailure,
103
- headless: options.headless,
104
- storageStatePath,
105
- createBrowserSession: options.createBrowserSession,
106
- resolvedKeys,
107
- keysAdapterOptions: options.keysAdapterOptions,
108
- startingStepIndex: stepIndex,
109
- });
110
- stepIndex = bg.nextStepIndex;
111
- traces.push(...bg.traces);
112
- warnings.push(...bg.warnings);
113
- goalRuns.push(bg.goalRecord);
114
- allKeysFragments.push(...bg.keysModelMetaFragments);
115
378
  }
116
379
  const verdict = aggregateVerdict(goalRuns.map((g) => g.verdict));
117
380
  const mergedMeta = mergeKeysMeta(allKeysFragments);
@@ -122,6 +385,12 @@ export async function runSuiteFromConfig(options) {
122
385
  tokenEstimate: { input: 0, output: judgeInvocations * 120 },
123
386
  };
124
387
  }
388
+ const acFilter = options.acceptanceCriterionIds !== undefined && options.acceptanceCriterionIds.length > 0
389
+ ? new Set(options.acceptanceCriterionIds.map((s) => s.trim()).filter((s) => s.length > 0))
390
+ : undefined;
391
+ const acceptanceResults = aggregateAcceptanceCriterionResults(suite.acceptanceCriteria, goalRuns, {
392
+ criterionFilter: acFilter,
393
+ });
125
394
  const run = {
126
395
  id: runId,
127
396
  suiteId: suite.id,
@@ -136,10 +405,13 @@ export async function runSuiteFromConfig(options) {
136
405
  keysModelMeta: mergedMeta.length > 0 ? mergedMeta : undefined,
137
406
  judgeInvocationCount: judgeInvocations,
138
407
  costEstimate,
408
+ ...(acceptanceResults !== undefined ? { acceptanceResults } : {}),
139
409
  };
140
410
  const suiteMeta = {
141
411
  id: suite.id,
142
412
  description: suite.description,
413
+ userStory: suite.userStory,
414
+ acceptanceCriteria: suite.acceptanceCriteria,
143
415
  tags: suite.tags,
144
416
  environmentId: envId,
145
417
  goalCount: goals.length,
@@ -166,6 +438,7 @@ export async function runLocalSuite(options) {
166
438
  environmentId: options.environmentId,
167
439
  targetUrlOverride: options.targetUrlOverride,
168
440
  goalIds: options.goalIds,
441
+ acceptanceCriterionIds: options.acceptanceCriterionIds,
169
442
  trigger: options.trigger,
170
443
  commitSha: options.commitSha,
171
444
  repository: options.repository,
@@ -1 +1 @@
1
- {"version":3,"file":"run-suite.js","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-suite.js","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Runs shell commands from config (preconditions, cleanup, adapter_hooks).
3
+ * Set `RESTORMEL_TESTING_SKIP_SHELL_HOOKS=1` to no-op (e.g. untrusted CI).
4
+ */
5
+ export declare function runShellHookCommands(commands: string[], opts: {
6
+ cwd: string;
7
+ label: string;
8
+ }): Promise<{
9
+ ok: true;
10
+ } | {
11
+ ok: false;
12
+ message: string;
13
+ exitCode: number | null;
14
+ }>;
15
+ /**
16
+ * Runs `mission_executor` once with extra env (see docs/testing/agent-missions.md).
17
+ * Set `RESTORMEL_TESTING_SKIP_MISSION_EXECUTOR=1` to no-op (e.g. CI without an agent binary).
18
+ */
19
+ export declare function runMissionExecutorCommand(command: string, opts: {
20
+ cwd: string;
21
+ label: string;
22
+ extraEnv: Record<string, string | undefined>;
23
+ maxDurationMsHint?: number;
24
+ }): Promise<{
25
+ ok: true;
26
+ } | {
27
+ ok: false;
28
+ message: string;
29
+ exitCode: number | null;
30
+ }>;
31
+ //# sourceMappingURL=shell-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-hooks.d.ts","sourceRoot":"","sources":["../src/shell-hooks.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAAE,EAClB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAkBjF;AAsCD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACA,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA0BjF"}
@@ -0,0 +1,93 @@
1
+ import { spawn } from "node:child_process";
2
+ function hookTimeoutMs() {
3
+ const raw = process.env.RESTORMEL_TESTING_SHELL_HOOK_TIMEOUT_MS?.trim();
4
+ if (raw === undefined || raw === "")
5
+ return 120_000;
6
+ const n = Number.parseInt(raw, 10);
7
+ return Number.isFinite(n) && n > 0 ? n : 120_000;
8
+ }
9
+ /**
10
+ * Runs shell commands from config (preconditions, cleanup, adapter_hooks).
11
+ * Set `RESTORMEL_TESTING_SKIP_SHELL_HOOKS=1` to no-op (e.g. untrusted CI).
12
+ */
13
+ export async function runShellHookCommands(commands, opts) {
14
+ if (process.env.RESTORMEL_TESTING_SKIP_SHELL_HOOKS?.trim() === "1") {
15
+ return { ok: true };
16
+ }
17
+ const timeoutMs = hookTimeoutMs();
18
+ for (let i = 0; i < commands.length; i++) {
19
+ const cmd = commands[i].trim();
20
+ if (cmd.length === 0)
21
+ continue;
22
+ const code = await runOneShellCommand(cmd, opts.cwd, timeoutMs, process.env);
23
+ if (code !== 0) {
24
+ return {
25
+ ok: false,
26
+ message: `${opts.label}: command ${i + 1} exited with code ${code === null ? "signal" : code}`,
27
+ exitCode: code,
28
+ };
29
+ }
30
+ }
31
+ return { ok: true };
32
+ }
33
+ function runOneShellCommand(cmd, cwd, timeoutMs, env = process.env) {
34
+ return new Promise((resolve) => {
35
+ const child = spawn(cmd, {
36
+ shell: true,
37
+ cwd,
38
+ env,
39
+ stdio: "inherit",
40
+ });
41
+ const t = setTimeout(() => {
42
+ child.kill("SIGTERM");
43
+ resolve(124);
44
+ }, timeoutMs);
45
+ child.on("error", () => {
46
+ clearTimeout(t);
47
+ resolve(1);
48
+ });
49
+ child.on("exit", (code) => {
50
+ clearTimeout(t);
51
+ resolve(code);
52
+ });
53
+ });
54
+ }
55
+ function missionExecutorTimeoutMs(maxDurationMsHint) {
56
+ const hook = hookTimeoutMs();
57
+ if (maxDurationMsHint !== undefined && maxDurationMsHint > 0) {
58
+ return Math.max(hook, maxDurationMsHint);
59
+ }
60
+ return hook;
61
+ }
62
+ /**
63
+ * Runs `mission_executor` once with extra env (see docs/testing/agent-missions.md).
64
+ * Set `RESTORMEL_TESTING_SKIP_MISSION_EXECUTOR=1` to no-op (e.g. CI without an agent binary).
65
+ */
66
+ export async function runMissionExecutorCommand(command, opts) {
67
+ if (process.env.RESTORMEL_TESTING_SKIP_MISSION_EXECUTOR?.trim() === "1") {
68
+ return { ok: true };
69
+ }
70
+ const cmd = command.trim();
71
+ if (cmd.length === 0) {
72
+ return { ok: false, message: `${opts.label}: mission_executor is empty`, exitCode: null };
73
+ }
74
+ const timeoutMs = missionExecutorTimeoutMs(opts.maxDurationMsHint);
75
+ const env = { ...process.env };
76
+ for (const [k, v] of Object.entries(opts.extraEnv)) {
77
+ if (v !== undefined)
78
+ env[k] = v;
79
+ }
80
+ const code = await runOneShellCommand(cmd, opts.cwd, timeoutMs, env);
81
+ if (code !== 0) {
82
+ const detail = code === 124
83
+ ? `timed out after ${timeoutMs}ms`
84
+ : `exited with code ${code === null ? "signal" : code}`;
85
+ return {
86
+ ok: false,
87
+ message: `${opts.label}: mission_executor ${detail}`,
88
+ exitCode: code,
89
+ };
90
+ }
91
+ return { ok: true };
92
+ }
93
+ //# sourceMappingURL=shell-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-hooks.js","sourceRoot":"","sources":["../src/shell-hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage-state.d.ts","sourceRoot":"","sources":["../src/storage-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,SAAS,CAapB"}
1
+ {"version":3,"file":"storage-state.d.ts","sourceRoot":"","sources":["../src/storage-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,SAAS,CAqBpB"}
@@ -1,4 +1,5 @@
1
- import { dirname, isAbsolute, join } from "node:path";
1
+ import { dirname, isAbsolute, resolve } from "node:path";
2
+ import { isPathContainedInRoot } from "@restormel/testing-core";
2
3
  /**
3
4
  * Resolve Playwright storage state path for `auth_mode: storage_state`.
4
5
  * - `auth_ref: env:VAR` — path read from `process.env.VAR` (trimmed).
@@ -14,9 +15,19 @@ export function resolveStorageStatePath(profile, configFilePath) {
14
15
  if (!/^[A-Z][A-Z0-9_]*$/.test(varName))
15
16
  return undefined;
16
17
  const p = process.env[varName]?.trim();
17
- return p && p.length > 0 ? p : undefined;
18
+ if (!p || p.length === 0)
19
+ return undefined;
20
+ // Operator-controlled env (CI/local); not constrained to cwd so /tmp or home paths work.
21
+ return resolve(p);
22
+ }
23
+ const baseAbs = resolve(dirname(configFilePath));
24
+ const candidateAbs = isAbsolute(ref) ? resolve(ref) : resolve(baseAbs, ref);
25
+ if (!isAbsolute(ref)) {
26
+ if (!isPathContainedInRoot(baseAbs, candidateAbs))
27
+ return undefined;
28
+ return candidateAbs;
18
29
  }
19
- const base = dirname(configFilePath);
20
- return isAbsolute(ref) ? ref : join(base, ref);
30
+ // Absolute path from config: trusted commit; relative forms still cannot escape config dir.
31
+ return candidateAbs;
21
32
  }
22
33
  //# sourceMappingURL=storage-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-state.js","sourceRoot":"","sources":["../src/storage-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGtD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA2B,EAC3B,cAAsB;IAEtB,IAAI,OAAO,CAAC,QAAQ,KAAK,eAAe,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;QACpG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACzD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3C,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"storage-state.js","sourceRoot":"","sources":["../src/storage-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA2B,EAC3B,cAAsB;IAEtB,IAAI,OAAO,CAAC,QAAQ,KAAK,eAAe,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;QACpG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACzD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,yFAAyF;QACzF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC;YAAE,OAAO,SAAS,CAAC;QACpE,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,4FAA4F;IAC5F,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -15,6 +15,8 @@ export interface RunLocalSuiteOptions {
15
15
  */
16
16
  targetUrlOverride?: string;
17
17
  goalIds?: string[];
18
+ /** Run only goals whose `acceptance_criterion_ids` intersect this set. */
19
+ acceptanceCriterionIds?: string[];
18
20
  trigger?: RunTrigger;
19
21
  commitSha?: string;
20
22
  repository?: string;
@@ -34,6 +36,7 @@ export interface RunSuiteExecutionOptions {
34
36
  environmentId?: string;
35
37
  targetUrlOverride?: string;
36
38
  goalIds?: string[];
39
+ acceptanceCriterionIds?: string[];
37
40
  trigger?: RunTrigger;
38
41
  commitSha?: string;
39
42
  repository?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CACrB,IAAI,CAAC,EAAE,+BAA+B,KACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,CACrB,IAAI,CAAC,EAAE,+BAA+B,KACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CACrB,IAAI,CAAC,EAAE,+BAA+B,KACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,CACrB,IAAI,CAAC,EAAE,+BAA+B,KACnC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}