@itsthelore/proofkeeper 2026.6.0
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/LICENSE +201 -0
- package/NOTICE +10 -0
- package/README.md +207 -0
- package/dist/agent/adapters/claude.d.ts +93 -0
- package/dist/agent/adapters/claude.d.ts.map +1 -0
- package/dist/agent/adapters/claude.js +96 -0
- package/dist/agent/adapters/claude.js.map +1 -0
- package/dist/agent/drive.d.ts +53 -0
- package/dist/agent/drive.d.ts.map +1 -0
- package/dist/agent/drive.js +194 -0
- package/dist/agent/drive.js.map +1 -0
- package/dist/agent/loop.d.ts +40 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +29 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/model.d.ts +43 -0
- package/dist/agent/model.d.ts.map +1 -0
- package/dist/agent/model.js +10 -0
- package/dist/agent/model.js.map +1 -0
- package/dist/agent/observe.d.ts +48 -0
- package/dist/agent/observe.d.ts.map +1 -0
- package/dist/agent/observe.js +65 -0
- package/dist/agent/observe.js.map +1 -0
- package/dist/agent/tools.d.ts +74 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +257 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/cli.d.ts +61 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +648 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler/actions.d.ts +101 -0
- package/dist/compiler/actions.d.ts.map +1 -0
- package/dist/compiler/actions.js +13 -0
- package/dist/compiler/actions.js.map +1 -0
- package/dist/compiler/compiler.d.ts +25 -0
- package/dist/compiler/compiler.d.ts.map +1 -0
- package/dist/compiler/compiler.js +42 -0
- package/dist/compiler/compiler.js.map +1 -0
- package/dist/compiler/emit.d.ts +21 -0
- package/dist/compiler/emit.d.ts.map +1 -0
- package/dist/compiler/emit.js +164 -0
- package/dist/compiler/emit.js.map +1 -0
- package/dist/compiler/http.d.ts +30 -0
- package/dist/compiler/http.d.ts.map +1 -0
- package/dist/compiler/http.js +30 -0
- package/dist/compiler/http.js.map +1 -0
- package/dist/compiler/recorder.d.ts +62 -0
- package/dist/compiler/recorder.d.ts.map +1 -0
- package/dist/compiler/recorder.js +148 -0
- package/dist/compiler/recorder.js.map +1 -0
- package/dist/compiler/summary.d.ts +11 -0
- package/dist/compiler/summary.d.ts.map +1 -0
- package/dist/compiler/summary.js +56 -0
- package/dist/compiler/summary.js.map +1 -0
- package/dist/compiler/terminal.d.ts +42 -0
- package/dist/compiler/terminal.d.ts.map +1 -0
- package/dist/compiler/terminal.js +47 -0
- package/dist/compiler/terminal.js.map +1 -0
- package/dist/compiler/types.d.ts +25 -0
- package/dist/compiler/types.d.ts.map +1 -0
- package/dist/compiler/types.js +10 -0
- package/dist/compiler/types.js.map +1 -0
- package/dist/coverage/graph.d.ts +55 -0
- package/dist/coverage/graph.d.ts.map +1 -0
- package/dist/coverage/graph.js +87 -0
- package/dist/coverage/graph.js.map +1 -0
- package/dist/coverage/model.d.ts +36 -0
- package/dist/coverage/model.d.ts.map +1 -0
- package/dist/coverage/model.js +57 -0
- package/dist/coverage/model.js.map +1 -0
- package/dist/coverage/report.d.ts +27 -0
- package/dist/coverage/report.d.ts.map +1 -0
- package/dist/coverage/report.js +45 -0
- package/dist/coverage/report.js.map +1 -0
- package/dist/coverage/source.d.ts +23 -0
- package/dist/coverage/source.d.ts.map +1 -0
- package/dist/coverage/source.js +48 -0
- package/dist/coverage/source.js.map +1 -0
- package/dist/fidelity/gate.d.ts +34 -0
- package/dist/fidelity/gate.d.ts.map +1 -0
- package/dist/fidelity/gate.js +38 -0
- package/dist/fidelity/gate.js.map +1 -0
- package/dist/index.d.ts +69 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/learning/store.d.ts +44 -0
- package/dist/learning/store.d.ts.map +1 -0
- package/dist/learning/store.js +64 -0
- package/dist/learning/store.js.map +1 -0
- package/dist/qa/concurrency.d.ts +7 -0
- package/dist/qa/concurrency.d.ts.map +1 -0
- package/dist/qa/concurrency.js +21 -0
- package/dist/qa/concurrency.js.map +1 -0
- package/dist/qa/run-qa.d.ts +87 -0
- package/dist/qa/run-qa.d.ts.map +1 -0
- package/dist/qa/run-qa.js +106 -0
- package/dist/qa/run-qa.js.map +1 -0
- package/dist/qa/run-scoped.d.ts +82 -0
- package/dist/qa/run-scoped.d.ts.map +1 -0
- package/dist/qa/run-scoped.js +96 -0
- package/dist/qa/run-scoped.js.map +1 -0
- package/dist/runner/playwright-report.d.ts +52 -0
- package/dist/runner/playwright-report.d.ts.map +1 -0
- package/dist/runner/playwright-report.js +90 -0
- package/dist/runner/playwright-report.js.map +1 -0
- package/dist/runner/playwright-runner.d.ts +38 -0
- package/dist/runner/playwright-runner.d.ts.map +1 -0
- package/dist/runner/playwright-runner.js +73 -0
- package/dist/runner/playwright-runner.js.map +1 -0
- package/dist/runner/types.d.ts +45 -0
- package/dist/runner/types.d.ts.map +1 -0
- package/dist/runner/types.js +10 -0
- package/dist/runner/types.js.map +1 -0
- package/dist/scaffold/scaffold.d.ts +22 -0
- package/dist/scaffold/scaffold.d.ts.map +1 -0
- package/dist/scaffold/scaffold.js +34 -0
- package/dist/scaffold/scaffold.js.map +1 -0
- package/dist/scope/config.d.ts +89 -0
- package/dist/scope/config.d.ts.map +1 -0
- package/dist/scope/config.js +172 -0
- package/dist/scope/config.js.map +1 -0
- package/dist/scope/diff-scope.d.ts +31 -0
- package/dist/scope/diff-scope.d.ts.map +1 -0
- package/dist/scope/diff-scope.js +42 -0
- package/dist/scope/diff-scope.js.map +1 -0
- package/dist/scope/glob.d.ts +17 -0
- package/dist/scope/glob.d.ts.map +1 -0
- package/dist/scope/glob.js +50 -0
- package/dist/scope/glob.js.map +1 -0
- package/dist/writeback/comment.d.ts +103 -0
- package/dist/writeback/comment.d.ts.map +1 -0
- package/dist/writeback/comment.js +150 -0
- package/dist/writeback/comment.js.map +1 -0
- package/dist/writeback/gateways/github-rest.d.ts +66 -0
- package/dist/writeback/gateways/github-rest.d.ts.map +1 -0
- package/dist/writeback/gateways/github-rest.js +107 -0
- package/dist/writeback/gateways/github-rest.js.map +1 -0
- package/dist/writeback/merge.d.ts +27 -0
- package/dist/writeback/merge.d.ts.map +1 -0
- package/dist/writeback/merge.js +89 -0
- package/dist/writeback/merge.js.map +1 -0
- package/dist/writeback/proposal.d.ts +52 -0
- package/dist/writeback/proposal.d.ts.map +1 -0
- package/dist/writeback/proposal.js +79 -0
- package/dist/writeback/proposal.js.map +1 -0
- package/dist/writeback/proposer.d.ts +94 -0
- package/dist/writeback/proposer.d.ts.map +1 -0
- package/dist/writeback/proposer.js +79 -0
- package/dist/writeback/proposer.js.map +1 -0
- package/dist/writeback/verified-by.d.ts +56 -0
- package/dist/writeback/verified-by.d.ts.map +1 -0
- package/dist/writeback/verified-by.js +60 -0
- package/dist/writeback/verified-by.js.map +1 -0
- package/package.json +62 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The recorded-action IR — the source of truth the session→test compiler
|
|
3
|
+
* compiles from (Proofkeeper Initiative 2, the moat).
|
|
4
|
+
*
|
|
5
|
+
* A drive session is captured as an ordered, typed {@link Action} list with
|
|
6
|
+
* Playwright-codegen-style {@link Locator} strategies. This IR is deliberately
|
|
7
|
+
* small, explicit, and serializable: the compiler reduces it to a `.spec.ts`
|
|
8
|
+
* deterministically, and the recorder only appends an action *after* it
|
|
9
|
+
* succeeded against a real page — so a recorded trace is, by construction, a
|
|
10
|
+
* sequence that held at least once.
|
|
11
|
+
*/
|
|
12
|
+
/** How to find an element, preferring resilient codegen-style strategies. */
|
|
13
|
+
export type Locator = {
|
|
14
|
+
kind: "role";
|
|
15
|
+
role: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
} | {
|
|
18
|
+
kind: "testId";
|
|
19
|
+
testId: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: "text";
|
|
22
|
+
text: string;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "label";
|
|
25
|
+
label: string;
|
|
26
|
+
} | {
|
|
27
|
+
kind: "css";
|
|
28
|
+
selector: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* One recorded interaction or assertion. Browser actions drive a page; terminal
|
|
32
|
+
* actions (`run`, `expectOutput`, `expectExit`) drive a shell — the second of
|
|
33
|
+
* the "browser and a terminal" tools (ADR-083). A session may interleave both.
|
|
34
|
+
*/
|
|
35
|
+
export type Action = {
|
|
36
|
+
type: "goto";
|
|
37
|
+
url: string;
|
|
38
|
+
} | {
|
|
39
|
+
type: "click";
|
|
40
|
+
locator: Locator;
|
|
41
|
+
} | {
|
|
42
|
+
type: "fill";
|
|
43
|
+
locator: Locator;
|
|
44
|
+
value: string;
|
|
45
|
+
} | {
|
|
46
|
+
type: "check";
|
|
47
|
+
locator: Locator;
|
|
48
|
+
} | {
|
|
49
|
+
type: "press";
|
|
50
|
+
locator: Locator;
|
|
51
|
+
key: string;
|
|
52
|
+
} | {
|
|
53
|
+
type: "expectText";
|
|
54
|
+
locator: Locator;
|
|
55
|
+
text: string;
|
|
56
|
+
} | {
|
|
57
|
+
type: "expectVisible";
|
|
58
|
+
locator: Locator;
|
|
59
|
+
} | {
|
|
60
|
+
type: "run";
|
|
61
|
+
command: string;
|
|
62
|
+
cwd?: string;
|
|
63
|
+
} | {
|
|
64
|
+
type: "expectOutput";
|
|
65
|
+
match: "exact" | "contains" | "regex";
|
|
66
|
+
stream: "stdout" | "stderr";
|
|
67
|
+
value: string;
|
|
68
|
+
} | {
|
|
69
|
+
type: "expectExit";
|
|
70
|
+
code: number;
|
|
71
|
+
} | {
|
|
72
|
+
type: "request";
|
|
73
|
+
method: string;
|
|
74
|
+
url: string;
|
|
75
|
+
headers?: Record<string, string>;
|
|
76
|
+
body?: string;
|
|
77
|
+
} | {
|
|
78
|
+
type: "expectStatus";
|
|
79
|
+
status: number;
|
|
80
|
+
} | {
|
|
81
|
+
type: "expectJson";
|
|
82
|
+
path: string;
|
|
83
|
+
equals: string | number | boolean;
|
|
84
|
+
};
|
|
85
|
+
/** A captured drive session: its entry point and the actions recorded from it. */
|
|
86
|
+
export interface RecordedSession {
|
|
87
|
+
/** The capability this session exercises (threads to the write-back). */
|
|
88
|
+
capabilityId?: string;
|
|
89
|
+
/** Human title for the emitted test. */
|
|
90
|
+
title: string;
|
|
91
|
+
/** Product entry point the session started from. */
|
|
92
|
+
startUrl: string;
|
|
93
|
+
/** The recorded actions, in order. */
|
|
94
|
+
actions: Action[];
|
|
95
|
+
/**
|
|
96
|
+
* Optional human-readable Markdown test plan the model emitted before driving
|
|
97
|
+
* (metadata, not compiled into the spec; surfaced in the write-back).
|
|
98
|
+
*/
|
|
99
|
+
plan?: string;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/compiler/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAEd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAE3C;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3G;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAEpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACjG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE5E,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The recorded-action IR — the source of truth the session→test compiler
|
|
3
|
+
* compiles from (Proofkeeper Initiative 2, the moat).
|
|
4
|
+
*
|
|
5
|
+
* A drive session is captured as an ordered, typed {@link Action} list with
|
|
6
|
+
* Playwright-codegen-style {@link Locator} strategies. This IR is deliberately
|
|
7
|
+
* small, explicit, and serializable: the compiler reduces it to a `.spec.ts`
|
|
8
|
+
* deterministically, and the recorder only appends an action *after* it
|
|
9
|
+
* succeeded against a real page — so a recorded trace is, by construction, a
|
|
10
|
+
* sequence that held at least once.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/compiler/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compilers for the session→test moat (Proofkeeper Initiative 2).
|
|
3
|
+
*
|
|
4
|
+
* - {@link CodegenCompiler} is the real compiler: it reduces a recorded action
|
|
5
|
+
* trace to deterministic Playwright source ({@link emitSpec}) and writes it to
|
|
6
|
+
* a `.spec.ts` file, returning a candidate test for the fidelity gate.
|
|
7
|
+
* - {@link NotImplementedCompiler} remains for the not-yet-autonomous drive
|
|
8
|
+
* path: when no real session was recorded, it refuses rather than emit a fake.
|
|
9
|
+
*/
|
|
10
|
+
import type { RecordedSession } from "./actions.js";
|
|
11
|
+
import type { CandidateTest, Compiler } from "./types.js";
|
|
12
|
+
export interface CodegenCompilerOptions {
|
|
13
|
+
/** Directory the emitted `.spec.ts` files are written to. */
|
|
14
|
+
outDir: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class CodegenCompiler implements Compiler {
|
|
17
|
+
private readonly options;
|
|
18
|
+
constructor(options: CodegenCompilerOptions);
|
|
19
|
+
compile(session: RecordedSession): Promise<CandidateTest>;
|
|
20
|
+
}
|
|
21
|
+
/** Refuses to emit when there is no recorded session (the deferred drive path). */
|
|
22
|
+
export declare class NotImplementedCompiler implements Compiler {
|
|
23
|
+
compile(_session: RecordedSession): Promise<CandidateTest>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,qBAAa,eAAgB,YAAW,QAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAEtD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;CAUhE;AAED,mFAAmF;AACnF,qBAAa,sBAAuB,YAAW,QAAQ;IACrD,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;CAQ3D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compilers for the session→test moat (Proofkeeper Initiative 2).
|
|
3
|
+
*
|
|
4
|
+
* - {@link CodegenCompiler} is the real compiler: it reduces a recorded action
|
|
5
|
+
* trace to deterministic Playwright source ({@link emitSpec}) and writes it to
|
|
6
|
+
* a `.spec.ts` file, returning a candidate test for the fidelity gate.
|
|
7
|
+
* - {@link NotImplementedCompiler} remains for the not-yet-autonomous drive
|
|
8
|
+
* path: when no real session was recorded, it refuses rather than emit a fake.
|
|
9
|
+
*/
|
|
10
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
11
|
+
import { dirname, join } from "node:path";
|
|
12
|
+
import { emitSpec } from "./emit.js";
|
|
13
|
+
/** A filesystem-safe slug for a spec filename, derived deterministically. */
|
|
14
|
+
function slug(value) {
|
|
15
|
+
const cleaned = value
|
|
16
|
+
.toLowerCase()
|
|
17
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
18
|
+
.replace(/^-+|-+$/g, "");
|
|
19
|
+
return cleaned || "session";
|
|
20
|
+
}
|
|
21
|
+
export class CodegenCompiler {
|
|
22
|
+
options;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.options = options;
|
|
25
|
+
}
|
|
26
|
+
async compile(session) {
|
|
27
|
+
const source = emitSpec(session); // throws if the session recorded nothing
|
|
28
|
+
const id = session.capabilityId ? slug(session.capabilityId) : slug(session.title);
|
|
29
|
+
const specPath = join(this.options.outDir, `${id}.spec.ts`);
|
|
30
|
+
await mkdir(dirname(specPath), { recursive: true });
|
|
31
|
+
await writeFile(specPath, source, "utf8");
|
|
32
|
+
return { id, specPath, title: session.title, fromSession: session };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Refuses to emit when there is no recorded session (the deferred drive path). */
|
|
36
|
+
export class NotImplementedCompiler {
|
|
37
|
+
compile(_session) {
|
|
38
|
+
return Promise.reject(new Error("autonomous drive→compile is not implemented in v0.0.1. Record a session " +
|
|
39
|
+
"with the Recorder and compile it with CodegenCompiler instead."));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQrC,6EAA6E;AAC7E,SAAS,IAAI,CAAC,KAAa;IACzB,MAAM,OAAO,GAAG,KAAK;SAClB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAEhE,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC;QAC3E,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAE5D,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAE1C,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACtE,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,OAAO,sBAAsB;IACjC,OAAO,CAAC,QAAyB;QAC/B,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,0EAA0E;YACxE,gEAAgE,CACnE,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The deterministic session→test emitter (Proofkeeper Initiative 2, the moat).
|
|
3
|
+
*
|
|
4
|
+
* Pure: a {@link RecordedSession} reduces to Playwright `.spec.ts` source with
|
|
5
|
+
* no I/O and no timestamps, so the same recording always emits byte-identical
|
|
6
|
+
* code. That determinism is what makes the emitted test reviewable and lets the
|
|
7
|
+
* fidelity gate's re-runs mean something — nothing varies between compile runs.
|
|
8
|
+
*
|
|
9
|
+
* The start URL is emitted as `process.env.PROOFKEEPER_BASE_URL ?? <recorded>`
|
|
10
|
+
* so the compiled test re-runs against whatever target the runner injects
|
|
11
|
+
* (dev, prod) while still being runnable standalone.
|
|
12
|
+
*/
|
|
13
|
+
import type { RecordedSession } from "./actions.js";
|
|
14
|
+
/**
|
|
15
|
+
* Emit Playwright `.spec.ts` source for a recorded session.
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} when the session recorded no actions — an empty test
|
|
18
|
+
* verifies nothing and must not be emitted.
|
|
19
|
+
*/
|
|
20
|
+
export declare function emitSpec(session: RecordedSession): string;
|
|
21
|
+
//# sourceMappingURL=emit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/compiler/emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,cAAc,CAAC;AA6GrE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAsDzD"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The deterministic session→test emitter (Proofkeeper Initiative 2, the moat).
|
|
3
|
+
*
|
|
4
|
+
* Pure: a {@link RecordedSession} reduces to Playwright `.spec.ts` source with
|
|
5
|
+
* no I/O and no timestamps, so the same recording always emits byte-identical
|
|
6
|
+
* code. That determinism is what makes the emitted test reviewable and lets the
|
|
7
|
+
* fidelity gate's re-runs mean something — nothing varies between compile runs.
|
|
8
|
+
*
|
|
9
|
+
* The start URL is emitted as `process.env.PROOFKEEPER_BASE_URL ?? <recorded>`
|
|
10
|
+
* so the compiled test re-runs against whatever target the runner injects
|
|
11
|
+
* (dev, prod) while still being runnable standalone.
|
|
12
|
+
*/
|
|
13
|
+
/** Single-quoted string literal with deterministic escaping. */
|
|
14
|
+
function lit(value) {
|
|
15
|
+
const escaped = value
|
|
16
|
+
.replace(/\\/g, "\\\\")
|
|
17
|
+
.replace(/'/g, "\\'")
|
|
18
|
+
.replace(/\n/g, "\\n")
|
|
19
|
+
.replace(/\r/g, "\\r")
|
|
20
|
+
.replace(/\t/g, "\\t");
|
|
21
|
+
return `'${escaped}'`;
|
|
22
|
+
}
|
|
23
|
+
function locatorExpr(loc) {
|
|
24
|
+
switch (loc.kind) {
|
|
25
|
+
case "role":
|
|
26
|
+
return loc.name !== undefined
|
|
27
|
+
? `page.getByRole(${lit(loc.role)}, { name: ${lit(loc.name)} })`
|
|
28
|
+
: `page.getByRole(${lit(loc.role)})`;
|
|
29
|
+
case "testId":
|
|
30
|
+
return `page.getByTestId(${lit(loc.testId)})`;
|
|
31
|
+
case "text":
|
|
32
|
+
return `page.getByText(${lit(loc.text)})`;
|
|
33
|
+
case "label":
|
|
34
|
+
return `page.getByLabel(${lit(loc.label)})`;
|
|
35
|
+
case "css":
|
|
36
|
+
return `page.locator(${lit(loc.selector)})`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function outputMatchStmt(action) {
|
|
40
|
+
const stream = `last.${action.stream}`;
|
|
41
|
+
switch (action.match) {
|
|
42
|
+
case "exact":
|
|
43
|
+
return `expect(${stream}.trim()).toBe(${lit(action.value)});`;
|
|
44
|
+
case "contains":
|
|
45
|
+
return `expect(${stream}).toContain(${lit(action.value)});`;
|
|
46
|
+
case "regex":
|
|
47
|
+
return `expect(${stream}).toMatch(new RegExp(${lit(action.value)}));`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function actionStmt(action, startUrl) {
|
|
51
|
+
switch (action.type) {
|
|
52
|
+
case "goto":
|
|
53
|
+
return action.url === startUrl
|
|
54
|
+
? `await page.goto(BASE);`
|
|
55
|
+
: `await page.goto(${lit(action.url)});`;
|
|
56
|
+
case "click":
|
|
57
|
+
return `await ${locatorExpr(action.locator)}.click();`;
|
|
58
|
+
case "fill":
|
|
59
|
+
return `await ${locatorExpr(action.locator)}.fill(${lit(action.value)});`;
|
|
60
|
+
case "check":
|
|
61
|
+
return `await ${locatorExpr(action.locator)}.check();`;
|
|
62
|
+
case "press":
|
|
63
|
+
return `await ${locatorExpr(action.locator)}.press(${lit(action.key)});`;
|
|
64
|
+
case "expectText":
|
|
65
|
+
return `await expect(${locatorExpr(action.locator)}).toHaveText(${lit(action.text)});`;
|
|
66
|
+
case "expectVisible":
|
|
67
|
+
return `await expect(${locatorExpr(action.locator)}).toBeVisible();`;
|
|
68
|
+
case "run":
|
|
69
|
+
return action.cwd !== undefined
|
|
70
|
+
? `last = runCommand(${lit(action.command)}, { cwd: ${lit(action.cwd)} });`
|
|
71
|
+
: `last = runCommand(${lit(action.command)});`;
|
|
72
|
+
case "expectOutput":
|
|
73
|
+
return outputMatchStmt(action);
|
|
74
|
+
case "expectExit":
|
|
75
|
+
return `expect(last.code).toBe(${action.code});`;
|
|
76
|
+
case "request":
|
|
77
|
+
return `httpRes = await httpRequest(${requestInputLit(action)});`;
|
|
78
|
+
case "expectStatus":
|
|
79
|
+
return `expect(httpRes.status).toBe(${action.status});`;
|
|
80
|
+
case "expectJson":
|
|
81
|
+
return `expect(jsonPath(JSON.parse(httpRes.body), ${lit(action.path)})).toBe(${jsonScalarLit(action.equals)});`;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Emit a JSON scalar as a TypeScript literal. */
|
|
85
|
+
function jsonScalarLit(value) {
|
|
86
|
+
return typeof value === "string" ? lit(value) : String(value);
|
|
87
|
+
}
|
|
88
|
+
/** Emit a request input object literal. */
|
|
89
|
+
function requestInputLit(action) {
|
|
90
|
+
const parts = [`method: ${lit(action.method)}`, `url: ${lit(action.url)}`];
|
|
91
|
+
if (action.headers) {
|
|
92
|
+
const entries = Object.entries(action.headers)
|
|
93
|
+
.map(([k, v]) => `${lit(k)}: ${lit(v)}`)
|
|
94
|
+
.join(", ");
|
|
95
|
+
parts.push(`headers: { ${entries} }`);
|
|
96
|
+
}
|
|
97
|
+
if (action.body !== undefined)
|
|
98
|
+
parts.push(`body: ${lit(action.body)}`);
|
|
99
|
+
return `{ ${parts.join(", ")} }`;
|
|
100
|
+
}
|
|
101
|
+
/** True when the session drives the terminal — needs the runCommand helper. */
|
|
102
|
+
function usesTerminal(session) {
|
|
103
|
+
return session.actions.some((a) => a.type === "run" || a.type === "expectOutput" || a.type === "expectExit");
|
|
104
|
+
}
|
|
105
|
+
/** True when the session drives HTTP — needs the httpRequest/jsonPath helpers. */
|
|
106
|
+
function usesHttp(session) {
|
|
107
|
+
return session.actions.some((a) => a.type === "request" || a.type === "expectStatus" || a.type === "expectJson");
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Emit Playwright `.spec.ts` source for a recorded session.
|
|
111
|
+
*
|
|
112
|
+
* @throws {Error} when the session recorded no actions — an empty test
|
|
113
|
+
* verifies nothing and must not be emitted.
|
|
114
|
+
*/
|
|
115
|
+
export function emitSpec(session) {
|
|
116
|
+
if (session.actions.length === 0) {
|
|
117
|
+
throw new Error("refusing to emit a test from a session with no recorded actions");
|
|
118
|
+
}
|
|
119
|
+
const provenance = session.capabilityId
|
|
120
|
+
? ` for capability ${session.capabilityId}`
|
|
121
|
+
: "";
|
|
122
|
+
const terminal = usesTerminal(session);
|
|
123
|
+
const http = usesHttp(session);
|
|
124
|
+
const imports = [
|
|
125
|
+
`import { expect, test } from "@playwright/test";`,
|
|
126
|
+
...(terminal ? [`import { spawnSync } from "node:child_process";`] : []),
|
|
127
|
+
].join("\n");
|
|
128
|
+
// Inlined so the compiled spec is standalone; each mirrors its src/compiler
|
|
129
|
+
// helper exactly, so a recording that held re-runs green.
|
|
130
|
+
const terminalHelper = terminal
|
|
131
|
+
? `\nfunction runCommand(command: string, options: { cwd?: string } = {}) {
|
|
132
|
+
const r = spawnSync(command, { shell: true, encoding: "utf8", ...options });
|
|
133
|
+
if (r.error) throw r.error;
|
|
134
|
+
return { stdout: r.stdout ?? "", stderr: r.stderr ?? "", code: r.status ?? 0 };
|
|
135
|
+
}\n`
|
|
136
|
+
: "";
|
|
137
|
+
const httpHelper = http
|
|
138
|
+
? `\nasync function httpRequest(input) {
|
|
139
|
+
const r = await fetch(input.url, { method: input.method, ...(input.headers ? { headers: input.headers } : {}), ...(input.body !== undefined ? { body: input.body } : {}) });
|
|
140
|
+
return { status: r.status, body: await r.text() };
|
|
141
|
+
}
|
|
142
|
+
function jsonPath(obj, path) {
|
|
143
|
+
return path.split(".").reduce((acc, key) => (acc != null && typeof acc === "object" ? acc[key] : undefined), obj);
|
|
144
|
+
}\n`
|
|
145
|
+
: "";
|
|
146
|
+
const helper = `${terminalHelper}${httpHelper}`;
|
|
147
|
+
const firstStmt = (terminal ? ` let last: { stdout: string; stderr: string; code: number };\n` : "") +
|
|
148
|
+
(http ? ` let httpRes: { status: number; body: string };\n` : "");
|
|
149
|
+
const body = session.actions
|
|
150
|
+
.map((a) => ` ${actionStmt(a, session.startUrl)}`)
|
|
151
|
+
.join("\n");
|
|
152
|
+
return `// Compiled by Lore Proofkeeper from a recorded drive session${provenance}.
|
|
153
|
+
// Do not edit by hand: re-compile the session to regenerate. Deterministic
|
|
154
|
+
// (no timestamps) so it is stable to review and re-run.
|
|
155
|
+
${imports}
|
|
156
|
+
|
|
157
|
+
const BASE = process.env.PROOFKEEPER_BASE_URL ?? ${lit(session.startUrl)};
|
|
158
|
+
${helper}
|
|
159
|
+
test(${lit(session.title)}, async ({ page }) => {
|
|
160
|
+
${firstStmt}${body}
|
|
161
|
+
});
|
|
162
|
+
`;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=emit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/compiler/emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTTP/API drive modality — issuing a request and asserting its response,
|
|
3
|
+
* the third of Proofkeeper's tools after the browser and terminal. Gated on the
|
|
4
|
+
* engine decision ADR-085, which records it as an in-scope extension of ADR-083.
|
|
5
|
+
*
|
|
6
|
+
* {@link httpRequest} and {@link jsonPath} are the single source of truth for how
|
|
7
|
+
* a request is issued and how a JSON field is read. The {@link Recorder} uses
|
|
8
|
+
* them while driving, and the emitted spec inlines equivalents — so record and
|
|
9
|
+
* replay agree, which is what lets the fidelity gate mean something for HTTP
|
|
10
|
+
* sessions. No new dependency: global `fetch` (Node ≥ 20).
|
|
11
|
+
*/
|
|
12
|
+
/** The observable result of one HTTP request. */
|
|
13
|
+
export interface HttpResponse {
|
|
14
|
+
status: number;
|
|
15
|
+
body: string;
|
|
16
|
+
}
|
|
17
|
+
/** A request to issue. */
|
|
18
|
+
export interface HttpRequestInput {
|
|
19
|
+
method: string;
|
|
20
|
+
url: string;
|
|
21
|
+
headers?: Record<string, string>;
|
|
22
|
+
body?: string;
|
|
23
|
+
}
|
|
24
|
+
/** A scalar a JSON assertion compares against. */
|
|
25
|
+
export type JsonScalar = string | number | boolean;
|
|
26
|
+
/** Issue an HTTP request and capture its status and body text. */
|
|
27
|
+
export declare function httpRequest(input: HttpRequestInput): Promise<HttpResponse>;
|
|
28
|
+
/** Read a dot-path (e.g. `data.order.id`) out of a parsed JSON value. */
|
|
29
|
+
export declare function jsonPath(obj: unknown, path: string): unknown;
|
|
30
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/compiler/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,0BAA0B;AAC1B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD,kEAAkE;AAClE,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAOhF;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAO5D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTTP/API drive modality — issuing a request and asserting its response,
|
|
3
|
+
* the third of Proofkeeper's tools after the browser and terminal. Gated on the
|
|
4
|
+
* engine decision ADR-085, which records it as an in-scope extension of ADR-083.
|
|
5
|
+
*
|
|
6
|
+
* {@link httpRequest} and {@link jsonPath} are the single source of truth for how
|
|
7
|
+
* a request is issued and how a JSON field is read. The {@link Recorder} uses
|
|
8
|
+
* them while driving, and the emitted spec inlines equivalents — so record and
|
|
9
|
+
* replay agree, which is what lets the fidelity gate mean something for HTTP
|
|
10
|
+
* sessions. No new dependency: global `fetch` (Node ≥ 20).
|
|
11
|
+
*/
|
|
12
|
+
/** Issue an HTTP request and capture its status and body text. */
|
|
13
|
+
export async function httpRequest(input) {
|
|
14
|
+
const res = await fetch(input.url, {
|
|
15
|
+
method: input.method,
|
|
16
|
+
...(input.headers ? { headers: input.headers } : {}),
|
|
17
|
+
...(input.body !== undefined ? { body: input.body } : {}),
|
|
18
|
+
});
|
|
19
|
+
return { status: res.status, body: await res.text() };
|
|
20
|
+
}
|
|
21
|
+
/** Read a dot-path (e.g. `data.order.id`) out of a parsed JSON value. */
|
|
22
|
+
export function jsonPath(obj, path) {
|
|
23
|
+
return path.split(".").reduce((acc, key) => {
|
|
24
|
+
if (acc !== null && typeof acc === "object") {
|
|
25
|
+
return acc[key];
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
}, obj);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/compiler/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QACjC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,QAAQ,CAAC,GAAY,EAAE,IAAY;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAQ,GAA+B,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The session recorder (Proofkeeper Initiative 2, the moat).
|
|
3
|
+
*
|
|
4
|
+
* Wraps a Playwright {@link Page} and, for each interaction or assertion,
|
|
5
|
+
* performs it against the real page FIRST and records the {@link Action} only
|
|
6
|
+
* if it succeeded. A recorded trace is therefore a sequence that actually held
|
|
7
|
+
* during the drive — the faithful half of "faithful session→test". The
|
|
8
|
+
* deterministic {@link emitSpec} half turns that trace into a committed test.
|
|
9
|
+
*
|
|
10
|
+
* In v0.0.1 the drive is scripted by the caller (or a BYO-model agent calling
|
|
11
|
+
* these methods); the recorder's contract is the same either way.
|
|
12
|
+
*/
|
|
13
|
+
import { type Page } from "@playwright/test";
|
|
14
|
+
import type { Locator, RecordedSession } from "./actions.js";
|
|
15
|
+
import { type CommandResult, type OutputAssertion } from "./terminal.js";
|
|
16
|
+
import { type HttpRequestInput, type HttpResponse, type JsonScalar } from "./http.js";
|
|
17
|
+
export interface RecorderOptions {
|
|
18
|
+
title: string;
|
|
19
|
+
startUrl: string;
|
|
20
|
+
capabilityId?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class Recorder {
|
|
23
|
+
private readonly page;
|
|
24
|
+
private readonly options;
|
|
25
|
+
private readonly actions;
|
|
26
|
+
/** The most recently run command's result; terminal assertions target it. */
|
|
27
|
+
private last;
|
|
28
|
+
/** The most recently issued request's response; HTTP assertions target it. */
|
|
29
|
+
private lastHttp;
|
|
30
|
+
constructor(page: Page, options: RecorderOptions);
|
|
31
|
+
private resolve;
|
|
32
|
+
/** Navigate to the session's start URL (or another url), recording it. */
|
|
33
|
+
goto(url?: string): Promise<void>;
|
|
34
|
+
click(locator: Locator): Promise<void>;
|
|
35
|
+
fill(locator: Locator, value: string): Promise<void>;
|
|
36
|
+
check(locator: Locator): Promise<void>;
|
|
37
|
+
press(locator: Locator, key: string): Promise<void>;
|
|
38
|
+
/** Assert text, recording the assertion only if it currently holds. */
|
|
39
|
+
expectText(locator: Locator, text: string): Promise<void>;
|
|
40
|
+
expectVisible(locator: Locator): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Run a shell command, record it, and return its result so the caller can
|
|
43
|
+
* decide what to assert. The result becomes the target for the next
|
|
44
|
+
* {@link expectOutput} / {@link expectExit}.
|
|
45
|
+
*/
|
|
46
|
+
run(command: string, options?: {
|
|
47
|
+
cwd?: string;
|
|
48
|
+
}): Promise<CommandResult>;
|
|
49
|
+
/** Assert the last command's output, recording the assertion only if it holds. */
|
|
50
|
+
expectOutput(assertion: OutputAssertion): Promise<void>;
|
|
51
|
+
/** Assert the last command's exit code, recording the assertion only if it holds. */
|
|
52
|
+
expectExit(code: number): Promise<void>;
|
|
53
|
+
/** Issue an HTTP request, record it, and return its response for assertions. */
|
|
54
|
+
request(input: HttpRequestInput): Promise<HttpResponse>;
|
|
55
|
+
/** Assert the last response's status, recording the assertion only if it holds. */
|
|
56
|
+
expectStatus(status: number): Promise<void>;
|
|
57
|
+
/** Assert a JSON field of the last response, recording only if it holds. */
|
|
58
|
+
expectJson(path: string, equals: JsonScalar): Promise<void>;
|
|
59
|
+
/** The recorded session so far, ready to hand to the compiler. */
|
|
60
|
+
recording(): RecordedSession;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/compiler/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAU,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAA+B,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,EAAyB,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE7G,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,QAAQ;IAQjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,6EAA6E;IAC7E,OAAO,CAAC,IAAI,CAA4B;IACxC,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAA2B;gBAGxB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,eAAe;IAG3C,OAAO,CAAC,OAAO;IAef,0EAA0E;IACpE,IAAI,CAAC,GAAG,GAAE,MAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,uEAAuE;IACjE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;;;OAIG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAMlF,kFAAkF;IAC5E,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D,qFAAqF;IAC/E,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,gFAAgF;IAC1E,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAY7D,mFAAmF;IAC7E,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,4EAA4E;IACtE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAejE,kEAAkE;IAClE,SAAS,IAAI,eAAe;CAQ7B"}
|