@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
53 lines (51 loc) • 3.13 kB
JavaScript
import { ELEMENT_KEY } from '../../constants.js';
import { getBrowserObject } from '../../utils/index.js';
const getWebElement = (el) => ({
[ELEMENT_KEY]: el.elementId, // w3c compatible
ELEMENT: el.elementId // jsonwp compatible
});
/**
*
* Return true if the selected element matches with the provided one.
*
* <example>
:isEqual.js
it('should detect if an element is clickable', async () => {
const el = await $('#el')
const sameEl = await $('#el')
const anotherEl = await $('#anotherEl')
el.isEqual(sameEl) // outputs: true
el.isEqual(anotherEl) // outputs: false
});
* </example>
*
* @alias element.isEqual
* @param {Element} el element to compare with
* @return {Boolean} true if elements are equal
*
*/
export async function isEqual(el) {
const browser = getBrowserObject(this);
// mobile native
if (browser.isMobile) {
const context = await browser.getContext();
const contextId = typeof context === 'string'
? context
: context?.id;
if (contextId && contextId.toLowerCase().includes('native')) {
return this.elementId === el.elementId;
}
}
// browser or webview
let result;
try {
result = await browser.execute(
/* istanbul ignore next */
function (el1, el2) { return el1 === el2; }, getWebElement(this), getWebElement(el));
}
catch (err) {
result = false;
}
return result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNFcXVhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbGVtZW50L2lzRXF1YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXZELE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCO0lBQzlDLE9BQU8sRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLG9CQUFvQjtDQUM3QyxDQUFDLENBQUE7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBRXpCLEVBQXVCO0lBRXZCLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXRDLGdCQUFnQjtJQUNoQixJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuQixNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUMxQyxNQUFNLFNBQVMsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRO1lBQ3pDLENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFFakIsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzFELE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFBO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLElBQUksTUFBZSxDQUFBO0lBQ25CLElBQUksQ0FBQztRQUNELE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPO1FBQzFCLDBCQUEwQjtRQUMxQixVQUFVLEdBQXdCLEVBQUUsR0FBd0IsSUFBSSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUEsQ0FBQyxDQUFDLEVBQ3BGLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUNoQixNQUFNLEdBQUcsS0FBSyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNqQixDQUFDIn0=