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) {
const errorMessageId = element.getAttribute('aria-errormessage');
if (errorMessageId) {
// Ensure the ID is valid (no whitespace)
if (!/\s+/.test(errorMessageId)) {
// Retrieve the element referenced by aria-errormessage.
const errorElement = element.ownerDocument.getElementById(errorMessageId);
if (errorElement) {
accessibleErrorMessage = asFlatString(
getTextAlternativeInternal(errorElement, {
const errorMessages = getIdRefs(element, errorMessageId);
if (errorMessages.length) {
const parts = errorMessages.map(errorMessage => asFlatString(
getTextAlternativeInternal(errorMessage, {
visitedElements: new Set(),
embeddedInDescribedBy: { element: errorElement, hidden: isElementHiddenForAria(errorElement) },
embeddedInDescribedBy: { element: errorMessage, hidden: isElementHiddenForAria(errorMessage) },
})
);
}
));
accessibleErrorMessage = parts.join(' ').trim();
}
}
}