react-native-accessibility-engine
Version:
Make accessibility-related assertions on React Native code using React Test Renderer
80 lines (68 loc) • 3.75 kB
JavaScript
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _assets = _interopRequireDefault(require("@tests/assets"));
var _engine = require("../engine");
var _pressableAccessibleRequired = _interopRequireDefault(require("../rules/pressable-accessible-required"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const NonAccessibleButton = () => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
accessible: false
}, /*#__PURE__*/_react.default.createElement(_reactNative.Image, {
source: _assets.default.filledHeart['32px']
}));
const Button = () => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
accessible: true,
accessibilityRole: "button",
accessibilityLabel: "Like"
}, /*#__PURE__*/_react.default.createElement(_reactNative.Image, {
source: _assets.default.filledHeart['32px']
}));
it('should contain accessibility errors', () => {
expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).not.toBeAccessible();
});
it('should not contain accessibility errors', () => {
expect( /*#__PURE__*/_react.default.createElement(Button, null)).toBeAccessible();
});
it('should report error if component is not accessible', () => {
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible()).toThrow();
});
it('should not report error if component is accessible', () => {
expect(() => expect( /*#__PURE__*/_react.default.createElement(Button, null)).not.toBeAccessible()).toThrow();
});
it('should always force returnViolations to be true', () => {
// returnViolations defaults to true
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible()).not.toThrow(_engine.AccessibilityError);
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible({
returnViolations: false
})).not.toThrow(_engine.AccessibilityError);
});
it('should allow configurable rules for a single run of jest matcher', () => {
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible({
rules: []
})).not.toThrow();
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible({
rules: ['pressable-accessible-required']
})).toThrow(_pressableAccessibleRequired.default.help.problem);
});
it('should allow custom handling for a single run of jest matcher', () => {
const testOverrideReturnFunctionality = () => [];
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible({
customViolationHandler: testOverrideReturnFunctionality
})).not.toThrow();
});
it('should allow configurable default rules for the jest matcher', () => {
global.__A11Y_RULES__ = [];
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible()).not.toThrow();
global.__A11Y_RULES__ = ['pressable-accessible-required'];
expect(() => expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).toBeAccessible()).toThrow(_pressableAccessibleRequired.default.help.problem);
});
it('should allow configurable default customViolationHandler for the jest matcher', () => {
const mockHandler = jest.fn();
global.__CUSTOM_VIOLATION_HANDLER__ = violations => {
mockHandler();
return violations;
};
expect( /*#__PURE__*/_react.default.createElement(NonAccessibleButton, null)).not.toBeAccessible();
expect(mockHandler).toHaveBeenCalled();
});
//# sourceMappingURL=toBeAccessible.test.js.map
;