UNPKG

eslint-plugin-ui-testing

Version:

ESLint rules for UI testing tools WebdriverIO, Cypress, TestCafe, Playwright, Puppeteer

36 lines (35 loc) 1.27 kB
"use strict"; 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', }); } }, }; }, });