Socket
Socket
Sign inDemoInstall

domsuite

Package Overview
Dependencies
20
Maintainers
6
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.4.1 to 0.5.0

162

compiled/fetch-server.js

@@ -1,30 +0,42 @@

'use strict';
"use strict";
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FetchServer = undefined;
exports.FetchServer = void 0;
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _isString = _interopRequireDefault(require("lodash/isString"));
var _isFunction = require('lodash/isFunction');
var sinon = _interopRequireWildcard(require("sinon"));
var _isFunction2 = _interopRequireDefault(_isFunction);
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
var _isString = require('lodash/isString');
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var _isString2 = _interopRequireDefault(_isString);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _sinon = require('sinon');
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
var sinon = _interopRequireWildcard(_sinon);
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
/**

@@ -45,4 +57,3 @@ * Utility class to stub fetch requests with sinon. Instantiate with a set of

*/
var FetchServer = exports.FetchServer = function () {
var FetchServer = /*#__PURE__*/function () {
/**

@@ -62,5 +73,5 @@ * Create a FetchServer instance.

_ref$debug = _ref.debug,
debug = _ref$debug === undefined ? false : _ref$debug,
debug = _ref$debug === void 0 ? false : _ref$debug,
_ref$errorCallback = _ref.errorCallback,
errorCallback = _ref$errorCallback === undefined ? null : _ref$errorCallback;
errorCallback = _ref$errorCallback === void 0 ? null : _ref$errorCallback;

@@ -75,3 +86,3 @@ _classCallCheck(this, FetchServer);

_createClass(FetchServer, [{
key: 'handle',
key: "handle",
value: function handle(url, params) {

@@ -83,7 +94,7 @@ // Order routes by url length (descending).

var routes = Object.entries(this.handlers).sort(function (_ref2, _ref3) {
var _ref5 = _slicedToArray(_ref2, 1),
aRoute = _ref5[0];
var _ref4 = _slicedToArray(_ref2, 1),
aRoute = _ref4[0];
var _ref4 = _slicedToArray(_ref3, 1),
bRoute = _ref4[0];
var _ref5 = _slicedToArray(_ref3, 1),
bRoute = _ref5[0];

@@ -100,18 +111,14 @@ // If route lengths are the same, sort alphabetically;

var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
var _iterator = _createForOfIteratorHelper(routes),
_step;
try {
for (var _iterator = routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _ref6 = _step.value;
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var _step$value = _slicedToArray(_step.value, 2),
route = _step$value[0],
handler = _step$value[1];
var _ref7 = _slicedToArray(_ref6, 2);
var route = _ref7[0];
var handler = _ref7[1];
if (url.includes(route)) {
if (params && params.body) {
if ((0, _isString2.default)(params.body)) {
if ((0, _isString.default)(params.body)) {
// Allow string or JSON params.body; if valid JSON,

@@ -125,9 +132,8 @@ // parse body to JS object before passing to handler function.

} else {
throw new Error('Invalid body: ' + params.body);
throw new Error("Invalid body: ".concat(params.body));
}
}
var response = (0, _isFunction2.default)(handler) ? handler(url, params) : handler;
var response = (0, _isFunction.default)(handler) ? handler(url, params) : handler; // Not yet promise-like
// Not yet promise-like
if (!response.then) {

@@ -138,3 +144,3 @@ // serializable value, wrap in fetch-like Promise

headers: {
'Content-Type': 'application/json'
'Content-Type': "application/json"
}

@@ -145,3 +151,7 @@ };

this.debugLog({ url: url, params: params, response: response });
this.debugLog({
url: url,
params: params,
response: response
});
return response;

@@ -151,19 +161,9 @@ }

} catch (err) {
_didIteratorError = true;
_iteratorError = err;
_iterator.e(err);
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
_iterator.f();
}
throw new Error('Unexpected fetch: ' + url + ' params: ' + JSON.stringify(params));
throw new Error("Unexpected fetch: ".concat(url, " params: ").concat(JSON.stringify(params)));
}
/**

@@ -174,3 +174,3 @@ * Start the FetchServer, sinon.stub'ing `fetch` with a fake version.

}, {
key: 'start',
key: "start",
value: function start() {

@@ -185,3 +185,3 @@ var _this = this;

// into FetchServer so that tests may be reliably failed on error:
(0, _isFunction2.default)(_this.errorCallback) && _this.errorCallback(err);
(0, _isFunction.default)(_this.errorCallback) && _this.errorCallback(err);
throw err; // rethrow error

@@ -192,13 +192,13 @@ }

this.restore(); // clean up prior FetchServer stubs (if necessary)
// stub fetch in browser environment:
// stub fetch in browser environment:
if (typeof window !== 'undefined' && window.fetch && !Object.hasOwnProperty.call(window.fetch, 'restore')) {
sinon.stub(window, 'fetch').callsFake(fakeFetch);
if (typeof window !== "undefined" && window.fetch && !Object.hasOwnProperty.call(window.fetch, "restore")) {
sinon.stub(window, "fetch").callsFake(fakeFetch);
} // stub fetch in NodeJS environment:
if (typeof global !== "undefined" && global.fetch && !Object.hasOwnProperty.call(global.fetch, "restore")) {
sinon.stub(global, "fetch").callsFake(fakeFetch);
}
// stub fetch in NodeJS environment:
if (typeof global !== 'undefined' && global.fetch && !Object.hasOwnProperty.call(global.fetch, 'restore')) {
sinon.stub(global, 'fetch').callsFake(fakeFetch);
}
}
/**

@@ -209,5 +209,4 @@ * Restore sinon.stub'ed `fetch` to its original state.

}, {
key: 'restore',
key: "restore",
value:
/**

@@ -217,11 +216,11 @@ * Restore sinon.stub'ed `fetch` to its original state.

*/
value: function restore() {
function restore() {
FetchServer.restore();
}
}, {
key: 'debugLog',
value: function debugLog(_ref8) {
var url = _ref8.url,
params = _ref8.params,
response = _ref8.response;
key: "debugLog",
value: function debugLog(_ref6) {
var url = _ref6.url,
params = _ref6.params,
response = _ref6.response;

@@ -235,8 +234,8 @@ if (this.debug) {

});
Promise.all([responseObjectPromise, responseBodyPromise]).then(function (_ref9) {
var _ref10 = _slicedToArray(_ref9, 2),
response = _ref10[0],
responseBody = _ref10[1];
Promise.all([responseObjectPromise, responseBodyPromise]).then(function (_ref7) {
var _ref8 = _slicedToArray(_ref7, 2),
response = _ref8[0],
responseBody = _ref8[1];
console.groupCollapsed('[fetch-server] ' + url);
console.groupCollapsed("[fetch-server] ".concat(url));
console.groupCollapsed('Params');

@@ -256,10 +255,11 @@ console.log(JSON.stringify(params, null, 2));

}], [{
key: 'restore',
key: "restore",
value: function restore() {
// restore fetch in browser environment:
if (typeof window !== 'undefined' && window.fetch && Object.hasOwnProperty.call(window.fetch, 'restore')) {
if (typeof window !== "undefined" && window.fetch && Object.hasOwnProperty.call(window.fetch, "restore")) {
window.fetch.restore();
}
// restore fetch in NodeJS environment:
if (typeof global !== 'undefined' && global.fetch && Object.hasOwnProperty.call(global.fetch, 'restore')) {
} // restore fetch in NodeJS environment:
if (typeof global !== "undefined" && global.fetch && Object.hasOwnProperty.call(global.fetch, "restore")) {
global.fetch.restore();

@@ -271,2 +271,4 @@ }

return FetchServer;
}();
}();
exports.FetchServer = FetchServer;

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,8 +6,126 @@ Object.defineProperty(exports, "__esModule", {

});
exports.BROWSERS = exports.sendInputToActiveElement = exports.sendInput = exports.changeInput = exports.clickElement = exports.mousedownElement = exports.mouseleaveElement = exports.mouseenterElement = exports.condition = exports.retryable = exports.sleepAfterAction = exports.sleep = exports.nextAnimationFrame = exports.FetchServer = undefined;
exports.BROWSERS = void 0;
Object.defineProperty(exports, "FetchServer", {
enumerable: true,
get: function get() {
return _fetchServer.FetchServer;
}
});
exports.changeInput = changeInput;
exports.clickElement = clickElement;
exports.condition = condition;
exports.getActiveElement = getActiveElement;
exports.getDescendantTextParts = getDescendantTextParts;
exports.isBrowser = isBrowser;
exports.isVisibleElement = isVisibleElement;
exports.mousedownElement = mousedownElement;
exports.mouseenterElement = mouseenterElement;
exports.mouseleaveElement = mouseleaveElement;
exports.nextAnimationFrame = nextAnimationFrame;
exports.queryShadowSelectors = queryShadowSelectors;
exports.queryShadowSelectorsAll = queryShadowSelectorsAll;
exports.retryable = retryable;
exports.sendInput = sendInput;
exports.sendInputToActiveElement = sendInputToActiveElement;
exports.setDefaultWaitMsAfterAction = setDefaultWaitMsAfterAction;
exports.sleep = sleep;
exports.sleepAfterAction = sleepAfterAction;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
var nextAnimationFrame = exports.nextAnimationFrame = function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var _platform = _interopRequireDefault(require("platform"));
var _fetchServer = require("./fetch-server");
var _excluded = ["waitMs"];
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
//region Non-async getters
function queryShadowSelectorsAll(rootEl, selectors) {
if (!rootEl) {
return [];
}
var currEl = rootEl;
var elements = [];
selectors.some(function (selector, idx) {
currEl = currEl.shadowRoot;
if (!currEl) {
return true;
}
if (idx !== selectors.length - 1) {
currEl = currEl.querySelector(selector);
} else {
elements = Array.from(currEl.querySelectorAll(selector));
}
});
return elements;
}
function queryShadowSelectors(rootEl, selectors) {
var el = queryShadowSelectorsAll(rootEl, selectors);
return !(0, _isEmpty.default)(el) ? el[0] : null;
}
function getActiveElement() {
var activeEl = document.activeElement;
while (activeEl && activeEl.shadowRoot) {
activeEl = activeEl.shadowRoot.activeElement;
}
return activeEl;
}
function isVisibleElement(el) {
// Based on http://stackoverflow.com/a/21696585
return !!(el && el.offsetParent);
} // Based on https://stackoverflow.com/a/10730777
function getDescendantTextParts(el) {
var textParts = [];
var treeWalker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null, false);
var currNode = treeWalker.nextNode();
while (currNode) {
textParts.push(currNode.textContent);
currNode = treeWalker.nextNode();
}
return textParts;
} //endregion
//region Async actions
// How long to sleep after an action (e.g. click element, type input)
var defaultWaitMsAfterAction = 50;
function setDefaultWaitMsAfterAction(waitMs) {
defaultWaitMsAfterAction = waitMs;
}
function nextAnimationFrame() {
return _nextAnimationFrame.apply(this, arguments);
}
function _nextAnimationFrame() {
_nextAnimationFrame = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {

@@ -17,19 +135,20 @@ while (1) {

case 0:
return _context.abrupt('return', new Promise(requestAnimationFrame));
return _context.abrupt("return", new Promise(requestAnimationFrame));
case 1:
case 'end':
case "end":
return _context.stop();
}
}
}, _callee, this);
}, _callee);
}));
return _nextAnimationFrame.apply(this, arguments);
}
return function nextAnimationFrame() {
return _ref.apply(this, arguments);
};
}();
function sleep(_x) {
return _sleep.apply(this, arguments);
}
var sleep = exports.sleep = function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(durationMs) {
function _sleep() {
_sleep = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(durationMs) {
return regeneratorRuntime.wrap(function _callee2$(_context2) {

@@ -39,3 +158,3 @@ while (1) {

case 0:
return _context2.abrupt('return', new Promise(function (resolve) {
return _context2.abrupt("return", new Promise(function (resolve) {
return setTimeout(resolve, durationMs);

@@ -45,17 +164,19 @@ }));

case 1:
case 'end':
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}, _callee2);
}));
return _sleep.apply(this, arguments);
}
return function sleep(_x) {
return _ref2.apply(this, arguments);
};
}();
function sleepAfterAction() {
return _sleepAfterAction.apply(this, arguments);
}
var sleepAfterAction = exports.sleepAfterAction = function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
var waitMs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultWaitMsAfterAction;
function _sleepAfterAction() {
_sleepAfterAction = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
var waitMs,
_args3 = arguments;
return regeneratorRuntime.wrap(function _callee3$(_context3) {

@@ -65,29 +186,35 @@ while (1) {

case 0:
_context3.next = 2;
waitMs = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : defaultWaitMsAfterAction;
_context3.next = 3;
return nextAnimationFrame();
case 2:
_context3.next = 4;
case 3:
_context3.next = 5;
return sleep(waitMs);
case 4:
case 'end':
case 5:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}, _callee3);
}));
return _sleepAfterAction.apply(this, arguments);
}
return function sleepAfterAction() {
return _ref3.apply(this, arguments);
};
}();
function retryable(_x2) {
return _retryable.apply(this, arguments);
}
var retryable = exports.retryable = function () {
var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(retryableFunc) {
var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref5$maxWaitMs = _ref5.maxWaitMs,
maxWaitMs = _ref5$maxWaitMs === undefined ? 1000 : _ref5$maxWaitMs;
function _retryable() {
_retryable = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(retryableFunc) {
var _ref,
_ref$maxWaitMs,
maxWaitMs,
startTimestamp,
error,
elapsedTime,
errorMessage,
_args4 = arguments;
var startTimestamp, error, elapsedTime, errorMessage;
return regeneratorRuntime.wrap(function _callee4$(_context4) {

@@ -97,62 +224,67 @@ while (1) {

case 0:
_ref = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {}, _ref$maxWaitMs = _ref.maxWaitMs, maxWaitMs = _ref$maxWaitMs === void 0 ? 1000 : _ref$maxWaitMs;
startTimestamp = new Date().getTime();
case 1:
case 2:
error = null;
_context4.prev = 2;
_context4.next = 5;
_context4.prev = 3;
_context4.next = 6;
return retryableFunc();
case 5:
return _context4.abrupt('return', _context4.sent);
case 6:
return _context4.abrupt("return", _context4.sent);
case 8:
_context4.prev = 8;
_context4.t0 = _context4['catch'](2);
case 9:
_context4.prev = 9;
_context4.t0 = _context4["catch"](3);
error = _context4.t0;
case 11:
case 12:
elapsedTime = new Date().getTime() - startTimestamp;
if (!(elapsedTime > maxWaitMs)) {
_context4.next = 16;
_context4.next = 17;
break;
}
errorMessage = 'Retryable did not complete in allocated time:\n' + error.stack + '\n\n' + ('Failing function:\n' + retryableFunc.toString() + '\n');
errorMessage = "Retryable did not complete in allocated time:\n".concat(error.stack, "\n\n") + "Failing function:\n".concat(retryableFunc.toString(), "\n");
console.error(errorMessage);
throw new Error(errorMessage);
case 16:
_context4.next = 18;
case 17:
_context4.next = 19;
return sleep(25);
case 18:
case 19:
if (true) {
_context4.next = 1;
_context4.next = 2;
break;
}
case 19:
case 'end':
case 20:
case "end":
return _context4.stop();
}
}
}, _callee4, this, [[2, 8]]);
}, _callee4, null, [[3, 9]]);
}));
return _retryable.apply(this, arguments);
}
return function retryable(_x4) {
return _ref4.apply(this, arguments);
};
}();
function condition(_x3) {
return _condition.apply(this, arguments);
}
var condition = exports.condition = function () {
var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(predicate) {
var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref7$maxWaitMs = _ref7.maxWaitMs,
maxWaitMs = _ref7$maxWaitMs === undefined ? 1000 : _ref7$maxWaitMs;
function _condition() {
_condition = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(predicate) {
var _ref2,
_ref2$maxWaitMs,
maxWaitMs,
startTimestamp,
error,
val,
elapsedTime,
errorMessage,
_args5 = arguments;
var startTimestamp, error, val, elapsedTime, errorMessage;
return regeneratorRuntime.wrap(function _callee5$(_context5) {

@@ -162,7 +294,8 @@ while (1) {

case 0:
_ref2 = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {}, _ref2$maxWaitMs = _ref2.maxWaitMs, maxWaitMs = _ref2$maxWaitMs === void 0 ? 1000 : _ref2$maxWaitMs;
startTimestamp = new Date().getTime();
case 1:
case 2:
if (!true) {
_context5.next = 23;
_context5.next = 24;
break;

@@ -173,65 +306,65 @@ }

error = null;
_context5.prev = 3;
_context5.next = 6;
_context5.prev = 4;
_context5.next = 7;
return predicate();
case 6:
case 7:
val = _context5.sent;
if (!val) {
_context5.next = 9;
_context5.next = 10;
break;
}
return _context5.abrupt('return', val);
return _context5.abrupt("return", val);
case 9:
_context5.next = 14;
case 10:
_context5.next = 15;
break;
case 11:
_context5.prev = 11;
_context5.t0 = _context5['catch'](3);
case 12:
_context5.prev = 12;
_context5.t0 = _context5["catch"](4);
error = _context5.t0;
case 14:
case 15:
elapsedTime = new Date().getTime() - startTimestamp;
if (!(elapsedTime > maxWaitMs)) {
_context5.next = 19;
_context5.next = 20;
break;
}
errorMessage = 'Condition was not met in allocated time:\n' + (error && error.stack) + '\n\n' + ('Failing function:\n' + predicate.toString() + '\n');
errorMessage = "Condition was not met in allocated time:\n".concat(error && error.stack, "\n\n") + "Failing function:\n".concat(predicate.toString(), "\n");
console.error(errorMessage);
throw new Error(errorMessage);
case 19:
_context5.next = 21;
case 20:
_context5.next = 22;
return sleep(25);
case 21:
_context5.next = 1;
case 22:
_context5.next = 2;
break;
case 23:
case 'end':
case 24:
case "end":
return _context5.stop();
}
}
}, _callee5, this, [[3, 11]]);
}, _callee5, null, [[4, 12]]);
}));
return _condition.apply(this, arguments);
}
return function condition(_x6) {
return _ref6.apply(this, arguments);
};
}();
function mouseenterElement(_x4) {
return _mouseenterElement.apply(this, arguments);
}
var mouseenterElement = exports.mouseenterElement = function () {
var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(el) {
var _ref9 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref9$waitMs = _ref9.waitMs,
waitMs = _ref9$waitMs === undefined ? defaultWaitMsAfterAction : _ref9$waitMs;
function _mouseenterElement() {
_mouseenterElement = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(el) {
var _ref3,
_ref3$waitMs,
waitMs,
_args6 = arguments;

@@ -242,26 +375,29 @@ return regeneratorRuntime.wrap(function _callee6$(_context6) {

case 0:
el.dispatchEvent(new MouseEvent('mouseenter', {
_ref3 = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {}, _ref3$waitMs = _ref3.waitMs, waitMs = _ref3$waitMs === void 0 ? defaultWaitMsAfterAction : _ref3$waitMs;
el.dispatchEvent(new MouseEvent("mouseenter", {
composed: true
}));
_context6.next = 3;
_context6.next = 4;
return sleepAfterAction(waitMs);
case 3:
case 'end':
case 4:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}, _callee6);
}));
return _mouseenterElement.apply(this, arguments);
}
return function mouseenterElement(_x8) {
return _ref8.apply(this, arguments);
};
}();
function mouseleaveElement(_x5) {
return _mouseleaveElement.apply(this, arguments);
}
var mouseleaveElement = exports.mouseleaveElement = function () {
var _ref10 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(el) {
var _ref11 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref11$waitMs = _ref11.waitMs,
waitMs = _ref11$waitMs === undefined ? defaultWaitMsAfterAction : _ref11$waitMs;
function _mouseleaveElement() {
_mouseleaveElement = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(el) {
var _ref4,
_ref4$waitMs,
waitMs,
_args7 = arguments;

@@ -272,26 +408,29 @@ return regeneratorRuntime.wrap(function _callee7$(_context7) {

case 0:
el.dispatchEvent(new MouseEvent('mouseleave', {
_ref4 = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : {}, _ref4$waitMs = _ref4.waitMs, waitMs = _ref4$waitMs === void 0 ? defaultWaitMsAfterAction : _ref4$waitMs;
el.dispatchEvent(new MouseEvent("mouseleave", {
composed: true
}));
_context7.next = 3;
_context7.next = 4;
return sleepAfterAction(waitMs);
case 3:
case 'end':
case 4:
case "end":
return _context7.stop();
}
}
}, _callee7, this);
}, _callee7);
}));
return _mouseleaveElement.apply(this, arguments);
}
return function mouseleaveElement(_x10) {
return _ref10.apply(this, arguments);
};
}();
function mousedownElement(_x6) {
return _mousedownElement.apply(this, arguments);
}
var mousedownElement = exports.mousedownElement = function () {
var _ref12 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(el) {
var _ref13 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref13$waitMs = _ref13.waitMs,
waitMs = _ref13$waitMs === undefined ? defaultWaitMsAfterAction : _ref13$waitMs;
function _mousedownElement() {
_mousedownElement = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(el) {
var _ref5,
_ref5$waitMs,
waitMs,
_args8 = arguments;

@@ -302,30 +441,32 @@ return regeneratorRuntime.wrap(function _callee8$(_context8) {

case 0:
el.dispatchEvent(new MouseEvent('mousedown', {
_ref5 = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : {}, _ref5$waitMs = _ref5.waitMs, waitMs = _ref5$waitMs === void 0 ? defaultWaitMsAfterAction : _ref5$waitMs;
el.dispatchEvent(new MouseEvent("mousedown", {
bubbles: true,
composed: true
}));
_context8.next = 3;
_context8.next = 4;
return sleepAfterAction(waitMs);
case 3:
case 'end':
case 4:
case "end":
return _context8.stop();
}
}
}, _callee8, this);
}, _callee8);
}));
return _mousedownElement.apply(this, arguments);
}
return function mousedownElement(_x12) {
return _ref12.apply(this, arguments);
};
}();
function clickElement(_x7) {
return _clickElement.apply(this, arguments);
}
var clickElement = exports.clickElement = function () {
var _ref15 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(el) {
var _ref14 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
function _clickElement() {
_clickElement = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(el) {
var _ref6,
_ref6$waitMs,
waitMs,
mouseEventAttrs,
_args9 = arguments;
var _ref14$waitMs = _ref14.waitMs,
waitMs = _ref14$waitMs === undefined ? defaultWaitMsAfterAction : _ref14$waitMs,
mouseEventAttrs = _objectWithoutProperties(_ref14, ['waitMs']);
return regeneratorRuntime.wrap(function _callee9$(_context9) {

@@ -335,24 +476,29 @@ while (1) {

case 0:
el.dispatchEvent(new MouseEvent('click', _extends({ bubbles: true }, mouseEventAttrs)));
_context9.next = 3;
_ref6 = _args9.length > 1 && _args9[1] !== undefined ? _args9[1] : {}, _ref6$waitMs = _ref6.waitMs, waitMs = _ref6$waitMs === void 0 ? defaultWaitMsAfterAction : _ref6$waitMs, mouseEventAttrs = _objectWithoutProperties(_ref6, _excluded);
el.dispatchEvent(new MouseEvent("click", _objectSpread({
bubbles: true
}, mouseEventAttrs)));
_context9.next = 4;
return sleepAfterAction(waitMs);
case 3:
case 'end':
case 4:
case "end":
return _context9.stop();
}
}
}, _callee9, this);
}, _callee9);
}));
return _clickElement.apply(this, arguments);
}
return function clickElement(_x14) {
return _ref15.apply(this, arguments);
};
}();
function changeInput(_x8, _x9) {
return _changeInput.apply(this, arguments);
}
var changeInput = exports.changeInput = function () {
var _ref16 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(inputEl, value) {
var _ref17 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
_ref17$waitMs = _ref17.waitMs,
waitMs = _ref17$waitMs === undefined ? defaultWaitMsAfterAction : _ref17$waitMs;
function _changeInput() {
_changeInput = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(inputEl, value) {
var _ref7,
_ref7$waitMs,
waitMs,
_args10 = arguments;

@@ -363,28 +509,31 @@ return regeneratorRuntime.wrap(function _callee10$(_context10) {

case 0:
_ref7 = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : {}, _ref7$waitMs = _ref7.waitMs, waitMs = _ref7$waitMs === void 0 ? defaultWaitMsAfterAction : _ref7$waitMs;
inputEl.value = value;
inputEl.dispatchEvent(new Event('change', {
inputEl.dispatchEvent(new Event("change", {
bubbles: true,
composed: true
}));
_context10.next = 4;
_context10.next = 5;
return sleepAfterAction(waitMs);
case 4:
case 'end':
case 5:
case "end":
return _context10.stop();
}
}
}, _callee10, this);
}, _callee10);
}));
return _changeInput.apply(this, arguments);
}
return function changeInput(_x16, _x17) {
return _ref16.apply(this, arguments);
};
}();
function sendInput(_x10, _x11) {
return _sendInput.apply(this, arguments);
}
var sendInput = exports.sendInput = function () {
var _ref18 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(inputEl, value) {
var _ref19 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
_ref19$waitMs = _ref19.waitMs,
waitMs = _ref19$waitMs === undefined ? defaultWaitMsAfterAction : _ref19$waitMs;
function _sendInput() {
_sendInput = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(inputEl, value) {
var _ref8,
_ref8$waitMs,
waitMs,
_args11 = arguments;

@@ -395,4 +544,5 @@ return regeneratorRuntime.wrap(function _callee11$(_context11) {

case 0:
_ref8 = _args11.length > 2 && _args11[2] !== undefined ? _args11[2] : {}, _ref8$waitMs = _ref8.waitMs, waitMs = _ref8$waitMs === void 0 ? defaultWaitMsAfterAction : _ref8$waitMs;
inputEl.value = value;
inputEl.dispatchEvent(new Event('input', {
inputEl.dispatchEvent(new Event("input", {
bubbles: true,

@@ -402,24 +552,27 @@ // composed: true is needed to mimic real 'input' event which will cross shadow-dom boundary

}));
_context11.next = 4;
_context11.next = 5;
return sleepAfterAction(waitMs);
case 4:
case 'end':
case 5:
case "end":
return _context11.stop();
}
}
}, _callee11, this);
}, _callee11);
}));
return _sendInput.apply(this, arguments);
}
return function sendInput(_x19, _x20) {
return _ref18.apply(this, arguments);
};
}();
function sendInputToActiveElement(_x12) {
return _sendInputToActiveElement.apply(this, arguments);
} // Browser names defined here: https://github.com/lancedikson/bowser/blob/master/test/acceptance/useragentstrings.yml
var sendInputToActiveElement = exports.sendInputToActiveElement = function () {
var _ref20 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(value) {
var _ref21 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref21$waitMs = _ref21.waitMs,
waitMs = _ref21$waitMs === undefined ? defaultWaitMsAfterAction : _ref21$waitMs;
function _sendInputToActiveElement() {
_sendInputToActiveElement = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(value) {
var _ref9,
_ref9$waitMs,
waitMs,
_args12 = arguments;
return regeneratorRuntime.wrap(function _callee12$(_context12) {

@@ -429,127 +582,28 @@ while (1) {

case 0:
_context12.next = 2;
return sendInput(getActiveElement(), value, { waitMs: waitMs });
_ref9 = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : {}, _ref9$waitMs = _ref9.waitMs, waitMs = _ref9$waitMs === void 0 ? defaultWaitMsAfterAction : _ref9$waitMs;
_context12.next = 3;
return sendInput(getActiveElement(), value, {
waitMs: waitMs
});
case 2:
case 'end':
case 3:
case "end":
return _context12.stop();
}
}
}, _callee12, this);
}, _callee12);
}));
return function sendInputToActiveElement(_x22) {
return _ref20.apply(this, arguments);
};
}();
// Browser names defined here: https://github.com/lancedikson/bowser/blob/master/test/acceptance/useragentstrings.yml
var _fetchServer = require('./fetch-server');
Object.defineProperty(exports, 'FetchServer', {
enumerable: true,
get: function get() {
return _fetchServer.FetchServer;
}
});
exports.queryShadowSelectorsAll = queryShadowSelectorsAll;
exports.queryShadowSelectors = queryShadowSelectors;
exports.getActiveElement = getActiveElement;
exports.isVisibleElement = isVisibleElement;
exports.getDescendantTextParts = getDescendantTextParts;
exports.setDefaultWaitMsAfterAction = setDefaultWaitMsAfterAction;
exports.isBrowser = isBrowser;
var _isEmpty = require('lodash/isEmpty');
var _isEmpty2 = _interopRequireDefault(_isEmpty);
var _platform = require('platform');
var _platform2 = _interopRequireDefault(_platform);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
//region Non-async getters
function queryShadowSelectorsAll(rootEl, selectors) {
if (!rootEl) {
return [];
}
var currEl = rootEl;
var elements = [];
selectors.some(function (selector, idx) {
currEl = currEl.shadowRoot;
if (!currEl) {
return true;
}
if (idx !== selectors.length - 1) {
currEl = currEl.querySelector(selector);
} else {
elements = Array.from(currEl.querySelectorAll(selector));
}
});
return elements;
return _sendInputToActiveElement.apply(this, arguments);
}
function queryShadowSelectors(rootEl, selectors) {
var el = queryShadowSelectorsAll(rootEl, selectors);
return !(0, _isEmpty2.default)(el) ? el[0] : null;
}
function getActiveElement() {
var activeEl = document.activeElement;
while (activeEl && activeEl.shadowRoot) {
activeEl = activeEl.shadowRoot.activeElement;
}
return activeEl;
}
function isVisibleElement(el) {
// Based on http://stackoverflow.com/a/21696585
return !!(el && el.offsetParent);
}
// Based on https://stackoverflow.com/a/10730777
function getDescendantTextParts(el) {
var textParts = [];
var treeWalker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null, false);
var currNode = treeWalker.nextNode();
while (currNode) {
textParts.push(currNode.textContent);
currNode = treeWalker.nextNode();
}
return textParts;
}
//endregion
//region Async actions
// How long to sleep after an action (e.g. click element, type input)
var defaultWaitMsAfterAction = 50;
function setDefaultWaitMsAfterAction(waitMs) {
defaultWaitMsAfterAction = waitMs;
}
var BROWSERS = exports.BROWSERS = {
CHROME: 'Chrome',
FIREFOX: 'Firefox',
SAFARI: 'Safari',
EDGE: 'Microsoft Edge'
var BROWSERS = {
CHROME: "Chrome",
FIREFOX: "Firefox",
SAFARI: "Safari",
EDGE: "Microsoft Edge"
};
exports.BROWSERS = BROWSERS;
function isBrowser(browserName) {
return _platform2.default.name === browserName;
}
//endregion
return _platform.default.name === browserName;
} //endregion
{
"name": "domsuite",
"version": "0.4.1",
"version": "0.5.0",
"description": "Browser testing/automation utilities with async/await",
"main": "lib/index.js",
"main": "compiled/index.js",
"files": [

@@ -35,3 +35,4 @@ "compiled",

"dependencies": {
"lodash": "4.17.10",
"core-js": "3.21.1",
"lodash": "4.17.21",
"platform": "1.3.5",

@@ -41,12 +42,11 @@ "sinon": "6.1.5"

"devDependencies": {
"@babel/core": "7.1.2",
"babel-cli": "6.26.0",
"@babel/cli": "7.17.6",
"@babel/preset-env": "7.16.11",
"@babel/core": "7.17.8",
"wct-browser-legacy": "1.0.1",
"babel-loader": "8.0.4",
"babel-plugin-transform-object-rest-spread": "6.26.0",
"babel-preset-env": "1.7.0",
"wct-browser-legacy": "1.0.1",
"web-component-tester": "6.8.0",
"webpack": "4.20.2",
"webpack-cli": "3.1.2"
"webpack-cli": "3.1.2",
"web-component-tester": "6.8.0"
}
}
# domsuite
[![Build Status](https://travis-ci.com/mixpanel/domsuite.svg?branch=master)](https://travis-ci.com/mixpanel/domsuite)
![Build Status](https://github.com/mixpanel/domsuite/actions/workflows/tests.yml/badge.svg)

@@ -5,0 +5,0 @@ *Work In Progress*

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc