Exemplo n.º 1
0
                ariaUtilsArray.forEach(tabs, function (tab, index) {
                    // --------------------------------------- early termination

                    if (tab.disabled) {
                        return;
                    }

                    // ---------------------------------------------- processing

                    add('_focusElementBefore', group.id);

                    if (group.tabsUnder) {
                        add('_navigateForward');
                        add('_navigateForward');
                    }

                    ariaUtilsArray.forEach(tabs.slice(0, index + 1), function (tab) {
                        if (!tab.disabled) {
                            add('_navigateForward');
                        }
                    });


                    var selectionMethod = index === 0 ? '_pressEnter' : '_pressSpace';
                    add(selectionMethod);

                    var predicate = this._createTabSelectedPredicate(group, tab);
                    add(predicate.waitForTrue);

                    if (tab.waiAria) {
                        add('_checkWidgetIsFocused', tabPanelId);
                        // Specifications often change (2016-07-22T16:54:42+02:00), what should precisely be focused might change
                        // add('_checkElementIsFocused', 'inside_' + tabPanelId);
                    }
                }, this);
Exemplo n.º 2
0
ScenarioAPI.prototype.createAndStoreSpecialKeyFunction = function (spec) {
    // ---------------------------------------------- input arguments processing

    if (!ariaUtilsType.isObject(spec)) {
        spec = {key: spec};
    }

    var key = spec.key;
    key = '' + key;

    var name = spec.name;
    if (name == null) {
        name = key;
    }
    name = '' + name;

    var aliases = spec.aliases;
    if (aliases == null) {
        aliases = [];
    }

    // -------------------------------------------------------------- processing

    var method = this.createSpecialKeyFunction(key);

    var names = [name].concat(aliases);
    ariaUtilsArray.forEach(names, function(name) {
        this[name] = method;
    }, this);

    // ------------------------------------------------------------------ return

    return method;
};
Exemplo n.º 3
0
            function turnWaiAriaOn() {
                this._waiAria = true;

                var widgets = this._getData().widgets;
                ariaUtilsArray.forEach(ids, function (id) {
                    widgets[id].configuration.waiAria = true;
                });
            }
Exemplo n.º 4
0
function autoBindAndAlias(container, spec) {
    var method = ariaUtilsFunction.bind(container[spec.name], container);

    ariaUtilsArray.forEach(spec.aliases, function(alias) {
        container[alias] = method;
    });

    return method;
}
Exemplo n.º 5
0
            function checkTabs(add) {
                ariaUtilsArray.forEach(tabs, function (tab) {
                    if (tab.disabled) {
                        return;
                    }

                    add('_pressTab');
                    add('_checkWidgetIsFocused', tab.tabId);
                });
            }
Exemplo n.º 6
0
function ScenarioAPI() {
    // -------------------------------------------------------------------------

    this.history = [];
    this.steps = [];
    this.defaultDelay = 1000;

    // -------------------------------------------------------------------------

    ariaUtilsArray.forEach([
        {name: 'addStep', aliases: ['step']},
        {name: 'addToHistory', aliases: ['entry', 'says']},
        {name: 'addDelay', aliases: ['delay']},
        {name: 'pressKey', aliases: ['key']},
        {name: 'pressSpecialKey', aliases: ['specialKey']},
        {name: 'clickLeft', aliases: ['leftClick', 'click']}
    ], function (spec) {
        autoBindAndAlias(this, spec);
    }, this);

    // -------------------------------------------------------------------------

    ariaUtilsArray.forEach([
        'down',
        'up',
        'right',
        'left',
        {key: 'tab', aliases: ['tabulation']},
        {key: 'escape', aliases: ['esc']},
        'enter',
        'space',
        {key: 'backspace', aliases: ['back']}
    ], function (spec) {
        this.createAndStoreSpecialKeyFunction(spec);
    }, this);
}
Exemplo n.º 7
0
            this._executeStepsAndWriteHistory(callback, function (api) {
                // ----------------------------------------------- destructuring

                var step = api.step;
                var says = api.says;
                var specialKey = api.specialKey;

                // --------------------------------------------- local functions

                function selectStartPoint() {
                    step(['click', document.getElementById(elements.before.id)]);
                }

                // function isFinalElementFocused() {
                //     return document.activeElement === finalElement;
                // }

                // -------------------------------------------------- processing

                // TODO It would be more robust to stop navigating when reaching the final element
                // However this prevents us from building a predefined set of steps
                // while (!isFinalElementFocused()) {
                    // navigateForward();
                // }
                ariaUtilsArray.forEach(traversals, function(traversal) {
                    var key = traversal.key;
                    var name = traversal.name;

                    var traversalTestData = testData[traversal.name];
                    var actionsCount = traversalTestData.actionsCount;
                    var expectedOutput = traversalTestData.expectedOutput;

                    selectStartPoint();
                    ariaUtilsAlgo.times(actionsCount, ariaUtilsFunction.bind(specialKey, null, key));
                    says(expectedOutput.join('\n'));
                });
            });
