import { byDataTestId } from './byDataTestId'; import { CssLocator, CssLocatorInitializer } from './CssLocator'; import { LocatorComplexity } from './LocatorComplexity'; import type { LocatorRelativePosition } from './LocatorRelativePosition'; import { PartLocator } from './PartLocator'; export type LinkedCssLocatorValueExtractType = 'text' | 'attribute'; export interface LinkedCssLocatorAttributeValueExtract { type: 'attribute'; attributeName: string; } export type LinkedCssLocatorValueExtract = LinkedCssLocatorAttributeValueExtract; export type LinkedCssLocatorSource = { _id: 'byLinkedCssLocatorSource'; relative: LocatorRelativePosition; valueExtract: LinkedCssLocatorValueExtract; matchingTargetLocator: PartLocator; matchingTargetValueExtract: LinkedCssLocatorValueExtract; }; export interface LinkedCssLocatorInitializer { valueExtract: LinkedCssLocatorValueExtract; matchingTargetLocator: PartLocator; matchingTargetValueExtract: LinkedCssLocatorValueExtract; } /** * A {@link CssLocator} whose match must also satisfy a value comparison against * a second, independently-located target element — e.g. an `