click.js

import {Action} from './action';
import {ActionUtil} from './action-util';
import {WaitCondition} from './wait-condition';

/**
 * Utility method to work with clicking.
 */
export class Click {
    /**
     *  Click on the element and expects that affected element to be displayed
     *
     * @param clickSelector
     * @param displayedSelector
     */
    static async andExpectDisplayed(clickSelector, displayedSelector) {
        const action = async () => await Action.click(clickSelector);
        const condition = async () => await WaitCondition.displayed(displayedSelector);
        await ActionUtil.repeatAction(action, condition);
    }

    /**
     *  Click on the element and expects that affected element to be not displayed
     *
     * @param clickSelector
     * @param displayedSelector
     */
    static async andExpectNotDisplayed(clickSelector, displayedSelector) {
        const action = async () => await Action.click(clickSelector);
        const condition = async () => await WaitCondition.notDisplayed(displayedSelector);
        await ActionUtil.repeatAction(action, condition);
    }
}