@testplane/webdriverio
Version:
Next-gen browser and mobile automation test framework for Node.js
27 lines (26 loc) • 4.51 kB
JavaScript
// src/scripts/getHTMLShadow.ts
function getHTMLShadow(element, includeSelectorTag, shadowElementIds = []) {
shadowElementIds.map(([id, elem]) => {
if (typeof elem.setAttribute !== "function") {
return;
}
elem.setAttribute("data-wdio-shadow-id", id);
});
const shadowElementHTML = shadowElementIds.map(([id, elem, shadow]) => {
if (!shadow) {
const html2 = elem[includeSelectorTag ? "outerHTML" : "innerHTML"];
return { id, html: html2 };
}
const styles = Array.from(shadow.adoptedStyleSheets || []).map(({ cssRules }) => Array.from(cssRules)).flat().map(({ cssText }) => cssText);
const html = shadow.innerHTML;
return { id, html, styles };
});
return {
html: element[includeSelectorTag ? "outerHTML" : "innerHTML"],
shadowElementHTML
};
}
export {
getHTMLShadow as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3NjcmlwdHMvZ2V0SFRNTFNoYWRvdy50cyJdLAogICJzb3VyY2VSb290IjogIi9Vc2Vycy9rcm9tYW41MTIvZ2VtaW5pLXRlc3Rpbmcvd2ViZHJpdmVyaW8vcGFja2FnZXMvd2ViZHJpdmVyaW8iLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBnZXQgSFRNTCBvZiBhbGwgc2hhZG93IHJvb3RzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgZWxlbWVudCAgICAgICAgICAgICAgIGVsZW1lbnQgdG8gZ2V0IEhUTUwgZnJvbVxuICogQHBhcmFtICB7Qm9vbGVhbn0gaW5jbHVkZVNlbGVjdG9yVGFnICAgIGlmIHRydWUsIHNlbGVjdG9yIHRhZyBnZXRzIGluY2x1ZGVkICh1c2VzIG91dGVySFRNTClcbiAqIEBwYXJhbSAge09iamVjdH0gIHNoYWRvd0VsZW1lbnRJZHNGb3VuZCBsaXN0IG9mIHNoYWRvdyByb290IGlkcyB3ZSB3YW50IHRvIGxvb2sgdXAgaW4gdGhlIG5leHQgaXRlcmF0aW9uXG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCBzb3VyY2UgYW5kIGxpc3Qgb2Ygc2hhZG93IHJvb3QgaWRzIGZvdW5kXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxTaGFkb3cgKFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU2hhZG93Um9vdCxcbiAgICBpbmNsdWRlU2VsZWN0b3JUYWc6IGJvb2xlYW4sXG4gICAgc2hhZG93RWxlbWVudElkczogW3N0cmluZywgSFRNTEVsZW1lbnQsIEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkXVtdID0gW11cbikge1xuICAgIHNoYWRvd0VsZW1lbnRJZHMubWFwKChbaWQsIGVsZW1dKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZiB3ZSBkb24ndCBoYXZlIGEgc2hhZG93IHJvb3QgKGUuZy4gbW9zdCBsaWtlbHkgdG8gYmUgdGhlIHJvb3QgZG9jdW1lbnQgbm9kZSlcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0eXBlb2YgZWxlbS5zZXRBdHRyaWJ1dGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ2RhdGEtd2Rpby1zaGFkb3ctaWQnLCBpZClcbiAgICB9KVxuXG4gICAgY29uc3Qgc2hhZG93RWxlbWVudEhUTUwgPSBzaGFkb3dFbGVtZW50SWRzLm1hcCgoW2lkLCBlbGVtLCBzaGFkb3ddKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZiB3ZSBkb24ndCBoYXZlIGEgc2hhZG93IHJvb3QgKGUuZy4gbW9zdCBsaWtlbHkgdG8gYmUgdGhlIHJvb3QgZG9jdW1lbnQgbm9kZSlcbiAgICAgICAgICogd2UganVzdCBnZXQgdGhlIGh0bWwgb2YgdGhlIGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGlmICghc2hhZG93KSB7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gZWxlbVtpbmNsdWRlU2VsZWN0b3JUYWcgPyAnb3V0ZXJIVE1MJyA6ICdpbm5lckhUTUwnXVxuICAgICAgICAgICAgcmV0dXJuIHsgaWQsIGh0bWwgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIG90aGVyd2lzZSwgd2UgbG9vayB1cCB0aGUgcmVnaXN0ZXJlZCBzaGFkb3cgc3R5bGVzIGFuZCBodG1sXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBzdHlsZXMgPSBBcnJheS5mcm9tKChzaGFkb3cgYXMgdW5rbm93biBhcyBTaGFkb3dSb290KS5hZG9wdGVkU3R5bGVTaGVldHMgfHwgW10pXG4gICAgICAgICAgICAubWFwKCh7IGNzc1J1bGVzIH0pID0+IEFycmF5LmZyb20oY3NzUnVsZXMpKVxuICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgLm1hcCgoeyBjc3NUZXh0IH0pID0+IGNzc1RleHQpXG5cbiAgICAgICAgY29uc3QgaHRtbCA9IHNoYWRvdy5pbm5lckhUTUxcbiAgICAgICAgcmV0dXJuIHsgaWQsIGh0bWwsIHN0eWxlcyB9XG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGh0bWw6IChlbGVtZW50IGFzIEhUTUxFbGVtZW50KVtpbmNsdWRlU2VsZWN0b3JUYWcgPyAnb3V0ZXJIVE1MJyA6ICdpbm5lckhUTUwnXSxcbiAgICAgICAgc2hhZG93RWxlbWVudEhUTUxcbiAgICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBUWUsU0FBUixjQUNILFNBQ0Esb0JBQ0EsbUJBQXFFLENBQUMsR0FDeEU7QUFDRSxtQkFBaUIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU07QUFJakMsUUFBSSxPQUFPLEtBQUssaUJBQWlCLFlBQVk7QUFDekM7QUFBQSxJQUNKO0FBRUEsU0FBSyxhQUFhLHVCQUF1QixFQUFFO0FBQUEsRUFDL0MsQ0FBQztBQUVELFFBQU0sb0JBQW9CLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sTUFBTSxNQUFNO0FBS25FLFFBQUksQ0FBQyxRQUFRO0FBQ1QsWUFBTUEsUUFBTyxLQUFLLHFCQUFxQixjQUFjLFdBQVc7QUFDaEUsYUFBTyxFQUFFLElBQUksTUFBQUEsTUFBSztBQUFBLElBQ3RCO0FBS0EsVUFBTSxTQUFTLE1BQU0sS0FBTSxPQUFpQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQy9FLElBQUksQ0FBQyxFQUFFLFNBQVMsTUFBTSxNQUFNLEtBQUssUUFBUSxDQUFDLEVBQzFDLEtBQUssRUFDTCxJQUFJLENBQUMsRUFBRSxRQUFRLE1BQU0sT0FBTztBQUVqQyxVQUFNLE9BQU8sT0FBTztBQUNwQixXQUFPLEVBQUUsSUFBSSxNQUFNLE9BQU87QUFBQSxFQUM5QixDQUFDO0FBRUQsU0FBTztBQUFBLElBQ0gsTUFBTyxRQUF3QixxQkFBcUIsY0FBYyxXQUFXO0FBQUEsSUFDN0U7QUFBQSxFQUNKO0FBQ0o7IiwKICAibmFtZXMiOiBbImh0bWwiXQp9Cg==