extractSmartSelectors function exported

Last updated: 2026-03-05T12:26:14.062Z

Metrics

LOC: 29 Complexity: 5 Params: 1

Signature

extractSmartSelectors(el: Element): : SmartSelector[]

Summary

Extracts smart selectors for an element, ordered by priority. Returns at least one selector (CSS fallback is always present).

Source Code

export function extractSmartSelectors(el: Element): SmartSelector[] {
  const strategies: Array<(el: Element) => SmartSelector | null> = [
    tryDataTestId,
    tryAriaLabel,
    tryRole,
    tryName,
    tryId,
    tryClasses,
    tryPlaceholder,
  ];

  const selectors: SmartSelector[] = [];
  const seen = new Set<string>();

  for (const strategy of strategies) {
    const result = strategy(el);
    if (result && !seen.has(result.value)) {
      seen.add(result.value);
      selectors.push(result);
    }
  }

  const fallback = buildFallbackCSS(el);
  if (!seen.has(fallback.value)) {
    selectors.push(fallback);
  }

  return selectors;
}

Dependencies (Outgoing)

graph LR extractSmartSelectors["extractSmartSelectors"] buildFallbackCSS["buildFallbackCSS"] extractSmartSelectors -->|calls| buildFallbackCSS style extractSmartSelectors fill:#dbeafe,stroke:#2563eb,stroke-width:2px click extractSmartSelectors "6f96c46b2e3fc740.html" click buildFallbackCSS "9e270d9c7136a3da.html"
TargetType
buildFallbackCSS calls

Impact (Incoming)

graph LR extractSmartSelectors["extractSmartSelectors"] resolveActionType["resolveActionType"] buildCapturedActions["buildCapturedActions"] detectSubmitActions["detectSubmitActions"] StepCallback["StepCallback"] safeExtractSelectors["safeExtractSelectors"] createElement["createElement"] resolveActionType -->|uses| extractSmartSelectors buildCapturedActions -->|calls| extractSmartSelectors detectSubmitActions -->|calls| extractSmartSelectors StepCallback -->|uses| extractSmartSelectors safeExtractSelectors -->|calls| extractSmartSelectors createElement -->|uses| extractSmartSelectors style extractSmartSelectors fill:#dbeafe,stroke:#2563eb,stroke-width:2px click extractSmartSelectors "6f96c46b2e3fc740.html" click resolveActionType "9f60cb4a9139571d.html" click buildCapturedActions "f658aa776f85c9b9.html" click detectSubmitActions "b33db39bc3e0f928.html" click StepCallback "8f74ebbf77923c0f.html" click safeExtractSelectors "e81dd9e32ca3b96e.html" click createElement "de25c17a3a1487d3.html"