@@ -54,10 +54,7 @@ test.describe('Mouse Behavior', () => {
54
54
const { driver : d } = await setup ( page , 'auto' ) ;
55
55
//ask shai: is it good to use nth here???
56
56
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 ( ) ;
61
58
62
59
await expect ( firstPopOver ) . toBeHidden ( ) ;
63
60
await expect ( secondPopOver ) . toBeHidden ( ) ;
@@ -78,10 +75,7 @@ test.describe('Mouse Behavior', () => {
78
75
79
76
//ask shai: is it good to use nth here???
80
77
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 ( ) ;
85
79
86
80
await expect ( firstPopOver ) . toBeHidden ( ) ;
87
81
await expect ( secondPopOver ) . toBeHidden ( ) ;
@@ -95,21 +89,26 @@ test.describe('Mouse Behavior', () => {
95
89
96
90
test ( `GIVEN a pair of manual opened popovers
97
91
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 } ) => {
99
93
const { driver : d } = await setup ( page , 'manual' ) ;
100
94
101
- //ask shai: is it good to use nth here???
102
95
const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
103
96
const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
104
97
105
- await expect ( firstPopOver ) . toBeHidden ( ) ;
106
- await expect ( secondPopOver ) . toBeHidden ( ) ;
107
-
98
+ // Arrange
108
99
await firstPopoverTrigger . click ( ) ;
109
100
await secondPopoverTrigger . click ( ) ;
110
101
111
102
await expect ( firstPopOver ) . toBeVisible ( ) ;
112
103
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 ( ) ;
113
112
} ) ;
114
113
} ) ;
115
114
@@ -133,11 +132,8 @@ test.describe('Keyboard Behavior', () => {
133
132
THEN the first popover should close and the second one appear` , async ( { page } ) => {
134
133
const { driver : d } = await setup ( page , 'auto' ) ;
135
134
//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 ( ) ;
141
137
142
138
await expect ( firstPopOver ) . toBeHidden ( ) ;
143
139
await expect ( secondPopOver ) . toBeHidden ( ) ;
@@ -153,4 +149,89 @@ test.describe('Keyboard Behavior', () => {
153
149
154
150
await expect ( firstPopOver ) . toBeHidden ( ) ;
155
151
} ) ;
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
+ } ) ;
156
237
} ) ;
0 commit comments