Skip to content

Commit

Permalink
refactor: move bladeCoverage file to utils
Browse files Browse the repository at this point in the history
  • Loading branch information
snitin315 committed Dec 14, 2023
1 parent d5e5f3d commit 1593735
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 7 deletions.
2 changes: 1 addition & 1 deletion packages/blade/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
"./coverage": {
"default": {
"types": "./coverage.d.ts",
"default": "./coverage.js"
"default": "./build/lib/web/production/utils/bladeCoverage.js"
}
}
},
Expand Down
16 changes: 16 additions & 0 deletions packages/blade/src/utils/bladeCoverage.d.ts
Original file line number Diff line number Diff line change
@@ -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<void>;
Original file line number Diff line number Diff line change
@@ -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;
}
Expand All @@ -19,15 +23,15 @@ 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());
};

/**
* 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;
Expand Down Expand Up @@ -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<void> => {
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();
Expand Down

0 comments on commit 1593735

Please sign in to comment.