You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(robot): add Selenium vs Playwright comparison PoC
Add the public Robot Framework comparison PoC artifacts:
- API v66 Selenium locator refresh (`locators_66.py`) and focused tests
- 10 Playwright keyword ports plus an E2E comparison suite
- ADR 0004 recommending a time-bounded Playwright migration
- Reproducible Selenium 4 shadow-DOM evidence under docs/adrs/0004-evidence
Internal docs/superpowers artifacts are intentionally excluded from this
branch history.
1.**Selenium 3 cannot reach the element.** Confirmed: 0 matches via XPath or CSS in the light DOM.
29
+
2.**Selenium 4 can technically reach it,** because the outermost shadow host is in light DOM. But it requires manual chaining through 6 boundaries with internal LWC component names (`lst-*`).
30
+
3.**The host chain contains LWC-internal names.** Names like `lst-list-view-manager-settings-menu` are SLDS implementation details and likely to be renamed across API versions. Each rename = locator break in the same way Aura `force_*` classes break today.
31
+
4.**Playwright auto-pierces shadow DOM** at any depth, using accessibility-tree selectors that map to the public ARIA contract — meaningfully more stable than internal LWC component names.
32
+
33
+
## Cost ratio for shadow-DOM-bound elements
34
+
35
+
| Path | Statements per element | Stability of selectors | Per-version maintenance |
For this single measured element, the Selenium 4 path is ~14× more verbose than the Playwright path. The 452 shadow-host count above describes how heavily Lightning is LWC-componentized on this page; it is a count of shadow hosts, not of unreachable elements. Other shadow-DOM-bound elements in the test suite may be 1–2 hops shallow or 6+ hops deep — we did not measure the distribution.
42
+
43
+
## Reproducibility
44
+
45
+
```bash
46
+
# In a clean tmpdir
47
+
uv venv .venv --python 3.13
48
+
uv pip install --python ./.venv 'selenium>=4'
49
+
./.venv/bin/python verify_shadow_dom.py
50
+
./.venv/bin/python measure_nesting.py
51
+
```
52
+
53
+
Requires `sf` CLI authenticated against an org alias and the script edited to point at it.
0 commit comments