1*** Settings *** 2Documentation This is a resource file containing user-defined keywords for new Vue based OpenBMC GUI. 3 4Library XvfbRobot 5Library SeleniumLibrary 6Library SSHLibrary 30 Seconds 7Resource ../../lib/state_manager.robot 8Variables ../data/gui_variables.py 9 10 11*** Variables *** 12${OPENBMC_GUI_URL} https://${OPENBMC_HOST}:${HTTPS_PORT} 13${xpath_power_page} //*[@data-test-id='appHeader-container-power'] 14${xpath_power_shutdown} //*[@data-test-id='serverPowerOperations-button-shutDown'] 15${xpath_power_power_on} //*[@data-test-id='serverPowerOperations-button-powerOn'] 16${xpath_power_reboot} //*[@data-test-id='serverPowerOperations-button-reboot'] 17${xpath_confirm} //button[contains(text(),'Confirm')] 18 19# Default GUI browser and mode is set to "Firefox" and "headless" 20# respectively here. 21${GUI_BROWSER} ff 22${GUI_MODE} headless 23 24 25*** Keywords *** 26 27Open Browser With URL 28 [Documentation] Open browser with specified URL and returns browser id. 29 [Arguments] ${URL} ${browser}=ff ${mode}=${GUI_MODE} 30 31 # Description of argument(s): 32 # URL Openbmc GUI URL to be open 33 # (e.g. https://openbmc-test.mybluemix.net/#/login). 34 # browser Browser used to open above URL 35 # (e.g. gc for google chrome, ff for firefox). 36 # mode Browser opening mode(e.g. headless, header). 37 38 IF '${mode}' == 'headless' 39 ${browser_ID}= Launch Headless Browser ${URL} ${browser} 40 ELSE 41 ${browser_ID}= Open Browser ${URL} ${browser} 42 END 43 RETURN ${browser_ID} 44 45 46Launch Header Browser 47 [Documentation] Open the browser with the URL and 48 ... login on windows platform. 49 [Arguments] ${browser_type}=${GUI_BROWSER} 50 51 # Description of argument(s): 52 # browser_type Type of browser (e.g. "firefox", "chrome", etc.). 53 54 ${BROWSER_ID}= Open Browser ${OPENBMC_GUI_URL} ${browser_type} 55 Maximize Browser Window 56 Set Global Variable ${BROWSER_ID} 57 58 59Launch Headless Browser 60 [Documentation] Launch headless browser. 61 [Arguments] ${URL}=${OPENBMC_GUI_URL} ${browser}=${GUI_BROWSER} 62 63 # Description of argument(s): 64 # URL Openbmc GUI URL to be open 65 # (e.g. https://openbmc-test.mybluemix.net/#/login). 66 # browser Browser to open given URL in headless way 67 # (e.g. gc for google chrome, ff for firefox). 68 69 Start Virtual Display 70 ${browser_ID}= Open Browser ${URL} ${browser} 71 Set Window Size 1920 1080 72 73 RETURN ${browser_ID} 74 75 76Launch Browser And Login GUI 77 [Documentation] Launch browser and login to OpenBMC GUI, retry 2 attempts 78 ... in 1 minute time. 79 80 Wait Until Keyword Succeeds 195 sec 65 sec Retry Browser Login Attempts 81 82 83Retry Browser Login Attempts 84 [Documentation] Launch browser and login to OpenBMC GUI. 85 86 Open Browser With URL ${OPENBMC_GUI_URL} 87 Login GUI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 88 89 90Login GUI 91 [Documentation] Login to OpenBMC GUI. 92 [Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD} 93 94 # Description of argument(s): 95 # username The username to be used for login. 96 # password The password to be used for login. 97 98 Go To ${OPENBMC_GUI_URL} 99 Wait Until Element Is Enabled ${xpath_login_username_input} 100 Input Text ${xpath_login_username_input} ${username} 101 Input Password ${xpath_login_password_input} ${password} 102 Wait Until Element Is Enabled ${xpath_login_button} 103 Click Element ${xpath_login_button} 104 Wait Until Page Contains Overview timeout=60s 105 Wait Until Element Is Not Visible 106 ... ${xpath_page_loading_progress_bar} timeout=120s 107 108 109Launch Browser And Login GUI With Given User 110 [Documentation] Launch browser and login eBMC with specified user 111 ... credentials through GUI. 112 [Arguments] ${user_name} ${user_password} 113 114 # Description of argument(s): 115 # user_name User name to login to eBMC. 116 # user_password User password to login to eBMC. 117 118 Open Browser With URL ${OPENBMC_GUI_URL} 119 LOGIN GUI ${user_name} ${user_password} 120 121 122Logout GUI 123 [Documentation] Logout of OpenBMC GUI. 124 125 Click Element ${xpath_root_button_menu} 126 Click Element ${xpath_logout_button} 127 Wait Until Page Contains Element ${xpath_login_button} 128 129 130Generate Test Error Log 131 [Documentation] Generate test error log. 132 133 BMC Execute Command ${CMD_UNRECOVERABLE_ERROR} 134 135 136Set Timezone In Profile Settings Page 137 [Documentation] Set the given timezone in profile settings page. 138 [Arguments] ${timezone}=Default 139 140 # Description of argument(s): 141 # timezone Timezone to select (eg. Default or Browser_offset). 142 143 Wait Until Page Contains Element ${xpath_root_button_menu} 144 Click Element ${xpath_root_button_menu} 145 Click Element ${xpath_profile_settings} 146 Click Element At Coordinates ${xpath_default_UTC} 0 0 147 Click Element ${xpath_profile_save_button} 148 149 150Refresh GUI 151 [Documentation] Refresh GUI via refresh button in header. 152 153 Click Element ${xpath_refresh_button} 154 # Waiting for page to load fully after refresh. 155 Wait Until Element Is Not Visible ${xpath_page_loading_progress_bar} timeout=120s 156 157 158Refresh GUI And Verify Element Value 159 [Documentation] Refresh GUI using refresh button and verify that given element contains expected value. 160 [Arguments] ${element} ${expected_value} 161 162 # Description of argument(s): 163 # element Element whose value need to be checked. 164 # expected_value Expected value of for the given element. 165 166 # Refresh GUI. 167 168 Click Element ${xpath_refresh_button} 169 170 # Check element value and verify that it contains expected value. 171 ${element_value}= Get Text ${element} 172 Log ${element_value} 173 Should Contain ${element_value} ${expected_value} 174 175 176Reboot BMC via GUI 177 [Documentation] Reboot BMC via GUI. 178 179 Click Element ${xpath_operations_menu} 180 Click Element ${xpath_reboot_bmc_sub_menu} 181 Click Button ${xpath_reboot_bmc_button} 182 Wait Until Keyword Succeeds 30 sec 10 sec Click Button ${xpath_confirm_bmc_reboot} 183 Wait Until Keyword Succeeds 2 min 10 sec Is BMC Unpingable 184 Wait For Host To Ping ${OPENBMC_HOST} 1 min 185 186 187Add DNS Servers And Verify 188 [Documentation] Login to GUI Network page,add DNS server on BMC 189 ... and verify it via BMC CLI. 190 [Arguments] ${dns_server} ${expected_status}=Valid format 191 192 # Description of the argument(s): 193 # dns_server A list of static name server IPs to be 194 # configured on the BMC. 195 # expected_status Expected status while adding DNS server address 196 # (e.g. Invalid format / Field required). 197 198 Wait Until Page Contains Element ${xpath_add_dns_ip_address_button} timeout=15sec 199 200 Click Button ${xpath_add_dns_ip_address_button} 201 Input Text ${xpath_input_static_dns} ${dns_server} 202 Click Button ${xpath_add_button} 203 IF '${expected_status}' != 'Valid format' 204 Page Should Contain ${expected_status} AND Return From Keyword 205 END 206 207 Wait Until Page Contains Element ${xpath_add_dns_ip_address_button} timeout=10sec 208 Wait Until Page Contains ${dns_server} timeout=40sec 209 210 # Check if newly added DNS server is configured on BMC. 211 ${cli_name_servers}= CLI Get Nameservers 212 ${cmd_status}= Run Keyword And Return Status 213 ... List Should Contain Sub List ${cli_name_servers} ${dns_server} 214 IF '${expected_status}' == '${HTTP_OK}' 215 Should Be True ${cmd_status} == ${True} 216 ELSE 217 Should Not Be True ${cmd_status} 218 END 219 220 221Navigate To Server Power Page 222 [Documentation] Navigate To Server Power Page. 223 224 Click Element ${xpath_power_page} 225 Wait Until Element Is Not Visible {xpath_page_loading_progress_bar} timeout=30 226 227 228Power Off Server 229 [Documentation] Powering off server. 230 231 Navigate To Server Power Page 232 ${present}= Run Keyword And Return Status 233 ... Element Should Be Visible ${xpath_power_shutdown} 234 IF ${present} 235 Click Element ${xpath_power_shutdown} 236 Click Button ${xpath_confirm} 237 Wait Until Element Is Visible ${xpath_power_poweron} timeout=60 238 Click Element ${xpath_close_information_message} 239 ELSE 240 Log To console Server is already powered Off. 241 END 242 243 244Power On Server 245 [Documentation] Powering on server. 246 247 Navigate To Server Power Page 248 ${present}= Run Keyword And Return Status 249 ... Element Should Be Visible ${xpath_power_power_on} 250 IF (${present}) 251 Click Element ${xpath_power_power_on} 252 Wait Until Element Is Visible ${xpath_power_shutdown} timeout=60 253 Click Element ${xpath_close_information_message} 254 ELSE 255 Log To console Server is already powered On. 256 END 257 258 259Reboot Server 260 [Documentation] Rebooting the server. 261 262 Navigate To Server Power Page 263 ${present}= Run Keyword And Return Status 264 ... Element Should Be Visible ${xpath_power_reboot} 265 IF ${present} 266 Click Element ${xpath_power_reboot} 267 Wait Until Element Is Visible ${xpath_confirm} timeout=30 268 Click Button ${xpath_confirm} 269 Wait Until Element Is Visible ${xpath_power_reboot} timeout=60 270 ELSE 271 Log To console Server is already powered Off, can't reboot. 272 END 273 274 275Verify Success Message On BMC GUI Page 276 [Documentation] Perform actions on the GUI and verify that a success message is displayed. 277 278 Wait Until Element Is Visible ${xpath_success_message} timeout=30 279 Page Should Contain Element ${xpath_success_message} 280 Wait Until Element Is Not Visible ${xpath_success_message} timeout=30 281 282 283Verify Error And Unauthorized Message On GUI 284 [Documentation] Perform operations on GUI with Readonly user and 285 ... verify Error and Unauthorized messages. 286 287 Wait Until Element Is Visible ${xpath_error_popup} 288 Page Should Contain Error 289 Page Should Contain Unauthorized 290 Click Element ${xpath_error_popup} 291 Click Element ${xpath_unauthorized_popup} 292 293 294Create Readonly User And Login To GUI 295 [Documentation] Logout current GUI sessions and Created Readonly_user via Redfish 296 ... and Login BMC GUI with Readonly user 297 298 # Logout current GUI session. 299 Logout GUI 300 301 # Created readonly_user via redfish and login BMC GUI with readonly user to perfrom test. 302 Redfish.Login 303 Redfish Create User readonly_user ${OPENBMC_PASSWORD} ReadOnly ${True} 304 Login GUI readonly_user ${OPENBMC_PASSWORD} 305 306 307Delete Readonly User And Logout Current GUI Session 308 [Documentation] Logout current GUI session and delete Readonly user, 309 ... Perform Login GUI with default user and password. 310 311 # Delete Read-only user and Logout current GUI session. 312 Logout GUI 313 Redfish.Delete /redfish/v1/AccountService/Accounts/readonly_user 314 Close Browser 315 316 # Login BMC GUI with default user. 317 Launch Browser And Login GUI 318