UNPKG

terra-toolkit

Version:

Utilities to help when developing terra modules.

137 lines (106 loc) 5.47 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _chai = _interopRequireDefault(require("chai")); var _axeCommand = _interopRequireDefault(require("./TerraCommands/axe-command")); var _chaiMethods = _interopRequireDefault(require("./TerraCommands/chai-methods")); var _accessibility = _interopRequireDefault(require("./TerraCommands/accessibility")); var _visualRegression = _interopRequireDefault(require("./TerraCommands/visual-regression")); var _validateElement = _interopRequireDefault(require("./TerraCommands/validate-element")); var _viewportHelpers = _interopRequireDefault(require("./TerraCommands/viewport-helpers")); var _hideInputCaret = _interopRequireDefault(require("./TerraCommands/hide-input-caret")); var _logger = _interopRequireDefault(require("../../../scripts/utils/logger")); /** * Webdriver.io TerraService * Provides global access to chia, as well as custom chai assertions. * Also provides access a global instance of the Terra object which * provides accessibility and visual regression test steps. */ var TerraService = /*#__PURE__*/function () { function TerraService() { (0, _classCallCheck2.default)(this, TerraService); } (0, _createClass2.default)(TerraService, [{ key: "onPrepare", value: // eslint-disable-next-line class-methods-use-this function onPrepare(config) { _logger.default.log("Running tests against ".concat(_logger.default.emphasis("Selenium ".concat(config.seleniumVersion))), { context: '[Terra-Toolkit:terra-service]' }); } // eslint-disable-next-line class-methods-use-this }, { key: "before", value: function before(capabilities) { /* Add Terra's custom Wdio command for a11y testing. */ global.browser.addCommand('axe', _axeCommand.default); /* Initialize the Chai assertion library to have more expressive tests. */ _chai.default.config.showDiff = false; global.expect = _chai.default.expect; global.should = _chai.default.should(); /* Add Terra's custom Chai assertion helpers for a11y & VR testing. */ _chai.default.Assertion.addMethod('accessible', _chaiMethods.default.accessible); _chai.default.Assertion.addMethod('matchReference', _chaiMethods.default.matchReference); /* Add a Terra global with access to Mocha-Chai test helpers. */ global.Terra = { /* `viewports` provides access Terra's list of test viewports. */ viewports: _viewportHelpers.default.getViewports, /* `describeViewports` provides a custom Mocha `describe` block for looping test viewports. */ describeViewports: _viewportHelpers.default.describeViewports, /* `hideInputCaret` hides the blinking input caret that appears in inputs or editable text areas. */ hideInputCaret: _hideInputCaret.default, /* `validates` provides access to the chai assertions to use in Mocha `it` blocks. */ validates: { accessibility: _accessibility.default.validatesAccessibility, screenshot: _visualRegression.default.validatesScreenshot, element: _validateElement.default.validatesElement }, /* * Deprecated: These commands are being replaced by the above `validate` commands used inside a Mocha `it` block. * * `it` provides access to Mocha it blocks of test assertions. */ it: { isAccessible: _accessibility.default.itIsAccessible, matchesScreenshot: _visualRegression.default.itMatchesScreenshot, validatesElement: _validateElement.default.itValidatesElement } }; /* IE driver takes a longer to be ready for browser interactions. */ if (capabilities.browserName === 'internet explorer') { global.browser.pause(10000); } /* Set the viewport size before the spec begins. */ _viewportHelpers.default.setViewport(global.browser.options.formFactor); } /* * To more passively support code splitting in terra dev site, wait for data to load before progressing with the test. * * Automatically hides input carets on the page (unless something explicitly sets a caret-color) when the page is loaded or refreshed. */ // eslint-disable-next-line class-methods-use-this }, { key: "afterCommand", value: function afterCommand(commandName, args, result, error) { if ((commandName === 'refresh' || commandName === 'url') && !error) { try { // This is only meant as a convenience so failure is not particularly concerning (0, _hideInputCaret.default)('body'); if (global.browser.isExisting('[data-terra-dev-site-loading]')) { global.browser.waitUntil(function () { return global.browser.isExisting('[data-terra-dev-site-content]'); }, global.browser.options.waitforTimeout + 2000, '', 100); } } catch (err) {// intentionally blank // if this fails we don't want to warn because the user can't fix the issue } } } }]); return TerraService; }(); exports.default = TerraService;