@@ -63,49 +63,64 @@ class OpenshiftConsole {
6363 const selectors = this . sidebarSelectors ( )
6464 cy . get ( selectors . drawer )
6565 . then ( ( $drawer ) => {
66- const selector = selectors . drawer +
67- ' button[data-test-id=sidebar-close-button]'
66+ const selector = selectors . drawer + selectors . closeButtonSelector
6867 if ( selectors . checkIsOpen ( $drawer ) ) {
6968 cy . log ( 'Closing sidebar' )
7069 cy . get ( selector ) . click ( )
7170 }
7271 } )
7372 }
7473
74+ /**
75+ * Returns CSS selectors for topology sidebar based on OCP version.
76+ *
77+ * Version Timeline:
78+ * - OCP 4.14: PatternFly v4, old drawer, data-test-id
79+ * - OCP 4.15-4.18: PatternFly v5, new drawer, data-test-id
80+ * - OCP 4.19.x: PatternFly v6, new drawer, data-test-id (migration in progress)
81+ * - OCP 4.20+: PatternFly v6, new drawer, data-test (migration complete)
82+ *
83+ * @returns {{checkIsOpen: function(JQuery<HTMLElement>): boolean, drawer: string, closeButtonSelector: string} }
84+ * Object containing sidebar selectors:
85+ * - checkIsOpen: Function to check if drawer is open
86+ * - drawer: CSS selector for the drawer panel element
87+ * - closeButtonSelector: CSS selector for the close button (appended to drawer selector)
88+ */
7589 sidebarSelectors ( ) {
76- if ( environment . ocpVersion ( ) . satisfies ( '<=4.14' ) ) {
90+ const version = environment . ocpVersion ( )
91+
92+ // OCP 4.14 and earlier: PatternFly v4
93+ if ( version . satisfies ( '<=4.14' ) ) {
7794 return {
78- /**
79- * @param drawer {JQuery<HTMLElement>}
80- * @returns {boolean }
81- */
82- checkIsOpen : function ( drawer ) {
83- return drawer . hasClass ( 'pf-m-expanded' )
84- } ,
95+ checkIsOpen : ( drawer ) => drawer . hasClass ( 'pf-m-expanded' ) ,
8596 drawer : '.odc-topology .pf-c-drawer' ,
97+ closeButtonSelector : ' button[data-test-id=sidebar-close-button]' ,
8698 }
8799 }
88- if ( environment . ocpVersion ( ) . satisfies ( '<=4.18' ) ) {
100+
101+ // OCP 4.15-4.18: PatternFly v5
102+ if ( version . satisfies ( '<=4.18' ) ) {
89103 return {
90- /**
91- * @param drawer {JQuery<HTMLElement>}
92- * @returns {boolean }
93- */
94- checkIsOpen : function ( drawer ) {
95- return drawer . find ( '.pf-topology-resizable-side-bar' ) . length > 0
96- } ,
104+ checkIsOpen : ( drawer ) => drawer . find ( '.pf-topology-resizable-side-bar' ) . length > 0 ,
97105 drawer : '.pf-v5-c-drawer__panel.ocs-sidebar-index' ,
106+ closeButtonSelector : ' button[data-test-id=sidebar-close-button]' ,
98107 }
99108 }
109+
110+ // OCP 4.19.x: PatternFly v6 with old data-test-id attribute
111+ if ( version . satisfies ( '<4.20' ) ) {
112+ return {
113+ checkIsOpen : ( drawer ) => drawer . find ( '.pf-topology-resizable-side-bar' ) . length > 0 ,
114+ drawer : '.pf-v6-c-drawer__panel.ocs-sidebar-index' ,
115+ closeButtonSelector : ' button[data-test-id=sidebar-close-button]' ,
116+ }
117+ }
118+
119+ // OCP 4.20+: PatternFly v6 with new data-test attribute
100120 return {
101- /**
102- * @param drawer {JQuery<HTMLElement>}
103- * @returns {boolean }
104- */
105- checkIsOpen : function ( drawer ) {
106- return drawer . find ( '.pf-topology-resizable-side-bar' ) . length > 0
107- } ,
121+ checkIsOpen : ( drawer ) => drawer . find ( '.pf-topology-resizable-side-bar' ) . length > 0 ,
108122 drawer : '.pf-v6-c-drawer__panel.ocs-sidebar-index' ,
123+ closeButtonSelector : ' button[data-test=sidebar-close-button]' ,
109124 }
110125 }
111126}
0 commit comments