Commit c4650e9
feat(driver): candidate-ranking extension seam for the wildcard resolver
__kjs.setResolveRanker(fn) registers a ranker consulted by __kjs.resolve:
it receives the full matched-candidate list (same predicate as the default
path — visible, leaf-text match, DOM order) plus the resolve context, and
returns the ranked list; index selection then applies to that list. The
ranker may reorder matches or add candidates the default visible-only
filter excluded (e.g. a hidden element the caller knows how to reveal).
Behavior-compatible by default: with no ranker registered the resolver
keeps its exact short-circuit path; an identity ranker reproduces default
behavior; a throwing or non-array-returning ranker is ignored for that
resolution and logged.
Motivation: a downstream runtime that knows an open menu item should beat
an ambient same-text label (a text tie where DOM order shifts between
record and replay) previously had to monkeypatch __kjs.resolve wholesale.
The seam replaces that with a registered ranker the resolver owns, and is
the extension point richer candidate ranking (hidden-with-reveal-plan,
actionable-over-ambient, self-healing) can plug into without ever
clobbering the resolver.
Co-Authored-By: Claude <noreply@anthropic.com>1 parent 52849ca commit c4650e9
2 files changed
Lines changed: 135 additions & 0 deletions
File tree
- karate-core/src
- main/resources/io/karatelabs/driver
- test/java/io/karatelabs/driver/e2e
Lines changed: 63 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
307 | 307 | | |
308 | 308 | | |
309 | 309 | | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
310 | 330 | | |
311 | 331 | | |
312 | 332 | | |
313 | 333 | | |
314 | 334 | | |
315 | 335 | | |
316 | 336 | | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
317 | 340 | | |
318 | 341 | | |
319 | 342 | | |
| |||
337 | 360 | | |
338 | 361 | | |
339 | 362 | | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
340 | 403 | | |
341 | 404 | | |
342 | 405 | | |
| |||
Lines changed: 72 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
495 | 495 | | |
496 | 496 | | |
497 | 497 | | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
498 | 570 | | |
0 commit comments