Exemplo n.º 8
0
    $constructor : function () {
        // ------------------------------------------------------ initialization

        this.$EnhancedRobotBase.constructor.call(this);

        // ------------------------------------------------- internal attributes

        this._waiAria = null;

        // ---------------------------------------------------------- processing

        var disposableObjects = this._disposableObjects;

        function createResourcesHandler(cls) {
            var handler = new cls();
            var suggestions = [
                {label: 'zero', code: '0'},
                {label: 'one', code: '1'}
            ];

            handler.setSuggestions(suggestions);
            disposableObjects.push(handler);

            return handler;
        }

        function createSelectOptions() {
            return [
                {value: '0', label: '0'},
                {value: '1', label: '1'}
            ];
        }

        var widgetsIds = [
            'autoComplete',
            'expandableAutoComplete',

            'multiAutoComplete',
            'expandableMultiAutoComplete',

            'datePicker',

            'multiSelect',
            'select',
            'selectBox'
        ];

        var widgets = {
            autoComplete: {
                configuration: {
                    id: 'autoComplete',
                    label: 'AutoComplete: ',
                    expandButton: false,
                    resourcesHandler: createResourcesHandler(ariaResourcesHandlersLCResourcesHandler)
                },
                expectations: {
                    canBeOpened: false
                }
            },

            expandableAutoComplete: {
                configuration: {
                    id: 'expandableAutoComplete',
                    label: 'Expandable AutoComplete: ',
                    resourcesHandler: createResourcesHandler(ariaResourcesHandlersLCResourcesHandler),
                    expandButton: true
                }
            },



            multiAutoComplete: {
                configuration: {
                    id: 'multiAutoComplete',
                    label: 'MultiAutoComplete: ',
                    expandButton: false,
                    resourcesHandler: createResourcesHandler(ariaResourcesHandlersLCRangeResourceHandler)
                },
                expectations: {
                    canBeOpened: false
                }
            },

            expandableMultiAutoComplete: {
                configuration: {
                    id: 'expandableMultiAutoComplete',
                    label: 'Expandable MultiAutoComplete: ',
                    expandButton: true,
                    resourcesHandler: createResourcesHandler(ariaResourcesHandlersLCRangeResourceHandler)
                }
            },



            datePicker: {
                configuration: {
                    id: 'datePicker',
                    label: 'DatePicker: '
                }
            },



            multiSelect: {
                configuration: {
                    id: 'multiSelect',
                    label: 'MultiSelect: ',

                    fieldDisplay: 'label',
                    fieldSeparator: '/',
                    displayOptions: {},

                    items: createSelectOptions()
                }
            },

            select: {
                configuration: {
                    id: 'select',
                    label: 'Select: ',
                    options: createSelectOptions()
                },
                expectations: {
                    canBeOpenedOnDownArrow: false
                }
            },

            selectBox: {
                configuration: {
                    id: 'selectBox',
                    label: 'SelectBox: ',
                    options: createSelectOptions()
                }
            }
        };

        ariaUtilsArray.forEach(widgetsIds, function (id) {
            var widget = widgets[id];

            var expectations = widget.expectations;
            if (expectations == null) {
                expectations = {};
            }
            widget.expectations = expectations;

            var canBeOpened = expectations.canBeOpened;
            if (canBeOpened == null) {
                canBeOpened = true;
            }
            expectations.canBeOpened = canBeOpened;

            var canBeOpenedOnDownArrow = expectations.canBeOpenedOnDownArrow;
            if (canBeOpenedOnDownArrow == null) {
                canBeOpenedOnDownArrow = true;
            }
            expectations.canBeOpenedOnDownArrow = canBeOpenedOnDownArrow;
        });

        var data = {
            widgetsIds: widgetsIds,

            widgets: widgets
        };

        this.setTestEnv({
            data: data,
            template: 'test.aria.widgets.wai.dropdown.Tpl'
        });
    },