@@ -21,7 +21,7 @@ test('@Visual diff', async ({ page }) => {
21
21
} ) ;
22
22
23
23
test . describe ( 'Mouse Behavior' , ( ) => {
24
- test ( `GIVEN a closed hero popover
24
+ test ( `GIVEN a closed popover
25
25
WHEN clicking on the trigger
26
26
THEN the popover should be opened ` , async ( { page } ) => {
27
27
const { driver : d } = await setup ( page , 'hero' ) ;
@@ -32,90 +32,90 @@ test.describe('Mouse Behavior', () => {
32
32
await expect ( d . getPopover ( ) ) . toBeVisible ( ) ;
33
33
} ) ;
34
34
35
- test ( `GIVEN an open hero popover
35
+ test ( `GIVEN an open popover
36
36
WHEN clicking elsewhere on the page
37
37
THEN the popover should close` , async ( { page } ) => {
38
38
const { driver : d } = await setup ( page , 'hero' ) ;
39
39
40
40
await expect ( d . getPopover ( ) ) . toBeHidden ( ) ;
41
41
await d . getTrigger ( ) . click ( ) ;
42
42
43
- // If I use `toBeVisible` here, the test fails that the `toBeHidden` check below????
44
- await expect ( d . getPopover ( ) ) . toHaveCSS ( 'opacity' , '1' ) ;
43
+ await expect ( d . getPopover ( ) ) . toBeVisible ( ) ;
45
44
46
45
await page . mouse . click ( 0 , 0 ) ;
47
46
48
47
await expect ( d . getPopover ( ) ) . toBeHidden ( ) ;
49
48
} ) ;
50
49
51
- test ( `GIVEN an open auto popover
50
+ test ( `GIVEN an open popover
52
51
WHEN clicking the first trigger on the page and then clicking the second trigger
53
52
THEN the first popover should close and the second one appear` , async ( { page } ) => {
54
53
const { driver : d } = await setup ( page , 'auto' ) ;
55
- //ask shai: is it good to use nth here???
56
- const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
57
- const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
58
54
59
- await expect ( firstPopOver ) . toBeHidden ( ) ;
60
- await expect ( secondPopOver ) . toBeHidden ( ) ;
55
+ const firstPopover = d . getPopover ( ) . nth ( 0 ) ;
56
+ const secondPopover = d . getPopover ( ) . nth ( 1 ) ;
57
+ const firstTrigger = d . getTrigger ( ) . nth ( 0 ) ;
58
+ const secondTrigger = d . getTrigger ( ) . nth ( 1 ) ;
61
59
62
- await firstPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
63
- await expect ( firstPopOver ) . toBeVisible ( ) ;
60
+ await expect ( firstPopover ) . toBeHidden ( ) ;
61
+ await expect ( secondPopover ) . toBeHidden ( ) ;
64
62
65
- await secondPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
66
- await expect ( secondPopOver ) . toBeVisible ( ) ;
63
+ await firstTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
64
+ await expect ( firstPopover ) . toBeVisible ( ) ;
67
65
68
- await expect ( firstPopOver ) . toBeHidden ( ) ;
66
+ await secondTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
67
+ await expect ( secondPopover ) . toBeVisible ( ) ;
68
+
69
+ await expect ( firstPopover ) . toBeHidden ( ) ;
69
70
} ) ;
70
71
71
72
test ( `GIVEN a pair of manual popovers
72
73
WHEN clicking the first trigger on the page and then clicking the second trigger
73
74
THEN then both popovers should be opened` , async ( { page } ) => {
74
75
const { driver : d } = await setup ( page , 'manual' ) ;
75
76
76
- //ask shai: is it good to use nth here???
77
- const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
78
- const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
77
+ const firstPopover = d . getPopover ( ) . nth ( 0 ) ;
78
+ const secondPopover = d . getPopover ( ) . nth ( 1 ) ;
79
+ const firstTrigger = d . getTrigger ( ) . nth ( 0 ) ;
80
+ const secondTrigger = d . getTrigger ( ) . nth ( 1 ) ;
79
81
80
- await expect ( firstPopOver ) . toBeHidden ( ) ;
81
- await expect ( secondPopOver ) . toBeHidden ( ) ;
82
+ await expect ( firstPopover ) . toBeHidden ( ) ;
83
+ await expect ( secondPopover ) . toBeHidden ( ) ;
82
84
83
- await firstPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
84
- await secondPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
85
+ await firstTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
86
+ await secondTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
85
87
86
- await expect ( firstPopOver ) . toBeVisible ( ) ;
87
- await expect ( secondPopOver ) . toBeVisible ( ) ;
88
+ await expect ( firstPopover ) . toBeVisible ( ) ;
89
+ await expect ( secondPopover ) . toBeVisible ( ) ;
88
90
} ) ;
89
91
90
92
test ( `GIVEN a pair of manual opened popovers
91
93
WHEN clicking the first trigger on the page and then clicking the second trigger
92
94
THEN then both popovers should be closed` , async ( { page } ) => {
93
95
const { driver : d } = await setup ( page , 'manual' ) ;
94
96
95
- const [ firstPopOver , secondPopOver ] = await d . getAllPopovers ( ) ;
96
- const [ firstPopoverTrigger , secondPopoverTrigger ] = await d . getAllTriggers ( ) ;
97
-
98
- // Arrange
99
- await firstPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
100
- await secondPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
97
+ const firstPopover = d . getPopover ( ) . nth ( 0 ) ;
98
+ const secondPopover = d . getPopover ( ) . nth ( 1 ) ;
99
+ const firstTrigger = d . getTrigger ( ) . nth ( 0 ) ;
100
+ const secondTrigger = d . getTrigger ( ) . nth ( 1 ) ;
101
101
102
- await expect ( firstPopOver ) . toBeVisible ( ) ;
103
- await expect ( secondPopOver ) . toBeVisible ( ) ;
102
+ await d . openPopover ( 'click' , 0 ) ;
103
+ await d . openPopover ( 'click' , 1 ) ;
104
104
105
105
// Need to be explicit about where we're clicking. By default
106
106
// the click action tries to click the center of the element
107
107
// but in this case, the popover is covering it.
108
- await firstPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
109
- await secondPopoverTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
108
+ await firstTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
109
+ await secondTrigger . click ( { position : { x : 1 , y : 1 } } ) ;
110
110
111
111
// Assert
112
- await expect ( firstPopOver ) . toBeHidden ( ) ;
113
- await expect ( secondPopOver ) . toBeHidden ( ) ;
112
+ await expect ( firstPopover ) . toBeHidden ( ) ;
113
+ await expect ( secondPopover ) . toBeHidden ( ) ;
114
114
} ) ;
115
115
116
- test ( `GIVEN a popover with placement set to top
117
- WHEN opening the popover
118
- THEN the popover should appear to the right of the trigger` , async ( { page } ) => {
116
+ test ( `GIVEN a popover with placement set to right
117
+ WHEN hovering over the popover
118
+ THEN the popover should appear to the right of the trigger` , async ( { page } ) => {
119
119
const { driver : d } = await setup ( page , 'placement' ) ;
120
120
121
121
const popover = d . getPopover ( ) ;
@@ -128,10 +128,11 @@ test.describe('Mouse Behavior', () => {
128
128
const popoverBoundingBox = await popover . boundingBox ( ) ;
129
129
const triggerBoundingBox = await trigger . boundingBox ( ) ;
130
130
131
- expect ( popoverBoundingBox ?. x ) . toBeGreaterThan (
131
+ const triggerRightEdge =
132
132
( triggerBoundingBox ?. x ?? Number . MAX_VALUE ) +
133
- ( triggerBoundingBox ?. width ?? Number . MAX_VALUE ) ,
134
- ) ;
133
+ ( triggerBoundingBox ?. width ?? Number . MAX_VALUE ) ;
134
+
135
+ expect ( popoverBoundingBox ?. x ) . toBeGreaterThan ( triggerRightEdge ) ;
135
136
} ) ;
136
137
137
138
test ( `GIVEN a popover with a gutter configured
@@ -149,10 +150,10 @@ test.describe('Mouse Behavior', () => {
149
150
const popoverBoundingBox = await popover . boundingBox ( ) ;
150
151
const triggerBoundingBox = await trigger . boundingBox ( ) ;
151
152
152
- expect (
153
+ const gutterSpace =
153
154
( triggerBoundingBox ?. y ?? 0 ) -
154
- ( ( popoverBoundingBox ?. y ?? 0 ) + ( popoverBoundingBox ?. height ?? 0 ) ) ,
155
- ) . toBe ( 40 ) ;
155
+ ( ( popoverBoundingBox ?. y ?? 0 ) + ( popoverBoundingBox ?. height ?? 0 ) ) ;
156
+ expect ( gutterSpace ) . toBe ( 40 ) ;
156
157
} ) ;
157
158
158
159
// test(`GIVEN a combobox with a flip configured
0 commit comments