@@ -54,10 +54,7 @@ test.describe('Mouse Behavior', () => {
5454 const { driver : d } = await setup ( page , 'auto' ) ;
5555 //ask shai: is it good to use nth here???
5656 const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
57-
58- const firstPopoverTrigger = d . getTrigger ( ) . nth ( 0 ) ;
59-
60- const secondPopoverTrigger = d . getTrigger ( ) . nth ( 1 ) ;
57+ const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
6158
6259 await expect ( firstPopOver ) . toBeHidden ( ) ;
6360 await expect ( secondPopOver ) . toBeHidden ( ) ;
@@ -78,10 +75,7 @@ test.describe('Mouse Behavior', () => {
7875
7976 //ask shai: is it good to use nth here???
8077 const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
81-
82- const firstPopoverTrigger = d . getTrigger ( ) . nth ( 0 ) ;
83-
84- const secondPopoverTrigger = d . getTrigger ( ) . nth ( 1 ) ;
78+ const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
8579
8680 await expect ( firstPopOver ) . toBeHidden ( ) ;
8781 await expect ( secondPopOver ) . toBeHidden ( ) ;
@@ -95,21 +89,26 @@ test.describe('Mouse Behavior', () => {
9589
9690 test ( `GIVEN a pair of manual opened popovers
9791 WHEN clicking the first trigger on the page and then clicking the second trigger
98- THEN then both popovers should be opened ` , async ( { page } ) => {
92+ THEN then both popovers should be closed ` , async ( { page } ) => {
9993 const { driver : d } = await setup ( page , 'manual' ) ;
10094
101- //ask shai: is it good to use nth here???
10295 const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
10396 const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
10497
105- await expect ( firstPopOver ) . toBeHidden ( ) ;
106- await expect ( secondPopOver ) . toBeHidden ( ) ;
107-
98+ // Arrange
10899 await firstPopoverTrigger . click ( ) ;
109100 await secondPopoverTrigger . click ( ) ;
110101
111102 await expect ( firstPopOver ) . toBeVisible ( ) ;
112103 await expect ( secondPopOver ) . toBeVisible ( ) ;
104+
105+ // Act
106+ await firstPopoverTrigger . click ( ) ;
107+ await secondPopoverTrigger . click ( ) ;
108+
109+ // Assert
110+ await expect ( firstPopOver ) . toBeHidden ( ) ;
111+ await expect ( secondPopOver ) . toBeHidden ( ) ;
113112 } ) ;
114113} ) ;
115114
@@ -133,11 +132,8 @@ test.describe('Keyboard Behavior', () => {
133132 THEN the first popover should close and the second one appear` , async ( { page } ) => {
134133 const { driver : d } = await setup ( page , 'auto' ) ;
135134 //ask shai: is it good to use nth here???
136- const firstPopOver = d . getPopover ( ) . nth ( 0 ) ;
137- const firstPopoverTrigger = d . getTrigger ( ) . nth ( 0 ) ;
138-
139- const secondPopOver = d . getPopover ( ) . nth ( 1 ) ;
140- const secondPopoverTrigger = d . getTrigger ( ) . nth ( 1 ) ;
135+ const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
136+ const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
141137
142138 await expect ( firstPopOver ) . toBeHidden ( ) ;
143139 await expect ( secondPopOver ) . toBeHidden ( ) ;
@@ -153,4 +149,89 @@ test.describe('Keyboard Behavior', () => {
153149
154150 await expect ( firstPopOver ) . toBeHidden ( ) ;
155151 } ) ;
152+
153+ test ( `GIVEN a pair of manual popovers
154+ WHEN clicking the first trigger on the page and then clicking the second trigger
155+ THEN then both popovers should be opened` , async ( { page } ) => {
156+ const { driver : d } = await setup ( page , 'manual' ) ;
157+
158+ //ask shai: is it good to use nth here???
159+ const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
160+ const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
161+
162+ await expect ( firstPopOver ) . toBeHidden ( ) ;
163+ await expect ( secondPopOver ) . toBeHidden ( ) ;
164+
165+ await firstPopoverTrigger . focus ( ) ;
166+ await firstPopoverTrigger . press ( 'Enter' ) ;
167+
168+ await secondPopoverTrigger . focus ( ) ;
169+ await secondPopoverTrigger . press ( 'Enter' ) ;
170+
171+ await expect ( firstPopOver ) . toBeVisible ( ) ;
172+ await expect ( secondPopOver ) . toBeVisible ( ) ;
173+ } ) ;
174+
175+ test ( `GIVEN a pair of manual opened popovers
176+ WHEN clicking the first trigger on the page and then clicking the second trigger
177+ THEN then both popovers should be closed` , async ( { page } ) => {
178+ const { driver : d } = await setup ( page , 'manual' ) ;
179+
180+ const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
181+ const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
182+
183+ // Arrange
184+ await firstPopoverTrigger . focus ( ) ;
185+ await firstPopoverTrigger . press ( 'Enter' ) ;
186+
187+ await secondPopoverTrigger . focus ( ) ;
188+ await secondPopoverTrigger . press ( 'Enter' ) ;
189+
190+ await expect ( firstPopOver ) . toBeVisible ( ) ;
191+ await expect ( secondPopOver ) . toBeVisible ( ) ;
192+
193+ // Act
194+ await secondPopoverTrigger . press ( 'Enter' ) ;
195+
196+ await firstPopoverTrigger . focus ( ) ;
197+ await firstPopoverTrigger . press ( 'Enter' ) ;
198+
199+ // Assert
200+ await expect ( firstPopOver ) . toBeHidden ( ) ;
201+ await expect ( secondPopOver ) . toBeHidden ( ) ;
202+ } ) ;
203+
204+ test ( `GIVEN a programmatic popover
205+ WHEN focusing the button on the page and then typing 'o'
206+ THEN the popover should open` , async ( { page } ) => {
207+ const { driver : d } = await setup ( page , 'programmatic' ) ;
208+
209+ const popover = d . getPopover ( ) ;
210+ const programmaticButtonTrigger = d . getProgrammaticButtonTrigger ( ) ;
211+
212+ await expect ( popover ) . toBeHidden ( ) ;
213+
214+ await programmaticButtonTrigger . focus ( ) ;
215+ await programmaticButtonTrigger . press ( 'o' ) ;
216+
217+ await expect ( popover ) . toBeVisible ( ) ;
218+ } ) ;
219+
220+ test ( `GIVEN an open programmatic popover
221+ WHEN focusing the button on the page and then typing 'o'
222+ THEN the popover should close` , async ( { page } ) => {
223+ const { driver : d } = await setup ( page , 'programmatic' ) ;
224+
225+ const popover = d . getPopover ( ) ;
226+ const programmaticButtonTrigger = d . getProgrammaticButtonTrigger ( ) ;
227+
228+ await programmaticButtonTrigger . focus ( ) ;
229+ await programmaticButtonTrigger . press ( 'o' ) ;
230+
231+ await expect ( popover ) . toBeVisible ( ) ;
232+
233+ await programmaticButtonTrigger . press ( 'o' ) ;
234+
235+ await expect ( popover ) . toBeHidden ( ) ;
236+ } ) ;
156237} ) ;
0 commit comments