@vijaypjavvadi/bdd2pw 3.2.0 → 3.3.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 CHANGED
@@ -9,6 +9,78 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  _Nothing yet._
11
11
 
12
+ ## [3.3.0] — 2026-05-22
13
+
14
+ ### Changed — TestForge step-hook signature extension (follow-up to v3.1.0 Issue 4)
15
+
16
+ TestForge follow-up request: the v3.1.0 step hook only received
17
+ `(testInfo, title)` — enough for metadata-only consumers, but not
18
+ for the most common use case (per-step screenshots, DOM capture,
19
+ artefact attachment). All of those need access to `page` (or
20
+ `request` / `context` / `browser`).
21
+
22
+ When `stepHooks: true`, the emitted `test.step(...)` wrapper now
23
+ looks like this:
24
+
25
+ await test.step("Given …", async () => {
26
+ await (globalThis as any).__bdd2pwHooks?.beforeStep?.(
27
+ testInfo,
28
+ "Given …",
29
+ { page },
30
+ );
31
+ let _bdd2pwStatus: "passed" | "failed" = "passed";
32
+ try {
33
+ // step body
34
+ } catch (_bdd2pwErr) {
35
+ _bdd2pwStatus = "failed";
36
+ throw _bdd2pwErr;
37
+ } finally {
38
+ await (globalThis as any).__bdd2pwHooks?.afterStep?.(
39
+ testInfo,
40
+ "Given …",
41
+ _bdd2pwStatus,
42
+ { page },
43
+ );
44
+ }
45
+ });
46
+
47
+ Three changes from v3.1.0:
48
+
49
+ 1. **`fixtures` arg.** Both `beforeStep` and `afterStep` now receive
50
+ a `{ page, request?, context?, browser? }` object containing
51
+ whatever fixtures the surrounding `test()` callback
52
+ destructures. Currently always `{ page }` — when bdd2pw starts
53
+ threading multi-fixture signatures through `EmitTestFileInput`,
54
+ the same literal forwards automatically.
55
+
56
+ 2. **`status` arg on `afterStep`.** Reports `"passed"` or
57
+ `"failed"` so consumers can attach failure-only artefacts
58
+ (per-step screenshot only when the step failed, full DOM dump
59
+ only on failure, etc.).
60
+
61
+ 3. **try/catch/finally wrapping.** `afterStep` fires on the
62
+ failure path too — `_bdd2pwStatus` is set to `"failed"`, the
63
+ error is re-thrown, and `finally` runs the hook. Local
64
+ variable, no cross-step shadowing.
65
+
66
+ ### Backward compatibility
67
+
68
+ Consumers whose hook signature is `(testInfo, title)` /
69
+ `(testInfo, title, status)` continue to work — JavaScript silently
70
+ drops the extra positional args. Optional chaining throughout
71
+ means consumers who don't set `__bdd2pwHooks` see no behaviour
72
+ change at all.
73
+
74
+ ### Tests
75
+
76
+ `tests/unit/v310Fixtures.test.ts` — updated the existing
77
+ "stepHooks: true emits …" assertion to also verify the v3.3.0
78
+ shape: fixtures arg on both hooks, status arg on afterStep,
79
+ try/catch/finally wrapping with `_bdd2pwStatus`. Same fixture file
80
+ (`tests/fixtures/v3.1.0/04-step-hooks/input.feature`) — no new
81
+ fixture needed; the contract change is in the rendered output, not
82
+ the input.
83
+
12
84
  ## [3.2.0] — 2026-05-22
13
85
 
14
86
  ### Added — TestForge handoff P2 backlog (Issues 6-10)
@@ -110,9 +110,15 @@ function emitTestFile(input) {
110
110
  hasApi: s.bindings.some((b) => b.apiContext === true),
111
111
  }));
112
112
  const featureHasApi = scenariosWithApiFlag.some((s) => s.hasApi);
113
+ // v3.3.0 — fixtures destructured by the emitted `test(...)` callback.
114
+ // Forwarded into the step hooks so consumers can take per-step
115
+ // screenshots / save DOM / etc. without re-resolving fixtures.
116
+ // Defaults to `["page"]` — matches pw-emit's testEmitter default.
117
+ const defaultFixtures = ["page"];
113
118
  const stepOpts = {
114
119
  stepHooks: input.stepHooks === true,
115
120
  stepMarkers: input.stepMarkers === true,
121
+ fixtures: defaultFixtures,
116
122
  };
