Record Class LocatorCandidate

java.lang.Object
java.lang.Record
com.shaft.capture.model.LocatorCandidate
Record Components:
strategy - locator strategy
expression - sanitized locator expression
uniquenessCount - number of matching elements observed
visible - whether the target was visible
stable - whether the evidence appeared stable
signals - additional deterministic scoring signals
replayXpath - literal XPath the in-page recorder computed and self-verified for this candidate (issue #4026), or blank when none was computed. When present, it is the exact string the engine resolves at replay -- record and replay share one artifact instead of independently deriving the same locator twice.
roleXpathVerified - whether the recorder self-verified that SHAFT.GUI.Locator.hasRole(...)'s EXACT fixed per-role XPath union (issue #4239 P1.0a/ladder) resolves uniquely to this element in the live DOM. Only meaningful for LocatorCandidate.LocatorStrategy.ROLE candidates: uniquenessCount on a ROLE candidate is derived by re-deriving inferredRole across the page, which can disagree with what the fixed XPath union hasRole(...) actually ships (e.g. a <div role="button"> truthfully has uniquenessCount == 1 yet matches zero elements via hasRole(Role.BUTTON)'s tag-shape union) -- this is the only signal that tells the two apart, so codegen's rung-1 emission gate must check it explicitly.

public record LocatorCandidate(LocatorCandidate.LocatorStrategy strategy, String expression, int uniquenessCount, boolean visible, boolean stable, Set<LocatorCandidate.LocatorSignal> signals, String replayXpath, boolean roleXpathVerified) extends Record
Locator evidence retained for deterministic ranking and review.
  • Field Details

    • BEST_FIRST

      public static final Comparator<LocatorCandidate> BEST_FIRST
      Stable best-first ordering for candidate review and replay.
  • Constructor Details

    • LocatorCandidate

      public LocatorCandidate(LocatorCandidate.LocatorStrategy strategy, String expression, int uniquenessCount, boolean visible, boolean stable, Set<LocatorCandidate.LocatorSignal> signals)
      Creates immutable locator evidence with no recorded replayXpath and roleXpathVerified defaulted to false (additive backward-compatible overload; existing 6-arg call sites keep compiling unchanged).
      Parameters:
      strategy - locator strategy
      expression - raw locator expression
      uniquenessCount - number of matching elements observed
      visible - whether the target was visible
      stable - whether the evidence appeared stable
      signals - additional deterministic scoring signals
    • LocatorCandidate

      public LocatorCandidate(LocatorCandidate.LocatorStrategy strategy, String expression, int uniquenessCount, boolean visible, boolean stable, Set<LocatorCandidate.LocatorSignal> signals, String replayXpath)
      Creates immutable locator evidence with roleXpathVerified defaulted to false (additive backward-compatible overload; existing 7-arg call sites keep compiling unchanged).
      Parameters:
      strategy - locator strategy
      expression - raw locator expression
      uniquenessCount - number of matching elements observed
      visible - whether the target was visible
      stable - whether the evidence appeared stable
      signals - additional deterministic scoring signals
      replayXpath - self-verified replay XPath, or blank when none was computed
    • LocatorCandidate

      public LocatorCandidate(LocatorCandidate.LocatorStrategy strategy, String expression, int uniquenessCount, boolean visible, boolean stable, Set<LocatorCandidate.LocatorSignal> signals, String replayXpath, boolean roleXpathVerified)
      Creates immutable locator evidence.
  • Method Details

    • score

      public int score()
      Computes a deterministic score without model inference.
      Returns:
      candidate score
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with the compare method from their corresponding wrapper classes.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • strategy

      Returns the value of the strategy record component.
      Returns:
      the value of the strategy record component
    • expression

      public String expression()
      Returns the value of the expression record component.
      Returns:
      the value of the expression record component
    • uniquenessCount

      public int uniquenessCount()
      Returns the value of the uniquenessCount record component.
      Returns:
      the value of the uniquenessCount record component
    • visible

      public boolean visible()
      Returns the value of the visible record component.
      Returns:
      the value of the visible record component
    • stable

      public boolean stable()
      Returns the value of the stable record component.
      Returns:
      the value of the stable record component
    • signals

      Returns the value of the signals record component.
      Returns:
      the value of the signals record component
    • replayXpath

      public String replayXpath()
      Returns the value of the replayXpath record component.
      Returns:
      the value of the replayXpath record component
    • roleXpathVerified

      public boolean roleXpathVerified()
      Returns the value of the roleXpathVerified record component.
      Returns:
      the value of the roleXpathVerified record component