eslint-plugin-ui-testing
Version:
ESLint rules for UI testing tools WebdriverIO, Cypress, TestCafe, Playwright, Puppeteer
36 lines (35 loc) • 1.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RULE_NAME = void 0;
var utils_1 = require("../utils/utils");
exports.RULE_NAME = __filename.slice(__dirname.length + 1, -3);
exports.default = (0, utils_1.createRule)({
name: exports.RULE_NAME,
meta: {
docs: {
description: 'Disallow xpath selector tied to page layout',
recommended: 'error',
},
messages: {
noXpathPageLayoutSelector: 'Avoid xpath selector tied to page layout',
},
schema: [],
type: 'problem',
},
defaultOptions: [],
create: function (context) {
return {
'CallExpression[callee.name=/^[$]$/]': function rule(node) {
var xpathPattern = new RegExp('^([/]|[(]|(../)|(./)|(\\*/))');
var recommendedXpathPattern = new RegExp('^[(]?//[^/]*/?[^/]*$');
var value = (0, utils_1.getArgumentValue)(node);
if (xpathPattern.test(value) && !recommendedXpathPattern.test(value)) {
context.report({
node: node,
messageId: 'noXpathPageLayoutSelector',
});
}
},
};
},
});