terra-toolkit
Version:
Utilities to help when developing terra modules.
112 lines (94 loc) • 4.79 kB
JavaScript
;
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;