You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.2 KiB
33 lines
1.2 KiB
"use strict"; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
exports.toHaveAccessibleName = toHaveAccessibleName; |
|
|
|
var _domAccessibilityApi = require("dom-accessibility-api"); |
|
|
|
var _utils = require("./utils"); |
|
|
|
function toHaveAccessibleName(htmlElement, expectedAccessibleName) { |
|
(0, _utils.checkHtmlElement)(htmlElement, toHaveAccessibleName, this); |
|
const actualAccessibleName = (0, _domAccessibilityApi.computeAccessibleName)(htmlElement); |
|
const missingExpectedValue = arguments.length === 1; |
|
let pass = false; |
|
|
|
if (missingExpectedValue) { |
|
// When called without an expected value we only want to validate that the element has an |
|
// accessible name, whatever it may be. |
|
pass = actualAccessibleName !== ''; |
|
} else { |
|
pass = expectedAccessibleName instanceof RegExp ? expectedAccessibleName.test(actualAccessibleName) : this.equals(actualAccessibleName, expectedAccessibleName); |
|
} |
|
|
|
return { |
|
pass, |
|
message: () => { |
|
const to = this.isNot ? 'not to' : 'to'; |
|
return (0, _utils.getMessage)(this, this.utils.matcherHint(`${this.isNot ? '.not' : ''}.${toHaveAccessibleName.name}`, 'element', ''), `Expected element ${to} have accessible name`, expectedAccessibleName, 'Received', actualAccessibleName); |
|
} |
|
}; |
|
} |