@vijaypjavvadi/bdd2pw 3.10.0 → 4.0.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/CHANGELOG.md +253 -0
- package/README.md +19 -12
- package/dist/cli.js +39 -7
- package/dist/cli.js.map +1 -1
- package/dist/data/dataLoader.d.ts +78 -0
- package/dist/data/dataLoader.js +339 -0
- package/dist/data/dataLoader.js.map +1 -0
- package/dist/data/examplesInjector.d.ts +64 -0
- package/dist/data/examplesInjector.js +149 -0
- package/dist/data/examplesInjector.js.map +1 -0
- package/dist/data/synthGenerator.d.ts +71 -0
- package/dist/data/synthGenerator.js +265 -0
- package/dist/data/synthGenerator.js.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -1
- package/dist/llm/anthropicClient.d.ts +11 -0
- package/dist/llm/anthropicClient.js +89 -0
- package/dist/llm/anthropicClient.js.map +1 -1
- package/dist/llm/geminiClient.d.ts +92 -0
- package/dist/llm/geminiClient.js +559 -0
- package/dist/llm/geminiClient.js.map +1 -0
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.js +13 -2
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/openaiClient.d.ts +83 -0
- package/dist/llm/openaiClient.js +529 -0
- package/dist/llm/openaiClient.js.map +1 -0
- package/dist/llm/telemetry.js +14 -0
- package/dist/llm/telemetry.js.map +1 -1
- package/dist/llm/types.d.ts +45 -2
- package/dist/types.d.ts +41 -1
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/llm/telemetry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AA8DH;;;;;;GAMG;AACU,QAAA,eAAe,GAGxB;IACF,2DAA2D;IAC3D,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,mBAAmB,EAAE,EAAE,EAAE;IACvE,uEAAuE;IACvE,0BAA0B,EAAE;QAC1B,kBAAkB,EAAE,CAAC;QACrB,mBAAmB,EAAE,EAAE;KACxB;IACD,8BAA8B;IAC9B,iBAAiB,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;IACtE,+BAA+B;IAC/B,2BAA2B,EAAE;QAC3B,kBAAkB,EAAE,GAAG;QACvB,mBAAmB,EAAE,CAAC;KACvB;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/llm/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/types.d.ts
CHANGED
|
@@ -14,8 +14,15 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { PageObjectIR, StepIR, StepBinding } from "../types";
|
|
16
16
|
export interface LLMClientOptions {
|
|
17
|
-
/**
|
|
18
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Provider identifier. "anthropic" is the original (v2.0+);
|
|
19
|
+
* "openai" lands in v3.11.0 with full parity (cache, governance,
|
|
20
|
+
* batching, telemetry); "gemini" lands in v3.12.0 with the same parity.
|
|
21
|
+
* All three providers share the prompt machinery, governance pipeline,
|
|
22
|
+
* cache backend, and telemetry event stream — only the SDK call shape
|
|
23
|
+
* differs per client.
|
|
24
|
+
*/
|
|
25
|
+
provider: "anthropic" | "openai" | "gemini";
|
|
19
26
|
/** Anthropic model. Default: claude-sonnet-4-6. */
|
|
20
27
|
model?: string;
|
|
21
28
|
/** API key. Resolved from env var (ANTHROPIC_API_KEY) when omitted. */
|
|
@@ -140,6 +147,27 @@ export interface GenerateBindingResult {
|
|
|
140
147
|
/** Total latency including governance + provider + parsing, ms. */
|
|
141
148
|
latencyMs?: number;
|
|
142
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* v4.0.0 — result shape for `LLMClient.generateText()`.
|
|
152
|
+
*
|
|
153
|
+
* `text` is the raw model response. The caller is responsible for
|
|
154
|
+
* parsing whatever shape they asked the model for (JSON array,
|
|
155
|
+
* markdown, prose). No binding-specific fields here — this is the
|
|
156
|
+
* generic-prompt API.
|
|
157
|
+
*/
|
|
158
|
+
export interface GenerateTextResult {
|
|
159
|
+
/** When generation succeeds. */
|
|
160
|
+
text?: string;
|
|
161
|
+
/** When generation fails — caller decides whether to soft-fail. */
|
|
162
|
+
error?: string;
|
|
163
|
+
/** Provider model name (for audit). */
|
|
164
|
+
model?: string;
|
|
165
|
+
/** Total latency including governance + provider, ms. */
|
|
166
|
+
latencyMs?: number;
|
|
167
|
+
/** Tokens consumed (for telemetry). */
|
|
168
|
+
inputTokens?: number;
|
|
169
|
+
outputTokens?: number;
|
|
170
|
+
}
|
|
143
171
|
/**
|
|
144
172
|
* Pluggable LLM client. v2.0 ships AnthropicLLMClient (provider=anthropic)
|
|
145
173
|
* and MockLLMClient (for tests). v2.1 adds OpenAI/Gemini.
|
|
@@ -161,6 +189,21 @@ export interface LLMClient {
|
|
|
161
189
|
* make `matchScenarioWithLLM` fall back to per-step `generateBinding`.
|
|
162
190
|
*/
|
|
163
191
|
generateBatchBindings?(inputs: GenerateBindingInput[]): Promise<GenerateBindingResult[]>;
|
|
192
|
+
/**
|
|
193
|
+
* v4.0.0 — generic single-prompt text generation. Used by the
|
|
194
|
+
* synthetic data generator (synth schema fields like `"llm:auto
|
|
195
|
+
* insurance claim, one sentence"`) and by anything else that needs
|
|
196
|
+
* a one-shot LLM call without the binding-shaped prompt scaffolding.
|
|
197
|
+
*
|
|
198
|
+
* Implementations MUST go through the same governance sanitisation,
|
|
199
|
+
* timeout, and budget pipeline as `generateBinding` — i.e. NO direct
|
|
200
|
+
* SDK calls outside the perimeter. Each call counts against
|
|
201
|
+
* `budgetExhausted()` the same way a single-step binding does.
|
|
202
|
+
*
|
|
203
|
+
* Optional for backwards compat — older clients return undefined
|
|
204
|
+
* and synth-data callers fall through to a literal fallback.
|
|
205
|
+
*/
|
|
206
|
+
generateText?(prompt: string): Promise<GenerateTextResult>;
|
|
164
207
|
/** Have we hit the max-calls budget for this scaffold? */
|
|
165
208
|
budgetExhausted(): boolean;
|
|
166
209
|
/** Successful provider responses (parsed bindings). */
|
package/dist/types.d.ts
CHANGED
|
@@ -170,7 +170,8 @@ export interface ScaffoldOptions {
|
|
|
170
170
|
* sidecar. Production runs MUST keep this off.
|
|
171
171
|
*/
|
|
172
172
|
llmConfig?: {
|
|
173
|
-
provider:
|
|
173
|
+
/** v3.12.0 — three-provider parity: anthropic, openai, gemini. */
|
|
174
|
+
provider: "anthropic" | "openai" | "gemini";
|
|
174
175
|
model?: string;
|
|
175
176
|
apiKey?: string;
|
|
176
177
|
governanceUrl?: string;
|
|
@@ -294,6 +295,45 @@ export interface ScaffoldOptions {
|
|
|
294
295
|
* or debug latency issues.
|
|
295
296
|
*/
|
|
296
297
|
llmStats?: boolean;
|
|
298
|
+
/**
|
|
299
|
+
* v4.0.0 — data-driven Examples injection.
|
|
300
|
+
*
|
|
301
|
+
* When set, every Scenario Outline in the .feature gets its Examples
|
|
302
|
+
* table SWAPPED with externally-sourced rows. Inline Examples become
|
|
303
|
+
* a fallback for runs without this option set.
|
|
304
|
+
*
|
|
305
|
+
* Two source modes:
|
|
306
|
+
*
|
|
307
|
+
* - `{type: "file", path: "data/users.csv"}`
|
|
308
|
+
* Loads a CSV / JSON / XLSX file via DataLoader.
|
|
309
|
+
*
|
|
310
|
+
* - `{type: "synthetic", schemaPath: "data/users.schema.json",
|
|
311
|
+
* rows: 50, seed: 42}`
|
|
312
|
+
* Generates `rows` rows from a schema describing each column's
|
|
313
|
+
* source (Faker path, "llm:..." prompt, or literal). The LLM
|
|
314
|
+
* client (if configured via llmConfig) handles "llm:..." fields.
|
|
315
|
+
*
|
|
316
|
+
* Failures (file missing, schema invalid, LLM down, Faker not
|
|
317
|
+
* installed) fall back to inline Examples and surface as `ReviewItem`s
|
|
318
|
+
* in BDD_REVIEW.md. Same graceful-degradation pattern as the v2.0
|
|
319
|
+
* LLM fallback failure mode.
|
|
320
|
+
*
|
|
321
|
+
* Scenarios without `<placeholder>` syntax are skipped (vanilla
|
|
322
|
+
* Scenario doesn't need data). Scenarios whose placeholders reference
|
|
323
|
+
* columns NOT in the data file are left with their inline Examples
|
|
324
|
+
* and a warning ReviewItem is emitted.
|
|
325
|
+
*/
|
|
326
|
+
dataSource?: {
|
|
327
|
+
type: "file" | "synthetic";
|
|
328
|
+
/** Required when type === "file". CSV / JSON / XLSX. */
|
|
329
|
+
path?: string;
|
|
330
|
+
/** Required when type === "synthetic". JSON file with {column: source}. */
|
|
331
|
+
schemaPath?: string;
|
|
332
|
+
/** type === "synthetic" only. Default 20. */
|
|
333
|
+
rows?: number;
|
|
334
|
+
/** type === "synthetic" only. Faker seed for reproducibility. Default 42. */
|
|
335
|
+
seed?: number;
|
|
336
|
+
};
|
|
297
337
|
}
|
|
298
338
|
export interface ScaffoldResult {
|
|
299
339
|
filesWritten: string[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vijaypjavvadi/bdd2pw",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Scaffold runnable Playwright TypeScript tests from Gherkin .feature files. Detects existing Page Objects, scans live pages via Microsoft Playwright MCP, emits POMs + specs, ready for execution. CLI + HTTP service. Optional governed LLM fallback (Anthropic / OpenAI / Gemini).",
|
|
5
5
|
"bin": {
|
|
6
6
|
"bdd2pw": "dist/cli.js"
|
|
@@ -81,6 +81,10 @@
|
|
|
81
81
|
},
|
|
82
82
|
"optionalDependencies": {
|
|
83
83
|
"@anthropic-ai/sdk": "^0.91.1",
|
|
84
|
+
"openai": "^4.77.0",
|
|
85
|
+
"@google/generative-ai": "^0.21.0",
|
|
86
|
+
"@faker-js/faker": "^9.3.0",
|
|
87
|
+
"xlsx": "^0.18.5",
|
|
84
88
|
"better-sqlite3": "^11.0.0",
|
|
85
89
|
"pino-pretty": "^11.0.0",
|
|
86
90
|
"playwright": "^1.45.0"
|