@vijaypjavvadi/bdd2pw 4.4.1 → 4.5.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 +51 -0
- package/dist/repo/projectScaffolder.js +13 -29
- package/dist/repo/projectScaffolder.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,57 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
_Nothing yet._
|
|
11
11
|
|
|
12
|
+
## [4.5.0] — 2026-10-11
|
|
13
|
+
|
|
14
|
+
### Theme: fixtures emission routed through pw-emit — one place to look
|
|
15
|
+
|
|
16
|
+
v4.3.0 introduced `tests/fixtures.ts` emission for the `--self-healing`
|
|
17
|
+
flow. The renderer lived inline in `src/repo/projectScaffolder.ts` as
|
|
18
|
+
`renderPwSelfHealFixtures()`. That worked, but it meant every file
|
|
19
|
+
bdd2pw writes EXCEPT the fixtures came from `@vijaypjavvadi/pw-emit` —
|
|
20
|
+
and the fixtures emission duplicated code with sibling scaffolders.
|
|
21
|
+
|
|
22
|
+
pw-emit v1.4.0 lifts that renderer into the shared library as the new
|
|
23
|
+
`emitFixtures()` export. v4.5.0 wires bdd2pw's `--self-healing` path
|
|
24
|
+
to it. Every file bdd2pw writes now comes from pw-emit except the
|
|
25
|
+
legacy `lib/heal.ts` (already slated for v5.0 removal).
|
|
26
|
+
|
|
27
|
+
Attestqa integration (reply dated 2026-10-11, ask #4) — closed.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- **Peer dependency**: `@vijaypjavvadi/pw-emit` `^1.3.0` → `^1.4.0`.
|
|
32
|
+
- **`src/repo/projectScaffolder.ts`**: `renderPwSelfHealFixtures()`
|
|
33
|
+
removed; `emitPwSelfHealScaffold()` now calls
|
|
34
|
+
`emitFixtures({ selfHealing: mode })` from pw-emit.
|
|
35
|
+
- **Emitted `tests/fixtures.ts` contents**: byte-identical to v4.3.0
|
|
36
|
+
through v4.4.1 output when `--self-healing` is set. Confirmed by
|
|
37
|
+
the pre-existing `scripts/smoke-v430-selfheal.mjs` (8/8 pass).
|
|
38
|
+
|
|
39
|
+
### Backwards compat
|
|
40
|
+
|
|
41
|
+
Users of `bdd2pw scaffold --self-healing` see **zero visible change**
|
|
42
|
+
in the emitted project. The fixture file still has the same imports,
|
|
43
|
+
the same `withSelfHealing(base, { mode })` wrapper, the same
|
|
44
|
+
`export { expect } from "@playwright/test";` re-export, and the same
|
|
45
|
+
`.pwheal/.gitkeep` placeholder.
|
|
46
|
+
|
|
47
|
+
### Why the minor bump
|
|
48
|
+
|
|
49
|
+
pw-emit `^1.4.0` is a hard peer-dep bump — users who run
|
|
50
|
+
`npm i @vijaypjavvadi/bdd2pw@4.5.0` will see their lockfile pull
|
|
51
|
+
pw-emit `1.4.0` or newer. That's a visible dep tree change, so it's
|
|
52
|
+
a minor bump (per our policy from v4.0+).
|
|
53
|
+
|
|
54
|
+
### Not shipped in v4.5.0 — moved to later
|
|
55
|
+
|
|
56
|
+
Slice 3 (mobile dialect pack — touch, swipe, scroll-into-view,
|
|
57
|
+
responsive viewport assertions) was originally bundled with the
|
|
58
|
+
pw-emit refactor in the attestqa reply. Shipping v4.5.0 as the
|
|
59
|
+
pw-emit refactor alone lets attestqa take the dep today instead of
|
|
60
|
+
waiting on the mobile pack. Mobile dialect ships as v4.6.0 or
|
|
61
|
+
later; its roadmap entry is now independent of attestqa.
|
|
62
|
+
|
|
12
63
|
## [4.4.1] — 2026-10-11
|
|
13
64
|
|
|
14
65
|
### Theme: in-spec provenance comments + SemVer-covered contract
|
|
@@ -107,7 +107,12 @@ async function emitPwSelfHealScaffold(repoRoot, mode, filesWritten, warnings) {
|
|
|
107
107
|
const testsDir = path.join(repoRoot, "tests");
|
|
108
108
|
await fs.ensureDir(testsDir);
|
|
109
109
|
const fixturesPath = path.join(testsDir, "fixtures.ts");
|
|
110
|
-
|
|
110
|
+
// v4.5.0 — routed through pw-emit v1.4.0's shared emitter so every
|
|
111
|
+
// consumer (bdd2pw, sel2pw, future scaffolders) gets identical
|
|
112
|
+
// fixtures. The emitted contents are byte-identical to the v4.3.0
|
|
113
|
+
// inline renderer; verified by scripts/smoke-v440-coverage.mjs and
|
|
114
|
+
// the pre-existing e2e tests.
|
|
115
|
+
const fixturesContent = (0, pw_emit_1.emitFixtures)({ selfHealing: mode }).contents;
|
|
111
116
|
await fs.writeFile(fixturesPath, fixturesContent, "utf8");
|
|
112
117
|
if (!filesWritten.includes(fixturesPath))
|
|
113
118
|
filesWritten.push(fixturesPath);
|
|
@@ -155,34 +160,13 @@ async function emitPwSelfHealScaffold(repoRoot, mode, filesWritten, warnings) {
|
|
|
155
160
|
}
|
|
156
161
|
}
|
|
157
162
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
" *",
|
|
166
|
-
" * Every scaffolded spec imports `test` and `expect` from this file",
|
|
167
|
-
" * instead of `@playwright/test` directly. `withSelfHealing()` wraps",
|
|
168
|
-
" * the base `test` so the `page` fixture heals broken locators at",
|
|
169
|
-
" * runtime — POM classes need zero changes.",
|
|
170
|
-
" *",
|
|
171
|
-
" * Ranker mode: " + JSON.stringify(mode) + " — override via",
|
|
172
|
-
" * `bdd2pw scaffold --self-healing-mode {heuristic|ml|hybrid}`.",
|
|
173
|
-
" *",
|
|
174
|
-
" * See https://www.npmjs.com/package/@vijaypjavvadi/pw-self-heal",
|
|
175
|
-
" */",
|
|
176
|
-
'import { test as base } from "@playwright/test";',
|
|
177
|
-
'import { withSelfHealing } from "@vijaypjavvadi/pw-self-heal";',
|
|
178
|
-
"",
|
|
179
|
-
"export const test = withSelfHealing(base, { mode: " +
|
|
180
|
-
JSON.stringify(mode) +
|
|
181
|
-
" });",
|
|
182
|
-
'export { expect } from "@playwright/test";',
|
|
183
|
-
"",
|
|
184
|
-
].join("\n");
|
|
185
|
-
}
|
|
163
|
+
// v4.5.0 — renderPwSelfHealFixtures() removed. Its body lived here
|
|
164
|
+
// from v4.3.0 through v4.4.1 as inline string concatenation; v4.5.0
|
|
165
|
+
// routes the emission through `emitFixtures()` in
|
|
166
|
+
// `@vijaypjavvadi/pw-emit` so there is one place to look for the
|
|
167
|
+
// fixture shape and one place to update when the healer's public API
|
|
168
|
+
// changes. See the attestqa integration reply dated 2026-10-11,
|
|
169
|
+
// ask #4, and the pw-emit v1.4.0 CHANGELOG.
|
|
186
170
|
/**
|
|
187
171
|
* v4.2 — legacy healing scaffold. Deprecated in v4.3, removed in v5.0.
|
|
188
172
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectScaffolder.js","sourceRoot":"","sources":["../../src/repo/projectScaffolder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDH,0CA0CC;AA7FD,6CAA+B;AAC/B,2CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"projectScaffolder.js","sourceRoot":"","sources":["../../src/repo/projectScaffolder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vijaypjavvadi/bdd2pw",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.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"
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"@cucumber/gherkin": "^28.0.0",
|
|
61
61
|
"@cucumber/messages": "^24.1.0",
|
|
62
|
-
"@vijaypjavvadi/pw-emit": "^1.
|
|
62
|
+
"@vijaypjavvadi/pw-emit": "^1.4.0",
|
|
63
63
|
"archiver": "^7.0.1",
|
|
64
64
|
"chalk": "^4.1.2",
|
|
65
65
|
"commander": "^12.1.0",
|