@razorpay/blade 10.22.0 → 10.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/css/bankingThemeDarkDesktop.css +1 -1
- package/build/css/bankingThemeDarkMobile.css +1 -1
- package/build/css/bankingThemeLightDesktop.css +1 -1
- package/build/css/bankingThemeLightMobile.css +1 -1
- package/build/css/paymentThemeDarkDesktop.css +1 -1
- package/build/css/paymentThemeDarkMobile.css +1 -1
- package/build/css/paymentThemeLightDesktop.css +1 -1
- package/build/css/paymentThemeLightMobile.css +1 -1
- package/build/lib/web/development/utils/bladeCoverage.js +118 -0
- package/build/lib/web/development/utils/bladeCoverage.js.map +1 -0
- package/build/lib/web/production/utils/bladeCoverage.js +118 -0
- package/build/lib/web/production/utils/bladeCoverage.js.map +1 -0
- package/coverageUtils.d.ts +16 -0
- package/package.json +9 -2
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _typeof = require('@babel/runtime/helpers/typeof');
|
|
4
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
5
|
+
|
|
6
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
7
|
+
var getBladeCoverage = function getBladeCoverage() {
|
|
8
|
+
/**
|
|
9
|
+
* Checks if DOM node is hidden or not
|
|
10
|
+
*/
|
|
11
|
+
var isElementHidden = function isElementHidden(element) {
|
|
12
|
+
if (element.parentElement && isElementHidden(element.parentElement)) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
if (!(element instanceof HTMLElement)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
if (element.hidden) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
var style = getComputedStyle(element);
|
|
22
|
+
return style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0';
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Checks if DOM node is a media element or not
|
|
27
|
+
*/
|
|
28
|
+
var isMediaElement = function isMediaElement(element) {
|
|
29
|
+
var mediaTags = ['img', 'video', 'audio', 'source', 'picture'];
|
|
30
|
+
return mediaTags.includes(element.tagName.toLowerCase());
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Checks if DOM element is empty or not
|
|
35
|
+
*/
|
|
36
|
+
var isElementEmpty = function isElementEmpty(element) {
|
|
37
|
+
if (!element) return true;
|
|
38
|
+
if (!element.childNodes.length) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
};
|
|
43
|
+
var allDomElements = document.querySelectorAll('body *');
|
|
44
|
+
var bladeNodeElements = [];
|
|
45
|
+
var totalNodeElements = [];
|
|
46
|
+
allDomElements.forEach(function (elm) {
|
|
47
|
+
if (isElementHidden(elm)) return;
|
|
48
|
+
if (isElementEmpty(elm)) return;
|
|
49
|
+
if (isMediaElement(elm)) return;
|
|
50
|
+
|
|
51
|
+
// skip svg nodes but not blade icons
|
|
52
|
+
var closestSvgNode = elm.closest('svg');
|
|
53
|
+
// if this is a blade icon then add it
|
|
54
|
+
if (elm.tagName.toLocaleLowerCase() === 'svg' && elm.hasAttribute('data-blade-component')) {
|
|
55
|
+
bladeNodeElements.push(elm);
|
|
56
|
+
totalNodeElements.push(elm);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// if it's a svg node inside a blade icon then skip it
|
|
60
|
+
if ((closestSvgNode === null || closestSvgNode === void 0 ? void 0 : closestSvgNode.getAttribute('data-blade-component')) === 'icon') {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// if it's a svg node but not a blade icon then skip it
|
|
64
|
+
if (closestSvgNode && !elm.hasAttribute('data-blade-component')) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
totalNodeElements.push(elm);
|
|
68
|
+
|
|
69
|
+
// If element has data-blade-component add it
|
|
70
|
+
if (elm.hasAttribute('data-blade-component')) {
|
|
71
|
+
bladeNodeElements.push(elm);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
var totalNodes = totalNodeElements.length;
|
|
75
|
+
var bladeNodes = bladeNodeElements.length;
|
|
76
|
+
var bladeCoverage = Number((bladeNodes / totalNodes * 100).toFixed(2));
|
|
77
|
+
// NaN guard
|
|
78
|
+
if (totalNodes === 0) {
|
|
79
|
+
bladeCoverage = 0;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
bladeCoverage: bladeCoverage,
|
|
83
|
+
totalNodes: totalNodes,
|
|
84
|
+
bladeNodes: bladeNodes
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
var assertBladeCoverage = /*#__PURE__*/function () {
|
|
88
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
|
|
89
|
+
var page, expect, _ref$threshold, threshold, _yield$page$evaluate, bladeCoverage;
|
|
90
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
91
|
+
while (1) switch (_context.prev = _context.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
page = _ref.page, expect = _ref.expect, _ref$threshold = _ref.threshold, threshold = _ref$threshold === void 0 ? 70 : _ref$threshold;
|
|
94
|
+
_context.next = 3;
|
|
95
|
+
return page.evaluate(function (coverageFnStr) {
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
|
|
97
|
+
var calculateBladeCoverage = new Function("return (".concat(coverageFnStr, ")()"));
|
|
98
|
+
return calculateBladeCoverage();
|
|
99
|
+
}, getBladeCoverage.toString());
|
|
100
|
+
case 3:
|
|
101
|
+
_yield$page$evaluate = _context.sent;
|
|
102
|
+
bladeCoverage = _yield$page$evaluate.bladeCoverage;
|
|
103
|
+
expect(bladeCoverage).toBeGreaterThanOrEqual(threshold);
|
|
104
|
+
case 6:
|
|
105
|
+
case "end":
|
|
106
|
+
return _context.stop();
|
|
107
|
+
}
|
|
108
|
+
}, _callee);
|
|
109
|
+
}));
|
|
110
|
+
return function assertBladeCoverage(_x) {
|
|
111
|
+
return _ref2.apply(this, arguments);
|
|
112
|
+
};
|
|
113
|
+
}();
|
|
114
|
+
module.exports = {
|
|
115
|
+
getBladeCoverage: getBladeCoverage,
|
|
116
|
+
assertBladeCoverage: assertBladeCoverage
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=bladeCoverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bladeCoverage.js","sources":["../../../../../src/utils/bladeCoverage.ts"],"sourcesContent":["const getBladeCoverage = (): {\n bladeCoverage: number;\n totalNodes: number;\n bladeNodes: number;\n} => {\n /**\n * Checks if DOM node is hidden or not\n */\n const isElementHidden = (element: Element): boolean => {\n if (element.parentElement && isElementHidden(element.parentElement)) {\n return true;\n }\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n if (element.hidden) {\n return true;\n }\n const style = getComputedStyle(element);\n return style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0';\n };\n\n /**\n * Checks if DOM node is a media element or not\n */\n const isMediaElement = (element: Element): boolean => {\n const mediaTags = ['img', 'video', 'audio', 'source', 'picture'];\n return mediaTags.includes(element.tagName.toLowerCase());\n };\n\n /**\n * Checks if DOM element is empty or not\n */\n const isElementEmpty = (element: Element): boolean => {\n if (!element) return true;\n if (!element.childNodes.length) {\n return true;\n }\n return false;\n };\n\n const allDomElements = document.querySelectorAll('body *');\n\n const bladeNodeElements = [];\n const totalNodeElements = [];\n\n allDomElements.forEach((elm) => {\n if (isElementHidden(elm)) return;\n if (isElementEmpty(elm)) return;\n if (isMediaElement(elm)) return;\n\n // skip svg nodes but not blade icons\n const closestSvgNode = elm.closest('svg');\n // if this is a blade icon then add it\n if (elm.tagName.toLocaleLowerCase() === 'svg' && elm.hasAttribute('data-blade-component')) {\n bladeNodeElements.push(elm);\n totalNodeElements.push(elm);\n return;\n }\n // if it's a svg node inside a blade icon then skip it\n if (closestSvgNode?.getAttribute('data-blade-component') === 'icon') {\n return;\n }\n // if it's a svg node but not a blade icon then skip it\n if (closestSvgNode && !elm.hasAttribute('data-blade-component')) {\n return;\n }\n\n totalNodeElements.push(elm);\n\n // If element has data-blade-component add it\n if (elm.hasAttribute('data-blade-component')) {\n bladeNodeElements.push(elm);\n }\n });\n\n const totalNodes = totalNodeElements.length;\n const bladeNodes = bladeNodeElements.length;\n let bladeCoverage = Number(((bladeNodes / totalNodes) * 100).toFixed(2));\n // NaN guard\n if (totalNodes === 0) {\n bladeCoverage = 0;\n }\n\n return {\n bladeCoverage,\n totalNodes,\n bladeNodes,\n };\n};\n\nconst assertBladeCoverage = async ({\n page,\n expect,\n threshold = 70,\n}: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n page: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect: any;\n threshold: number;\n}): Promise<void> => {\n const { bladeCoverage } = await page.evaluate((coverageFnStr: string) => {\n // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func\n const calculateBladeCoverage = new Function(`return (${coverageFnStr})()`);\n return calculateBladeCoverage();\n }, getBladeCoverage.toString());\n\n expect(bladeCoverage).toBeGreaterThanOrEqual(threshold);\n};\n\nmodule.exports = { getBladeCoverage, assertBladeCoverage };\n"],"names":["_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","getBladeCoverage","isElementHidden","element","parentElement","HTMLElement","hidden","style","getComputedStyle","display","visibility","opacity","isMediaElement","mediaTags","includes","tagName","toLowerCase","isElementEmpty","childNodes","allDomElements","document","querySelectorAll","bladeNodeElements","totalNodeElements","elm","closestSvgNode","closest","toLocaleLowerCase","hasAttribute","getAttribute","totalNodes","bladeNodes","bladeCoverage","Number","toFixed","assertBladeCoverage","_ref2","_asyncToGenerator","_callee","_ref","page","expect","_ref$threshold","threshold","_yield$page$evaluate","_callee$","_context","evaluate","coverageFnStr","calculateBladeCoverage","Function","concat","toString","toBeGreaterThanOrEqual","_x","apply","arguments","module"],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _typeof = require('@babel/runtime/helpers/typeof');
|
|
4
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
5
|
+
|
|
6
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
7
|
+
var getBladeCoverage = function getBladeCoverage() {
|
|
8
|
+
/**
|
|
9
|
+
* Checks if DOM node is hidden or not
|
|
10
|
+
*/
|
|
11
|
+
var isElementHidden = function isElementHidden(element) {
|
|
12
|
+
if (element.parentElement && isElementHidden(element.parentElement)) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
if (!(element instanceof HTMLElement)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
if (element.hidden) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
var style = getComputedStyle(element);
|
|
22
|
+
return style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0';
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Checks if DOM node is a media element or not
|
|
27
|
+
*/
|
|
28
|
+
var isMediaElement = function isMediaElement(element) {
|
|
29
|
+
var mediaTags = ['img', 'video', 'audio', 'source', 'picture'];
|
|
30
|
+
return mediaTags.includes(element.tagName.toLowerCase());
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Checks if DOM element is empty or not
|
|
35
|
+
*/
|
|
36
|
+
var isElementEmpty = function isElementEmpty(element) {
|
|
37
|
+
if (!element) return true;
|
|
38
|
+
if (!element.childNodes.length) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
};
|
|
43
|
+
var allDomElements = document.querySelectorAll('body *');
|
|
44
|
+
var bladeNodeElements = [];
|
|
45
|
+
var totalNodeElements = [];
|
|
46
|
+
allDomElements.forEach(function (elm) {
|
|
47
|
+
if (isElementHidden(elm)) return;
|
|
48
|
+
if (isElementEmpty(elm)) return;
|
|
49
|
+
if (isMediaElement(elm)) return;
|
|
50
|
+
|
|
51
|
+
// skip svg nodes but not blade icons
|
|
52
|
+
var closestSvgNode = elm.closest('svg');
|
|
53
|
+
// if this is a blade icon then add it
|
|
54
|
+
if (elm.tagName.toLocaleLowerCase() === 'svg' && elm.hasAttribute('data-blade-component')) {
|
|
55
|
+
bladeNodeElements.push(elm);
|
|
56
|
+
totalNodeElements.push(elm);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// if it's a svg node inside a blade icon then skip it
|
|
60
|
+
if ((closestSvgNode === null || closestSvgNode === void 0 ? void 0 : closestSvgNode.getAttribute('data-blade-component')) === 'icon') {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// if it's a svg node but not a blade icon then skip it
|
|
64
|
+
if (closestSvgNode && !elm.hasAttribute('data-blade-component')) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
totalNodeElements.push(elm);
|
|
68
|
+
|
|
69
|
+
// If element has data-blade-component add it
|
|
70
|
+
if (elm.hasAttribute('data-blade-component')) {
|
|
71
|
+
bladeNodeElements.push(elm);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
var totalNodes = totalNodeElements.length;
|
|
75
|
+
var bladeNodes = bladeNodeElements.length;
|
|
76
|
+
var bladeCoverage = Number((bladeNodes / totalNodes * 100).toFixed(2));
|
|
77
|
+
// NaN guard
|
|
78
|
+
if (totalNodes === 0) {
|
|
79
|
+
bladeCoverage = 0;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
bladeCoverage: bladeCoverage,
|
|
83
|
+
totalNodes: totalNodes,
|
|
84
|
+
bladeNodes: bladeNodes
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
var assertBladeCoverage = /*#__PURE__*/function () {
|
|
88
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
|
|
89
|
+
var page, expect, _ref$threshold, threshold, _yield$page$evaluate, bladeCoverage;
|
|
90
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
91
|
+
while (1) switch (_context.prev = _context.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
page = _ref.page, expect = _ref.expect, _ref$threshold = _ref.threshold, threshold = _ref$threshold === void 0 ? 70 : _ref$threshold;
|
|
94
|
+
_context.next = 3;
|
|
95
|
+
return page.evaluate(function (coverageFnStr) {
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func
|
|
97
|
+
var calculateBladeCoverage = new Function("return (".concat(coverageFnStr, ")()"));
|
|
98
|
+
return calculateBladeCoverage();
|
|
99
|
+
}, getBladeCoverage.toString());
|
|
100
|
+
case 3:
|
|
101
|
+
_yield$page$evaluate = _context.sent;
|
|
102
|
+
bladeCoverage = _yield$page$evaluate.bladeCoverage;
|
|
103
|
+
expect(bladeCoverage).toBeGreaterThanOrEqual(threshold);
|
|
104
|
+
case 6:
|
|
105
|
+
case "end":
|
|
106
|
+
return _context.stop();
|
|
107
|
+
}
|
|
108
|
+
}, _callee);
|
|
109
|
+
}));
|
|
110
|
+
return function assertBladeCoverage(_x) {
|
|
111
|
+
return _ref2.apply(this, arguments);
|
|
112
|
+
};
|
|
113
|
+
}();
|
|
114
|
+
module.exports = {
|
|
115
|
+
getBladeCoverage: getBladeCoverage,
|
|
116
|
+
assertBladeCoverage: assertBladeCoverage
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=bladeCoverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bladeCoverage.js","sources":["../../../../../src/utils/bladeCoverage.ts"],"sourcesContent":["const getBladeCoverage = (): {\n bladeCoverage: number;\n totalNodes: number;\n bladeNodes: number;\n} => {\n /**\n * Checks if DOM node is hidden or not\n */\n const isElementHidden = (element: Element): boolean => {\n if (element.parentElement && isElementHidden(element.parentElement)) {\n return true;\n }\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n if (element.hidden) {\n return true;\n }\n const style = getComputedStyle(element);\n return style.display === 'none' || style.visibility === 'hidden' || style.opacity === '0';\n };\n\n /**\n * Checks if DOM node is a media element or not\n */\n const isMediaElement = (element: Element): boolean => {\n const mediaTags = ['img', 'video', 'audio', 'source', 'picture'];\n return mediaTags.includes(element.tagName.toLowerCase());\n };\n\n /**\n * Checks if DOM element is empty or not\n */\n const isElementEmpty = (element: Element): boolean => {\n if (!element) return true;\n if (!element.childNodes.length) {\n return true;\n }\n return false;\n };\n\n const allDomElements = document.querySelectorAll('body *');\n\n const bladeNodeElements = [];\n const totalNodeElements = [];\n\n allDomElements.forEach((elm) => {\n if (isElementHidden(elm)) return;\n if (isElementEmpty(elm)) return;\n if (isMediaElement(elm)) return;\n\n // skip svg nodes but not blade icons\n const closestSvgNode = elm.closest('svg');\n // if this is a blade icon then add it\n if (elm.tagName.toLocaleLowerCase() === 'svg' && elm.hasAttribute('data-blade-component')) {\n bladeNodeElements.push(elm);\n totalNodeElements.push(elm);\n return;\n }\n // if it's a svg node inside a blade icon then skip it\n if (closestSvgNode?.getAttribute('data-blade-component') === 'icon') {\n return;\n }\n // if it's a svg node but not a blade icon then skip it\n if (closestSvgNode && !elm.hasAttribute('data-blade-component')) {\n return;\n }\n\n totalNodeElements.push(elm);\n\n // If element has data-blade-component add it\n if (elm.hasAttribute('data-blade-component')) {\n bladeNodeElements.push(elm);\n }\n });\n\n const totalNodes = totalNodeElements.length;\n const bladeNodes = bladeNodeElements.length;\n let bladeCoverage = Number(((bladeNodes / totalNodes) * 100).toFixed(2));\n // NaN guard\n if (totalNodes === 0) {\n bladeCoverage = 0;\n }\n\n return {\n bladeCoverage,\n totalNodes,\n bladeNodes,\n };\n};\n\nconst assertBladeCoverage = async ({\n page,\n expect,\n threshold = 70,\n}: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n page: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect: any;\n threshold: number;\n}): Promise<void> => {\n const { bladeCoverage } = await page.evaluate((coverageFnStr: string) => {\n // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func\n const calculateBladeCoverage = new Function(`return (${coverageFnStr})()`);\n return calculateBladeCoverage();\n }, getBladeCoverage.toString());\n\n expect(bladeCoverage).toBeGreaterThanOrEqual(threshold);\n};\n\nmodule.exports = { getBladeCoverage, assertBladeCoverage };\n"],"names":["_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","key","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","getBladeCoverage","isElementHidden","element","parentElement","HTMLElement","hidden","style","getComputedStyle","display","visibility","opacity","isMediaElement","mediaTags","includes","tagName","toLowerCase","isElementEmpty","childNodes","allDomElements","document","querySelectorAll","bladeNodeElements","totalNodeElements","elm","closestSvgNode","closest","toLocaleLowerCase","hasAttribute","getAttribute","totalNodes","bladeNodes","bladeCoverage","Number","toFixed","assertBladeCoverage","_ref2","_asyncToGenerator","_callee","_ref","page","expect","_ref$threshold","threshold","_yield$page$evaluate","_callee$","_context","evaluate","coverageFnStr","calculateBladeCoverage","Function","concat","toString","toBeGreaterThanOrEqual","_x","apply","arguments","module"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
export function getBladeCoverage(): {
|
|
3
|
+
bladeCoverage: number;
|
|
4
|
+
totalNodes: number;
|
|
5
|
+
bladeNodes: number;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export function assertBladeCoverage({
|
|
9
|
+
page,
|
|
10
|
+
expect,
|
|
11
|
+
threshold,
|
|
12
|
+
}: {
|
|
13
|
+
page: any;
|
|
14
|
+
expect: any;
|
|
15
|
+
threshold?: number;
|
|
16
|
+
}): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@razorpay/blade",
|
|
3
3
|
"description": "The Design System that powers Razorpay",
|
|
4
|
-
"version": "10.
|
|
4
|
+
"version": "10.23.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=18.12.1"
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"tokens.native.js",
|
|
25
25
|
"utils.d.ts",
|
|
26
26
|
"utils.js",
|
|
27
|
-
"utils.native.js"
|
|
27
|
+
"utils.native.js",
|
|
28
|
+
"coverageUtils.d.ts"
|
|
28
29
|
],
|
|
29
30
|
"keywords": [
|
|
30
31
|
"design system",
|
|
@@ -69,6 +70,12 @@
|
|
|
69
70
|
"production": "./build/lib/web/production/utils/index.js",
|
|
70
71
|
"default": "./build/lib/web/production/utils/index.js"
|
|
71
72
|
}
|
|
73
|
+
},
|
|
74
|
+
"./coverageUtils": {
|
|
75
|
+
"default": {
|
|
76
|
+
"types": "./coverageUtils.d.ts",
|
|
77
|
+
"default": "./build/lib/web/production/utils/bladeCoverage.js"
|
|
78
|
+
}
|
|
72
79
|
}
|
|
73
80
|
},
|
|
74
81
|
"scripts": {
|