tamash-playwright 0.9.0-beta.3 → 0.9.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 +132 -0
- package/README.md +11 -13
- package/dist/cli/applyHeals.d.ts.map +1 -1
- package/dist/cli/applyHeals.js +62 -75
- package/dist/cli/applyHeals.js.map +1 -1
- package/dist/cli/console-style.d.ts +15 -0
- package/dist/cli/console-style.d.ts.map +1 -0
- package/dist/cli/console-style.js +94 -0
- package/dist/cli/console-style.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +32 -80
- package/dist/cli/doctor.js.map +1 -1
- package/dist/healer/durable-locator.d.ts +1 -0
- package/dist/healer/durable-locator.d.ts.map +1 -1
- package/dist/healer/durable-locator.js +55 -0
- package/dist/healer/durable-locator.js.map +1 -1
- package/dist/healer/index.d.ts.map +1 -1
- package/dist/healer/index.js +9 -33
- package/dist/healer/index.js.map +1 -1
- package/package.json +2 -1
- package/usage.md +18 -15
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here. Format loosely follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/); dates are when each version was published.
|
|
5
|
+
|
|
6
|
+
## [0.9.0] - 2026-08-26
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- **Heal-log visibility**: a heal with no reusable selector (a one-shot `ref` resolution, or a
|
|
11
|
+
vision-tagged point) was silently dropped from `heals.jsonl` entirely, even though it genuinely
|
|
12
|
+
fixed that run. Now logged for audit — with a clear `reviewNote` — whenever it has a suggestion
|
|
13
|
+
*or* a review note, without letting an audit-only entry shadow an older, real cached fix for the
|
|
14
|
+
same location.
|
|
15
|
+
- **Vision support for `claude-subscription`/`copilot-subscription`**: both providers had
|
|
16
|
+
`supportsVision` hardcoded to `false` regardless of model. Both SDKs genuinely support image
|
|
17
|
+
input (Claude Agent SDK via an image content block; Copilot SDK via a `blob` attachment) —
|
|
18
|
+
implemented for real and verified live with actual screenshots, not just doctor's yes/no label.
|
|
19
|
+
- **Argument forwarding in healed replays**: `replayAction()` only ever forwarded the first call
|
|
20
|
+
argument. A trailing options object (`click({ modifiers: [...] })`, `fill(value, { timeout })`,
|
|
21
|
+
`dispatchEvent`'s 3rd argument) was silently dropped on a healed replay — changing the action's
|
|
22
|
+
real behavior while still reporting a clean `HEALED`.
|
|
23
|
+
- **`ref`-strategy replays now act through the derived durable locator, not the raw ref**:
|
|
24
|
+
`aria-ref=` locators never resolve for `dispatchEvent` at all (a Playwright-level limitation,
|
|
25
|
+
confirmed directly via `DEBUG=pw:api`), even though the identical element resolves instantly via
|
|
26
|
+
a `normalize()`-derived locator for that same action. Fixed by deriving the durable locator
|
|
27
|
+
*before* replaying and acting through it, falling back to the raw ref only when nothing durable
|
|
28
|
+
could be found. A related accuracy bug is fixed alongside it: the report/heal-log could
|
|
29
|
+
previously claim a derived selector "worked" even when its own replay had actually failed and a
|
|
30
|
+
fallback silently took over — now only the locator that genuinely performed the action is
|
|
31
|
+
reported or cached.
|
|
32
|
+
- **`copilot-subscription` could hang a non-Playwright test runner indefinitely** — its shared
|
|
33
|
+
client keeps a connection open across calls for performance, which Playwright's own test runner
|
|
34
|
+
tolerates by force-exiting regardless, but a runner like Cucumber does not, so the process never
|
|
35
|
+
returned even after every test had already passed. Found live running a real Cucumber suite in
|
|
36
|
+
CI. `closeCopilotSubscriptionClient()` is now exported from the package's own entry point so any
|
|
37
|
+
non-Playwright consumer can call it from their own teardown hook (e.g. Cucumber's `AfterAll`).
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- **`locator.getDurable(action?)`** — resolves any locator (most usefully one built from
|
|
42
|
+
`aria-ref=...`) to a durable, reusable equivalent (`getByRole`/`getByLabel`/a css selector/…),
|
|
43
|
+
using the same derivation logic self-healing already uses internally. Throws if nothing durable
|
|
44
|
+
could be derived, rather than silently handing back something untrusted.
|
|
45
|
+
- **`apply-heals` now previews before writing**: every run — dry or real — shows a styled table of
|
|
46
|
+
exactly what it found (location, before, after, review status) instead of a plain scrolling log.
|
|
47
|
+
A real run also asks for confirmation before writing anything, but *only* at a genuine
|
|
48
|
+
interactive terminal — CI and any non-interactive/piped invocation proceed automatically exactly
|
|
49
|
+
as before, so no existing unattended CI workflow is affected. `--yes`/`-y` skips the prompt at a
|
|
50
|
+
real terminal too.
|
|
51
|
+
- **`doctor`'s output is styled** with colors and tables (including a new end-of-run Summary
|
|
52
|
+
section) instead of a plain scrolling log.
|
|
53
|
+
- **Exact locator code in console lines and reports**: a healed suggestion is now shown as the
|
|
54
|
+
real, copy-pasteable Playwright call (`getByRole("textbox", { name: "Username" })`) instead of
|
|
55
|
+
an abbreviated shorthand (`role:textbox:Username`) — the same code `apply-heals` would write to
|
|
56
|
+
source, so what you see is never a lossier stand-in for what was actually used.
|
|
57
|
+
- A canonical Page Object Model usage example (`tests/pages/` +
|
|
58
|
+
`tests/example-orangehrm-add-employee.spec.ts`), verified live against a real OrangeHRM demo,
|
|
59
|
+
including a genuine self-heal via the `near`/widening strategy on a real unlabeled field.
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- README/usage.md's vision-fallback documentation now correctly lists `claude-subscription`/
|
|
64
|
+
`copilot-subscription` as vision-capable (with a suitable model), not just the API-key providers.
|
|
65
|
+
|
|
66
|
+
## [0.8.0] - 2026-08-25
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
|
|
70
|
+
- `claude-subscription` and `copilot-subscription` heal providers — self-healing backed by a
|
|
71
|
+
personal Claude or GitHub Copilot subscription instead of a pay-per-token API key, working both
|
|
72
|
+
locally and unattended in CI (`CLAUDE_CODE_OAUTH_TOKEN` for Claude; the ambient `GITHUB_TOKEN` or
|
|
73
|
+
a personal-account PAT for Copilot on GitHub Actions).
|
|
74
|
+
|
|
75
|
+
### Fixed
|
|
76
|
+
|
|
77
|
+
- Missing CLI install step in setup docs for `claude-subscription`/`copilot-subscription` — the
|
|
78
|
+
standalone `claude`/`copilot` CLIs are genuinely required for the login step even though the SDKs
|
|
79
|
+
don't need them installed to function at runtime.
|
|
80
|
+
|
|
81
|
+
### Documentation
|
|
82
|
+
|
|
83
|
+
- The org-vs-personal-account Copilot licensing gotcha in CI (a repo owned by an organization
|
|
84
|
+
without its own Copilot enablement can't use a personal subscription via the ambient token).
|
|
85
|
+
- Action Recovery (`HEALER_ACTION_RECOVERY_ENABLED`) hidden from docs and `doctor` output —
|
|
86
|
+
disabled by default already; this only reduced its visibility, no behavior change.
|
|
87
|
+
|
|
88
|
+
## [0.7.0] - 2026-08-21
|
|
89
|
+
|
|
90
|
+
### Added
|
|
91
|
+
|
|
92
|
+
- `apply-heals` — turns a runtime heal into a permanent source-code fix, plus an opportunistic
|
|
93
|
+
cache (`heals.jsonl`) so a previously-confirmed selector is tried before a fresh AI call, and
|
|
94
|
+
history archival so a run's report/log isn't silently overwritten by the next one.
|
|
95
|
+
- Position/relationship-based locator strategies (`near`, `scoped`, `containing`) for elements with
|
|
96
|
+
no accessible identity of their own.
|
|
97
|
+
- Self-healing rebuilt around `ariaSnapshot({ mode: 'ai' })` + `aria-ref=` resolution and
|
|
98
|
+
`Locator.normalize()`, replacing pixel-distance guessing for both the text path and the vision
|
|
99
|
+
fallback's durability upgrade.
|
|
100
|
+
- A real unit test suite (32 tests at the time, zero new dependencies).
|
|
101
|
+
|
|
102
|
+
### Fixed
|
|
103
|
+
|
|
104
|
+
- `doctor`'s `actionTimeout` check being fooled by a commented-out config value.
|
|
105
|
+
- `apply-heals --logs-dir` silently losing raw heal-log archival.
|
|
106
|
+
- `apply-heals` only replacing the first call when re-healing an already-`near`-fixed line.
|
|
107
|
+
- `apply-heals` `ENOENT` on a fresh CI checkout with no `.tamash-playwright/` directory yet — the
|
|
108
|
+
sharded "apply-heals" CI job checks out fresh and has never run tests itself, so the directory
|
|
109
|
+
genuinely doesn't exist there the way it always does in every local recipe.
|
|
110
|
+
- File path corruption (and a `require()` crash in the generated verification script) for ESM
|
|
111
|
+
(`"type": "module"`) consumer projects — `Error.stack` renders as a `file://` URL there, which
|
|
112
|
+
broke path resolution and a plain `.js` verification script alike.
|
|
113
|
+
- The AI being misled by the broken selector still present in its own prompt context; a failed
|
|
114
|
+
label guess now auto-upgrades to a structural `near` match instead of giving up.
|
|
115
|
+
|
|
116
|
+
### Verified
|
|
117
|
+
|
|
118
|
+
- All four API-key providers (Ollama, OpenAI, Anthropic, Gemini) confirmed working with real API
|
|
119
|
+
calls, not just documented.
|
|
120
|
+
|
|
121
|
+
## [0.6.0] - 2026-08-17
|
|
122
|
+
|
|
123
|
+
### Added
|
|
124
|
+
|
|
125
|
+
- iframe and popup healing, vision fallback (screenshot-based recovery when text alone isn't
|
|
126
|
+
enough), AI-driven action recovery (scroll/force/wait/dispatch), and source-location reporting.
|
|
127
|
+
- `doctor`'s `actionTimeout` configuration check.
|
|
128
|
+
|
|
129
|
+
### Initial release
|
|
130
|
+
|
|
131
|
+
- Self-healing Playwright bindings: broken locators are recovered at runtime via an AI provider,
|
|
132
|
+
with `.describe()` for human-readable context.
|
package/README.md
CHANGED
|
@@ -300,7 +300,7 @@ Once a locator heals successfully, `tamash-playwright` remembers the fix in `.ta
|
|
|
300
300
|
**In CI, this only helps *within* one run**, not across separate ones — most CI runners start from a fresh checkout every time, so `.tamash-playwright/` (gitignored, never committed) doesn't carry over from yesterday's run to today's. What actually eliminates repeat AI calls in CI is `apply-heals` merging the real fix into your source — once that lands, the locator isn't broken anymore and healing never needs to run for it again. The cache still earns its keep within a single run, though: if the same broken locator shows up in several tests in one run (a shared Page Object method, say), only the first one pays for a fresh AI call — every other occurrence in that same run reuses it for free. You'll see it in the console line as `provider=cache` with no token count, instead of the real provider name:
|
|
301
301
|
|
|
302
302
|
```
|
|
303
|
-
[self-healer] tests/sampletest.spec.ts:13 — locator.fill "User Name Textbox (placeholder "xyz")" -> HEALED [provider=cache, vision=no, actionRecovery=no, suggested="
|
|
303
|
+
[self-healer] tests/sampletest.spec.ts:13 — locator.fill "User Name Textbox (placeholder "xyz")" -> HEALED [provider=cache, vision=no, actionRecovery=no, suggested="getByRole(\"textbox\", { name: \"Username\" })"] — locator.fill: Timeout 8000ms exceeded.
|
|
304
304
|
```
|
|
305
305
|
|
|
306
306
|
A cache hit doesn't re-log itself (there's nothing new to record), so the log doesn't grow just from repeated confirmations of the same already-known fix — it only grows when a *new* AI call produces a fresh suggestion. If the original heal was flagged `needsReview` (see above), the cached replay keeps flagging it on every run that reuses it, not just the first — a fragile fix doesn't quietly stop being worth a look just because it's been cached.
|
|
@@ -315,23 +315,21 @@ npx tamash-playwright apply-heals --dry-run # preview the source changes it wo
|
|
|
315
315
|
npx tamash-playwright apply-heals # write them
|
|
316
316
|
```
|
|
317
317
|
|
|
318
|
+
Every run — dry or real — shows a table of exactly what it found before touching anything:
|
|
319
|
+
|
|
318
320
|
```
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
321
|
+
Fixes (1)
|
|
322
|
+
┌────────────────────────────┬──────────────────────────┬──────────────────────────────────────────────┬────────┐
|
|
323
|
+
│ Location │ Before │ After │ Review │
|
|
324
|
+
├────────────────────────────┼──────────────────────────┼──────────────────────────────────────────────┤────────┤
|
|
325
|
+
│ src/pages/loginpage.ts:11 │ .locator('input[name="…' │ .getByRole("textbox", { name: "Username" }) │ — │
|
|
326
|
+
└────────────────────────────┴──────────────────────────┴──────────────────────────────────────────────┴────────┘
|
|
322
327
|
|
|
323
328
|
1 fix(es) applied to 1 file(s), 0 skipped.
|
|
324
329
|
Review the changes (e.g. `git diff`) before committing.
|
|
325
330
|
```
|
|
326
331
|
|
|
327
|
-
A
|
|
328
|
-
|
|
329
|
-
```
|
|
330
|
-
[FIX] [NEEDS REVIEW] tests/employee-id.spec.ts:31
|
|
331
|
-
- .getByPlaceholder('Employee')
|
|
332
|
-
+ .locator('div').filter({ hasText: 'Employee Id' }).getByRole('textbox')
|
|
333
|
-
⚠ No stable identity of its own — durable selector anchors on nearby text instead. Please verify this still targets the right element if the page layout changes.
|
|
334
|
-
```
|
|
332
|
+
**A real run then asks before writing — but only at an actual terminal.** In CI, or any non-interactive invocation, the prompt is skipped automatically and it proceeds exactly as it always has (there's no stdin to read an answer from). Pass `--yes`/`-y` to skip it in a real terminal too. See [usage.md](usage.md#making-a-heal-permanent-apply-heals) for the full flow, including how a `needsReview` fix is flagged in the table.
|
|
335
333
|
|
|
336
334
|
A few things worth knowing:
|
|
337
335
|
|
|
@@ -496,7 +494,7 @@ Every healing attempt — whether it succeeded or not — shows up in Playwright
|
|
|
496
494
|
The same detail is also printed to the console as it happens, one line per attempt:
|
|
497
495
|
|
|
498
496
|
```
|
|
499
|
-
[self-healer] src/pages/loginpage.ts:11 — locator.fill "Username Textbox" -> HEALED [provider=ollama:gpt-oss:120b, vision=no, actionRecovery=no, suggested="
|
|
497
|
+
[self-healer] src/pages/loginpage.ts:11 — locator.fill "Username Textbox" -> HEALED [provider=ollama:gpt-oss:120b, vision=no, actionRecovery=no, suggested="getByRole(\"textbox\", { name: \"Username\" })", 620 tokens (489 input + 131 output)] — locator.fill: Timeout 8000ms exceeded.
|
|
500
498
|
```
|
|
501
499
|
|
|
502
500
|
## License
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyHeals.d.ts","sourceRoot":"","sources":["../../src/cli/applyHeals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwF,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"applyHeals.d.ts","sourceRoot":"","sources":["../../src/cli/applyHeals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwF,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAyI7I,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAMhB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAkCF,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAsB,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,GAAG;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CA0G1K;AAaD,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAqDhG;AAyLD,wBAAsB,aAAa,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCtE"}
|
package/dist/cli/applyHeals.js
CHANGED
|
@@ -9,58 +9,10 @@ exports.runApplyHeals = runApplyHeals;
|
|
|
9
9
|
const fs_1 = __importDefault(require("fs"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const heal_log_1 = require("../healer/heal-log");
|
|
12
|
+
const durable_locator_1 = require("../healer/durable-locator");
|
|
13
|
+
const console_style_1 = require("./console-style");
|
|
12
14
|
const LOCATOR_FACTORY_METHODS = ['locator', 'getByRole', 'getByLabel', 'getByPlaceholder', 'getByText', 'getByAltText', 'getByTitle', 'getByTestId'];
|
|
13
15
|
const FACTORY_METHOD_PATTERN = new RegExp(`\\.(${LOCATOR_FACTORY_METHODS.join('|')})\\(`);
|
|
14
|
-
function generateReplacementCall(suggestion) {
|
|
15
|
-
switch (suggestion.strategy) {
|
|
16
|
-
case 'role':
|
|
17
|
-
return suggestion.name
|
|
18
|
-
? `getByRole(${JSON.stringify(suggestion.role)}, { name: ${JSON.stringify(suggestion.name)} })`
|
|
19
|
-
: `getByRole(${JSON.stringify(suggestion.role)})`;
|
|
20
|
-
case 'text':
|
|
21
|
-
return `getByText(${JSON.stringify(suggestion.text)})`;
|
|
22
|
-
case 'testId':
|
|
23
|
-
return `getByTestId(${JSON.stringify(suggestion.testId)})`;
|
|
24
|
-
case 'label':
|
|
25
|
-
return `getByLabel(${JSON.stringify(suggestion.label)})`;
|
|
26
|
-
case 'placeholder':
|
|
27
|
-
return `getByPlaceholder(${JSON.stringify(suggestion.placeholder)})`;
|
|
28
|
-
case 'altText':
|
|
29
|
-
return `getByAltText(${JSON.stringify(suggestion.altText)})`;
|
|
30
|
-
case 'title':
|
|
31
|
-
return `getByTitle(${JSON.stringify(suggestion.title)})`;
|
|
32
|
-
case 'css':
|
|
33
|
-
return `locator(${JSON.stringify(suggestion.css)})`;
|
|
34
|
-
case 'near': {
|
|
35
|
-
// parentLevels is set by resolveNearLocator (healer/index.ts) at heal time, from whichever
|
|
36
|
-
// candidate in its ladder actually resolved to exactly one live element — this file has no
|
|
37
|
-
// live page to re-test against, so it reuses that proven depth rather than guessing. Falls
|
|
38
|
-
// back to 1 only for a malformed/legacy entry that somehow lacks it, since 1 level is the
|
|
39
|
-
// more common real-world shape (see resolveNearLocator's own comment).
|
|
40
|
-
const xpath = suggestion.parentLevels === 2 ? '../..' : '..';
|
|
41
|
-
return `getByText(${JSON.stringify(suggestion.anchorText)}).locator(${JSON.stringify(`xpath=${xpath}`)}).getByRole(${JSON.stringify(suggestion.role)})`;
|
|
42
|
-
}
|
|
43
|
-
case 'scoped': {
|
|
44
|
-
const containerArgs = suggestion.containerName ? `${JSON.stringify(suggestion.containerRole)}, { name: ${JSON.stringify(suggestion.containerName)} }` : JSON.stringify(suggestion.containerRole);
|
|
45
|
-
const targetArgs = suggestion.name ? `${JSON.stringify(suggestion.role)}, { name: ${JSON.stringify(suggestion.name)} }` : JSON.stringify(suggestion.role);
|
|
46
|
-
return `getByRole(${containerArgs}).getByRole(${targetArgs})`;
|
|
47
|
-
}
|
|
48
|
-
case 'containing':
|
|
49
|
-
// hasText, not has: <nested locator> — see resolveContainingLocator's comment for why: no
|
|
50
|
-
// safe way to know whether the receiver here should be `page.` or `this.page.` etc.
|
|
51
|
-
return `getByRole(${JSON.stringify(suggestion.role)}).filter({ hasText: ${JSON.stringify(suggestion.anchorText)} })`;
|
|
52
|
-
case 'normalized':
|
|
53
|
-
// suggestion.code is Locator.normalize()'s own toString() output — already valid
|
|
54
|
-
// Playwright locator-chain syntax with no leading dot (e.g. "locator('#x')" or
|
|
55
|
-
// "getByRole('textbox').nth(4)"), the same shape every case above builds by hand. Spliced
|
|
56
|
-
// in verbatim: no parsing needed, since normalize() already produced real code, not data
|
|
57
|
-
// to interpret. This is the one strategy buildLocatorFromSuggestion (healer/index.ts) can't
|
|
58
|
-
// resolve back into a live Locator — apply-heals's offline rewrite is its only replay path.
|
|
59
|
-
return suggestion.code;
|
|
60
|
-
default:
|
|
61
|
-
return undefined;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
16
|
// Finds the exact [dotIndex, callEnd) range of a locator-factory call (`.locator(...)`,
|
|
65
17
|
// `.getByRole(...)`, etc.) starting on `targetLine` (1-based) — the exact call site captured at
|
|
66
18
|
// heal time via resolveCallerLocation in bindings/locator.binding.ts. Deliberately not a real
|
|
@@ -247,7 +199,7 @@ function planFixes(cwd = process.cwd(), rawEntries) {
|
|
|
247
199
|
continue;
|
|
248
200
|
}
|
|
249
201
|
const range = findFactoryCallOnLine(content, entry.line);
|
|
250
|
-
const replacement = range ? generateReplacementCall(entry.suggestion) : undefined;
|
|
202
|
+
const replacement = range ? (0, durable_locator_1.generateReplacementCall)(entry.suggestion) : undefined;
|
|
251
203
|
if (!range || !replacement) {
|
|
252
204
|
outcomes.push({
|
|
253
205
|
file: relativeFile,
|
|
@@ -436,41 +388,43 @@ function parseArgs(args) {
|
|
|
436
388
|
return {
|
|
437
389
|
dryRun: args.includes('--dry-run'),
|
|
438
390
|
logsDir: logsDirIndex !== -1 ? args[logsDirIndex + 1] : undefined,
|
|
391
|
+
skipConfirm: args.includes('--yes') || args.includes('-y'),
|
|
439
392
|
};
|
|
440
393
|
}
|
|
441
|
-
|
|
442
|
-
const { dryRun, logsDir } = parseArgs(args);
|
|
443
|
-
console.log('tamash-playwright apply-heals\n');
|
|
444
|
-
// --logs-dir supports the sharded-CI pattern: a merge job downloads every shard's heals.jsonl
|
|
445
|
-
// artifact into one directory and points here instead of relying on a single local log file.
|
|
446
|
-
const rawEntries = logsDir ? (0, heal_log_1.readHealLogsFromDir)(path_1.default.resolve(process.cwd(), logsDir)) : undefined;
|
|
447
|
-
const { outcomes, fileContents, affectedTests } = planFixes(process.cwd(), rawEntries);
|
|
448
|
-
if (outcomes.length === 0) {
|
|
449
|
-
console.log(logsDir ? `No eligible heals found under ${logsDir}.` : 'No eligible heals found in .tamash-playwright/heals.jsonl.');
|
|
450
|
-
console.log('(Only text/ARIA-based heals with a known source location are eligible — run your tests first.)');
|
|
451
|
-
return;
|
|
452
|
-
}
|
|
394
|
+
function printOutcomeTables(outcomes, dryRun) {
|
|
453
395
|
const applied = outcomes.filter((o) => o.applied);
|
|
454
396
|
const skipped = outcomes.filter((o) => !o.applied);
|
|
455
|
-
|
|
456
|
-
const
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
397
|
+
if (applied.length > 0) {
|
|
398
|
+
const needsReviewCount = applied.filter((o) => o.needsReview).length;
|
|
399
|
+
(0, console_style_1.section)(dryRun ? `Would fix (${applied.length}${needsReviewCount > 0 ? `, ${needsReviewCount} needing review` : ''})` : `Fixes (${applied.length}${needsReviewCount > 0 ? `, ${needsReviewCount} needing review` : ''})`);
|
|
400
|
+
(0, console_style_1.renderTable)(['Location', 'Before', 'After', 'Review'], applied.map((o) => [
|
|
401
|
+
(0, console_style_1.dim)((0, console_style_1.truncateStart)(`${o.file}:${o.line}`, 32)),
|
|
402
|
+
(0, console_style_1.truncateEnd)(o.before, 42),
|
|
403
|
+
(0, console_style_1.truncateEnd)(o.after, 42),
|
|
404
|
+
o.needsReview ? (0, console_style_1.yellow)('⚠ yes') : (0, console_style_1.dim)('—'),
|
|
405
|
+
]));
|
|
406
|
+
for (const o of applied.filter((f) => f.needsReview)) {
|
|
407
|
+
console.log(` ${(0, console_style_1.yellow)('⚠')} ${(0, console_style_1.dim)(`${o.file}:${o.line}`)} — ${o.reviewNote ?? 'This selector was not confidently verified — please double-check it.'}`);
|
|
462
408
|
}
|
|
463
409
|
}
|
|
464
|
-
|
|
465
|
-
|
|
410
|
+
if (skipped.length > 0) {
|
|
411
|
+
(0, console_style_1.section)(`Skipped (${skipped.length})`);
|
|
412
|
+
(0, console_style_1.renderTable)(['Location', 'Reason'], skipped.map((o) => [(0, console_style_1.dim)((0, console_style_1.truncateStart)(`${o.file}:${o.line}`, 32)), (0, console_style_1.truncateEnd)(o.reason ?? '', 78)]));
|
|
466
413
|
}
|
|
467
|
-
|
|
414
|
+
return { applied, skipped };
|
|
415
|
+
}
|
|
416
|
+
// Writes the verification script, the JSON/Markdown reports, patches the source files, archives
|
|
417
|
+
// the raw heal-log entries, then clears the log — the actual "make it permanent" side effects.
|
|
418
|
+
// Pulled into its own function so both the confirmed-interactive path and the auto-proceed path
|
|
419
|
+
// (CI, non-interactive, --yes, or --dry-run's own report-only variant) call the identical sequence
|
|
420
|
+
// rather than risking the two drifting apart.
|
|
421
|
+
function writeFixes(outcomes, applied, skipped, fileContents, affectedTests, dryRun, logsDir, rawEntries) {
|
|
468
422
|
const label = timestampLabel();
|
|
469
423
|
// Only written on a real apply, not --dry-run — matches the report's own "nothing written"
|
|
470
424
|
// promise in that mode, and there'd be nothing yet worth re-verifying anyway.
|
|
471
425
|
const verifyScriptPath = dryRun ? undefined : writeVerificationScript(affectedTests, process.cwd());
|
|
472
426
|
const { markdownPath } = writeReports(outcomes, affectedTests, dryRun, process.cwd(), label, verifyScriptPath);
|
|
473
|
-
console.log(
|
|
427
|
+
console.log(`\nReport written to ${path_1.default.relative(process.cwd(), markdownPath)} (and the matching .json).`);
|
|
474
428
|
console.log(`Archived under .tamash-playwright/history/${label}.* — kept even after the next run.`);
|
|
475
429
|
console.log(affectedTests.length > 0
|
|
476
430
|
? `Tests to re-verify: ${affectedTests.join(' ')}`
|
|
@@ -482,7 +436,7 @@ async function runApplyHeals(args = []) {
|
|
|
482
436
|
console.log('(Re-run without --dry-run to also get a ready-to-run verification script for the tests above.)');
|
|
483
437
|
}
|
|
484
438
|
const needsReviewCount = applied.filter((o) => o.needsReview).length;
|
|
485
|
-
const reviewSuffix = needsReviewCount > 0 ? ` (${needsReviewCount} marked
|
|
439
|
+
const reviewSuffix = needsReviewCount > 0 ? ` (${needsReviewCount} marked needing review — see above)` : '';
|
|
486
440
|
if (dryRun) {
|
|
487
441
|
console.log(`${applied.length} fix(es) would be applied${reviewSuffix}, ${skipped.length} skipped. Re-run without --dry-run to write them.`);
|
|
488
442
|
return;
|
|
@@ -510,4 +464,37 @@ async function runApplyHeals(args = []) {
|
|
|
510
464
|
}
|
|
511
465
|
(0, heal_log_1.clearHealLog)();
|
|
512
466
|
}
|
|
467
|
+
async function runApplyHeals(args = []) {
|
|
468
|
+
const { dryRun, logsDir, skipConfirm } = parseArgs(args);
|
|
469
|
+
console.log((0, console_style_1.bold)('tamash-playwright apply-heals'));
|
|
470
|
+
// --logs-dir supports the sharded-CI pattern: a merge job downloads every shard's heals.jsonl
|
|
471
|
+
// artifact into one directory and points here instead of relying on a single local log file.
|
|
472
|
+
const rawEntries = logsDir ? (0, heal_log_1.readHealLogsFromDir)(path_1.default.resolve(process.cwd(), logsDir)) : undefined;
|
|
473
|
+
const { outcomes, fileContents, affectedTests } = planFixes(process.cwd(), rawEntries);
|
|
474
|
+
if (outcomes.length === 0) {
|
|
475
|
+
console.log(logsDir ? `No eligible heals found under ${logsDir}.` : 'No eligible heals found in .tamash-playwright/heals.jsonl.');
|
|
476
|
+
console.log('(Only text/ARIA-based heals with a known source location are eligible — run your tests first.)');
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
const { applied, skipped } = printOutcomeTables(outcomes, dryRun);
|
|
480
|
+
// --dry-run never writes anything, in any environment — the table above (and the preview report
|
|
481
|
+
// writeFixes still generates) is the entire point of the flag, so there's nothing left to gate.
|
|
482
|
+
//
|
|
483
|
+
// Otherwise: a confirmation prompt only makes sense with an actual human at a real terminal to
|
|
484
|
+
// answer it. CI has no stdin to read from — blocking on one here would hang the job indefinitely
|
|
485
|
+
// (the same failure mode discovered and fixed for copilot-subscription's shared client earlier
|
|
486
|
+
// this project's history, just self-inflicted this time), silently breaking every consumer's
|
|
487
|
+
// existing unattended "apply-heals opens a PR for review" workflow. --yes is the explicit local
|
|
488
|
+
// escape hatch for scripting this without a live terminal to answer from.
|
|
489
|
+
if (!dryRun && (0, console_style_1.isInteractive)() && !skipConfirm) {
|
|
490
|
+
const needsReviewCount = applied.filter((o) => o.needsReview).length;
|
|
491
|
+
const suffix = needsReviewCount > 0 ? ` (${needsReviewCount} needing review)` : '';
|
|
492
|
+
const proceed = await (0, console_style_1.confirm)(`\nApply ${applied.length} fix(es) to your source files${suffix}? [y/N]: `);
|
|
493
|
+
if (!proceed) {
|
|
494
|
+
console.log('Aborted — no changes written.');
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
writeFixes(outcomes, applied, skipped, fileContents, affectedTests, dryRun, logsDir, rawEntries);
|
|
499
|
+
}
|
|
513
500
|
//# sourceMappingURL=applyHeals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyHeals.js","sourceRoot":"","sources":["../../src/cli/applyHeals.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"applyHeals.js","sourceRoot":"","sources":["../../src/cli/applyHeals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const useColor: boolean;
|
|
2
|
+
export declare const bold: (s: string) => string;
|
|
3
|
+
export declare const dim: (s: string) => string;
|
|
4
|
+
export declare const green: (s: string) => string;
|
|
5
|
+
export declare const yellow: (s: string) => string;
|
|
6
|
+
export declare const red: (s: string) => string;
|
|
7
|
+
export declare const cyan: (s: string) => string;
|
|
8
|
+
export declare function section(title: string): void;
|
|
9
|
+
export declare function visibleLength(s: string): number;
|
|
10
|
+
export declare function truncateEnd(s: string, max: number): string;
|
|
11
|
+
export declare function truncateStart(s: string, max: number): string;
|
|
12
|
+
export declare function renderTable(headers: string[], rows: string[][], indent?: string): void;
|
|
13
|
+
export declare function isInteractive(): boolean;
|
|
14
|
+
export declare function confirm(question: string): Promise<boolean>;
|
|
15
|
+
//# sourceMappingURL=console-style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-style.d.ts","sourceRoot":"","sources":["../../src/cli/console-style.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,QAAQ,SAAiF,CAAC;AAKvG,eAAO,MAAM,IAAI,MAAO,MAAM,WAAkB,CAAC;AACjD,eAAO,MAAM,GAAG,MAAO,MAAM,WAAkB,CAAC;AAChD,eAAO,MAAM,KAAK,MAAO,MAAM,WAAmB,CAAC;AACnD,eAAO,MAAM,MAAM,MAAO,MAAM,WAAmB,CAAC;AACpD,eAAO,MAAM,GAAG,MAAO,MAAM,WAAmB,CAAC;AACjD,eAAO,MAAM,IAAI,MAAO,MAAM,WAAmB,CAAC;AAElD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE3C;AAKD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAID,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,SAAO,GAAG,IAAI,CAYpF;AAOD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAQD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1D"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.cyan = exports.red = exports.yellow = exports.green = exports.dim = exports.bold = exports.useColor = void 0;
|
|
7
|
+
exports.section = section;
|
|
8
|
+
exports.visibleLength = visibleLength;
|
|
9
|
+
exports.truncateEnd = truncateEnd;
|
|
10
|
+
exports.truncateStart = truncateStart;
|
|
11
|
+
exports.renderTable = renderTable;
|
|
12
|
+
exports.isInteractive = isInteractive;
|
|
13
|
+
exports.confirm = confirm;
|
|
14
|
+
const readline_1 = __importDefault(require("readline"));
|
|
15
|
+
// Plain ANSI codes rather than a color library — a dependency (even a tiny one) isn't worth it for
|
|
16
|
+
// what's only ever used by this package's own CLI output. Disabled outside a real terminal (piped
|
|
17
|
+
// output, most CI log collectors, NO_COLOR) so redirected output stays plain text instead of
|
|
18
|
+
// filling up with escape codes. Shared by doctor.ts and applyHeals.ts so both commands look and
|
|
19
|
+
// behave the same way, rather than each growing its own copy.
|
|
20
|
+
exports.useColor = !!process.stdout.isTTY && !process.env.NO_COLOR && process.env.TERM !== 'dumb';
|
|
21
|
+
const ESC = String.fromCharCode(27);
|
|
22
|
+
function paint(code, text) {
|
|
23
|
+
return exports.useColor ? `${ESC}[${code}m${text}${ESC}[0m` : text;
|
|
24
|
+
}
|
|
25
|
+
const bold = (s) => paint('1', s);
|
|
26
|
+
exports.bold = bold;
|
|
27
|
+
const dim = (s) => paint('2', s);
|
|
28
|
+
exports.dim = dim;
|
|
29
|
+
const green = (s) => paint('32', s);
|
|
30
|
+
exports.green = green;
|
|
31
|
+
const yellow = (s) => paint('33', s);
|
|
32
|
+
exports.yellow = yellow;
|
|
33
|
+
const red = (s) => paint('31', s);
|
|
34
|
+
exports.red = red;
|
|
35
|
+
const cyan = (s) => paint('36', s);
|
|
36
|
+
exports.cyan = cyan;
|
|
37
|
+
function section(title) {
|
|
38
|
+
console.log(`\n${(0, exports.bold)(title)}`);
|
|
39
|
+
}
|
|
40
|
+
// ANSI codes have zero visual width but count toward .length, so column sizing/padding has to
|
|
41
|
+
// measure the stripped string, not the colored one, or every colored cell throws the alignment off.
|
|
42
|
+
const ANSI_PATTERN = new RegExp(`${ESC}\\[[0-9;]*m`, 'g');
|
|
43
|
+
function visibleLength(s) {
|
|
44
|
+
return s.replace(ANSI_PATTERN, '').length;
|
|
45
|
+
}
|
|
46
|
+
function padCell(s, width) {
|
|
47
|
+
return s + ' '.repeat(Math.max(0, width - visibleLength(s)));
|
|
48
|
+
}
|
|
49
|
+
function truncateEnd(s, max) {
|
|
50
|
+
return s.length > max ? `${s.slice(0, max - 1)}…` : s;
|
|
51
|
+
}
|
|
52
|
+
function truncateStart(s, max) {
|
|
53
|
+
return s.length > max ? `…${s.slice(s.length - max + 1)}` : s;
|
|
54
|
+
}
|
|
55
|
+
// A plain box-drawing table, indented to line up under a section heading — no dependency, this is
|
|
56
|
+
// the only place in the package that renders one. Column widths are derived from content; callers
|
|
57
|
+
// truncate individual cells first (rather than this function doing it), since truncation needs
|
|
58
|
+
// column-specific judgment (keep the tail of a "file:line" but the head of a code snippet).
|
|
59
|
+
function renderTable(headers, rows, indent = ' ') {
|
|
60
|
+
const widths = headers.map((h, i) => Math.max(visibleLength(h), ...rows.map((r) => visibleLength(r[i] ?? ''))));
|
|
61
|
+
const rule = (l, m, r) => indent + l + widths.map((w) => '─'.repeat(w + 2)).join(m) + r;
|
|
62
|
+
const rowLine = (cells) => `${indent}│ ${cells.map((c, i) => padCell(c, widths[i])).join(' │ ')} │`;
|
|
63
|
+
console.log(rule('┌', '┬', '┐'));
|
|
64
|
+
console.log(rowLine(headers.map((h) => (0, exports.bold)(h))));
|
|
65
|
+
console.log(rule('├', '┼', '┤'));
|
|
66
|
+
for (const row of rows) {
|
|
67
|
+
console.log(rowLine(row));
|
|
68
|
+
}
|
|
69
|
+
console.log(rule('└', '┴', '┘'));
|
|
70
|
+
}
|
|
71
|
+
// True only when there's an actual human at a real terminal to ask — never in CI (checked
|
|
72
|
+
// explicitly, not inferred from isTTY alone, since some CI systems still attach a pty-like stdout)
|
|
73
|
+
// and never when stdin/stdout aren't both real terminals (piped output, a redirected script). Any
|
|
74
|
+
// command that gates an interactive prompt on this must behave exactly as it did before the prompt
|
|
75
|
+
// existed whenever this is false — see applyHeals.ts's own use of it for why that matters.
|
|
76
|
+
function isInteractive() {
|
|
77
|
+
return !!process.stdout.isTTY && !!process.stdin.isTTY && !process.env.CI;
|
|
78
|
+
}
|
|
79
|
+
// Reads one line from stdin and treats it as a yes/no answer — y/yes (any case) is the only way to
|
|
80
|
+
// get `true`; anything else, including a bare Enter, is `false`. Errs toward "no" on ambiguity
|
|
81
|
+
// deliberately: this backs a prompt asking permission to write to a consumer's source files, where
|
|
82
|
+
// treating an unclear answer as "go ahead" would be the wrong default. Not intended to be called
|
|
83
|
+
// when isInteractive() is false — no caller currently does, but nothing here guards against it
|
|
84
|
+
// (it would just hang waiting on a stdin that will never produce a line).
|
|
85
|
+
function confirm(question) {
|
|
86
|
+
const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stdout });
|
|
87
|
+
return new Promise((resolve) => {
|
|
88
|
+
rl.question(question, (answer) => {
|
|
89
|
+
rl.close();
|
|
90
|
+
resolve(/^y(es)?$/i.test(answer.trim()));
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=console-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-style.js","sourceRoot":"","sources":["../../src/cli/console-style.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAyMA,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BlE"}
|