UNPKG

eslint-plugin-ui-testing

Version:

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

156 lines (155 loc) 5.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBrowserObjectNames = exports.getOpenUrlCommands = exports.getSelectorCommands = exports.getWaitCommandsNotInTest = exports.getHardWaitCommands = exports.isCalleeNameInCommands = exports.isObjectPropertyNameInCommands = exports.getArgumentValue = exports.createRule = void 0; var experimental_utils_1 = require("@typescript-eslint/experimental-utils"); var path_1 = require("path"); function getCommandRegExp(command) { return new RegExp("^" + command.replace('.', '[.]') + "$"); } exports.createRule = experimental_utils_1.ESLintUtils.RuleCreator(function (name) { var ruleName = (0, path_1.parse)(name).name; return "https://github.com/kwoding/eslint-plugin-ui-testing/tree/master/docs/rules/" + ruleName + ".md"; }); function getArgumentValue(node) { if (node.arguments.length && 'quasis' in node.arguments[0]) { return node.arguments[0].quasis.map(function (x) { return x.value.cooked; }).join(''); } return node.arguments.length ? node.arguments[0].value : ''; } exports.getArgumentValue = getArgumentValue; function isObjectPropertyNameInCommands(node, commands) { return (commands.some(function (command) { return getCommandRegExp(command).test(node.callee.object.name + "." + node.callee.property.name); }) || commands.some(function (command) { return getCommandRegExp(command).test("." + node.callee.property.name); })); } exports.isObjectPropertyNameInCommands = isObjectPropertyNameInCommands; function isCalleeNameInCommands(node, commands) { return commands.some(function (command) { return getCommandRegExp(command).test("" + node.callee.name); }); } exports.isCalleeNameInCommands = isCalleeNameInCommands; function getHardWaitCommands(automationTool) { switch (automationTool) { case 'cypress': return ['cy.wait']; case 'playwright': return ['.waitForTimeout']; case 'puppeteer': return ['.waitFor']; case 'testcafe': return ['t.wait']; case 'webdriverio': return ['browser.pause']; default: return []; } } exports.getHardWaitCommands = getHardWaitCommands; function getWaitCommandsNotInTest(automationTool) { switch (automationTool) { case 'testcafe': return ['t.wait']; case 'playwright': return ['.waitFor(\\D+)']; case 'puppeteer': return ['.waitFor', '.waitFor(\\D+)']; case 'webdriverio': return ['browser.pause', '.waitUntil', '.waitFor(\\D+)']; case 'cypress': default: return []; } } exports.getWaitCommandsNotInTest = getWaitCommandsNotInTest; function getSelectorCommands(automationTool) { switch (automationTool) { case 'cypress': return ['cy.get']; case 'playwright': return [ '.[\\$]', '.(\\$\\$)', '.[\\$]eval', '.(\\$\\$)eval', '.check', '.click', '.dblclick', '.dispatchEvent', '.fill', '.focus', '.getAttribute', '.hover', '.innerHTML', '.innerText', '.press', '.selectOption', '.setInputFiles', '.textContent', '.type', '.uncheck', '.waitForSelector', ]; case 'puppeteer': return [ '.[\\$]', '.(\\$\\$)', '.[\\$]eval', '.(\\$\\$)eval', '.click', '.focus', '.hover', '.select', '.tap', '.type', '.waitFor', '.waitForSelector', ]; case 'testcafe': return [ 'Selector', 't.click', 't.doubleClick', 't.rightClick', 't.typeText', 't.selectText', 't.hover', 't.drag', 't.setFilesToUpload', 't.takeElementScreenshot', 't.switchToIframe', ]; case 'webdriverio': return ['[\\$]', '(\\$\\$)']; default: return []; } } exports.getSelectorCommands = getSelectorCommands; function getOpenUrlCommands(automationTool) { switch (automationTool) { case 'cypress': return ['cy.visit']; case 'playwright': case 'puppeteer': return ['.goto']; case 'testcafe': return ['fixture.page', 't.page']; case 'webdriverio': return ['browser.url']; default: return []; } } exports.getOpenUrlCommands = getOpenUrlCommands; function getBrowserObjectNames(automationTool) { switch (automationTool) { case 'playwright': case 'puppeteer': return ['page']; case 'webdriverio': return ['browser']; case 'cypress': case 'testcafe': default: return []; } } exports.getBrowserObjectNames = getBrowserObjectNames;