diff --git a/packages/react-native/Libraries/Components/Pressable/__tests__/Pressable-itest.js b/packages/react-native/Libraries/Components/Pressable/__tests__/Pressable-itest.js index e0634d1af85..12acadf31b7 100644 --- a/packages/react-native/Libraries/Components/Pressable/__tests__/Pressable-itest.js +++ b/packages/react-native/Libraries/Components/Pressable/__tests__/Pressable-itest.js @@ -45,6 +45,7 @@ describe('', () => { expect(root.getRenderedOutput().toJSX()).toEqual( ', () => { expect(root.getRenderedOutput().toJSX()).toEqual( , ); @@ -139,7 +141,9 @@ describe('', () => { expect(element.childNodes.length).toBe(1); expect(root.getRenderedOutput().toJSX()).toEqual( - + ', () => { expect(root.getRenderedOutput().toJSX()).toEqual( , ); @@ -48,10 +49,11 @@ describe('', () => { expect(root.getRenderedOutput().toJSX()).toEqual( , ); }); @@ -94,7 +96,11 @@ describe('', () => { root.render(React Native Logo); }); - expect(root.getRenderedOutput({props: ['^access']}).toJSX()).toEqual( + expect( + root + .getRenderedOutput({props: ['accessible', 'accessibilityLabel']}) + .toJSX(), + ).toEqual( ', () => { ); }); - expect(root.getRenderedOutput({props: ['^access']}).toJSX()).toEqual( + expect( + root + .getRenderedOutput({props: ['accessible', 'accessibilityLabel']}) + .toJSX(), + ).toEqual( , ); }); @@ -605,15 +615,15 @@ describe('', () => { ); }); - expect(root.getRenderedOutput().toJSX()).toEqual( + expect( + root + .getRenderedOutput({props: ['width', 'height', 'resizeMode']}) + .toJSX(), + ).toEqual( , ); }); diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h b/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h index 7a1e1679382..eb5232584ac 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityPrimitives.h @@ -12,6 +12,8 @@ #include #include +#include + namespace facebook::react { enum class AccessibilityTraits : uint32_t { @@ -91,7 +93,7 @@ struct AccessibilityState { bool selected{false}; bool busy{false}; std::optional expanded{std::nullopt}; - enum { Unchecked, Checked, Mixed, None } checked{None}; + enum CheckedState { Unchecked, Checked, Mixed, None } checked{None}; }; constexpr bool operator==( @@ -108,6 +110,29 @@ constexpr bool operator!=( return !(rhs == lhs); } +#if RN_DEBUG_STRING_CONVERTIBLE +inline std::string toString(AccessibilityState::CheckedState state) { + switch (state) { + case AccessibilityState::Unchecked: + return "Unchecked"; + case AccessibilityState::Checked: + return "Checked"; + case AccessibilityState::Mixed: + return "Mixed"; + case AccessibilityState::None: + return "None"; + } +} + +inline std::string toString(const AccessibilityState& accessibilityState) { + return "{disabled:" + toString(accessibilityState.disabled) + + ",selected:" + toString(accessibilityState.selected) + + ",checked:" + toString(accessibilityState.checked) + + ",busy:" + toString(accessibilityState.busy) + + ",expanded:" + toString(accessibilityState.expanded) + "}"; +} +#endif + struct AccessibilityLabelledBy { std::vector value{}; }; diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp index c3c0af47645..23915eac4db 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp @@ -320,6 +320,10 @@ SharedDebugStringConvertibleList AccessibilityProps::getDebugProps() const { "accessibilityActions", accessibilityActions, defaultProps.accessibilityActions), + debugStringConvertibleItem( + "accessibilityState", + accessibilityState, + defaultProps.accessibilityState), debugStringConvertibleItem( "accessibilityElementsHidden", accessibilityElementsHidden,