Skip to content

Commit be31579

Browse files
fix: toBeVisible edge case for style values (#1640)
1 parent 2f4568a commit be31579

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/matchers/__tests__/to-be-visible.test.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,3 +254,12 @@ test('toBeVisible() on non-React elements', () => {
254254
Received has value: true"
255255
`);
256256
});
257+
258+
test('toBeVisible() does not throw on invalid style', () => {
259+
// @ts-expect-error: intentionally passing invalid style to
260+
// trigger StyleSheet.flatten() returning undefined.
261+
render(<View testID="view" style={0} />);
262+
263+
const view = screen.getByTestId('view');
264+
expect(view).toBeVisible();
265+
});

src/matchers/to-be-visible.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ function isElementVisible(
5454
}
5555

5656
function isHiddenForStyles(element: ReactTestInstance) {
57-
const style = element.props.style ?? {};
58-
const { display, opacity } = StyleSheet.flatten(style);
59-
return display === 'none' || opacity === 0;
57+
const flatStyle = StyleSheet.flatten(element.props.style);
58+
return flatStyle?.display === 'none' || flatStyle?.opacity === 0;
6059
}

0 commit comments

Comments
 (0)