diff --git a/packages/blade/package.json b/packages/blade/package.json index 8f9eff3c4a4..34fbbb48f7a 100644 --- a/packages/blade/package.json +++ b/packages/blade/package.json @@ -75,7 +75,7 @@ "./coverage": { "default": { "types": "./coverage.d.ts", - "default": "./coverage.js" + "default": "./build/lib/web/production/utils/bladeCoverage.js" } } }, diff --git a/packages/blade/src/utils/bladeCoverage.d.ts b/packages/blade/src/utils/bladeCoverage.d.ts new file mode 100644 index 00000000000..009933a917b --- /dev/null +++ b/packages/blade/src/utils/bladeCoverage.d.ts @@ -0,0 +1,16 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +export function getBladeCoverage(): { + bladeCoverage: number; + totalNodes: number; + bladeNodes: number; +}; + +export function assertBladeCoverage({ + page, + expect, + threshold, +}: { + page: any; + expect: any; + threshold?: number; +}): Promise; diff --git a/packages/blade/coverage.js b/packages/blade/src/utils/bladeCoverage.ts similarity index 79% rename from packages/blade/coverage.js rename to packages/blade/src/utils/bladeCoverage.ts index 99d1ea29319..64fe0b2200d 100644 --- a/packages/blade/coverage.js +++ b/packages/blade/src/utils/bladeCoverage.ts @@ -1,8 +1,12 @@ -const getBladeCoverage = () => { +const getBladeCoverage = (): { + bladeCoverage: number; + totalNodes: number; + bladeNodes: number; +} => { /** * Checks if DOM node is hidden or not */ - const isElementHidden = (element) => { + const isElementHidden = (element: Element): boolean => { if (element.parentElement && isElementHidden(element.parentElement)) { return true; } @@ -19,7 +23,7 @@ const getBladeCoverage = () => { /** * Checks if DOM node is a media element or not */ - const isMediaElement = (element) => { + const isMediaElement = (element: Element): boolean => { const mediaTags = ['img', 'video', 'audio', 'source', 'picture']; return mediaTags.includes(element.tagName.toLowerCase()); }; @@ -27,7 +31,7 @@ const getBladeCoverage = () => { /** * Checks if DOM element is empty or not */ - const isElementEmpty = (element) => { + const isElementEmpty = (element: Element): boolean => { if (!element) return true; if (!element.childNodes.length) { return true; @@ -85,8 +89,18 @@ const getBladeCoverage = () => { }; }; -const assertBladeCoverage = async ({ page, expect, threshold = '70' }) => { - const { bladeCoverage } = await page.evaluate((coverageFnStr) => { +const assertBladeCoverage = async ({ + page, + expect, + threshold = 70, +}: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + page: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect: any; + threshold: number; +}): Promise => { + const { bladeCoverage } = await page.evaluate((coverageFnStr: string) => { // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func const calculateBladeCoverage = new Function(`return (${coverageFnStr})()`); return calculateBladeCoverage();