@@ -21,7 +21,7 @@ test('@Visual diff', async ({ page }) => {
21
21
} ) ;
22
22
23
23
test . describe ( 'Mouse Behavior' , ( ) => {
24
- test ( `GIVEN a closed popover
24
+ test ( `GIVEN a closed hero 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' ) ;
@@ -31,4 +31,36 @@ test.describe('Mouse Behavior', () => {
31
31
32
32
await expect ( d . getPopover ( ) ) . toBeVisible ( ) ;
33
33
} ) ;
34
+
35
+ test ( `GIVEN an open hero popover
36
+ WHEN clicking elsewhere on the page
37
+ THEN the popover should close` , async ( { page } ) => {
38
+ const { driver : d } = await setup ( page , 'hero' ) ;
39
+
40
+ await expect ( d . getPopover ( ) ) . toBeHidden ( ) ;
41
+ await d . getTrigger ( ) . click ( ) ;
42
+
43
+ await expect ( d . getPopover ( ) ) . toBeVisible ( ) ;
44
+
45
+ await page . click ( 'body' , { position : { x : 0 , y : 0 } } ) ;
46
+ await page . click ( 'body' , { position : { x : 0 , y : 0 } } ) ;
47
+
48
+ await expect ( d . getPopover ( ) ) . toBeHidden ( ) ;
49
+ } ) ;
50
+ } ) ;
51
+
52
+ test . describe ( 'Keyboard Behavior' , ( ) => {
53
+ test ( `GIVEN a programmatic popover with a programmatic trigger
54
+ WHEN focusing on the button and pressing the 'o' key
55
+ THEN the popover should open` , async ( { page } ) => {
56
+ const { driver : d } = await setup ( page , 'programmatic' ) ;
57
+
58
+ await expect ( d . getPopover ( ) ) . toBeHidden ( ) ;
59
+
60
+ // Using `page` here because driver is scoped to the popover
61
+ await page . getByRole ( 'button' , { name : "Focus me and press the 'o'" } ) . focus ( ) ;
62
+ await page . keyboard . type ( 'o' ) ;
63
+
64
+ await expect ( d . getPopover ( ) ) . toBeVisible ( ) ;
65
+ } ) ;
34
66
} ) ;
0 commit comments