Skip to content

Commit 2741a21

Browse files
committed
fix some pr comments
1 parent facf11a commit 2741a21

4 files changed

Lines changed: 141 additions & 111 deletions

File tree

packages/eui/src/components/popover/__snapshots__/popover.rtl.test.tsx.snap

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ exports[`EuiPopover snapshot testing renders 1`] = `
77
class="euiPopover testClass1 testClass2 emotion-euiPopover-inline-block-euiTestCss"
88
data-test-subj="test subject string"
99
>
10-
<button />
10+
<button
11+
aria-expanded="false"
12+
/>
1113
</div>
1214
</div>
1315
</body>
@@ -20,7 +22,10 @@ exports[`EuiPopover snapshot testing renders with popover contents 1`] = `
2022
class="euiPopover euiPopover-isOpen testClass1 testClass2 emotion-euiPopover-inline-block-euiTestCss"
2123
data-test-subj="test subject string"
2224
>
23-
<button />
25+
<button
26+
aria-controls="euiPopover_generated-id_panelId"
27+
aria-expanded="true"
28+
/>
2429
</div>
2530
</div>
2631
<div

packages/eui/src/components/popover/__snapshots__/popover.test.tsx.snap

Lines changed: 65 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ exports[`EuiPopover children is rendered 1`] = `
55
class="euiPopover emotion-euiPopover-inline-block"
66
id="1"
77
>
8-
<button />
8+
<button
9+
aria-expanded="false"
10+
/>
911
</div>
1012
`;
1113

@@ -15,7 +17,9 @@ exports[`EuiPopover is rendered 1`] = `
1517
data-test-subj="test subject string"
1618
id="0"
1719
>
18-
<button />
20+
<button
21+
aria-expanded="false"
22+
/>
1923
</div>
2024
`;
2125

@@ -24,7 +28,9 @@ exports[`EuiPopover props anchorPosition defaults to centerDown 1`] = `
2428
class="euiPopover emotion-euiPopover-inline-block"
2529
id="5"
2630
>
27-
<button />
31+
<button
32+
aria-expanded="false"
33+
/>
2834
</div>
2935
`;
3036

@@ -33,7 +39,9 @@ exports[`EuiPopover props anchorPosition downRight is rendered 1`] = `
3339
class="euiPopover emotion-euiPopover-inline-block"
3440
id="7"
3541
>
36-
<button />
42+
<button
43+
aria-expanded="false"
44+
/>
3745
</div>
3846
`;
3947

@@ -42,7 +50,9 @@ exports[`EuiPopover props anchorPosition leftCenter is rendered 1`] = `
4250
class="euiPopover emotion-euiPopover-inline-block"
4351
id="6"
4452
>
45-
<button />
53+
<button
54+
aria-expanded="false"
55+
/>
4656
</div>
4757
`;
4858

@@ -52,7 +62,10 @@ exports[`EuiPopover props arrowChildren is rendered 1`] = `
5262
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
5363
id="19"
5464
>
55-
<button />
65+
<button
66+
aria-controls="euiPopover_generated-id_panelId"
67+
aria-expanded="true"
68+
/>
5669
<div
5770
data-focus-guard="true"
5871
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -98,7 +111,10 @@ exports[`EuiPopover props buffer 1`] = `
98111
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
99112
id="20"
100113
>
101-
<button />
114+
<button
115+
aria-controls="euiPopover_generated-id_panelId"
116+
aria-expanded="true"
117+
/>
102118
<div
103119
data-focus-guard="true"
104120
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -144,7 +160,10 @@ exports[`EuiPopover props buffer for all sides 1`] = `
144160
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
145161
id="21"
146162
>
147-
<button />
163+
<button
164+
aria-controls="euiPopover_generated-id_panelId"
165+
aria-expanded="true"
166+
/>
148167
<div
149168
data-focus-guard="true"
150169
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -189,7 +208,9 @@ exports[`EuiPopover props display block is rendered 1`] = `
189208
class="euiPopover emotion-euiPopover-block"
190209
id="2"
191210
>
192-
<button />
211+
<button
212+
aria-expanded="false"
213+
/>
193214
</div>
194215
`;
195216

@@ -199,7 +220,10 @@ exports[`EuiPopover props focusTrapProps is rendered 1`] = `
199220
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
200221
id="15"
201222
>
202-
<button />
223+
<button
224+
aria-controls="euiPopover_generated-id_panelId"
225+
aria-expanded="true"
226+
/>
203227
<div
204228
data-focus-guard="true"
205229
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -244,7 +268,9 @@ exports[`EuiPopover props isOpen defaults to false 1`] = `
244268
class="euiPopover emotion-euiPopover-inline-block"
245269
id="8"
246270
>
247-
<button />
271+
<button
272+
aria-expanded="false"
273+
/>
248274
</div>
249275
`;
250276

