Tomas Brekke
Locators, the healer, and a long-running argument against XPath.
SDODS team (illustrative)
Example threads. These questions and answers were written by the SDODS team to document real problems and how to fix them. The people named are illustrative, not real users. Questions asked on this site are marked new.
Asked (0)
Nothing yet.
Answered (48)
Example threads. These questions and answers were written by the SDODS team to document real problems and how to fix them. The people named are illustrative, not real users. Questions asked on this site are marked new.
How do you test a node-graph editor — blocks, edges and connection handles?
Half our product is a workflow builder: a canvas with about 190 block types, edges between them, and connection handles on each node. None of it is text or roles — the nodes…
asked by Nadia Belkacemheal_events, heal_locator_stats and sdods heal report — which do I use for what?
Building a small internal dashboard on top of the MCP server. There appear to be three ways to get at healing data and I cannot tell from the tool descriptions where the…
asked by Zeynep ArslanOAuth consent opens a popup and my steps keep talking to the first tab
Clicking "Connect account" opens the provider's consent screen in a new tab. Everything after that in my scenario runs against the original tab, which is still sitting on the…
asked by Vikram RajagopalNo step for downloads — how do I assert that an export produced a real CSV?
We have about a dozen export buttons. The most I can assert from a feature file today is that a toast appeared, which passed happily for two weeks while the export was returning…
asked by Karine MoreauHow do I fill a Stripe Elements card field from a feature file?
Checkout uses Elements, so the card number is inside an iframe. The obvious step does not find it: Which is fair enough — it is not in the main frame. I cannot find a frame step…
asked by Owen Brackleynet::ERR_ABORTED on an authenticated route is our single biggest source of failures
Top error signature in a clean single-worker run, by a wide margin: 55 of the 192 failures I captured, plus a big pile of click timeouts that I am fairly sure are downstream of…
asked by Elsa Nymanstrategy: sso gives me no session and no error — every scenario lands on /login
We are behind an identity provider, so: Every @ui scenario now fails, but not with an auth error — with a pile of locator timeouts, because the page is /login and none of the…
asked by Fiona McAllisterprobeTimeoutMs of 1500 is too short on our staging box — every candidate scores 0
Locally everything heals. On staging the same locators fail with HEAL_FAILED and every candidate in the hint reads 0.00, including ones I know match, because I can open the page…
asked by Rasha Halabianalyze gave me modules called deploy, execute and status instead of workflows
Thirty modules on the proposal and twelve of them are verbs: status, delete, export, send, run, update, upload, download, stats, validate, versions, introspect. They are all…
asked by Tanvi Bhattanalyze stopped at 8000 files and most of them were gitignored worktrees
sdods analyze . on our monorepo finishes but the checklist has scan-truncated on it, and the report is nonsense: no CI provider, two modules, no test-id attribute. We have 48…
asked by Bea LindqvistCan I turn healing off for one scenario without touching the whole project?
We have one scenario whose entire job is to assert that the design system has not moved the primary action button. Healing makes it unfalsifiable — it heals to the role and…
asked by Bea LindqvistWhat does --write-history actually change about future heals?
The docs say it biases future heals towards strategies that worked. Before I put it in the nightly I would like to know how much bias, and whether running it is reversible.
asked by Rasha HalabiCart got redesigned — re-record the flow from scratch, or patch the old spec?
The cart page was redesigned. Same flow, different markup. We have checkout.spec.ts from March and a feature that came out of it back then. Do I re-record from scratch or patch…
asked by Rasha HalabiSame locator healed five times and I still have no page-object proposal
The docs say three identical successful heals of the same locator produce a page-object patch proposal. Ours has healed five times across four nightly runs, same description,…
asked by Koen VermeulenIs XPath actually forbidden in a page object, or only discouraged?
Reviewer left "never XPath" on my proposal. The locator strategy page says CSS or XPath as a last resort inside a page object with a heal context, which reads like "allowed but…
Our nth-child selectors break every sprint and healing never rescues them
Inherited suite, roughly two hundred locators in this shape: Every time the results list gains a badge or a promo row, a chunk of them break, and they break with HEAL_FAILED…
asked by Tanvi BhattIs a healing failure a SdodsHealError or a SdodsError? The docs disagree with the output
We catch SDODS errors in a small wrapper to add our own reporting. The self-healing guide's resolution diagram ends at a node labelled SdodsHealError, so I wrote: which never…
asked by Sergio AlcarazThe healer proposed a CSS locator when there is a perfectly good label — reject it?
Scenario broke, ran the healer, got a proposal. The patch swaps a page-object locator for a class chain: The input has a visible label reading "Promo code". So there is an…
asked by Anouk de VriesHEAL_FAILED: nothing scored above 0.6 and testId probed at 0.00
The context is: What I cannot work out is testid=0.00. It is the same test id the primary uses, so of course it found nothing — but then why probe it at all? And where does 0.42…
asked by Anouk de VriesWhat should minScore be? 0.6 feels arbitrary
I understand what the number does. I do not understand what I would gain or lose by moving it. Has anyone actually tuned this, and in which direction?
asked by Bruno TeixeiraDo you commit baseline PNGs into the repo, or is this what git-lfs is for?
We are about to turn @visual on for real — currently one scenario, about to be fifteen, on two browsers, and eventually two platforms once CI has its own baselines. Before I…
asked by Fiona McAllisterWhat should I actually look at in a proposal before running sdods proposals accept?
First week of using the generator role. sdods proposals show <id> gives me a diff and a manifest and I am reading it the way I read any PR, which I suspect is the wrong instinct…
asked by Bea LindqvistWe renamed one button and 40 scenarios healed in the same run — now what?
Design renamed "Continue" to "Next" on the checkout stepper. Nothing failed. The nightly regression run is green and carries forty-one heal events, all with the same description,…
sdods heal report says No run found. but the suite ran two minutes ago
Exit code 2. The run directory is there and full of files — I can open heal.jsonl inside it.
asked by Nikhil SaneRecorded spec is all .btn_primary and nth-child — fix the locators before or after converting?
Recorded a checkout. The spec is mostly this: Each of those came back with a // sdods:fragile comment above it, and the CLI finished with I would rather not convert this into a…
More (23)
- What do the columns of sdods heal report actually mean?2 answers✓
- Is it safe to leave self-healing enabled in CI, or is that cheating?2 answers✓
- testIdAttribute is data-test, so why does the heal suggestion say getByTestId?2 answers✓
- Diff flaps between clean and 2% on a page with a fade-in, but animations are disabled2 answers
- Which key names does the secret check actually match? tokenUrl is fine but standardPassword is not3 answers✓
- First UI run: five scenarios fail on the sign-in page, but the API layer was green4 answers✓
- How deep should page objects nest? We are four levels in and it hurts3 answers✓
- Suite went from six minutes to nineteen after we enabled healing3 answers✓
- Can I put an XPath in the css fallback list of a heal context?2 answers✓
- Should I commit the suggested locator from a heal log, or go and find out why?2 answers
- @visual is green locally and reported flaky on CI — attempt 1 fails, attempt 2 passes3 answers✓
- Added one mask selector in the env file and the other three disappeared3 answers✓
- A header widget appears on six pages — one page object per page, or something else?3 answers✓
- Why does healing never kick in for expectHidden()?3 answers✓
- I do not want healing to rescue a broken locator — I want the test to fail4 answers✓
- What is the least painful way to hand a trace to a developer?2 answers✓
- First @visual run fails with "A snapshot doesn't exist" and then passes. Bug?2 answers✓
- When should a step go in the shared library instead of my project's steps folder?2 answers
- Project yaml, env yaml, .env, an exported variable and a flag all set the same thing — which one wins?4 answers✓
- Healing does nothing — I just get the normal Playwright timeout2 answers✓
- Coming from Selenium PageFactory — what replaces @FindBy and initElements?3 answers✓
- sdods lint: "Scenario must carry exactly one layer tag" on every scenario I have2 answers✓
- Where is a page object supposed to live? Mine is never picked up2 answers✓