Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4cca926
Locators self-healing
VladimirPodolian Apr 28, 2026
209010e
refactor(self-healing): replace SQLite storage with pluggable JSON-fi…
VladimirPodolian May 22, 2026
9790cde
refactor(self-healing): split is_available/is_displayed into internal…
VladimirPodolian May 22, 2026
7732fc3
Separate param for self healing config & simplify
VladimirPodolian Jun 9, 2026
ce60de9
Snapshot & locator_key normalisation
VladimirPodolian Jun 11, 2026
59c6e52
Full locator_key extraction added
VladimirPodolian Jun 15, 2026
0a85c76
Healer callback on result added
VladimirPodolian Jun 17, 2026
c6f7c17
Ruff fixes / proper logging & result / weights customisation
VladimirPodolian Jun 17, 2026
854023f
refactor(self-healing): iterate through multiple locator candidates o…
VladimirPodolian Jun 18, 2026
9433879
Change locators healing logic
VladimirPodolian Jun 25, 2026
342215d
healing_after_wait moved
VladimirPodolian Jun 26, 2026
a4e179d
Fix issue with healing polling on parent element
VladimirPodolian Jun 29, 2026
1cbe74b
Move to dedicated enabling healing process
VladimirPodolian Jun 29, 2026
653b99e
Remove unexpected healing after wait_hidden_without_error
VladimirPodolian Jun 30, 2026
bb59057
PW support
VladimirPodolian Jul 2, 2026
9e93d65
no_healing decorator added
VladimirPodolian Jul 2, 2026
82c1df3
Fix on_healing_success logic
VladimirPodolian Jul 3, 2026
e90f658
PW fixes / redundant methods removed
VladimirPodolian Jul 9, 2026
9fac804
Merge remote-tracking branch 'origin/master' into locators-self-healing
VladimirPodolian Jul 9, 2026
1b108f8
Version bump / docs / changelog
VladimirPodolian Jul 14, 2026
d2d4ee0
Python 3.14 test fix
VladimirPodolian Jul 14, 2026
9a89982
Versio fix
VladimirPodolian Jul 14, 2026
544ad4d
Changelog fix
VladimirPodolian Jul 14, 2026
e233ebc
Changelog update
VladimirPodolian Jul 14, 2026
f383381
Merge branch "origin/master" into "locators-self-healing"
VladimirPodolian Jul 25, 2026
8f3e53b
Extend self-healing result data
VladimirPodolian Jul 31, 2026
a035410
Candidate attributes breakdown / snapshot added to result
VladimirPodolian Aug 3, 2026
6c53e61
fix(self-healing): normalize DOM candidates before similarity scoring
VladimirPodolian Aug 7, 2026
32cc23c
Fix default attributes & parent / siblings score reduce on absence
VladimirPodolian Aug 10, 2026
a85f56c
Fix missed results & locators generating over phantom attrs
VladimirPodolian Aug 10, 2026
3326577
Add base element healing while sub-element healing
VladimirPodolian Aug 11, 2026
fb77f9c
Original locator recheck before healing attempt
VladimirPodolian Aug 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,5 @@ tests/adata/visual/reference/reference_with_rerun.png

# AI
.claude

# Self-healing snapshots
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,38 @@ types are active, preventing cross-driver method overwrites on shared Element/Pa

---

## v4.0.0rc1

*Release date: 2026-07-14*

### Added
- **Self-healing locators** — automatic recovery of broken element locators at runtime
- `mops/self_healing/` package with config, healer, locator generator, and snapshot storage
- `@healing` decorator — applied to action methods (`click`, `type_text`, `get_attribute`, `text`, etc.),
catches `NoSuchElementException`, heals the locator via similarity scoring, and retries the method
- `@healing_after_wait` decorator — applied to `wait_visibility` and `wait_availability`;
triggers healing after the wait condition times out
- `@no_healing` decorator — temporarily disables healing for specific methods (`is_displayed`, `wait_hidden`)
- `SelfHealingConfig` with `configure()` / `get_config()` for global configuration
- Snapshot capture on successful element lookup (tag, attributes, text, parent, up to 5 siblings)
- Candidate search — JS script collects all same-tag elements, scores each against the saved snapshot
- Similarity scoring with tunable per-attribute weights (`ScoringWeights`)
- Locator generation pipeline
- `SnapshotStorage` ABC for pluggable backends (Redis, S3, PostgreSQL, etc.)
- `JsonFileSnapshotStorage` — default JSON file-based backend
- Snapshot normalization rules to strip dynamic data (CSS hashes, state classes, etc.)
- Callbacks: `on_healing_success` / `on_healing_failure` for external integrations (metrics, alerting)
- Full documentation in `docs/source/other/self_healing.md`

### Changed
- Selenium & Playwright action methods now decorated with `@healing` for transparent self-healing
- `wait_visibility` refactored into `_wait_visibility_base` to properly stack `@healing_after_wait` with `@wait_condition` / `@wait_continuous`
- `wait_availability` decorated with `@healing_after_wait` for wait-timeout healing
- Playwright element methods (`click`, `type_text`, `type_slowly`, `clear_text`, `hover`) now convert `playwright.Error` to `NoSuchElementException` for consistent healing trigger
- `wait_visibility_without_error` — corrected log message from "hidden" to "visible" for non-continuous mode

---

### v3.5.2

#### Added
Expand Down
Loading
Loading