@@ -254,7 +280,10 @@ exports[`EuiPopover props isOpen renders true 1`] = `
254280
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
255281
id="9"
256282
>
257-
<button />
283+
<button
284+
aria-controls="euiPopover_generated-id_panelId"
285+
aria-expanded="true"
286+
/>
258287
<div
259288
data-focus-guard="true"
260289
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -300,7 +329,10 @@ exports[`EuiPopover props ownFocus defaults to true 1`] = `
300329
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
301330
id="10"
302331
>
303-
<button />
332+
<button
333+
aria-controls="euiPopover_generated-id_panelId"
334+
aria-expanded="true"
335+
/>
304336
<div
305337
data-focus-guard="true"
306338
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -346,7 +378,10 @@ exports[`EuiPopover props ownFocus renders false 1`] = `
346378
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
347379
id="11"
348380
>
349-
<button />
381+
<button
382+
aria-controls="euiPopover_generated-id_panelId"
383+
aria-expanded="true"
384+
/>
350385
<div
351386
data-focus-guard="true"
352387
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -383,7 +418,10 @@ exports[`EuiPopover props panelClassName is rendered 1`] = `
383418
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
384419
id="12"
385420
>
386-
<button />
421+
<button
422+
aria-controls="euiPopover_generated-id_panelId"
423+
aria-expanded="true"
424+
/>
387425
<div
388426
data-focus-guard="true"
389427
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -429,7 +467,10 @@ exports[`EuiPopover props panelPaddingSize is rendered 1`] = `
429467
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
430468
id="13"
431469
>
432-
<button />
470+
<button
471+
aria-controls="euiPopover_generated-id_panelId"
472+
aria-expanded="true"
473+
/>
433474
<div
434475
data-focus-guard="true"
435476
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -475,7 +516,10 @@ exports[`EuiPopover props panelProps is rendered 1`] = `
475516
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
476517
id="14"
477518
>
478-
<button />
519+
<button
520+
aria-controls="euiPopover_generated-id_panelId"
521+
aria-expanded="true"
522+
/>
479523
<div
480524
data-focus-guard="true"
481525
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"
@@ -522,7 +566,10 @@ exports[`EuiPopover props popoverScreenReaderText 1`] = `
522566
class="euiPopover euiPopover-isOpen emotion-euiPopover-inline-block"
523567
id="22"
524568
>
525-
<button />
569+
<button
570+
aria-controls="euiPopover_generated-id_panelId"
571+
aria-expanded="true"
572+
/>
526573
<div
527574
data-focus-guard="true"
528575
style="width: 1px; height: 0px; padding: 0px; overflow: hidden; position: fixed; top: 1px; left: 1px;"

packages/eui/src/components/popover/popover.test.tsx

Lines changed: 32 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -656,109 +656,71 @@ describe('EuiPopover', () => {
656656
});
657657
});
658658

659-
describe('aria attributes on toggle button', () => {
659+
describe('ARIA attributes on toggle button', () => {
660660
beforeAll(() => jest.useFakeTimers());
661661
afterAll(() => jest.useRealTimers());
662662

663-
it('sets aria-expanded=true and aria-controls attrs for button trigger', async () => {
664-
const toggleButton = <button data-test-subj="toggleButton" />;
663+
it('sets aria-expanded="false" and no aria-controls on initial render', async () => {
664+
const buttonTrigger = <button data-test-subj="buttonTrigger" />;
665665

666-
const { rerender, getByTestSubject } = render(
667-
<EuiPopover
668-
id={getId()}
669-
isOpen={false}
670-
button={toggleButton}
671-
closePopover={() => {}}
672-
/>
666+
const { getByTestSubject } = render(
667+
<EuiPopover button={buttonTrigger} closePopover={() => {}} />
673668
);
674669

675-
// Open the popover
676-
rerender(
670+
const button = getByTestSubject('buttonTrigger');
671+
expect(button).toHaveAttribute('aria-expanded', 'false');
672+
expect(button).not.toHaveAttribute('aria-controls');
673+
});
674+
675+
it('not set ARIA attributes for non-button triggers', async () => {
676+
const inputTrigger = <input data-test-subj="inputTrigger" />;
677+
678+
const { getByTestSubject } = render(
677679
<EuiPopover
678-
id={getId()}
679-
isOpen={true}
680-
button={toggleButton}
680+
button={inputTrigger}
681+
isOpen={false}
681682
closePopover={() => {}}
682683
/>
683684
);
684685

685-
actAdvanceTimersByTime(openingTransitionTime);
686-
await waitForEuiPopoverOpen();
687-
688-
const btn = getByTestSubject('toggleButton');
689-
expect(btn).toHaveAttribute('aria-expanded', 'true');
690-
// Should set aria-controls to the popover panel id
691-
expect(btn.getAttribute('aria-controls')).toBe(
692-
'euiPopover_generated-id_panelId'
693-
);
686+
const input = getByTestSubject('inputTrigger');
687+
expect(input).not.toHaveAttribute('aria-expanded');
688+
expect(input).not.toHaveAttribute('aria-controls');
694689
});
695690

696-
it('sets aria-expanded=false when closing', async () => {
697-
const toggleButton = <button data-test-subj="toggleButton" />;
691+
it('updates ARIA attributes to reflect the open state.', async () => {
692+
const buttonTrigger = <button data-test-subj="buttonTrigger" />;
698693

699-
const id = getId();
700694
const { rerender, getByTestSubject } = render(
701695
<EuiPopover
702-
id={id}
703696
isOpen={true}
704-
button={toggleButton}
705-
closePopover={() => {}}
706-
/>
707-
);
708-
709-
actAdvanceTimersByTime(openingTransitionTime);
710-
await waitForEuiPopoverOpen();
711-
712-
// Close the popover
713-
rerender(
714-
<EuiPopover
715-
id={id}
716-
isOpen={false}
717-
button={toggleButton}
697+
button={buttonTrigger}
718698
closePopover={() => {}}
719699
/>
720700
);
721701

722-
await waitForEuiPopoverClose();
723-
actAdvanceTimersByTime(closingTransitionTime);
702+
const button = getByTestSubject('buttonTrigger');
724703

725-
const btn = getByTestSubject('toggleButton');
726-
expect(btn).toHaveAttribute('aria-expanded', 'false');
727-
// aria-controls should remain set to a panel id string if previously set
728-
expect(btn.getAttribute('aria-controls')).toBe(
704+
expect(button).toHaveAttribute('aria-expanded', 'true');
705+
expect(button).toHaveAttribute(
706+
'aria-controls',
729707
'euiPopover_generated-id_panelId'
730708
);
731-
});
732709

733-
it('sets NOT set aria-expanded=true and aria-controls attrs for input trigger', async () => {
734-
const toggleButton = <input data-test-subj="triggerInput" />;
735-
736-
const { rerender, getByTestSubject } = render(
737-
<EuiPopover
738-
id={getId()}
739-
isOpen={false}
740-
button={toggleButton}
741-
closePopover={() => {}}
742-
/>
743-
);
744-
745-
// Open the popover
710+
// Close the popover
746711
rerender(
747712
<EuiPopover
748-
id={getId()}
749-
isOpen={true}
750-
button={toggleButton}
713+
isOpen={false}
714+
button={buttonTrigger}
751715
closePopover={() => {}}
752716
/>
753717
);
754718

755719
actAdvanceTimersByTime(openingTransitionTime);
756-
await waitForEuiPopoverOpen();
757-
758-
const btn = getByTestSubject('triggerInput');
720+
await waitForEuiPopoverClose();
759721

760-
expect(btn).not.toHaveAttribute('aria-expanded');
761-
expect(btn).not.toHaveAttribute('aria-controls');
722+
expect(button).toHaveAttribute('aria-expanded', 'false');
723+
expect(button).not.toHaveAttribute('aria-controls');
762724
});
763725
});
764726
});

0 commit comments

Comments
 (0)