1+ import Button from "../../src/Button.js" ;
2+ import ResponsivePopover from "../../src/ResponsivePopover.js" ;
3+
4+ describe ( "ResponsivePopover general interaction" , ( ) => {
5+ it ( "header and footer are displayed by default" , ( ) => {
6+ cy . mount (
7+ < >
8+ < Button id = "btnOpen" />
9+ < ResponsivePopover opener = { "btnOpen" } >
10+ < div slot = "header" />
11+ < div slot = "footer" />
12+ </ ResponsivePopover >
13+ </ >
14+ ) ;
15+
16+ cy . get ( "[ui5-responsive-popover]" ) . invoke ( "attr" , "open" , true ) ;
17+ cy . get < ResponsivePopover > ( "[ui5-responsive-popover]" ) . ui5ResponsivePopoverOpened ( ) ;
18+
19+ cy . get ( "[ui5-responsive-popover]" )
20+ . shadow ( )
21+ . find ( ".ui5-popup-header-root" )
22+ . should ( "exist" ) ;
23+
24+ cy . get ( "[ui5-responsive-popover]" )
25+ . shadow ( )
26+ . find ( ".ui5-popup-footer-root" )
27+ . should ( "exist" ) ;
28+ } ) ;
29+
30+ it ( "header and footer are hidden on desktop" , ( ) => {
31+ cy . mount (
32+ < >
33+ < Button id = "btnOpen3" />
34+ < ResponsivePopover contentOnlyOnDesktop = { true } opener = "btnOpen3" >
35+ < div slot = "header" />
36+ </ ResponsivePopover >
37+ </ >
38+ ) ;
39+
40+ cy . get ( "[ui5-responsive-popover]" ) . invoke ( "attr" , "open" , true ) ;
41+
42+ cy . get < ResponsivePopover > ( "[ui5-responsive-popover]" ) . ui5ResponsivePopoverOpened ( ) ;
43+ cy . get ( "[ui5-responsive-popover]" ) . shadow ( ) . find ( ".ui5-popup-header-root" ) . should ( "not.exist" ) ;
44+ } ) ;
45+
46+ it ( "Initial focus NOT prevented" , ( ) => {
47+ cy . mount (
48+ < >
49+ < Button id = "btnInitialFocus" />
50+ < ResponsivePopover opener = { "btnInitialFocus" } />
51+ </ >
52+ ) ;
53+
54+ cy . get ( "[ui5-responsive-popover]" ) . invoke ( "attr" , "open" , true ) ;
55+ cy . get < ResponsivePopover > ( "[ui5-responsive-popover]" ) . ui5ResponsivePopoverOpened ( ) ;
56+
57+ cy . get ( "[ui5-responsive-popover]" ) . should ( "have.focus" ) ;
58+ cy . get ( "[ui5-button]" ) . should ( "not.have.focus" ) ;
59+ } ) ;
60+
61+ it ( "Initial focus prevented" , ( ) => {
62+ cy . mount (
63+ < >
64+ < Button id = "btnInitialFocusPrevented" />
65+ < ResponsivePopover preventInitialFocus = { true } opener = { "btnInitialFocusPrevented" } />
66+ </ >
67+ ) ;
68+
69+ cy . get ( "[ui5-button]" ) . realClick ( ) ;
70+
71+ cy . get ( "[ui5-responsive-popover]" ) . invoke ( "attr" , "open" , true ) ;
72+ cy . get < ResponsivePopover > ( "[ui5-responsive-popover]" ) . ui5ResponsivePopoverOpened ( ) ;
73+
74+ cy . get ( "[ui5-button]" ) . should ( "have.focus" ) ;
75+ } ) ;
76+
77+ it ( "tests popover toggling with 'open' attribute" , ( ) => {
78+ cy . mount (
79+ < >
80+ < Button id = "btnInitialFocusPrevented" />
81+ < ResponsivePopover opener = { "btnInitialFocusPrevented" } />
82+ </ >
83+ ) ;
84+
85+ cy . get ( "[ui5-responsive-popover]" ) . invoke ( "attr" , "open" , true ) ;
86+ cy . get < ResponsivePopover > ( "[ui5-responsive-popover]" ) . ui5ResponsivePopoverOpened ( ) ;
87+
88+ cy . get ( "[ui5-responsive-popover]" ) . invoke ( "attr" , "open" , false ) ;
89+ cy . get < ResponsivePopover > ( "[ui5-responsive-popover]" ) . ui5ResponsivePopoverClosed ( ) ;
90+ } ) ;
91+ } ) ;
92+
93+ describe ( "Acc" , ( ) => {
94+ it ( "tests accessible-role=Dialog" , ( ) => {
95+ cy . mount ( < ResponsivePopover id = "respPopover" /> ) ;
96+
97+ cy . get ( "[ui5-responsive-popover]" )
98+ . shadow ( )
99+ . find ( ".ui5-popup-root" )
100+ . should ( "have.attr" , "role" , "dialog" )
101+ . and ( "have.attr" , "aria-modal" , "true" ) ;
102+ } ) ;
103+
104+ it ( "tests accessible-role=AlertDialog" , ( ) => {
105+ cy . mount ( < ResponsivePopover id = "rPAlertRole" accessibleRole = "AlertDialog" /> ) ;
106+
107+ cy . get ( "#rPAlertRole" )
108+ . shadow ( )
109+ . find ( ".ui5-popup-root" )
110+ . should ( "have.attr" , "role" , "alertdialog" )
111+ . and ( "have.attr" , "aria-modal" , "true" ) ;
112+ } ) ;
113+
114+ it ( "tests none accessible-role" , ( ) => {
115+ cy . mount (
116+ < >
117+ < Button id = "btnRoleNone" />
118+ < ResponsivePopover id = "rPNoneRole" accessibleRole = "None" opener = { "btnRoleNone" } />
119+ </ >
120+ ) ;
121+
122+ cy . get ( "#rPNoneRole" )
123+ . shadow ( )
124+ . find ( ".ui5-popup-root" )
125+ . should ( "not.have.attr" , "role" , )
126+
127+ cy . get ( "#rPNoneRole" )
128+ . shadow ( )
129+ . find ( ".ui5-popup-root" )
130+ . should ( "not.have.attr" , "aria-modal" ) ;
131+ } ) ;
132+ } ) ;
0 commit comments