@@ -939,33 +939,39 @@ describe("Side Navigation interaction", () => {
939939 </ SideNavigation >
940940 ) ;
941941
942- cy . get ( "#parentItem" ) . realClick ( ) ;
943- [
942+ const cases : Array < { selector : ( ) => Cypress . Chainable , expectedCallCount : number } > = [
944943 {
945- element : cy . get ( "#sideNav" ) . shadow ( ) . find ( "[ui5-responsive-popover] [ui5-side-navigation-item][text='2']" ) . shadow ( )
946- . find ( ".ui5-sn-item" ) ,
944+ selector : ( ) => cy . get ( "#sideNav" ) . shadow ( ) . find ( "[ui5-responsive-popover] [ui5-side-navigation-item][text='2']" ) . shadow ( ) . find ( ".ui5-sn-item" ) ,
947945 expectedCallCount : 1 ,
948946 } ,
949947 {
950- element : cy . get ( "#sideNav" ) . shadow ( ) . find ( "[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='2.1']" ) ,
948+ selector : ( ) => cy . get ( "#sideNav" ) . shadow ( ) . find ( "[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='2.1']" ) ,
951949 expectedCallCount : 1 ,
952950 } ,
953951 {
954- element : cy . get ( "#sideNav" ) . shadow ( ) . find ( "[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='2.2']" ) ,
952+ selector : ( ) => cy . get ( "#sideNav" ) . shadow ( ) . find ( "[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='2.2']" ) ,
955953 expectedCallCount : 0 ,
956954 } ,
957- ] . forEach ( ( { element, expectedCallCount } ) => {
955+ ] ;
956+
957+ cases . forEach ( ( { selector, expectedCallCount } ) => {
958958 cy . get ( "#sideNav" )
959959 . then ( sideNav => {
960960 sideNav . get ( 0 ) . addEventListener ( "ui5-selection-change" , cy . stub ( ) . as ( "selectionChangeHandler" ) ) ;
961961 } ) ;
962962
963- // act
963+ // open the popover fresh each iteration
964964 cy . get ( "#parentItem" ) . realClick ( ) ;
965- element . realClick ( ) ;
965+ cy . get ( "#sideNav" ) . shadow ( ) . find ( "[ui5-responsive-popover]" ) . should ( "be.visible" ) ;
966+
967+ // act
968+ selector ( ) . realClick ( ) ;
966969
967970 // assert
968- cy . get ( "@selectionChangeHandler" , { timeout : 1000 } ) . should ( "have.callCount" , expectedCallCount ) ;
971+ cy . get ( "@selectionChangeHandler" ) . should ( "have.callCount" , expectedCallCount ) ;
972+
973+ // close popover before next iteration (click outside)
974+ cy . get ( "body" ) . click ( 0 , 0 ) ;
969975 } ) ;
970976 } ) ;
971977
@@ -978,6 +984,8 @@ describe("Side Navigation interaction", () => {
978984 ) ;
979985
980986 cy . get ( "#item" ) . realClick ( ) ;
987+ // wait for first selection to settle before clicking again
988+ cy . get ( "@selectionChangeHandler" ) . should ( "have.been.calledOnce" ) ;
981989 cy . get ( "#item" ) . realClick ( ) ;
982990
983991 cy . get ( "@selectionChangeHandler" ) . should ( "have.been.calledOnce" ) ;
@@ -1021,14 +1029,17 @@ describe("Side Navigation interaction", () => {
10211029 . realClick ( ) ;
10221030
10231031 cy . get ( "@overflowMenu" )
1024- . should ( "be. not.visible" ) ;
1032+ . should ( "not.be .visible" ) ;
10251033
10261034 cy . get ( "[ui5-side-navigation-item][text='Home 6']" )
10271035 . should ( "be.focused" ) ;
10281036
10291037 cy . get ( "@itemOverflow" )
10301038 . realClick ( ) ;
10311039
1040+ cy . get ( "@overflowMenu" )
1041+ . should ( "be.visible" ) ;
1042+
10321043 cy . get ( "@overflowMenu" )
10331044 . find ( "[ui5-navigation-menu-item][text='Home 7']" )
10341045 . realClick ( ) ;
0 commit comments