@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
@@ -2,6 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { mkdir } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { browserTracesToCoreEvents, createPlaywrightTestingSession } from "@restormel/testing-browser-playwright";
5
+ import { sanitizePathSegment } from "@restormel/testing-core";
5
6
  import { resolveModel } from "@restormel/testing-keys-adapter";
6
7
  import { evaluateBrowserSuccessCriteria } from "./evaluate-criteria.js";
7
8
  import { judgeLogicalRefForCriteria } from "./judge-ref.js";
@@ -10,6 +11,18 @@ import { TimeoutError, withTimeout } from "./timeout.js";
10
11
  function nowIso() {
11
12
  return new Date().toISOString();
12
13
  }
14
+ /** Initial navigation URL: `base_url` with optional per-goal `start_path`. */
15
+ export function goalEntryUrl(baseUrl, startPath) {
16
+ if (startPath === undefined || startPath.trim() === "") {
17
+ return baseUrl;
18
+ }
19
+ try {
20
+ return new URL(startPath.trim(), baseUrl).href;
21
+ }
22
+ catch {
23
+ return baseUrl;
24
+ }
25
+ }
13
26
  function toKeysModelMeta(model, invocations) {
14
27
  return {
15
28
  logicalRef: model.meta.logicalRef,
@@ -20,13 +33,14 @@ function toKeysModelMeta(model, invocations) {
20
33
  };
21
34
  }
22
35
  async function captureScreenshot(session, artifactDir, goalId, attemptIndex) {
23
- const dir = join(artifactDir, "goals", goalId);
36
+ const safeGoal = sanitizePathSegment(goalId);
37
+ const dir = join(artifactDir, "goals", safeGoal);
24
38
  await mkdir(dir, { recursive: true });
25
39
  const name = `attempt-${attemptIndex}.png`;
26
40
  const abs = join(dir, name);
27
41
  try {
28
42
  await session.screenshot(abs);
29
- return join("goals", goalId, name);
43
+ return join("goals", safeGoal, name);
30
44
  }
31
45
  catch {
32
46
  return undefined;
@@ -102,11 +116,12 @@ export async function runBrowserGoal(options) {
102
116
  };
103
117
  }
104
118
  try {
105
- await withTimeout(session.navigate(options.baseUrl, { timeoutMs: options.timeoutMs, waitUntil: "load" }), options.timeoutMs + 2000, "navigation");
119
+ const entryUrl = goalEntryUrl(options.baseUrl, goal.startPath);
120
+ await withTimeout(session.navigate(entryUrl, { timeoutMs: options.timeoutMs, waitUntil: "load" }), options.timeoutMs + 2000, "navigation");
106
121
  pushTrace({
107
122
  kind: "observation",
108
- summary: `Navigated to ${options.baseUrl}`,
109
- metadata: { phase: "post_navigate", attemptIndex },
123
+ summary: `Navigated to ${entryUrl}`,
124
+ metadata: { phase: "post_navigate", attemptIndex, baseUrl: options.baseUrl, startPath: goal.startPath },
110
125
  });
111
126
  const evalResult = await withTimeout(evaluateBrowserSuccessCriteria(session.page, goal.successCriteria, {
112
127
  judgeModel,
@@ -1 +1 @@
1
- {"version":3,"file":"browser-goal.js","sourceRoot":"","sources":["../src/browser-goal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-goal.js","sourceRoot":"","sources":["../src/browser-goal.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-criteria.d.ts","sourceRoot":"","sources":["../src/evaluate-criteria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAe,eAAe,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAUD;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,GACA,OAAO,CAAC,kBAAkB,CAAC,CA8G7B"}
1
+ {"version":3,"file":"evaluate-criteria.d.ts","sourceRoot":"","sources":["../src/evaluate-criteria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAe,eAAe,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGrE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAUD;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,GACA,OAAO,CAAC,kBAAkB,CAAC,CA0H7B"}
@@ -1,3 +1,4 @@
1
+ import { evaluateLighthouseStructuredCheck, parseLighthouseStructuredPath } from "./lighthouse-structured-check.js";
1
2
  function normalizeUrl(u) {
2
3
  try {
3
4
  return new URL(u).href;
@@ -11,6 +12,33 @@ function normalizeUrl(u) {
11
12
  * Judge rubric (optional) runs after deterministics all pass.
12
13
  */
13
14
  export async function evaluateBrowserSuccessCriteria(page, criteria, options) {
15
+ if (criteria.anyOf !== undefined && criteria.anyOf.length > 0) {
16
+ const failures = [];
17
+ for (let i = 0; i < criteria.anyOf.length; i++) {
18
+ const branch = criteria.anyOf[i];
19
+ const r = await evaluateBrowserSuccessCriteria(page, branch, options);
20
+ if (r.verdict === "passed") {
21
+ return {
22
+ verdict: "passed",
23
+ reasonCode: "ANY_OF_BRANCH_PASSED",
24
+ summary: `any_of: branch ${i + 1} satisfied (${r.reasonCode})`,
25
+ };
26
+ }
27
+ failures.push(r);
28
+ }
29
+ if (failures.every((f) => f.verdict === "failed")) {
30
+ return {
31
+ verdict: "failed",
32
+ reasonCode: "ANY_OF_ALL_FAILED",
33
+ summary: `any_of: all ${failures.length} branches failed`,
34
+ };
35
+ }
36
+ return {
37
+ verdict: "indeterminate",
38
+ reasonCode: "ANY_OF_NONE_PASSED",
39
+ summary: `any_of: no branch passed (${failures.map((f) => f.reasonCode).join(", ")})`,
40
+ };
41
+ }
14
42
  const url = page.url();
15
43
  if (criteria.urlMatches !== undefined) {
16
44
  const patterns = Array.isArray(criteria.urlMatches) ? criteria.urlMatches : [criteria.urlMatches];
@@ -72,24 +100,9 @@ export async function evaluateBrowserSuccessCriteria(page, criteria, options) {
72
100
  }
73
101
  if (criteria.structuredChecks !== undefined && criteria.structuredChecks.length > 0) {
74
102
  for (const check of criteria.structuredChecks) {
75
- const parsed = parseStructuredPath(check.path);
76
- if (!parsed) {
77
- return {
78
- verdict: "indeterminate",
79
- reasonCode: "STRUCTURED_PATH_UNKNOWN",
80
- summary: `Unsupported structured check path ${JSON.stringify(truncate(check.path, 120))}`,
81
- };
82
- }
83
- if (parsed.kind === "css") {
84
- const text = await page.locator(parsed.selector).first().innerText().catch(() => "");
85
- if (!structuredExpectOk(text, check.expect)) {
86
- return {
87
- verdict: "failed",
88
- reasonCode: "STRUCTURED_MISMATCH",
89
- summary: `Structured check ${check.id ?? parsed.selector} did not match expected value`,
90
- };
91
- }
92
- }
103
+ const vit = await evaluateVitalOrCssCheck(page, check);
104
+ if (vit)
105
+ return vit;
93
106
  }
94
107
  }
95
108
  if (criteria.judgeRubric !== undefined) {
@@ -113,13 +126,140 @@ export async function evaluateBrowserSuccessCriteria(page, criteria, options) {
113
126
  return { verdict: "passed", reasonCode: "OK", summary: "All criteria satisfied" };
114
127
  }
115
128
  function hasAnyCriterion(c) {
116
- return (c.urlMatches != null ||
129
+ return ((c.anyOf != null && c.anyOf.length > 0) ||
130
+ c.urlMatches != null ||
117
131
  (c.domSignals != null && c.domSignals.length > 0) ||
118
132
  (c.textPresent != null && c.textPresent.length > 0) ||
119
133
  (c.textAbsent != null && c.textAbsent.length > 0) ||
120
134
  (c.structuredChecks != null && c.structuredChecks.length > 0) ||
121
135
  c.judgeRubric != null);
122
136
  }
137
+ async function evaluateVitalOrCssCheck(page, check) {
138
+ const path = check.path.trim();
139
+ const vital = parseVitalPath(path);
140
+ if (vital) {
141
+ return evaluateVitalCheck(page, vital, check);
142
+ }
143
+ const pl = path.toLowerCase();
144
+ const lhCats = parseLighthouseStructuredPath(path);
145
+ if (lhCats !== null) {
146
+ return evaluateLighthouseStructuredCheck(page.url(), check, lhCats);
147
+ }
148
+ if (pl.startsWith("lighthouse:") || pl.startsWith("lh:")) {
149
+ return {
150
+ verdict: "indeterminate",
151
+ reasonCode: "LIGHTHOUSE_PATH_UNKNOWN",
152
+ summary: `Unknown Lighthouse structured check path ${JSON.stringify(truncate(check.path, 120))}`,
153
+ };
154
+ }
155
+ const parsed = parseStructuredPath(path);
156
+ if (!parsed) {
157
+ return {
158
+ verdict: "indeterminate",
159
+ reasonCode: "STRUCTURED_PATH_UNKNOWN",
160
+ summary: `Unsupported structured check path ${JSON.stringify(truncate(check.path, 120))}`,
161
+ };
162
+ }
163
+ if (parsed.kind === "css") {
164
+ const text = await page.locator(parsed.selector).first().innerText().catch(() => "");
165
+ if (!structuredExpectOk(text, check.expect)) {
166
+ return {
167
+ verdict: "failed",
168
+ reasonCode: "STRUCTURED_MISMATCH",
169
+ summary: `Structured check ${check.id ?? parsed.selector} did not match expected value`,
170
+ };
171
+ }
172
+ }
173
+ return null;
174
+ }
175
+ function parseVitalPath(path) {
176
+ const p = path.toLowerCase();
177
+ if (p === "vital:lcp" || p === "web_vitals:lcp")
178
+ return "lcp";
179
+ if (p === "vital:fcp" || p === "web_vitals:fcp")
180
+ return "fcp";
181
+ if (p === "vital:cls" || p === "web_vitals:cls")
182
+ return "cls";
183
+ return null;
184
+ }
185
+ async function evaluateVitalCheck(page, kind, check) {
186
+ const maxMs = typeof check.expect === "number" && Number.isFinite(check.expect) ? check.expect : kind === "cls" ? 0.1 : 2500;
187
+ const label = check.id ?? `vital:${kind}`;
188
+ try {
189
+ if (kind === "lcp") {
190
+ const ms = await page.evaluate(() => {
191
+ const entries = performance.getEntriesByType("largest-contentful-paint");
192
+ const last = entries[entries.length - 1];
193
+ if (!last)
194
+ return null;
195
+ const t = last.renderTime ?? last.loadTime ?? last.startTime;
196
+ return typeof t === "number" && t > 0 ? t : null;
197
+ });
198
+ if (ms == null) {
199
+ return {
200
+ verdict: "indeterminate",
201
+ reasonCode: "VITAL_LCP_MISSING",
202
+ summary: `${label}: no LCP entry (try waiting for load)`,
203
+ };
204
+ }
205
+ if (ms > maxMs) {
206
+ return {
207
+ verdict: "failed",
208
+ reasonCode: "VITAL_LCP_SLOW",
209
+ summary: `${label}: LCP ${Math.round(ms)}ms exceeds max ${maxMs}ms`,
210
+ };
211
+ }
212
+ return { verdict: "passed", reasonCode: "VITAL_LCP_OK", summary: `${label}: LCP ${Math.round(ms)}ms` };
213
+ }
214
+ if (kind === "fcp") {
215
+ const ms = await page.evaluate(() => {
216
+ const entries = performance.getEntriesByName("first-contentful-paint");
217
+ const e = entries[0];
218
+ return e && typeof e.startTime === "number" ? e.startTime : null;
219
+ });
220
+ if (ms == null) {
221
+ return {
222
+ verdict: "indeterminate",
223
+ reasonCode: "VITAL_FCP_MISSING",
224
+ summary: `${label}: no FCP entry`,
225
+ };
226
+ }
227
+ if (ms > maxMs) {
228
+ return {
229
+ verdict: "failed",
230
+ reasonCode: "VITAL_FCP_SLOW",
231
+ summary: `${label}: FCP ${Math.round(ms)}ms exceeds max ${maxMs}ms`,
232
+ };
233
+ }
234
+ return { verdict: "passed", reasonCode: "VITAL_FCP_OK", summary: `${label}: FCP ${Math.round(ms)}ms` };
235
+ }
236
+ const cls = await page.evaluate(() => {
237
+ const entries = performance.getEntriesByType("layout-shift");
238
+ let score = 0;
239
+ for (const e of entries) {
240
+ if (e.hadRecentInput === true)
241
+ continue;
242
+ score += e.value ?? 0;
243
+ }
244
+ return score;
245
+ });
246
+ if (cls > maxMs) {
247
+ return {
248
+ verdict: "failed",
249
+ reasonCode: "VITAL_CLS_HIGH",
250
+ summary: `${label}: CLS ${cls.toFixed(3)} exceeds max ${maxMs}`,
251
+ };
252
+ }
253
+ return { verdict: "passed", reasonCode: "VITAL_CLS_OK", summary: `${label}: CLS ${cls.toFixed(3)}` };
254
+ }
255
+ catch (e) {
256
+ return {
257
+ verdict: "indeterminate",
258
+ reasonCode: "VITAL_EVAL_ERROR",
259
+ summary: `${label}: ${e instanceof Error ? e.message : String(e)}`,
260
+ };
261
+ }
262
+ }
123
263
  function parseStructuredPath(path) {
124
264
  if (path.startsWith("css:")) {
125
265
  return { kind: "css", selector: path.slice("css:".length).trim() };
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-criteria.js","sourceRoot":"","sources":["../src/evaluate-criteria.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluate-criteria.js","sourceRoot":"","sources":["../src/evaluate-criteria.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  */
4
4
  export { runBrowserGoal } from "./browser-goal.js";
5
5
  export type { RunBrowserGoalOptions, RunBrowserGoalResult } from "./browser-goal.js";
6
+ export { runAcSequenceBrowserGoal } from "./run-ac-sequence-goal.js";
7
+ export type { RunAcSequenceBrowserGoalOptions } from "./run-ac-sequence-goal.js";
6
8
  export { evaluateBrowserSuccessCriteria } from "./evaluate-criteria.js";
7
9
  export type { CriteriaEvaluation } from "./evaluate-criteria.js";
8
10
  export { runGoalAttempts } from "./retries.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  * @restormel/testing-runner — local suite execution (MVP).
3
3
  */
4
4
  export { runBrowserGoal } from "./browser-goal.js";
5
+ export { runAcSequenceBrowserGoal } from "./run-ac-sequence-goal.js";
5
6
  export { evaluateBrowserSuccessCriteria } from "./evaluate-criteria.js";
6
7
  export { runGoalAttempts } from "./retries.js";
7
8
  export { runLocalSuite, runSuiteFromConfig } from "./run-suite.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Verdict } from "@restormel/testing-core";
2
+ type CriteriaEvaluation = {
3
+ verdict: Verdict;
4
+ reasonCode: string;
5
+ summary: string;
6
+ judgeModelInvocations?: number;
7
+ };
8
+ /** Lighthouse category ids accepted in structured_checks paths. */
9
+ export declare const LIGHTHOUSE_CATEGORY_IDS: readonly ["performance", "accessibility", "best-practices", "seo", "pwa"];
10
+ export type LighthouseCategoryId = (typeof LIGHTHOUSE_CATEGORY_IDS)[number];
11
+ /**
12
+ * Parse `lighthouse:*` / `lh:*` structured check paths.
13
+ * `full` / `all` runs the four core categories (excludes pwa by default — use `lighthouse:pwa` separately).
14
+ */
15
+ export declare function parseLighthouseStructuredPath(path: string): LighthouseCategoryId[] | null;
16
+ /** Minimum category score 0–1 from YAML `expect` (0–100 integer or 0–1 fraction). */
17
+ export declare function lighthouseMinScore01(expect?: unknown): number | undefined;
18
+ /**
19
+ * Runs Lighthouse in a **separate** headless Chrome (via chrome-launcher), not the Playwright page session.
20
+ * Cookies / storage from Playwright are **not** applied — use for public URLs or accept re-auth limitations.
21
+ */
22
+ export declare function evaluateLighthouseStructuredCheck(pageUrl: string, check: {
23
+ path: string;
24
+ id?: string;
25
+ expect?: unknown;
26
+ }, categories: LighthouseCategoryId[]): Promise<CriteriaEvaluation>;
27
+ export {};
28
+ //# sourceMappingURL=lighthouse-structured-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lighthouse-structured-check.d.ts","sourceRoot":"","sources":["../src/lighthouse-structured-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKvD,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,2EAM1B,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE,GAAG,IAAI,CAqBzF;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAczE;AAWD;;;GAGG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACtD,UAAU,EAAE,oBAAoB,EAAE,GACjC,OAAO,CAAC,kBAAkB,CAAC,CA4H7B"}
@@ -0,0 +1,179 @@
1
+ import { launch as launchChrome } from "chrome-launcher";
2
+ import lighthouse from "lighthouse";
3
+ import { chromium } from "playwright";
4
+ /** Lighthouse category ids accepted in structured_checks paths. */
5
+ export const LIGHTHOUSE_CATEGORY_IDS = [
6
+ "performance",
7
+ "accessibility",
8
+ "best-practices",
9
+ "seo",
10
+ "pwa",
11
+ ];
12
+ /**
13
+ * Parse `lighthouse:*` / `lh:*` structured check paths.
14
+ * `full` / `all` runs the four core categories (excludes pwa by default — use `lighthouse:pwa` separately).
15
+ */
16
+ export function parseLighthouseStructuredPath(path) {
17
+ const p = path.trim().toLowerCase();
18
+ const single = {
19
+ "lighthouse:performance": "performance",
20
+ "lh:performance": "performance",
21
+ "lighthouse:accessibility": "accessibility",
22
+ "lh:accessibility": "accessibility",
23
+ "lighthouse:best-practices": "best-practices",
24
+ "lh:best-practices": "best-practices",
25
+ "lighthouse:seo": "seo",
26
+ "lh:seo": "seo",
27
+ "lighthouse:pwa": "pwa",
28
+ "lh:pwa": "pwa",
29
+ };
30
+ if (single[p] !== undefined) {
31
+ return [single[p]];
32
+ }
33
+ if (p === "lighthouse:full" || p === "lh:full" || p === "lighthouse:all" || p === "lh:all") {
34
+ return ["performance", "accessibility", "best-practices", "seo"];
35
+ }
36
+ return null;
37
+ }
38
+ /** Minimum category score 0–1 from YAML `expect` (0–100 integer or 0–1 fraction). */
39
+ export function lighthouseMinScore01(expect) {
40
+ if (expect === undefined || expect === null) {
41
+ return 0.5;
42
+ }
43
+ if (typeof expect !== "number" || !Number.isFinite(expect)) {
44
+ return undefined;
45
+ }
46
+ if (expect > 100 || expect < 0) {
47
+ return undefined;
48
+ }
49
+ if (expect > 1) {
50
+ return expect / 100;
51
+ }
52
+ return expect;
53
+ }
54
+ function getenvMs(name, defaultMs) {
55
+ const raw = process.env[name]?.trim();
56
+ if (raw === undefined || raw === "") {
57
+ return defaultMs;
58
+ }
59
+ const n = Number.parseInt(raw, 10);
60
+ return Number.isFinite(n) && n >= 5000 ? n : defaultMs;
61
+ }
62
+ /**
63
+ * Runs Lighthouse in a **separate** headless Chrome (via chrome-launcher), not the Playwright page session.
64
+ * Cookies / storage from Playwright are **not** applied — use for public URLs or accept re-auth limitations.
65
+ */
66
+ export async function evaluateLighthouseStructuredCheck(pageUrl, check, categories) {
67
+ if (process.env.RESTORMEL_TESTING_SKIP_LIGHTHOUSE?.trim() === "1") {
68
+ return {
69
+ verdict: "indeterminate",
70
+ reasonCode: "LIGHTHOUSE_SKIPPED",
71
+ summary: `${check.id ?? check.path}: skipped (RESTORMEL_TESTING_SKIP_LIGHTHOUSE=1)`,
72
+ };
73
+ }
74
+ const minScore = lighthouseMinScore01(check.expect);
75
+ if (minScore === undefined) {
76
+ return {
77
+ verdict: "indeterminate",
78
+ reasonCode: "LIGHTHOUSE_EXPECT_INVALID",
79
+ summary: `${check.id ?? check.path}: expect must be 0–100 (score %) or 0–1 (fraction)`,
80
+ };
81
+ }
82
+ let u;
83
+ try {
84
+ u = new URL(pageUrl);
85
+ }
86
+ catch {
87
+ return {
88
+ verdict: "indeterminate",
89
+ reasonCode: "LIGHTHOUSE_BAD_URL",
90
+ summary: "Cannot run Lighthouse: page URL is not absolute",
91
+ };
92
+ }
93
+ if (u.protocol !== "http:" && u.protocol !== "https:") {
94
+ return {
95
+ verdict: "indeterminate",
96
+ reasonCode: "LIGHTHOUSE_BAD_URL",
97
+ summary: "Lighthouse requires http(s) URL",
98
+ };
99
+ }
100
+ const label = check.id ?? check.path;
101
+ const timeoutMs = getenvMs("RESTORMEL_TESTING_LIGHTHOUSE_TIMEOUT_MS", 180_000);
102
+ const chromePath = chromium.executablePath();
103
+ let chrome;
104
+ try {
105
+ chrome = await launchChrome({
106
+ chromePath,
107
+ chromeFlags: ["--headless=new", "--no-sandbox", "--disable-gpu", "--disable-dev-shm-usage"],
108
+ });
109
+ const run = async () => {
110
+ const result = await lighthouse(u.href, {
111
+ logLevel: "error",
112
+ output: "json",
113
+ onlyCategories: [...categories],
114
+ port: chrome.port,
115
+ screenEmulation: { disabled: true },
116
+ });
117
+ const lhr = result?.lhr;
118
+ if (!lhr?.categories) {
119
+ return {
120
+ verdict: "indeterminate",
121
+ reasonCode: "LIGHTHOUSE_NO_RESULT",
122
+ summary: `${label}: Lighthouse returned no categories`,
123
+ };
124
+ }
125
+ const failures = [];
126
+ for (const id of categories) {
127
+ const cat = lhr.categories[id];
128
+ const score = cat?.score;
129
+ if (score == null) {
130
+ failures.push(`${id}:no-score`);
131
+ continue;
132
+ }
133
+ if (score < minScore) {
134
+ failures.push(`${id}:${Math.round(score * 100)}%<${Math.round(minScore * 100)}%`);
135
+ }
136
+ }
137
+ if (failures.length > 0) {
138
+ return {
139
+ verdict: "failed",
140
+ reasonCode: "LIGHTHOUSE_SCORE_BELOW_MIN",
141
+ summary: `${label}: ${failures.join(", ")}`,
142
+ };
143
+ }
144
+ const parts = categories.map((id) => {
145
+ const s = lhr.categories[id]?.score;
146
+ return `${id}:${s == null ? "?" : `${Math.round(s * 100)}%`}`;
147
+ });
148
+ return {
149
+ verdict: "passed",
150
+ reasonCode: "LIGHTHOUSE_OK",
151
+ summary: `${label}: ${parts.join(", ")}`,
152
+ };
153
+ };
154
+ const outcome = await Promise.race([
155
+ run(),
156
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Lighthouse timed out after ${timeoutMs}ms`)), timeoutMs)),
157
+ ]);
158
+ return outcome;
159
+ }
160
+ catch (e) {
161
+ const msg = e instanceof Error ? e.message : String(e);
162
+ return {
163
+ verdict: "indeterminate",
164
+ reasonCode: "LIGHTHOUSE_RUN_ERROR",
165
+ summary: `${label}: ${msg}`,
166
+ };
167
+ }
168
+ finally {
169
+ if (chrome) {
170
+ try {
171
+ await chrome.kill();
172
+ }
173
+ catch {
174
+ /* ignore */
175
+ }
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=lighthouse-structured-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lighthouse-structured-check.js","sourceRoot":"","sources":["../src/lighthouse-structured-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TestGoal } from "@restormel/testing-core";
2
+ /**
3
+ * After `mission_executor` exits 0, browser evaluation uses this goal: agent-only fields removed,
4
+ * navigation path is `after_agent.start_path` when set, otherwise the goal's top-level `start_path`.
5
+ */
6
+ export declare function toPostMissionObserveGoal(goal: TestGoal): TestGoal;
7
+ //# sourceMappingURL=post-mission-goal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-mission-goal.d.ts","sourceRoot":"","sources":["../src/post-mission-goal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAiBjE"}