appium-xcuitest-driver
Version:
Appium driver for iOS using XCUITest for backend
55 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WDA_CLASS_CHAIN_STRATEGY = void 0;
exports.cssToNativeLocator = cssToNativeLocator;
const driver_1 = require("appium/driver");
const utils_1 = require("../utils");
const class_chain_emitter_1 = require("./class-chain-emitter");
const constants_1 = require("./constants");
const schema_1 = require("./schema");
var constants_2 = require("./constants");
Object.defineProperty(exports, "WDA_CLASS_CHAIN_STRATEGY", { enumerable: true, get: function () { return constants_2.WDA_CLASS_CHAIN_STRATEGY; } });
const emitters = {
[constants_1.CLASS_CHAIN_EMITTER_KEY]: new class_chain_emitter_1.ClassChainEmitter(constants_1.WDA_CLASS_CHAIN_STRATEGY),
};
const getTransformCss = (0, utils_1.memoize)(async function loadTransformCss() {
const mod = await import('@appium/css-locator-to-native');
return mod.createCssTransformer({
schema: schema_1.ATTRIBUTE_SCHEMA,
emitters,
resolveStrategy() {
return constants_1.CLASS_CHAIN_EMITTER_KEY;
},
});
});
/**
* Converts a CSS selector string into a native locator for the resolved strategy.
*
* @param css - CSS selector to transform
* @returns Native locator strategy name and selector string
*/
async function cssToNativeLocator(css) {
try {
const transformCss = await getTransformCss();
return transformCss(css);
}
catch (err) {
throw mapCssError(err, css);
}
}
function mapCssError(err, css) {
if (isPackageError(err, 'InvalidSelectorError')) {
return new driver_1.errors.InvalidSelectorError(`Invalid CSS selector '${css}'`, err);
}
if (isPackageError(err, 'UnsupportedSelectorError')) {
return new driver_1.errors.InvalidSelectorError(`Unsupported CSS selector '${css}'`, err);
}
if (err instanceof Error) {
return err;
}
return new Error(String(err));
}
function isPackageError(err, name) {
return err instanceof Error && err.name === name;
}
//# sourceMappingURL=index.js.map