wix-style-react
Version:
wix-style-react
75 lines • 2.63 kB
JavaScript
import { baseUniDriverFactory } from '../test-utils/utils/unidriver';
export const popoverUniDriverFactory = (base, body) => {
const byHook = (hook) => base.$(`[data-hook="${hook}"]`);
const queryDocumentOrElement = async (query) => {
const elm = base.$$(query).get(0);
if (await elm.exists()) {
return elm;
}
return body.$(query);
};
const getContentElement = async () => {
const contentHook = await base.attr('data-content-hook');
const contentSelector = `[data-content-element="${contentHook}"]`;
return queryDocumentOrElement(contentSelector);
};
return {
...baseUniDriverFactory(base),
/**
* Clicks on the target element
* @returns {Promise<void>}
*/
click: async () => byHook('popover-element').click(),
/**
* Gets the target element
* @returns {Promise<any>}
*/
getTargetElement: async () => byHook('popover-element').getNative(),
/**
* Checks whether target element exists
* @returns {Promise<boolean>}
*/
isTargetElementExists: async () => byHook('popover-element').exists(),
/**
* Gets the portal element
* @returns {Promise<any>}
*/
getPortalElement: async () => byHook('popover-portal').getNative(),
/**
* Gets the content element
* @returns {Promise<any>}
*/
getContentElement: async () => (await getContentElement()).getNative(),
/**
* Checks whether content element exists
* @returns {Promise<boolean>}
*/
isContentElementExists: async () => (await getContentElement()).exists(),
/**
* Triggers a mouseEnter event
* @returns {Promise<void>}
*/
mouseEnter: () => base.hover(),
/**
* Triggers a mouseLeave event
* @returns {Promise<void>}
*/
mouseLeave: async () => base.mouse.leave(),
/**
* Clicks outside the target element (triggers mouseDown and mouseUp events)
* @returns {Promise<void>}
*/
clickOutside: async () => body.click(),
/**
* Gets the arrow offset
* @returns {Promise<any>}
*/
getArrowOffset: async () => (await byHook('popover-arrow').getNative()).style,
/**
* Gets content as unidriver element
* @private
*/
getContentElementUniDriver: async () => getContentElement(),
};
};
//# sourceMappingURL=Popover.uni.driver.js.map