feat: toHaveAccessibleErrorMessage should handle multiple aria-errormessage references

This commit is contained in:
Pengoose 2024-12-15 01:58:27 +09:00
parent b142f3138c
commit 5a3862750b

View file

@ -473,18 +473,15 @@ export function getElementAccessibleErrorMessage(element: Element): string {
if (isAriaInvalid) { if (isAriaInvalid) {
const errorMessageId = element.getAttribute('aria-errormessage'); const errorMessageId = element.getAttribute('aria-errormessage');
if (errorMessageId) { if (errorMessageId) {
// Ensure the ID is valid (no whitespace) const errorMessages = getIdRefs(element, errorMessageId);
if (!/\s+/.test(errorMessageId)) { if (errorMessages.length) {
// Retrieve the element referenced by aria-errormessage. const parts = errorMessages.map(errorMessage => asFlatString(
const errorElement = element.ownerDocument.getElementById(errorMessageId); getTextAlternativeInternal(errorMessage, {
if (errorElement) { visitedElements: new Set(),
accessibleErrorMessage = asFlatString( embeddedInDescribedBy: { element: errorMessage, hidden: isElementHiddenForAria(errorMessage) },
getTextAlternativeInternal(errorElement, { })
visitedElements: new Set(), ));
embeddedInDescribedBy: { element: errorElement, hidden: isElementHiddenForAria(errorElement) }, accessibleErrorMessage = parts.join(' ').trim();
})
);
}
} }
} }
} }