UNPKG

terra-toolkit

Version:

Utilities to help when developing terra modules.

112 lines (94 loc) 4.79 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } /** * Helper method to determine the default test options for one or two args passed. * * @param {[name, options]} [args] - the list of test arguments to parse. * @param {string} [name=default] - the name of the visual regression test. * @param {Object} [options] - the test options * @param {string} [options.selector=browser.options.terra.selector] - the element selector to use for * the screenshot comparison. * @param {Object[]} [options.viewports] - the list of Terra viewports to test. * */ var determineArgs = function determineArgs(args) { var param1 = args.length ? args[0] : undefined; var param2 = args.length > 1 ? args[1] : undefined; var name = 'default'; var options = {}; if (typeof param1 === 'string') { name = param1; options = (0, _typeof2.default)(param2) === 'object' && !Array.isArray(param2) ? param2 : options; } else { options = (0, _typeof2.default)(param1) === 'object' && !Array.isArray(param1) ? param1 : options; } // Check if custom selector should be used, otherwise use the global value. var selector = options.selector || global.browser.options.terra.selector; // Which viewports the screenshot should adjust too during the test run, otherwise use's current viewport var _options = options, viewports = _options.viewports; return { name: name, options: options, selector: selector, viewports: viewports }; }; /** * Helper method to determine the viewports and axe rules for the test run. * * @param {[options]} [args] - the list of test arguments to parse. * @param {Object} [options.axeRules] - the axe rules to use to use in the axe run. * @param {Object} [options.rules] - the axe rules to use to use in the axe run. * @param {Object} [options.viewports] - the list of Terra viewports to test. */ var axeOptions = function axeOptions(args) { var _determineArgs = determineArgs(args), options = _determineArgs.options, viewports = _determineArgs.viewports; var axeRules = options.rules || options.axeRules; return _objectSpread(_objectSpread({}, viewports && { viewports: viewports }), axeRules && { rules: axeRules }); }; /** * Helper method to determine the screenshot name, the element selector, the viewport(s) * in which to take the screenshots, as well as the capture screenshot options to be passed * to the wdio-visual-regression-service comparison methods. * * @param {[name, options]} [args] - the list of test arguments to parse. * @param {string} [name=default] - the name of the visual regression test. * @param {Object} [options.misMatchTolerance] - the mismatch tolerance for the screenshot comparison. * @param {string} [options.selector=browser.options.terra.selector] - the element selector to use for * the screenshot comparison. * @param {Object} [options.viewports] - the list of Terra viewports to test. */ var screenshotOptions = function screenshotOptions(args) { var _determineArgs2 = determineArgs(args), name = _determineArgs2.name, options = _determineArgs2.options, selector = _determineArgs2.selector, viewports = _determineArgs2.viewports; return _objectSpread(_objectSpread({ name: name, selector: selector }, viewports && { viewports: viewports }), options.misMatchTolerance !== undefined && { misMatchTolerance: options.misMatchTolerance }); }; var determineHelpers = { screenshotOptions: screenshotOptions, axeOptions: axeOptions }; var _default = determineHelpers; exports.default = _default;