terra-toolkit
Version:
Utilities to help when developing terra modules.
105 lines (86 loc) • 3.27 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _services = _interopRequireDefault(require("../../../../config/wdio/services.default-config"));
var _logger = _interopRequireDefault(require("../../../../scripts/utils/logger"));
var VIEWPORTS = _services.default.terraViewports;
/**
* Convenience method for getting the Terra test viewports by name.
*
* @param {string|string[]} sizes - the list of Terra viewport names.
* @return {object} - Terra viewport sizes.
*/
var getViewports = function getViewports() {
var viewportSizes = Object.keys(VIEWPORTS);
for (var _len = arguments.length, sizes = new Array(_len), _key = 0; _key < _len; _key++) {
sizes[_key] = arguments[_key];
}
if (sizes.length) {
viewportSizes = sizes;
}
return viewportSizes.map(function (size) {
return VIEWPORTS[size];
});
};
/**
* Sets the viewport for the test run to the Terra test viewport size.
*
* @param {string} [formFactor=huge] - the Terra test viewport.
*/
var setViewport = function setViewport(formFactor) {
if (formFactor) {
var terraViewport = VIEWPORTS[formFactor];
if (terraViewport !== undefined && (0, _typeof2.default)(terraViewport) === 'object') {
global.browser.setViewportSize(terraViewport);
} else {
throw _logger.default.error('The formFactor supplied is not a Terra-defined viewport size.', {
context: '[Terra-Toolkit:terra-service]'
});
}
} else {
var defaultViewport = VIEWPORTS.huge;
global.browser.setViewportSize(defaultViewport);
}
};
/**
* Mocha `describe` block to set and loop the tests viewports to simplify writing tests.
* If defined, the formFactor will be used if it is included in the list of test viewports.
* Otherwise, use the list of test viewports.
*
* This is intended to be used as a root-level Mocha `describe`.
*
* @param {string} title - The `describe` block title.
* @param {string[]} viewports - The list of Terra viewports to tests if formFactor is not set.
* @param {function} - the test function to execute for each viewport.
*/
var describeViewports = function describeViewports(title, viewports, fn) {
var localViewports = viewports; // If formFactor is defined and viewports contains the form factor, run that size else don't run the tests
var formFactor = global.browser.options.formFactor;
if (formFactor) {
localViewports = viewports.includes(formFactor) ? [formFactor] : [];
}
var currentViewportSize;
localViewports.forEach(function (viewport) {
return global.describe("[".concat(viewport, "]"), function () {
global.before(function () {
currentViewportSize = global.browser.getViewportSize();
setViewport(viewport);
});
global.describe(title, fn);
global.after(function () {
return global.browser.setViewportSize(currentViewportSize);
});
});
});
};
var methods = {
getViewports: getViewports,
setViewport: setViewport,
describeViewports: describeViewports
};
var _default = methods;
exports.default = _default;