UNPKG

terra-toolkit

Version:

Utilities to help when developing terra modules.

105 lines (86 loc) 3.27 kB
"use strict"; 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;