diff --git a/__tests__/src/rules/has-valid-accessibility-descriptors-test.js b/__tests__/src/rules/has-valid-accessibility-descriptors-test.js
index 9eb5af6..9ecf8b1 100644
--- a/__tests__/src/rules/has-valid-accessibility-descriptors-test.js
+++ b/__tests__/src/rules/has-valid-accessibility-descriptors-test.js
@@ -71,6 +71,9 @@ ruleTester.run('has-valid-accessibility-descriptors', rule, {
Back
`,
},
+ {
+ code: ``,
+ },
].map(parserOptionsMapper),
invalid: [
{
@@ -78,14 +81,14 @@ ruleTester.run('has-valid-accessibility-descriptors', rule, {
Back
`,
errors: [expectedError],
- output: `
+ output: `
Back
`,
},
{
code: ``,
errors: [expectedError],
- output: ``,
+ output: ``,
},
].map(parserOptionsMapper),
});
diff --git a/src/rules/has-valid-accessibility-descriptors.js b/src/rules/has-valid-accessibility-descriptors.js
index 1541060..4246dcb 100644
--- a/src/rules/has-valid-accessibility-descriptors.js
+++ b/src/rules/has-valid-accessibility-descriptors.js
@@ -19,6 +19,9 @@ const errorMessage =
const schema = generateObjSchema();
+const hasSpreadProps = (attributes) =>
+ attributes.some((attr) => attr.type === 'JSXSpreadAttribute');
+
module.exports = {
meta: {
docs: {},
@@ -35,7 +38,8 @@ module.exports = {
'accessibilityLabel',
'accessibilityActions',
'accessible',
- ])
+ ]) &&
+ !hasSpreadProps(node.attributes)
) {
context.report({
node,
@@ -44,7 +48,9 @@ module.exports = {
return fixer.insertTextAfterRange(
// $FlowFixMe
node.name.range,
- ' accessible={false}'
+ isTouchable(node, context)
+ ? ' accessibilityRole="button"'
+ : ' accessibilityLabel="Text input field"'
);
},
});