tamash-playwright 0.13.0 → 0.15.0-beta.1
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 +24 -0
- package/LICENSE +24 -10
- package/README.md +16 -7
- package/RELEASE-TESTING.md +25 -1
- package/dist/cli/applyHeals.d.ts +2 -1
- package/dist/cli/applyHeals.d.ts.map +1 -1
- package/dist/cli/applyHeals.js +80 -31
- package/dist/cli/applyHeals.js.map +1 -1
- package/dist/healer/heal-log.d.ts +6 -0
- package/dist/healer/heal-log.d.ts.map +1 -1
- package/dist/healer/heal-log.js.map +1 -1
- package/dist/healer/index.d.ts +14 -0
- package/dist/healer/index.d.ts.map +1 -1
- package/dist/healer/index.js +57 -4
- package/dist/healer/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/tamash-playwright/SKILL.md +21 -2
- package/skills/tamash-playwright/references/heal.md +6 -4
- package/skills/tamash-playwright/references/maintain.md +139 -0
- package/usage.md +864 -812
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
All notable changes to this project are documented here. Format loosely follows
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/); dates are when each version was published.
|
|
5
5
|
|
|
6
|
+
## [0.15.0-beta.1] - 2026-09-19
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- **Identical elements are recorded as such.** When several elements share the same role and accessible name and nothing on the page distinguishes them, the only selector that can be written is positional (`.first()`, `.nth(n)`). The healing report and `heals.jsonl` entry now carry `identicalElements: { count, index, pickedBy }` (how many elements matched, the 1-based position picked, and whether the text model or the vision fallback picked it). The review note states the count and position. `apply-heals` shows an `Identical` line for the fix, in the console and in the Markdown and JSON reports. The field is optional; entries without it behave as before. Positional heals are not replayed from the heal cache, so each run records the field again.
|
|
11
|
+
- **Maintenance step in the AI-assistant skill.** `skills/tamash-playwright/references/maintain.md` covers tests that still fail after healing: collecting evidence from the JSON report and attachments, grouping failures by shared cause, exploring the failing state, classifying each failure (locator drift, intentional change, suspected defect, flaky, environment or data, cannot tell), fixing what is safe to fix, verifying with healing off, and reporting under "Fixed" and "Needs a human". Assertion, expected-value and flow edits require evidence that the change was intended or the user's approval. `SKILL.md` lists the limits of the classification.
|
|
12
|
+
- **Scope rules in `SKILL.md` and `heal.md`.** A `doctor` warning about files outside a scoped run does not block the run. A heal that changes a name, label or text is checked for intent before it is applied. A no-commit instruction skips the LAND step. A run with failing tests and no heals continues to `maintain.md` instead of ending as "suite passed".
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **`apply-heals` console output lists each change on its own lines.** The table is replaced by numbered blocks with `Before`, `After` and, when flagged, `Review` lines, without truncation. A summary follows: files to change (page objects and helpers, then test files, with the number of fixes per file) and the tests to re-verify, one per line. `Skipped` items use the same layout.
|
|
17
|
+
- **`apply-heals --dry-run` writes `apply-heals-preview.md` and `.json`.** The preview is headed "Nothing has been applied" and lists fixes under "Would apply". A dry run no longer overwrites `apply-heals-report.*` and no longer adds to `history/`; those files describe real runs only. The "Archived under history" line is printed only for real runs.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **A nearby-text (`near`) selector could match more than one element once written to source.** The healer verified the selector with `.first()` on its text anchor, and `apply-heals` wrote it without `.first()`. When the anchor text appeared on more than one element (for example two "Yes" buttons), the verified selector matched one element and the written selector matched two, and the next run with healing off failed with a strict-mode violation. The healer now verifies the selector in the form `apply-heals` writes, and uses the next option when that form does not resolve to exactly the target element. The other strategies were compared against the form written to source; only `near` differed.
|
|
22
|
+
- **A dry run replaced the report of the last real run.** See "Changed" above.
|
|
23
|
+
|
|
24
|
+
## [0.14.0] - 2026-09-18
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- **License terms updated.** The software remains free to use, including commercially, via ordinary installation as a project dependency. Copying, modifying, redistributing, or reselling the software outside of that ordinary use requires prior written permission. Copyright is held by VibeTestQ. See the LICENSE file for the full terms.
|
|
29
|
+
|
|
6
30
|
## [0.13.0] - 2026-09-17
|
|
7
31
|
|
|
8
32
|
### Added
|
package/LICENSE
CHANGED
|
@@ -1,19 +1,32 @@
|
|
|
1
|
-
Copyright (c) 2026
|
|
1
|
+
Copyright (c) 2026 VibeTestQ
|
|
2
2
|
|
|
3
3
|
All rights reserved.
|
|
4
4
|
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a
|
|
6
|
-
of this software and associated documentation files (the "Software"),
|
|
7
|
-
the Software for any purpose, including commercial use, subject to
|
|
8
|
-
following conditions:
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
|
6
|
+
copy of this software and associated documentation files (the "Software"),
|
|
7
|
+
to use the Software for any purpose, including commercial use, subject to
|
|
8
|
+
the following conditions:
|
|
9
9
|
|
|
10
|
-
1. The Software may not be copied, modified, merged,
|
|
11
|
-
|
|
12
|
-
permission from the copyright holder.
|
|
10
|
+
1. The Software, in whole or in part, may not be copied, modified, merged,
|
|
11
|
+
published, distributed, sublicensed, or sold, without prior written
|
|
12
|
+
permission from the copyright holder. To request permission, contact
|
|
13
|
+
support@vibetestq.com.
|
|
13
14
|
|
|
14
|
-
2.
|
|
15
|
+
2. Ordinary installation and use of the Software via a standard package
|
|
16
|
+
manager (such as npm), as an unmodified dependency of Licensee's own
|
|
17
|
+
project, is expressly permitted and does not itself constitute
|
|
18
|
+
"copying," "distribution," or "modification" under this license.
|
|
19
|
+
|
|
20
|
+
3. The above copyright notice and this permission notice shall be included
|
|
15
21
|
in all copies of the Software that are permitted under these terms.
|
|
16
22
|
|
|
23
|
+
4. This license terminates automatically, without notice, if Licensee
|
|
24
|
+
breaches any of the above conditions. Upon termination, Licensee must
|
|
25
|
+
cease all use of the Software and destroy all copies in its possession.
|
|
26
|
+
|
|
27
|
+
5. This license is governed by the laws of India, without regard to its
|
|
28
|
+
conflict of law principles.
|
|
29
|
+
|
|
17
30
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
31
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
32
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -22,4 +35,5 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
22
35
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
23
36
|
DEALINGS IN THE SOFTWARE.
|
|
24
37
|
|
|
25
|
-
For questions or
|
|
38
|
+
For questions, or to request permission under condition 1, contact
|
|
39
|
+
support@vibetestq.com.
|
package/README.md
CHANGED
|
@@ -119,7 +119,7 @@ A browser launched directly with `chromium.launch()`, or anything built in `glob
|
|
|
119
119
|
|
|
120
120
|
Some elements have no id, test id, accessible name, or linked label — a plain `<input>` a human finds instantly by sight but that has nothing for a locator to grab onto. For these, `tamash-playwright` reads the page's full structure, not just a flat list of named elements, so the AI can still point at the right one — then verifies every candidate against the live page before using it. You don't configure any of this.
|
|
121
121
|
|
|
122
|
-
Not every healed selector is equally durable — one anchored on a nearby label or page position is correct right now but worth a glance later. Look for `needsReview=yes` in the console line or a `self-heal-needs-review` annotation in the report. Nothing is blocked because of it — it's a hint about where to look first. Details: [usage.md](usage.md#when-theres-no-name-to-match-finding-elements-by-structure).
|
|
122
|
+
Not every healed selector is equally durable — one anchored on a nearby label or page position is correct right now but worth a glance later. Look for `needsReview=yes` in the console line or a `self-heal-needs-review` annotation in the report. When several elements on the page are identical and nothing distinguishes them, the fix can only be a position (`.first()`, `.nth(n)`); the report then records `identicalElements` with the number of matches and the position picked. Nothing is blocked because of it — it's a hint about where to look first. Details: [usage.md](usage.md#when-theres-no-name-to-match-finding-elements-by-structure).
|
|
123
123
|
|
|
124
124
|
## Vision fallback
|
|
125
125
|
|
|
@@ -141,16 +141,25 @@ npx tamash-playwright apply-heals # write them
|
|
|
141
141
|
|
|
142
142
|
```
|
|
143
143
|
Fixes (1)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
|
|
145
|
+
1. src/pages/loginpage.ts:11
|
|
146
|
+
Before .locator('input[name="username"]')
|
|
147
|
+
After .getByRole("textbox", { name: "Username" })
|
|
148
|
+
|
|
149
|
+
Files to change
|
|
150
|
+
|
|
151
|
+
Page objects and helpers (1)
|
|
152
|
+
src/pages/loginpage.ts 1 fix
|
|
153
|
+
|
|
154
|
+
Tests to re-verify
|
|
155
|
+
tests/login.spec.ts:7
|
|
149
156
|
|
|
150
157
|
1 fix(es) applied to 1 file(s), 0 skipped.
|
|
151
158
|
Review the changes (e.g. `git diff`) before committing.
|
|
152
159
|
```
|
|
153
160
|
|
|
161
|
+
Each change is listed on its own lines, followed by the files that change and the tests to re-verify. `--dry-run` writes its own preview files (`.tamash-playwright/apply-heals-preview.md` and `.json`) and leaves the latest-run report untouched.
|
|
162
|
+
|
|
154
163
|
Nothing is applied automatically — a real run asks before writing at an actual terminal (pass `--yes` to skip that), and CI/non-interactive runs proceed without asking since there's no one there to ask. Only real selector fixes are eligible, and only the matched locator call is touched — `.describe('...')` and everything else on the line stays as written. Always review the diff before committing.
|
|
155
164
|
|
|
156
165
|
Every real run also writes `.tamash-playwright/verify-heals.cjs` — re-run it (`node .tamash-playwright/verify-heals.cjs`) to prove the rewritten selectors work **on their own**, with healing turned off, not just "worked while healing was there to catch a mistake."
|
|
@@ -205,7 +214,7 @@ It reads this package's own heal reports straight off the test result — instal
|
|
|
205
214
|
|
|
206
215
|
## Using this with an AI coding assistant
|
|
207
216
|
|
|
208
|
-
Ships a skill that runs the local workflow above (review, apply, verify) and onboards a project to its conventions, inside Claude Code, Cursor, GitHub Copilot, and others. Pure orchestration over the CLI commands already documented above — no new capability.
|
|
217
|
+
Ships a skill that runs the local workflow above (review, apply, verify) and onboards a project to its conventions, inside Claude Code, Cursor, GitHub Copilot, and others. Pure orchestration over the CLI commands already documented above — no new capability. When tests still fail after healing, the skill also investigates them: it classifies each failure as locator drift, an intentional app change, a suspected product defect, a flaky test, or an environment problem, fixes what is safe to fix, verifies with healing off, and reports what needs a person. Its limits are listed in the skill's `SKILL.md`.
|
|
209
218
|
|
|
210
219
|
```sh
|
|
211
220
|
npx tamash-playwright init-skill
|
package/RELEASE-TESTING.md
CHANGED
|
@@ -31,11 +31,14 @@ currently covered · N/A not applicable to that column.
|
|
|
31
31
|
| Failure analysis (`healer/failure-analysis.ts`, an auto-fixture) | Classifies a genuinely-failed test (every retry exhausted) as `likely-defect`/`likely-wrong-locator`/`likely-timing-or-environment`/`inconclusive`, on by default via `FAILURE_ANALYSIS_ENABLED`, independent of `HEALER_ENABLED`. Covers any final failure, not just `expect()`: an action failure healing already tried and reported on is analyzed too, with healing's own diagnosis passed in as context. | 🔎 Permanent e2e (`assertion-failure-analysis.e2e.spec.ts`) plus manual runs with `HEALER_PROVIDER=ollama`, `--retries=1`. A test failing 2 attempts produces 1 AI call and verdict `likely-defect`, with the explanation referencing both attempts. The `failure-analysis` and `failure-analysis-tokens-used` annotations and the `failure-analysis` JSON attachment are present, verified via `--reporter=json`. A target never present on the page produces `likely-defect`; the same content rendered under different wording produces `likely-wrong-locator`, naming the text found instead. Tested against all 11 providers: `ollama`, `openai`, `anthropic`, `gemini`, `claude-subscription`, `kiro-subscription`, `codex-subscription` return real verdicts; `copilot-subscription` fails with a model-availability error, also present on the existing healing path with this account; `ollama-local` and `cursor-subscription` are not configured in this environment; `tamash` always returns `inconclusive`, covered by a unit test. `testInfo.project.retries` reflects project-level retries only — a per-file `test.describe.configure({ retries })` override is not visible to it, and in that case analysis runs on every failing attempt instead of once. Four bugs were found and fixed during development, each covered by a permanent regression test: (1) the working log was keyed by `testFile:testLine`, which is not unique for parameterized tests sharing a source line, corrupting their attempt history — fixed by keying on `testInfo.testId`; (2) a flaky test that passes on retry left a stale row in the working log — fixed by clearing it on the passing branch too; (3) an action failure that healing already reported on received no failure-analysis verdict — fixed by analyzing it too, passing healing's own diagnosis in as context; (4) `readFailureAttempts` dropped the `healingAttempt` field on every read despite writing it to disk correctly — fixed by adding the field to its return list. Earlier design iterations (a Reporter-based prototype, a separate results log file) are recorded in CHANGELOG.md. | 🔎 TypeScript sample repo, branch `test/beta-0.13.0-beta.3-failure-analysis`, GitHub Actions run [35110248263](https://github.com/qtpsudhakarproducts/tamash-playwright-typescript-playwright/actions/runs/35110248263), 2026-09-16, against the published `0.13.0-beta.3` package. `ollama`: a test failing every attempt produces verdict `likely-defect`. `tamash`: an action failure healing declines produces verdict `inconclusive`. `claude-subscription` and `ollama` runs where every locator healed successfully: zero failure-analysis calls. Branch and workflow job are temporary — removed once this version is promoted to stable. |
|
|
32
32
|
| Full attempt-history logging (`attempts[]`) | Every cache/text/vision/action-recovery attempt recorded, not just the last. | ✅ Unit + e2e | ✅ Visible in every CI console log |
|
|
33
33
|
| Heal caching (`heals.jsonl`) | A previously-confirmed selector is retried before a fresh AI call. | ✅ Unit (`healLog.test.js`) + e2e-observed | ✅ Uploaded as a CI artifact every run, consumed by `apply-heals` |
|
|
34
|
-
| `apply-heals` (permanent fix + PR automation) | Turns a runtime heal into a committed source change; opens a PR in CI. | ✅ Unit (
|
|
34
|
+
| `apply-heals` (permanent fix + PR automation) | Turns a runtime heal into a committed source change; opens a PR in CI. | ✅ Unit (`applyHeals.test.js`, 28 tests: all 9 strategies, console layout, dry-run preview files, `--logs-dir` merge, identical-elements marker) | ✅ Dedicated CI job, runs every push |
|
|
35
35
|
| `doctor` CLI | Pre-flight checks: provider connectivity, `actionTimeout`, vision capability, missing `.describe()`, inline locators, skill installation. | ✅ Run against every provider including `tamash` | ❌ Not run as part of either CI workflow |
|
|
36
36
|
| `init-skill` CLI + `doctor` Skill check | Copies the skill into `.claude/skills/tamash-playwright/` and `.agents/skills/tamash-playwright/` (Playwright's `install --skills` convention — no per-agent conversion); `doctor` reports current / outdated / unmanaged / absent per location and flags pre-beta.8 leftovers. | ✅ Unit (`skill.test.js`, real installs into a temp dir: both targets, idempotency, version-bump re-copy, `--force` gating, `--user`, `--dry-run`, `skillState` transitions, legacy-artifact detection) + live: `init-skill` (both), `--target agents`, `--help`, and every `doctor` Skill state incl. leftover `.mdc` / appended-block detection | ❌ Not run in CI (neither workflow runs `doctor` or `init-skill`) |
|
|
37
37
|
| `doctor` categorised provider diagnosis | `diagnose()` per provider → `doctor` maps `not-installed`/`not-authenticated`/`timeout`/`bad-model`/`network`/`bad-response` to a specific fix. | ✅ Unit (`providerDiagnostics.test.js`, 13 cases on both classifiers) + live: `openai` bad key → `not-authenticated` (401 body shown), `openai` bad base URL → `network`, `copilot-subscription` bad model → `bad-model`, 1ms `actionTimeout` → `timeout` with raise-the-timeout guidance, and all three not-installed shapes (moved the dep out of resolution and restored it): `@github/copilot-sdk` CJS `MODULE_NOT_FOUND`, `@anthropic-ai/claude-agent-sdk` ESM `ERR_MODULE_NOT_FOUND`, missing `kiro-cli` `ENOENT` → each `not-installed` with its install command | ❌ Not run in CI (neither workflow runs `doctor`) |
|
|
38
38
|
| `getDurable()` | Resolves any locator (e.g. `aria-ref=...`) to a durable, reusable equivalent. | ✅ e2e (`get-durable-*-repro`, 4 specs incl. concurrency) | ❌ No CI sample test calls it directly |
|
|
39
|
+
| Identical-elements marker (`identicalElements` on the healing report and `heals.jsonl`) | Records the number of identical elements, the position picked and who picked it, when only a positional selector can be written. | ✅ e2e (`repeated-element-healing.e2e.spec.ts`, `identical-elements.spec.ts`) plus unit (`applyHeals.test.js`) | ❌ Not run in CI |
|
|
40
|
+
| Written-selector fidelity (`written-selector-fidelity.spec.ts`) | The code `apply-heals` writes for each strategy resolves to exactly one element, with healing off; the `near` form is rejected when its anchor text is not unique. | ✅ e2e, no AI provider needed | ❌ Not run in CI |
|
|
41
|
+
| Maintenance step of the skill (`references/maintain.md`) | Investigates tests that still fail after healing and reports suspected defects for review. | 🔎 One unbriefed agent (Claude Code), four scenarios in `tests/maintenance-scenarios/`; no other agent run | ❌ Not run in CI |
|
|
39
42
|
| Provider: `ollama` | API-key provider, Ollama Cloud. | ✅ Verified (live calls, real token counts) | ✅ Both CI workflows now run a `test-ollama` job, confirmed green |
|
|
40
43
|
| Provider: `ollama-local` | Self-hosted Ollama server; `OLLAMA_LOCAL_API_KEY` optional, unlike `ollama`'s required key. | ✅ Verified against a genuine local Ollama installation (real `ollama serve`, `qwen2.5:0.5b` pulled and warmed) — confirmed the default `OLLAMA_LOCAL_BASE_URL`, real request/response round-trip (including correct token-usage extraction), and that the real server both works with no `Authorization` header and tolerates one being sent unnecessarily; also confirmed end-to-end via the real `doctor` CLI, not just a direct provider call. (A synthetic fake-HTTP-server test preceded this and is superseded by it.) | ❌ Not used in either CI workflow (no self-hosted Ollama instance available in CI) |
|
|
41
44
|
| Multi-agent skill (`skills/tamash-playwright/`) | Local review/apply/verify/land workflow for AI coding assistants, plus adapters for Claude Code, Kiro, Cursor, Copilot, and `AGENTS.md`-reading tools. | ✅ Exercised end-to-end by real, unbriefed agents in isolated environments (no prior tamash-playwright knowledge given) — three separate walkthroughs: (1) a project with real `doctor` `[WARN]`s → correctly routed to `onboarding.md`, fixed 6 missing `.describe()`s, and correctly stopped at the Page Object gate rather than "fixing" files it verified were intentionally non-POM demos; (2) a `doctor`-clean project with a real broken locator → correctly routed to `heal.md`, ran the full RUN→REVIEW→APPLY→VERIFY loop unattended, and correctly stopped at LAND rather than committing anything; (3) a from-scratch project with zero `tamash-playwright` presence → correctly installed and configured it from the published package's own docs, proved real healing by deliberately breaking a locator and watching it recover live, and in doing so found a real bug now fixed (see CHANGELOG: `doctor`'s connectivity check was decoupled from the real `actionTimeout`). Six genuine documentation bugs found and fixed across all three runs, not just "read for plausibility." | ❌ Not used in either CI workflow (nothing to run in CI — this is consumed by an agent, not by the test suite) |
|
|
@@ -67,6 +70,27 @@ The table above is the current, living state. This section keeps a short history
|
|
|
67
70
|
release to release, and anything worth remembering that testing itself turned up — including real
|
|
68
71
|
mistakes, not just successes.
|
|
69
72
|
|
|
73
|
+
### [0.15.0-beta.1] — `apply-heals` output, `near` selector fix, identical elements, maintenance step of the skill — 2026-09-19
|
|
74
|
+
|
|
75
|
+
Changes: see the CHANGELOG.md `[0.15.0-beta.1]` entry.
|
|
76
|
+
|
|
77
|
+
Tested:
|
|
78
|
+
|
|
79
|
+
- Unit tests: 194 pass.
|
|
80
|
+
- `apply-heals` against live heals from four specs on the OrangeHRM site (`HEALER_PROVIDER=ollama`): a dry run with 7 fixes (5 flagged), then a real run, then `verify-heals.cjs`. The dry run left `apply-heals-report.*` unchanged. Verification with healing off passed for the one ordinary spec and failed for three healer-behaviour specs whose assertions require healing to be on, and for one `near` heal that matched two elements (the case fixed in this release).
|
|
81
|
+
- `near` fix: `repeated-element-healing.e2e.spec.ts` fails on the previous source (the written selector matches 2 elements) and passes with the change. Verified with `ollama`, `anthropic`, `openai` and `gemini`. `tamash` declines the page, as designed.
|
|
82
|
+
- Round trip for two identical buttons: heal, `apply-heals`, `verify-heals.cjs`, then three plain runs with `HEALER_ENABLED=false`. The first button was written as `.first()` and the second as `.nth(1)`; all runs passed.
|
|
83
|
+
- `identical-elements.spec.ts` (8 tests) and `written-selector-fidelity.spec.ts` (19 tests) pass. Three deliberate code changes (index off by one, `.first()` restored on the `near` anchor, comparison by role only) each made at least one of these tests fail.
|
|
84
|
+
- Full e2e suite (74 tests) on the previous source and on this source, same environment: 22 failed and 50 passed before; 18 failed and 54 passed after. No test fails only after the change. A later full run with `HEALER_PROVIDER=anthropic` and the new specs: 79 passed, 21 failed. The failing specs are those that are designed to fail (`assertion-failure-analysis.e2e.spec.ts`), require specific settings (`healing-disabled.e2e.spec.ts` needs `HEALER_ENABLED=false`, `tamash-rule-based-healing.e2e.spec.ts` needs `HEALER_PROVIDER=tamash`), depend on the live OrangeHRM site (`popup-newtab-healing.e2e.spec.ts`, `oHRM_Tamash_repro.spec.ts`) or depend on the model (`select-*-repro.spec.ts`, `ref-action-recovery-repro.spec.ts`, `vision-fallback-repro.spec.ts`, `select-multi-repro.spec.ts`). The same specs fail on the previous source.
|
|
85
|
+
- Skill maintenance step: one agent (Claude Code) with no prior knowledge, four scenarios (locator drift, intentional change with a release note, wrong value, removed control). Classification and edits matched the expected outcome in all four.
|
|
86
|
+
|
|
87
|
+
Not tested:
|
|
88
|
+
|
|
89
|
+
- A live vision heal onto identical elements (`pickedBy: 'vision'` is covered at function level and through the `--logs-dir` merge).
|
|
90
|
+
- The subscription providers and `ollama-local`.
|
|
91
|
+
- The sharded CI workflow.
|
|
92
|
+
- The maintenance step with an agent other than Claude Code.
|
|
93
|
+
|
|
70
94
|
### [0.13.0] — AI-powered failure analysis, `bindBrowser()` fix — 2026-09-17
|
|
71
95
|
|
|
72
96
|
Promoted from `0.13.0-beta.3`. No code changes since that beta — this promotion is a version bump
|
package/dist/cli/applyHeals.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type HealLogEntry } from '../healer/heal-log';
|
|
1
|
+
import { type HealLogEntry, type IdenticalElements } from '../healer/heal-log';
|
|
2
2
|
export type FixOutcome = {
|
|
3
3
|
file: string;
|
|
4
4
|
line: number;
|
|
@@ -8,6 +8,7 @@ export type FixOutcome = {
|
|
|
8
8
|
reason?: string;
|
|
9
9
|
needsReview?: boolean;
|
|
10
10
|
reviewNote?: string;
|
|
11
|
+
identicalElements?: IdenticalElements;
|
|
11
12
|
};
|
|
12
13
|
export declare function planFixes(cwd?: string, rawEntries?: HealLogEntry[]): {
|
|
13
14
|
outcomes: FixOutcome[];
|
|
@@ -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,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAyIrK,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;IAGpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,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;AAsOD,wBAAsB,aAAa,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCtE"}
|
package/dist/cli/applyHeals.js
CHANGED
|
@@ -217,7 +217,7 @@ function planFixes(cwd = process.cwd(), rawEntries) {
|
|
|
217
217
|
const after = `.${replacement}`;
|
|
218
218
|
content = content.slice(0, range.dotIndex) + after + content.slice(range.callEnd);
|
|
219
219
|
changed = true;
|
|
220
|
-
outcomes.push({ file: relativeFile, line: entry.line, before, after, applied: true, needsReview: entry.needsReview, reviewNote: entry.reviewNote });
|
|
220
|
+
outcomes.push({ file: relativeFile, line: entry.line, before, after, applied: true, needsReview: entry.needsReview, reviewNote: entry.reviewNote, identicalElements: entry.identicalElements });
|
|
221
221
|
}
|
|
222
222
|
if (changed) {
|
|
223
223
|
fileContents.set(fullPath, content);
|
|
@@ -334,27 +334,31 @@ function timestampLabel() {
|
|
|
334
334
|
function writeReports(outcomes, affectedTests, dryRun, cwd, label, verifyScriptPath) {
|
|
335
335
|
const dir = path_1.default.join(cwd, REPORT_DIR);
|
|
336
336
|
const historyDir = path_1.default.join(dir, 'history');
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
337
|
+
// A dry run writes its own preview files and nothing else. It must not overwrite the "latest
|
|
338
|
+
// run" report (which describes fixes that were really applied) and must not add to history/,
|
|
339
|
+
// which is the record of what was actually written to source.
|
|
340
|
+
const reportName = dryRun ? 'apply-heals-preview' : 'apply-heals-report';
|
|
341
|
+
fs_1.default.mkdirSync(dryRun ? dir : historyDir, { recursive: true });
|
|
340
342
|
const applied = outcomes.filter((o) => o.applied);
|
|
341
343
|
const skipped = outcomes.filter((o) => !o.applied);
|
|
342
344
|
const timestamp = new Date().toISOString();
|
|
343
345
|
const jsonContent = JSON.stringify({ timestamp, dryRun, applied: applied.length, skipped: skipped.length, fixes: outcomes, affectedTests, verifyScriptPath, verifyCommand: verifyScriptPath ? `node ${verifyScriptPath}` : undefined }, null, 2);
|
|
344
|
-
const jsonPath = path_1.default.join(dir,
|
|
346
|
+
const jsonPath = path_1.default.join(dir, `${reportName}.json`);
|
|
345
347
|
fs_1.default.writeFileSync(jsonPath, jsonContent, 'utf-8');
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
`Generated ${timestamp} by \`tamash-playwright apply-heals
|
|
351
|
-
'',
|
|
352
|
-
];
|
|
348
|
+
if (!dryRun) {
|
|
349
|
+
fs_1.default.writeFileSync(path_1.default.join(historyDir, `${label}.apply-heals-report.json`), jsonContent, 'utf-8');
|
|
350
|
+
}
|
|
351
|
+
const lines = dryRun
|
|
352
|
+
? ['# Self-healing fixes: preview', '', `Generated ${timestamp} by \`tamash-playwright apply-heals --dry-run\`. **Nothing has been applied.** Your source files are unchanged.`, '']
|
|
353
|
+
: ['# Self-healing fixes', '', `Generated ${timestamp} by \`tamash-playwright apply-heals\`.`, ''];
|
|
353
354
|
if (applied.length > 0) {
|
|
354
355
|
const needsReviewCount = applied.filter((f) => f.needsReview).length;
|
|
355
|
-
lines.push(`## Applied (${applied.length}${needsReviewCount > 0 ? `, ${needsReviewCount} needing review` : ''})`, '');
|
|
356
|
+
lines.push(`## ${dryRun ? 'Would apply' : 'Applied'} (${applied.length}${needsReviewCount > 0 ? `, ${needsReviewCount} needing review` : ''})`, '');
|
|
356
357
|
for (const fix of applied) {
|
|
357
|
-
lines.push(`### ${fix.needsReview ? '⚠️ ' : ''}\`${fix.file}:${fix.line}\``, '', '**Before:**', '```ts', fix.before, '```', '', '**After:**', '```ts', fix.after, '```', '');
|
|
358
|
+
lines.push(`### ${fix.needsReview ? '⚠️ ' : ''}\`${fix.file}:${fix.line}\``, '', '**Before:**', '```ts', fix.before, '```', '', dryRun ? '**After (proposed):**' : '**After:**', '```ts', fix.after, '```', '');
|
|
359
|
+
if (fix.identicalElements) {
|
|
360
|
+
lines.push(`> **Identical elements:** ${describeIdentical(fix.identicalElements)}`, '');
|
|
361
|
+
}
|
|
358
362
|
if (fix.needsReview) {
|
|
359
363
|
lines.push(`> ⚠️ **Needs review:** ${fix.reviewNote ?? 'This selector was not confidently verified — please double-check it.'}`, '');
|
|
360
364
|
}
|
|
@@ -368,7 +372,7 @@ function writeReports(outcomes, affectedTests, dryRun, cwd, label, verifyScriptP
|
|
|
368
372
|
lines.push('');
|
|
369
373
|
}
|
|
370
374
|
if (affectedTests.length > 0) {
|
|
371
|
-
lines.push('## Tests to re-verify', '', 'Every test observed exercising a location that got fixed above — pass these straight to `npx playwright test` to re-run exactly them (not the whole suite, and not even the whole file unless the exact test couldn\'t be pinned to a line) with healing disabled, to prove the fix works standalone:', '');
|
|
375
|
+
lines.push('## Tests to re-verify', '', dryRun ? 'Tests observed exercising the locations above. After a real run, re-run exactly these with healing disabled to prove the fixes work standalone:' : 'Every test observed exercising a location that got fixed above — pass these straight to `npx playwright test` to re-run exactly them (not the whole suite, and not even the whole file unless the exact test couldn\'t be pinned to a line) with healing disabled, to prove the fix works standalone:', '');
|
|
372
376
|
for (const test of affectedTests) {
|
|
373
377
|
lines.push(`- \`${test}\``);
|
|
374
378
|
}
|
|
@@ -378,9 +382,11 @@ function writeReports(outcomes, affectedTests, dryRun, cwd, label, verifyScriptP
|
|
|
378
382
|
}
|
|
379
383
|
}
|
|
380
384
|
const markdownContent = lines.join('\n');
|
|
381
|
-
const markdownPath = path_1.default.join(dir,
|
|
385
|
+
const markdownPath = path_1.default.join(dir, `${reportName}.md`);
|
|
382
386
|
fs_1.default.writeFileSync(markdownPath, markdownContent, 'utf-8');
|
|
383
|
-
|
|
387
|
+
if (!dryRun) {
|
|
388
|
+
fs_1.default.writeFileSync(path_1.default.join(historyDir, `${label}.apply-heals-report.md`), markdownContent, 'utf-8');
|
|
389
|
+
}
|
|
384
390
|
return { jsonPath, markdownPath };
|
|
385
391
|
}
|
|
386
392
|
function parseArgs(args) {
|
|
@@ -391,28 +397,71 @@ function parseArgs(args) {
|
|
|
391
397
|
skipConfirm: args.includes('--yes') || args.includes('-y'),
|
|
392
398
|
};
|
|
393
399
|
}
|
|
400
|
+
function describeIdentical(e) {
|
|
401
|
+
return `${e.count} elements on the page are identical. #${e.index} was picked by position (${e.pickedBy === 'vision' ? 'vision' : 'AI'}).`;
|
|
402
|
+
}
|
|
394
403
|
function printOutcomeTables(outcomes, dryRun) {
|
|
395
404
|
const applied = outcomes.filter((o) => o.applied);
|
|
396
405
|
const skipped = outcomes.filter((o) => !o.applied);
|
|
397
406
|
if (applied.length > 0) {
|
|
398
407
|
const needsReviewCount = applied.filter((o) => o.needsReview).length;
|
|
399
408
|
(0, console_style_1.section)(dryRun ? `Would fix (${applied.length}${needsReviewCount > 0 ? `, ${needsReviewCount} needing review` : ''})` : `Fixes (${applied.length}${needsReviewCount > 0 ? `, ${needsReviewCount} needing review` : ''})`);
|
|
400
|
-
|
|
401
|
-
(0, console_style_1.
|
|
402
|
-
(0, console_style_1.
|
|
403
|
-
(0, console_style_1.
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
+
applied.forEach((o, i) => {
|
|
410
|
+
console.log(`\n ${(0, console_style_1.bold)(`${i + 1}.`)} ${o.needsReview ? `${(0, console_style_1.yellow)('⚠')} ` : ''}${o.file}:${o.line}`);
|
|
411
|
+
console.log(` ${(0, console_style_1.dim)('Before')} ${o.before}`);
|
|
412
|
+
console.log(` ${(0, console_style_1.dim)('After ')} ${o.after}`);
|
|
413
|
+
if (o.identicalElements) {
|
|
414
|
+
console.log(` ${(0, console_style_1.yellow)('Identical')} ${describeIdentical(o.identicalElements)}`);
|
|
415
|
+
}
|
|
416
|
+
if (o.needsReview) {
|
|
417
|
+
console.log(` ${(0, console_style_1.yellow)('Review')} ${o.reviewNote ?? 'This selector was not confidently verified — please double-check it.'}`);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
409
420
|
}
|
|
410
421
|
if (skipped.length > 0) {
|
|
411
422
|
(0, console_style_1.section)(`Skipped (${skipped.length})`);
|
|
412
|
-
|
|
423
|
+
skipped.forEach((o, i) => {
|
|
424
|
+
console.log(`\n ${(0, console_style_1.bold)(`${i + 1}.`)} ${o.file}:${o.line}`);
|
|
425
|
+
console.log(` ${(0, console_style_1.dim)('Reason')} ${o.reason ?? ''}`);
|
|
426
|
+
});
|
|
413
427
|
}
|
|
414
428
|
return { applied, skipped };
|
|
415
429
|
}
|
|
430
|
+
const TEST_FILE_PATTERN = /\.(spec|test)\.[cm]?[jt]sx?$/;
|
|
431
|
+
// The consolidated view after the per-change list: which files change (page objects and helpers
|
|
432
|
+
// apart from test files) and which tests to re-run.
|
|
433
|
+
function printSummary(applied, affectedTests, dryRun) {
|
|
434
|
+
if (applied.length === 0) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
const fixesPerFile = new Map();
|
|
438
|
+
for (const o of applied) {
|
|
439
|
+
fixesPerFile.set(o.file, (fixesPerFile.get(o.file) ?? 0) + 1);
|
|
440
|
+
}
|
|
441
|
+
const files = [...fixesPerFile.keys()].sort();
|
|
442
|
+
const listFiles = (title, list) => {
|
|
443
|
+
if (list.length === 0) {
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
console.log(`\n ${(0, console_style_1.bold)(title)} (${list.length})`);
|
|
447
|
+
for (const f of list) {
|
|
448
|
+
const n = fixesPerFile.get(f) ?? 0;
|
|
449
|
+
console.log(` ${f} ${(0, console_style_1.dim)(`${n} fix${n === 1 ? '' : 'es'}`)}`);
|
|
450
|
+
}
|
|
451
|
+
};
|
|
452
|
+
(0, console_style_1.section)(dryRun ? 'Files that would change' : 'Files to change');
|
|
453
|
+
listFiles('Page objects and helpers', files.filter((f) => !TEST_FILE_PATTERN.test(f)));
|
|
454
|
+
listFiles('Test files', files.filter((f) => TEST_FILE_PATTERN.test(f)));
|
|
455
|
+
(0, console_style_1.section)('Tests to re-verify');
|
|
456
|
+
if (affectedTests.length === 0) {
|
|
457
|
+
console.log((0, console_style_1.dim)(' None recorded (older heals.jsonl entries, or test.info() was unavailable). Re-run the full suite to be safe.'));
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
for (const t of affectedTests) {
|
|
461
|
+
console.log(` ${t}`);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
416
465
|
// Writes the verification script, the JSON/Markdown reports, patches the source files, archives
|
|
417
466
|
// the raw heal-log entries, then clears the log — the actual "make it permanent" side effects.
|
|
418
467
|
// Pulled into its own function so both the confirmed-interactive path and the auto-proceed path
|
|
@@ -425,10 +474,9 @@ function writeFixes(outcomes, applied, skipped, fileContents, affectedTests, dry
|
|
|
425
474
|
const verifyScriptPath = dryRun ? undefined : writeVerificationScript(affectedTests, process.cwd());
|
|
426
475
|
const { markdownPath } = writeReports(outcomes, affectedTests, dryRun, process.cwd(), label, verifyScriptPath);
|
|
427
476
|
console.log(`\nReport written to ${path_1.default.relative(process.cwd(), markdownPath)} (and the matching .json).`);
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
: 'Tests to re-verify: (none recorded — pre-existing heals.jsonl entries or no test.info() available; re-run the full suite to be safe.)');
|
|
477
|
+
if (!dryRun) {
|
|
478
|
+
console.log(`Archived under .tamash-playwright/history/${label}.* — kept even after the next run.`);
|
|
479
|
+
}
|
|
432
480
|
if (verifyScriptPath) {
|
|
433
481
|
console.log(`Verification script: node ${verifyScriptPath} (runs the tests above with HEALER_ENABLED=false — a pass proves these fixes work standalone)`);
|
|
434
482
|
}
|
|
@@ -477,6 +525,7 @@ async function runApplyHeals(args = []) {
|
|
|
477
525
|
return;
|
|
478
526
|
}
|
|
479
527
|
const { applied, skipped } = printOutcomeTables(outcomes, dryRun);
|
|
528
|
+
printSummary(applied, affectedTests, dryRun);
|
|
480
529
|
// --dry-run never writes anything, in any environment — the table above (and the preview report
|
|
481
530
|
// writeFixes still generates) is the entire point of the flag, so there's nothing left to gate.
|
|
482
531
|
//
|
|
@@ -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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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { SelectorSuggestion } from './providers/types';
|
|
2
|
+
export type IdenticalElements = {
|
|
3
|
+
count: number;
|
|
4
|
+
index: number;
|
|
5
|
+
pickedBy: 'ai' | 'vision';
|
|
6
|
+
};
|
|
2
7
|
export type HealLogEntry = {
|
|
3
8
|
timestamp: string;
|
|
4
9
|
file: string;
|
|
@@ -13,6 +18,7 @@ export type HealLogEntry = {
|
|
|
13
18
|
initialSelector?: string;
|
|
14
19
|
needsReview?: boolean;
|
|
15
20
|
reviewNote?: string;
|
|
21
|
+
identicalElements?: IdenticalElements;
|
|
16
22
|
};
|
|
17
23
|
export declare function parseSourceLocation(sourceLocation: string): {
|
|
18
24
|
file: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heal-log.d.ts","sourceRoot":"","sources":["../../src/healer/heal-log.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"heal-log.d.ts","sourceRoot":"","sources":["../../src/healer/heal-log.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAA;CAAE,CAAC;AAO5F,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAOhC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAKpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAYF,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAYtG;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAUzF;AAmBD,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,YAAY,EAAE,CAEvE;AAOD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAe/D;AAQD,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,GAI1B,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,GAAG,aAAa,GAAG,YAAY,CAAC,GAAG;IAAE,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAAC,GAAG,SAAS,CAwBzH;AAOD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAc/E;AAOD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAc9G;AAED,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAM9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heal-log.js","sourceRoot":"","sources":["../../src/healer/heal-log.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;
|
|
1
|
+
{"version":3,"file":"heal-log.js","sourceRoot":"","sources":["../../src/healer/heal-log.ts"],"names":[],"mappings":"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"}
|
package/dist/healer/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Frame, FrameLocator, Locator, Page } from '@playwright/test';
|
|
2
2
|
import type { TokenUsage } from './providers/types';
|
|
3
|
+
import { type PageContext } from './vision';
|
|
4
|
+
import { type IdenticalElements } from './heal-log';
|
|
5
|
+
import { type AriaAiNode } from './durable-locator';
|
|
3
6
|
type BindingKind = 'locator' | 'page' | 'frame' | 'frameLocator';
|
|
4
7
|
export type HealAttempt = {
|
|
5
8
|
method: 'cache' | 'ref' | 'text' | 'vision' | 'action-recovery';
|
|
@@ -31,8 +34,19 @@ export type SelfHealingReport = {
|
|
|
31
34
|
initialSelector?: string;
|
|
32
35
|
needsReview?: boolean;
|
|
33
36
|
reviewNote?: string;
|
|
37
|
+
identicalElements?: IdenticalElements;
|
|
34
38
|
attempts: HealAttempt[];
|
|
35
39
|
};
|
|
40
|
+
export declare function resolvePersistedNearLocator(pageContext: PageContext, suggestion: {
|
|
41
|
+
anchorText: string;
|
|
42
|
+
role: string;
|
|
43
|
+
parentLevels: 1 | 2;
|
|
44
|
+
}): Promise<Locator | undefined>;
|
|
45
|
+
export declare function findIdenticalElements(pageContext: PageContext, anchorLocator: Locator, nodes: AriaAiNode[], candidateRefs: string[], pickedBy: 'ai' | 'vision', timeoutMs: number): Promise<{
|
|
46
|
+
identical: IdenticalElements;
|
|
47
|
+
role: string;
|
|
48
|
+
name: string;
|
|
49
|
+
} | undefined>;
|
|
36
50
|
export declare function getDurableLocator(locator: Locator, action?: string): Promise<Locator>;
|
|
37
51
|
export declare function isHealingEnabled(): boolean;
|
|
38
52
|
export declare function isActionRecoveryEnabled(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/healer/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAI3E,OAAO,KAAK,EAAkD,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/healer/index.ts"],"names":[],"mappings":"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"}
|