117
123
  const ir = {
118
124
  describeName: input.describeName,
@@ -178,6 +184,8 @@ function emitTestFile(input) {
178
184
  * Gherkin scenario.
179
185
  */
180
186
  function bindingsToBody(bindings, prelude = [], options = {}) {
187
+ const fixtureNames = options.fixtures && options.fixtures.length > 0 ? options.fixtures : ["page"];
188
+ const fixturesLit = `{ ${fixtureNames.join(", ")} }`;
181
189
  const lines = [];
182
190
  if (prelude.length > 0) {
183
191
  lines.push(...prelude);
@@ -203,26 +211,24 @@ function bindingsToBody(bindings, prelude = [], options = {}) {
203
211
  lines.push(`// bdd2pw:step-open id="${stepId}" title=${JSON.stringify(stepLabel)}`);
204
212
  }
205
213
  lines.push(`await test.step(${labelLit}, async () => {`);
206
- // v3.1.0 — opt-in step hook callouts (TestForge Issue 4).
207
- // Optional chaining means consumers who don't set
208
- // `(globalThis as any).__bdd2pwHooks = {...}` see no behavior change.
209
- if (options.stepHooks) {
210
- lines.push(` await (globalThis as any).__bdd2pwHooks?.beforeStep?.(testInfo, ${labelLit});`);
211
- }
214
+ // Collect the step body into a buffer. When stepHooks is on, the
215
+ // buffer is wrapped in try/catch/finally below; otherwise it's
216
+ // emitted directly inside the test.step arrow.
217
+ const bodyLines = [];
212
218
  if (b.customBody) {
213
219
  // Compound step — body has multiple statements pre-rendered.
214
220
  // v2.2.5 — sanitize digit-leading POM references that may have been
215
221
  // cached from older bdd2pw versions.
216
222
  const safeBody = sanitizeLocatorReferences(b.customBody);
217
223
  for (const line of safeBody.split("\n"))
218
- lines.push(` ${line}`);
224
+ bodyLines.push(line);
219
225
  }
220
226
  else if (b.pomCall) {
221
227
  const args = b.pomCall.args
222
228
  .map((a) => sanitizeLocatorReferences(a))
223
229
  .join(", ");
224
230
  const method = sanitizeLocatorReferences(b.pomCall.method);
225
- lines.push(` await ${b.pomCall.page}.${method}(${args});`);
231
+ bodyLines.push(`await ${b.pomCall.page}.${method}(${args});`);
226
232
  }
227
233
  else if (b.assertion) {
228
234
  const expected = b.assertion.expected !== undefined ? b.assertion.expected : "";
@@ -237,7 +243,7 @@ function bindingsToBody(bindings, prelude = [], options = {}) {
237
243
  // v2.2.5 — rewrite `.0Of0` → `._0Of0` for cached bindings.
238
244
  const safeLocator = sanitizeLocatorReferences(trimmedLocator);
239
245
  const renderedLocator = safeLocator === "" ? "page" : safeLocator;
240
- lines.push(` await expect(${renderedLocator}).${b.assertion.matcher}(${expected});`);
246
+ bodyLines.push(`await expect(${renderedLocator}).${b.assertion.matcher}(${expected});`);
241
247
  }
242
248
  else {
243
249
  // v2.0.1 — defensively flatten the warning so any newlines in error
@@ -245,10 +251,40 @@ function bindingsToBody(bindings, prelude = [], options = {}) {
245
251
  // native module load failures) don't bleed past the `//` and break
246
252
  // the .spec.ts parse.
247
253
  const safeWarning = (0, commentSafe_1.flattenForComment)(b.warning ?? "no rule matched this step");
248
- lines.push(` // TODO: ${safeWarning}`);
254
+ bodyLines.push(`// TODO: ${safeWarning}`);
249
255
  }
256
+ // v3.1.0 + v3.3.0 — opt-in step hook callouts. v3.3.0 extends the
257
+ // signature with two new positional args:
258
+ // - `status: "passed" | "failed"` on afterStep (so consumers can
259
+ // attach failure-only artefacts).
260
+ // - `fixtures: { page, request?, context?, browser? }` on both
261
+ // (so consumers can take per-step screenshots, save DOM
262
+ // snapshots, etc. without re-resolving fixtures).
263
+ //
264
+ // The body is wrapped in try/catch/finally so afterStep fires on
265
+ // the failure path too. `_bdd2pwStatus` is local to this arrow —
266
+ // no cross-step shadowing.
267
+ //
268
+ // Optional chaining throughout means consumers who don't set
269
+ // `(globalThis as any).__bdd2pwHooks = {...}` see zero behaviour
270
+ // change. Existing v3.1/3.2 hooks that ignore the new positional
271
+ // args continue to work — JS silently drops the extras.
250
272
  if (options.stepHooks) {
251
- lines.push(` await (globalThis as any).__bdd2pwHooks?.afterStep?.(testInfo, ${labelLit});`);
273
+ lines.push(` await (globalThis as any).__bdd2pwHooks?.beforeStep?.(testInfo, ${labelLit}, ${fixturesLit});`);
274
+ lines.push(` let _bdd2pwStatus: "passed" | "failed" = "passed";`);
275
+ lines.push(` try {`);
276
+ for (const bl of bodyLines)
277
+ lines.push(` ${bl}`);
278
+ lines.push(` } catch (_bdd2pwErr) {`);
279
+ lines.push(` _bdd2pwStatus = "failed";`);
280
+ lines.push(` throw _bdd2pwErr;`);
281
+ lines.push(` } finally {`);
282
+ lines.push(` await (globalThis as any).__bdd2pwHooks?.afterStep?.(testInfo, ${labelLit}, _bdd2pwStatus, ${fixturesLit});`);
283
+ lines.push(` }`);
284
+ }
285
+ else {
286
+ for (const bl of bodyLines)
287
+ lines.push(` ${bl}`);
252
288
  }
253
289
  lines.push(`});`);
254
290
  if (options.stepMarkers) {
@@ -1 +1 @@
1
- {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/emitters/facade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/emitters/facade.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vijaypjavvadi/bdd2pw",
3
- "version": "3.2.0",
3
+ "version": "3.3.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"