Praman — Agent-First SAP UI5 Test Automation Plugin - v1.2.0
    Preparing search index...

    Interface UI5Selector

    UI5 control selector — the primary type for control discovery.

    All selector fields are optional; at least one must be provided for a valid query. The ancestor and descendant fields are recursive for hierarchical matching.

    When searchOpenDialogs is true, the selector engine also searches controls rendered inside the UI5 static area (sap.ui.core.UIArea for open dialogs, popovers, and message boxes). This is essential for interacting with dialog controls, which exist outside the main view DOM hierarchy.

    import type { UI5Selector } from '#core/types/selectors.js';

    const selector: UI5Selector = {
    controlType: 'sap.m.Button',
    properties: { text: 'Save' },
    };
    import type { UI5Selector } from '#core/types/selectors.js';

    // Find a button inside an open confirmation dialog
    const dialogButton: UI5Selector = {
    controlType: 'sap.m.Button',
    properties: { text: 'OK' },
    searchOpenDialogs: true,
    };

    // Find an input field inside a value help dialog
    const valueHelpInput: UI5Selector = {
    controlType: 'sap.m.Input',
    searchOpenDialogs: true,
    ancestor: {
    controlType: 'sap.ui.comp.valuehelpdialog.ValueHelpDialog',
    },
    };
    interface UI5Selector {
        ancestor?: UI5Selector;
        bindingPath?: Readonly<Record<string, string>>;
        controlType?: string & {} | (keyof UI5ControlMap);
        descendant?: UI5Selector;
        i18NText?: Readonly<Record<string, string>>;
        id?: string | RegExp;
        interaction?: UI5Interaction;
        matchSubclasses?: boolean;
        properties?: Readonly<
            Record<string, string | number | boolean | RegExp | PropertyMatcher>,
        >;
        searchOpenDialogs?: boolean;
        viewId?: string;
        viewName?: string;
    }
    Index

    Properties

    ancestor?: UI5Selector

    Recursive ancestor selector — control must be inside a matching ancestor.

    bindingPath?: Readonly<Record<string, string>>

    OData binding path matchers for data-bound controls.

    controlType?: string & {} | (keyof UI5ControlMap)

    UI5 fully qualified control type, e.g., 'sap.m.Button'.

    descendant?: UI5Selector

    Recursive descendant selector — control must contain a matching descendant.

    i18NText?: Readonly<Record<string, string>>

    i18n text matchers (property name to expected translated value).

    id?: string | RegExp

    Control ID or RegExp pattern for ID matching.

    interaction?: UI5Interaction

    Sub-control interaction target (idSuffix, domChildWith).

    matchSubclasses?: boolean

    When true, matches controls that are subclasses of the specified controlType.

    // Matches sap.m.Button AND sap.m.ToggleButton (which extends Button)
    const selector: UI5Selector = {
    controlType: 'sap.m.Button',
    matchSubclasses: true,
    };
    properties?: Readonly<
        Record<string, string | number | boolean | RegExp | PropertyMatcher>,
    >

    Key-value property matchers evaluated against control.getProperty().

    searchOpenDialogs?: boolean

    When true, also searches controls inside open dialogs/popovers.

    viewId?: string

    Owning view ID for scoped discovery.

    viewName?: string

    Owning view name for scoped discovery.