@@ -30,11 +30,13 @@ test.describe("Visual Regression", () => {
30
30
tmpPath,
31
31
} ) => {
32
32
const notebook = "3_widget_example.ipynb" ;
33
+ const namespace = 'default' ;
33
34
await page . notebook . openByPath ( `${ tmpPath } /${ notebook } ` ) ;
34
35
await page . notebook . activate ( notebook ) ;
35
36
36
37
const captures : ( Buffer | null ) [ ] = [ ] ; // Array to store cell screenshots
37
38
const cellCount = await page . notebook . getCellCount ( ) ;
39
+ console . log ( `Cell count: ${ cellCount } ` ) ;
38
40
39
41
// Run all cells and capture their screenshots
40
42
await page . notebook . runCellByCell ( {
@@ -59,25 +61,27 @@ test.describe("Visual Regression", () => {
59
61
}
60
62
}
61
63
62
- const widgetCellIndex = 3 ;
64
+ // At this point, all cells have been ran, and their screenshots have been captured.
65
+ // We now interact with the widgets in the notebook.
66
+ const upDownWidgetCellIndex = 3 ; // 4 on OpenShift
63
67
64
- await waitForWidget ( page , widgetCellIndex , 'input[type="checkbox"]' ) ;
65
- await waitForWidget ( page , widgetCellIndex , 'button:has-text("Cluster Down")' ) ;
66
- await waitForWidget ( page , widgetCellIndex , 'button:has-text("Cluster Up")' ) ;
68
+ await waitForWidget ( page , upDownWidgetCellIndex , 'input[type="checkbox"]' ) ;
69
+ await waitForWidget ( page , upDownWidgetCellIndex , 'button:has-text("Cluster Down")' ) ;
70
+ await waitForWidget ( page , upDownWidgetCellIndex , 'button:has-text("Cluster Up")' ) ;
67
71
68
- await interactWithWidget ( page , widgetCellIndex , 'input[type="checkbox"]' , async ( checkbox ) => {
72
+ await interactWithWidget ( page , upDownWidgetCellIndex , 'input[type="checkbox"]' , async ( checkbox ) => {
69
73
await checkbox . click ( ) ;
70
74
const isChecked = await checkbox . isChecked ( ) ;
71
75
expect ( isChecked ) . toBe ( true ) ;
72
76
} ) ;
73
77
74
- await interactWithWidget ( page , widgetCellIndex , 'button:has-text("Cluster Down")' , async ( button ) => {
78
+ await interactWithWidget ( page , upDownWidgetCellIndex , 'button:has-text("Cluster Down")' , async ( button ) => {
75
79
await button . click ( ) ;
76
80
const clusterDownMessage = await page . waitForSelector ( 'text=No instances found, nothing to be done.' , { timeout : 5000 } ) ;
77
81
expect ( clusterDownMessage ) . not . toBeNull ( ) ;
78
82
} ) ;
79
83
80
- await interactWithWidget ( page , widgetCellIndex , 'button:has-text("Cluster Up")' , async ( button ) => {
84
+ await interactWithWidget ( page , upDownWidgetCellIndex , 'button:has-text("Cluster Up")' , async ( button ) => {
81
85
await button . click ( ) ;
82
86
83
87
const successMessage = await page . waitForSelector ( 'text=Ray Cluster: \'raytest\' has successfully been created' , { timeout : 10000 } ) ;
@@ -95,13 +99,51 @@ test.describe("Visual Regression", () => {
95
99
96
100
await runPreviousCell ( page , cellCount , '(<CodeFlareClusterStatus.READY: 1>, True)' ) ;
97
101
98
- await interactWithWidget ( page , widgetCellIndex , 'button:has-text("Cluster Down")' , async ( button ) => {
102
+ await interactWithWidget ( page , upDownWidgetCellIndex , 'button:has-text("Cluster Down")' , async ( button ) => {
99
103
await button . click ( ) ;
100
104
const clusterDownMessage = await page . waitForSelector ( 'text=Ray Cluster: \'raytest\' has successfully been deleted' , { timeout : 5000 } ) ;
101
105
expect ( clusterDownMessage ) . not . toBeNull ( ) ;
102
106
} ) ;
103
107
104
108
await runPreviousCell ( page , cellCount , '(<CodeFlareClusterStatus.UNKNOWN: 6>, False)' ) ;
109
+
110
+ // view_clusters table with buttons
111
+ await interactWithWidget ( page , upDownWidgetCellIndex , 'input[type="checkbox"]' , async ( checkbox ) => {
112
+ await checkbox . click ( ) ;
113
+ const isChecked = await checkbox . isChecked ( ) ;
114
+ expect ( isChecked ) . toBe ( false ) ;
115
+ } ) ;
116
+
117
+ await interactWithWidget ( page , upDownWidgetCellIndex , 'button:has-text("Cluster Up")' , async ( button ) => {
118
+ await button . click ( ) ;
119
+ const successMessage = await page . waitForSelector ( 'text=Ray Cluster: \'raytest\' has successfully been created' , { timeout : 10000 } ) ;
120
+ expect ( successMessage ) . not . toBeNull ( ) ;
121
+ } ) ;
122
+
123
+ const viewClustersCellIndex = 4 ; // 5 on OpenShift
124
+ await page . notebook . runCell ( cellCount - 2 , true ) ;
125
+ await interactWithWidget ( page , viewClustersCellIndex , 'button:has-text("Open Ray Dashboard")' , async ( button ) => {
126
+ await button . click ( ) ;
127
+ const successMessage = await page . waitForSelector ( 'text=Opening Ray Dashboard for raytest cluster' , { timeout : 5000 } ) ;
128
+ expect ( successMessage ) . not . toBeNull ( ) ;
129
+ } ) ;
130
+
131
+ await interactWithWidget ( page , viewClustersCellIndex , 'button:has-text("View Jobs")' , async ( button ) => {
132
+ await button . click ( ) ;
133
+ const successMessage = await page . waitForSelector ( 'text=Opening Ray Jobs Dashboard for raytest cluster' , { timeout : 5000 } ) ;
134
+ expect ( successMessage ) . not . toBeNull ( ) ;
135
+ } ) ;
136
+
137
+ await interactWithWidget ( page , viewClustersCellIndex , 'button:has-text("Delete Cluster")' , async ( button ) => {
138
+ await button . click ( ) ;
139
+
140
+ const noClustersMessage = await page . waitForSelector ( `text=No clusters found in the ${ namespace } namespace.` , { timeout : 5000 } ) ;
141
+ expect ( noClustersMessage ) . not . toBeNull ( ) ;
142
+ const successMessage = await page . waitForSelector ( `text=Cluster raytest in the ${ namespace } namespace was deleted successfully.` , { timeout : 5000 } ) ;
143
+ expect ( successMessage ) . not . toBeNull ( ) ;
144
+ } ) ;
145
+
146
+ await runPreviousCell ( page , cellCount , '(<CodeFlareClusterStatus.UNKNOWN: 6>, False)' ) ;
105
147
} ) ;
106
148
} ) ;
107
149
0 commit comments