From a4f6d20cd7a3c5f29ff25e9fdb99969d65250a84 Mon Sep 17 00:00:00 2001 From: Sebas Cruz Date: Thu, 12 Mar 2026 10:11:00 -0500 Subject: [PATCH 1/2] Refactor: helpers file to isolate unctions --- packages/dom/src/lib/helpers/accessibility.ts | 30 +++++++++++++++ packages/dom/src/lib/helpers/dom.ts | 6 +++ .../src/lib/helpers/{helpers.ts => styles.ts} | 38 ------------------- 3 files changed, 36 insertions(+), 38 deletions(-) create mode 100644 packages/dom/src/lib/helpers/accessibility.ts create mode 100644 packages/dom/src/lib/helpers/dom.ts rename packages/dom/src/lib/helpers/{helpers.ts => styles.ts} (66%) diff --git a/packages/dom/src/lib/helpers/accessibility.ts b/packages/dom/src/lib/helpers/accessibility.ts new file mode 100644 index 0000000..355409a --- /dev/null +++ b/packages/dom/src/lib/helpers/accessibility.ts @@ -0,0 +1,30 @@ +function normalizeText(text: string): string { + return text.replace(/\s+/g, " ").trim(); +} + +export function getAccessibleDescription(actual: Element): string { + const ariaDescribedBy = actual.getAttribute("aria-describedby"); + + if (!ariaDescribedBy) { + return ""; + } + + const descriptionIds = ariaDescribedBy.split(/\s+/).filter(Boolean); + + const getElementText = (id: string): string | null => { + const element = actual.ownerDocument.getElementById(id); + + if (!element || !element.textContent) { + return null; + } + + return element.textContent; + }; + + const combinedText = descriptionIds + .map(getElementText) + .filter((text): text is string => text !== null) + .join(" "); + + return normalizeText(combinedText); +} diff --git a/packages/dom/src/lib/helpers/dom.ts b/packages/dom/src/lib/helpers/dom.ts new file mode 100644 index 0000000..57f57e8 --- /dev/null +++ b/packages/dom/src/lib/helpers/dom.ts @@ -0,0 +1,6 @@ +const COMMENT_NODE_TYPE = 8; + +export function isElementEmpty (element: Element): boolean { + const nonCommentChildNodes = [...element.childNodes].filter(child => child.nodeType !== COMMENT_NODE_TYPE); + return nonCommentChildNodes.length === 0; +} diff --git a/packages/dom/src/lib/helpers/helpers.ts b/packages/dom/src/lib/helpers/styles.ts similarity index 66% rename from packages/dom/src/lib/helpers/helpers.ts rename to packages/dom/src/lib/helpers/styles.ts index 7cabeaf..d178a8d 100644 --- a/packages/dom/src/lib/helpers/helpers.ts +++ b/packages/dom/src/lib/helpers/styles.ts @@ -3,8 +3,6 @@ interface StyleDeclaration extends Record { value: string; } -const COMMENT_NODE_TYPE = 8; - function normalizeStyles(css: Partial): StyleDeclaration { const normalizer = document.createElement("div"); document.body.appendChild(normalizer); @@ -75,39 +73,3 @@ export function getExpectedAndReceivedStyles elementProcessedStyle, ]; } - -export function isElementEmpty (element: Element): boolean { - const nonCommentChildNodes = [...element.childNodes].filter(child => child.nodeType !== COMMENT_NODE_TYPE); - return nonCommentChildNodes.length === 0; -} - -function normalizeText(text: string): string { - return text.replace(/\s+/g, " ").trim(); -} - -export function getAccessibleDescription(actual: Element): string { - const ariaDescribedBy = actual.getAttribute("aria-describedby"); - - if (!ariaDescribedBy) { - return ""; - } - - const descriptionIds = ariaDescribedBy.split(/\s+/).filter(Boolean); - - const getElementText = (id: string): string | null => { - const element = actual.ownerDocument.getElementById(id); - - if (!element || !element.textContent) { - return null; - } - - return element.textContent; - }; - - const combinedText = descriptionIds - .map(getElementText) - .filter((text): text is string => text !== null) - .join(" "); - - return normalizeText(combinedText); -} From f54621cbcf820d064270d296dd38f44f0839f516 Mon Sep 17 00:00:00 2001 From: Sebas Cruz Date: Thu, 12 Mar 2026 10:12:28 -0500 Subject: [PATCH 2/2] Add: imports from new helpers files --- packages/dom/src/lib/ElementAssertion.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/dom/src/lib/ElementAssertion.ts b/packages/dom/src/lib/ElementAssertion.ts index 2db0407..c8aae1b 100644 --- a/packages/dom/src/lib/ElementAssertion.ts +++ b/packages/dom/src/lib/ElementAssertion.ts @@ -1,7 +1,9 @@ import { Assertion, AssertionError } from "@assertive-ts/core"; import equal from "fast-deep-equal"; -import { getExpectedAndReceivedStyles, getAccessibleDescription, isElementEmpty } from "./helpers/helpers"; +import { getAccessibleDescription } from "./helpers/accessibility"; +import { isElementEmpty } from "./helpers/dom"; +import { getExpectedAndReceivedStyles } from "./helpers/styles"; export class ElementAssertion extends Assertion {