Skip to content

Commit dbd6753

Browse files
rhamiltoclaude
andcommitted
test(ResponsiveActions): use RTL conventions and remove unnecessary snapshots
Address PR review feedback: - Replace container.querySelector with screen.getByRole('button') queries - Remove snapshot tests from disabled state tests (structure is tested by other tests) - Remove container destructuring where no longer needed - Use toBeDisabled()/toBeEnabled() instead of toHaveAttribute('disabled') Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 52cb9a6 commit dbd6753

2 files changed

Lines changed: 16 additions & 335 deletions

File tree

packages/module/src/ResponsiveActions/ResponsiveActions.test.tsx

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { render } from '@testing-library/react';
1+
import { render, screen } from '@testing-library/react';
22
import ResponsiveActions from './ResponsiveActions';
33
import ResponsiveAction from '../ResponsiveAction';
44

@@ -58,69 +58,58 @@ describe('ResponsiveActions component', () => {
5858
});
5959

6060
test('ResponsiveActions with all dropdown items disabled should disable kebab', () => {
61-
const { container } = render(
61+
render(
6262
<ResponsiveActions breakpoint="lg">
6363
<ResponsiveAction isDisabled>Disabled action 1</ResponsiveAction>
6464
<ResponsiveAction isDisabled>Disabled action 2</ResponsiveAction>
6565
</ResponsiveActions>);
6666

67-
// Kebab toggle should be disabled when all dropdown items are disabled
68-
const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]');
69-
expect(kebabToggle).toHaveAttribute('disabled');
70-
expect(container).toMatchSnapshot();
67+
const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i });
68+
expect(kebabToggle).toBeDisabled();
7169
});
7270

7371
test('ResponsiveActions with some enabled dropdown items should not disable kebab', () => {
74-
const { container } = render(
72+
render(
7573
<ResponsiveActions breakpoint="lg">
7674
<ResponsiveAction isDisabled>Disabled action</ResponsiveAction>
7775
<ResponsiveAction>Enabled action</ResponsiveAction>
7876
</ResponsiveActions>);
7977

80-
// Kebab toggle should be enabled when at least one dropdown item is enabled
81-
const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]');
82-
expect(kebabToggle).not.toHaveAttribute('disabled');
83-
expect(container).toMatchSnapshot();
78+
const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i });
79+
expect(kebabToggle).toBeEnabled();
8480
});
8581

8682
test('ResponsiveActions with enabled pinned item and disabled regular item should disable kebab above breakpoint', () => {
87-
const { container } = render(
83+
render(
8884
<ResponsiveActions breakpoint="lg">
8985
<ResponsiveAction isPinned>Enabled pinned action</ResponsiveAction>
9086
<ResponsiveAction isDisabled>Disabled regular action</ResponsiveAction>
9187
</ResponsiveActions>);
9288

93-
// Above breakpoint: pinned items show as buttons, so kebab is disabled if regular items are disabled
94-
// (When resized below breakpoint, the pinned item moves into kebab and it becomes enabled)
95-
const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]');
96-
expect(kebabToggle).toHaveAttribute('disabled');
97-
expect(container).toMatchSnapshot();
89+
const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i });
90+
expect(kebabToggle).toBeDisabled();
9891
});
9992

10093
test('ResponsiveActions with enabled pinned item and enabled regular item should not disable kebab', () => {
101-
const { container } = render(
94+
render(
10295
<ResponsiveActions breakpoint="lg">
10396
<ResponsiveAction isPinned>Enabled pinned action</ResponsiveAction>
10497
<ResponsiveAction>Enabled regular action</ResponsiveAction>
10598
</ResponsiveActions>);
10699

107-
// Kebab should be enabled because there's an enabled regular action
108-
const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]');
109-
expect(kebabToggle).not.toHaveAttribute('disabled');
110-
expect(container).toMatchSnapshot();
100+
const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i });
101+
expect(kebabToggle).toBeEnabled();
111102
});
112103

113104
test('ResponsiveActions with all dropdown items disabled including pinned should disable kebab', () => {
114-
const { container } = render(
105+
render(
115106
<ResponsiveActions breakpoint="lg">
116107
<ResponsiveAction isPinned isDisabled>Disabled pinned action</ResponsiveAction>
117108
<ResponsiveAction isDisabled>Disabled action</ResponsiveAction>
118109
</ResponsiveActions>);
119110

120-
// Kebab toggle should be disabled when all dropdown items (including pinned) are disabled
121-
const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]');
122-
expect(kebabToggle).toHaveAttribute('disabled');
123-
expect(container).toMatchSnapshot();
111+
const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i });
112+
expect(kebabToggle).toBeDisabled();
124113
});
125114

126115
test('ResponsiveActions with only persistent items should not render kebab', () => {

0 commit comments

Comments
 (0)