141747da7SRahul Maheshwari*** Settings *** 241747da7SRahul MaheshwariDocumentation This is a resource file containing user-defined keywords for new Vue based OpenBMC GUI. 341747da7SRahul Maheshwari 441747da7SRahul MaheshwariLibrary XvfbRobot 541747da7SRahul MaheshwariLibrary SeleniumLibrary 641747da7SRahul MaheshwariLibrary SSHLibrary 30 Seconds 741747da7SRahul MaheshwariResource ../../lib/state_manager.robot 841747da7SRahul MaheshwariVariables ../data/gui_variables.py 941747da7SRahul Maheshwari 1041747da7SRahul Maheshwari 1141747da7SRahul Maheshwari*** Variables *** 12*d315df4bSMatt Fischer${obmc_gui_url} https://${OPENBMC_HOST}:${HTTPS_PORT} 13978f91d6Sshahmo32${xpath_power_page} //*[@data-test-id='appHeader-container-power'] 14978f91d6Sshahmo32${xpath_power_shutdown} //*[@data-test-id='serverPowerOperations-button-shutDown'] 15978f91d6Sshahmo32${xpath_power_power_on} //*[@data-test-id='serverPowerOperations-button-powerOn'] 16978f91d6Sshahmo32${xpath_power_reboot} //*[@data-test-id='serverPowerOperations-button-reboot'] 17978f91d6Sshahmo32${xpath_confirm} //button[contains(text(),'Confirm')] 1841747da7SRahul Maheshwari 194d4ef99fSGeorge Keishing# Default GUI browser and mode is set to "Firefox" and "headless" 2041747da7SRahul Maheshwari# respectively here. 2141747da7SRahul Maheshwari${GUI_BROWSER} ff 2241747da7SRahul Maheshwari${GUI_MODE} headless 2341747da7SRahul Maheshwari 2441747da7SRahul Maheshwari 2541747da7SRahul Maheshwari*** Keywords *** 2641747da7SRahul Maheshwari 2741747da7SRahul MaheshwariOpen Browser With URL 2841747da7SRahul Maheshwari [Documentation] Open browser with specified URL and returns browser id. 2941747da7SRahul Maheshwari [Arguments] ${URL} ${browser}=ff ${mode}=${GUI_MODE} 3041747da7SRahul Maheshwari 3141747da7SRahul Maheshwari # Description of argument(s): 3241747da7SRahul Maheshwari # URL Openbmc GUI URL to be open 3341747da7SRahul Maheshwari # (e.g. https://openbmc-test.mybluemix.net/#/login). 3441747da7SRahul Maheshwari # browser Browser used to open above URL 3541747da7SRahul Maheshwari # (e.g. gc for google chrome, ff for firefox). 3641747da7SRahul Maheshwari # mode Browser opening mode(e.g. headless, header). 3741747da7SRahul Maheshwari 3841747da7SRahul Maheshwari ${browser_ID}= Run Keyword If '${mode}' == 'headless' 3941747da7SRahul Maheshwari ... Launch Headless Browser ${URL} ${browser} 4041747da7SRahul Maheshwari ... ELSE Open Browser ${URL} ${browser} 4141747da7SRahul Maheshwari 4241747da7SRahul Maheshwari [Return] ${browser_ID} 4341747da7SRahul Maheshwari 4441747da7SRahul Maheshwari 4541747da7SRahul MaheshwariLaunch Header Browser 4641747da7SRahul Maheshwari [Documentation] Open the browser with the URL and 4741747da7SRahul Maheshwari ... login on windows platform. 4841747da7SRahul Maheshwari [Arguments] ${browser_type}=${GUI_BROWSER} 4941747da7SRahul Maheshwari 5041747da7SRahul Maheshwari # Description of argument(s): 5141747da7SRahul Maheshwari # browser_type Type of browser (e.g. "firefox", "chrome", etc.). 5241747da7SRahul Maheshwari 5341747da7SRahul Maheshwari ${BROWSER_ID}= Open Browser ${obmc_gui_url} ${browser_type} 5441747da7SRahul Maheshwari Maximize Browser Window 5541747da7SRahul Maheshwari Set Global Variable ${BROWSER_ID} 5641747da7SRahul Maheshwari 5741747da7SRahul Maheshwari 5841747da7SRahul MaheshwariLaunch Headless Browser 5941747da7SRahul Maheshwari [Documentation] Launch headless browser. 6041747da7SRahul Maheshwari [Arguments] ${URL}=${obmc_gui_url} ${browser}=${GUI_BROWSER} 6141747da7SRahul Maheshwari 6241747da7SRahul Maheshwari # Description of argument(s): 6341747da7SRahul Maheshwari # URL Openbmc GUI URL to be open 6441747da7SRahul Maheshwari # (e.g. https://openbmc-test.mybluemix.net/#/login). 6541747da7SRahul Maheshwari # browser Browser to open given URL in headless way 6641747da7SRahul Maheshwari # (e.g. gc for google chrome, ff for firefox). 6741747da7SRahul Maheshwari 6841747da7SRahul Maheshwari Start Virtual Display 6941747da7SRahul Maheshwari ${browser_ID}= Open Browser ${URL} 7041747da7SRahul Maheshwari Set Window Size 1920 1080 7141747da7SRahul Maheshwari 7241747da7SRahul Maheshwari [Return] ${browser_ID} 7341747da7SRahul Maheshwari 7441747da7SRahul Maheshwari 7541747da7SRahul MaheshwariLaunch Browser And Login GUI 76b874c315Srramyasr-in [Documentation] Launch browser and login to OpenBMC GUI, retry 2 attempts 77b874c315Srramyasr-in ... in 1 minute time. 78b874c315Srramyasr-in 79b874c315Srramyasr-in Wait Until Keyword Succeeds 130 sec 65 sec Retry Browser Login Attempts 80b874c315Srramyasr-in 81b874c315Srramyasr-in 82b874c315Srramyasr-inRetry Browser Login Attempts 8341747da7SRahul Maheshwari [Documentation] Launch browser and login to OpenBMC GUI. 8441747da7SRahul Maheshwari 8541747da7SRahul Maheshwari Open Browser With URL ${obmc_gui_url} 8641747da7SRahul Maheshwari Login GUI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 8741747da7SRahul Maheshwari 8841747da7SRahul Maheshwari 8941747da7SRahul MaheshwariLogin GUI 9041747da7SRahul Maheshwari [Documentation] Login to OpenBMC GUI. 9141747da7SRahul Maheshwari [Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD} 9241747da7SRahul Maheshwari 9341747da7SRahul Maheshwari # Description of argument(s): 9441747da7SRahul Maheshwari # username The username to be used for login. 9541747da7SRahul Maheshwari # password The password to be used for login. 9641747da7SRahul Maheshwari 9741747da7SRahul Maheshwari Go To ${obmc_gui_url} 98d1ae7fa3Srramyasr-in Wait Until Element Is Enabled ${xpath_login_username_input} 99d1ae7fa3Srramyasr-in Input Text ${xpath_login_username_input} ${username} 100d1ae7fa3Srramyasr-in Input Password ${xpath_login_password_input} ${password} 101978f91d6Sshahmo32 Wait Until Element Is Enabled ${xpath_login_button} 10241747da7SRahul Maheshwari Click Element ${xpath_login_button} 1037ae30a48SRahul Maheshwari Wait Until Page Contains Overview timeout=60s 10441747da7SRahul Maheshwari 10541747da7SRahul Maheshwari 10641747da7SRahul MaheshwariLogout GUI 10741747da7SRahul Maheshwari [Documentation] Logout of OpenBMC GUI. 10841747da7SRahul Maheshwari 109a9d9341cSshrsuman123 Click Element ${xpath_root_button_menu} 11041747da7SRahul Maheshwari Click Element ${xpath_logout_button} 11141747da7SRahul Maheshwari Wait Until Page Contains Element ${xpath_login_button} 11241747da7SRahul Maheshwari 11341747da7SRahul Maheshwari 11441747da7SRahul MaheshwariGenerate Test Error Log 11541747da7SRahul Maheshwari [Documentation] Generate test error log. 11641747da7SRahul Maheshwari 117ae6a3c23Srramyasr-in BMC Execute Command ${CMD_UNRECOVERABLE_ERROR} 11854edcbcfSAnusha Dathatri 11954edcbcfSAnusha Dathatri 12054edcbcfSAnusha DathatriSet Timezone In Profile Settings Page 12154edcbcfSAnusha Dathatri [Documentation] Set the given timezone in profile settings page. 12254edcbcfSAnusha Dathatri [Arguments] ${timezone}=Default 12354edcbcfSAnusha Dathatri 12454edcbcfSAnusha Dathatri # Description of argument(s): 12554edcbcfSAnusha Dathatri # timezone Timezone to select (eg. Default or Browser_offset). 12654edcbcfSAnusha Dathatri 12754edcbcfSAnusha Dathatri Wait Until Page Contains Element ${xpath_root_button_menu} 12854edcbcfSAnusha Dathatri Click Element ${xpath_root_button_menu} 12954edcbcfSAnusha Dathatri Click Element ${xpath_profile_settings} 13054edcbcfSAnusha Dathatri Click Element At Coordinates ${xpath_default_UTC} 0 0 13154edcbcfSAnusha Dathatri Click Element ${xpath_profile_save_button} 13290c6a81cSAshwini Chandrappa 13390c6a81cSAshwini Chandrappa 13490c6a81cSAshwini ChandrappaRefresh GUI 13590c6a81cSAshwini Chandrappa [Documentation] Refresh GUI via refresh button in header. 13690c6a81cSAshwini Chandrappa 13790c6a81cSAshwini Chandrappa Click Element ${xpath_refresh_button} 13890c6a81cSAshwini Chandrappa # Added delay for page to load fully after refresh. 13990c6a81cSAshwini Chandrappa Sleep 5s 140f942dae4Smeghagn12345 141f942dae4Smeghagn12345 142f942dae4Smeghagn12345Refresh GUI And Verify Element Value 143f942dae4Smeghagn12345 [Documentation] Refresh GUI using refresh button and verify that given element contains expected value. 144f942dae4Smeghagn12345 [Arguments] ${element} ${expected_value} 145f942dae4Smeghagn12345 146f942dae4Smeghagn12345 # Description of argument(s): 147f942dae4Smeghagn12345 # element Element whose value need to be checked. 148f942dae4Smeghagn12345 # expected_value Expected value of for the given element. 149f942dae4Smeghagn12345 150f942dae4Smeghagn12345 # Refresh GUI. 151f942dae4Smeghagn12345 152f942dae4Smeghagn12345 Click Element ${xpath_refresh_button} 153f942dae4Smeghagn12345 154f942dae4Smeghagn12345 # Check element value and verify that it contains expected value. 155f942dae4Smeghagn12345 ${element_value}= Get Text ${element} 156f942dae4Smeghagn12345 Log ${element_value} 157f942dae4Smeghagn12345 Should Contain ${element_value} ${expected_value} 158f942dae4Smeghagn12345 1592052fdddSmeghagn 1602052fdddSmeghagnReboot BMC via GUI 1612052fdddSmeghagn [Documentation] Reboot BMC via GUI. 1622052fdddSmeghagn 1632052fdddSmeghagn Click Element ${xpath_operations_menu} 1642052fdddSmeghagn Click Element ${xpath_reboot_bmc_sub_menu} 1652052fdddSmeghagn Click Button ${xpath_reboot_bmc_button} 166b9ae25afSMegha G N Wait Until Keyword Succeeds 30 sec 10 sec Click Button ${xpath_confirm_bmc_reboot} 1672052fdddSmeghagn Wait Until Keyword Succeeds 2 min 10 sec Is BMC Unpingable 1682052fdddSmeghagn Wait For Host To Ping ${OPENBMC_HOST} 1 min 1692a31e512SMegha G N 1702a31e512SMegha G N 1712a31e512SMegha G NAdd DNS Servers And Verify 1722a31e512SMegha G N [Documentation] Login to GUI Network page,add DNS server on BMC 1732a31e512SMegha G N ... and verify it via BMC CLI. 1742a31e512SMegha G N [Arguments] ${dns_server} ${expected_status}=Valid format 1752a31e512SMegha G N 1762a31e512SMegha G N # Description of the argument(s): 1772a31e512SMegha G N # dns_server A list of static name server IPs to be 1782a31e512SMegha G N # configured on the BMC. 1792a31e512SMegha G N # expected_status Expected status while adding DNS server address 1802a31e512SMegha G N # (e.g. Invalid format / Field required). 1812a31e512SMegha G N 1822a31e512SMegha G N Wait Until Page Contains Element ${xpath_add_dns_ip_address_button} timeout=15sec 1832a31e512SMegha G N 1842a31e512SMegha G N Click Button ${xpath_add_dns_ip_address_button} 1852a31e512SMegha G N Input Text ${xpath_input_static_dns} ${dns_server} 1862a31e512SMegha G N Click Button ${xpath_add_button} 1872a31e512SMegha G N Run keyword if '${expected_status}' != 'Valid format' 1882a31e512SMegha G N ... Run keywords Page Should Contain ${expected_status} AND Return From Keyword 1892a31e512SMegha G N 1902a31e512SMegha G N Wait Until Page Contains Element ${xpath_add_dns_ip_address_button} timeout=10sec 1912a31e512SMegha G N Wait Until Page Contains ${dns_server} timeout=40sec 1922a31e512SMegha G N 1932a31e512SMegha G N # Check if newly added DNS server is configured on BMC. 1942a31e512SMegha G N ${cli_name_servers}= CLI Get Nameservers 1952a31e512SMegha G N ${cmd_status}= Run Keyword And Return Status 1962a31e512SMegha G N ... List Should Contain Sub List ${cli_name_servers} ${dns_server} 197978f91d6Sshahmo32 198978f91d6Sshahmo32 199978f91d6Sshahmo32Navigate To Server Power Page 200978f91d6Sshahmo32 [Documentation] Navigate To Server Power Page. 201978f91d6Sshahmo32 202978f91d6Sshahmo32 Click Element ${xpath_power_page} 203978f91d6Sshahmo32 Wait Until Element Is Not Visible ${xpath_progress_bar} timeout=30 204978f91d6Sshahmo32 205978f91d6Sshahmo32 206978f91d6Sshahmo32Power Off Server 207978f91d6Sshahmo32 [Documentation] Powering off server. 208978f91d6Sshahmo32 209978f91d6Sshahmo32 Navigate To Server Power Page 210978f91d6Sshahmo32 ${present}= Run Keyword And Return Status 211978f91d6Sshahmo32 ... Element Should Be Visible ${xpath_power_shutdown} 212978f91d6Sshahmo32 IF ${present} 213978f91d6Sshahmo32 Click Element ${xpath_power_shutdown} 214978f91d6Sshahmo32 Click Button ${xpath_confirm} 215978f91d6Sshahmo32 Wait Until Element Is Visible ${xpath_power_poweron} timeout=60 216978f91d6Sshahmo32 ELSE 217978f91d6Sshahmo32 Log To console Server is already powered Off. 218978f91d6Sshahmo32 END 219978f91d6Sshahmo32 220978f91d6Sshahmo32 221978f91d6Sshahmo32Power On Server 222978f91d6Sshahmo32 [Documentation] Powering on server. 223978f91d6Sshahmo32 224978f91d6Sshahmo32 Navigate To Server Power Page 225978f91d6Sshahmo32 ${present}= Run Keyword And Return Status 226978f91d6Sshahmo32 ... Element Should Be Visible ${xpath_power_power_on} 227978f91d6Sshahmo32 IF (${present}) 228978f91d6Sshahmo32 Click Element ${xpath_power_power_on} 229978f91d6Sshahmo32 Wait Until Element Is Visible ${xpath_power_shutdown} timeout=60 230978f91d6Sshahmo32 ELSE 231978f91d6Sshahmo32 Log To console Server is already powered On. 232978f91d6Sshahmo32 END 233978f91d6Sshahmo32 234978f91d6Sshahmo32 235978f91d6Sshahmo32Reboot Server 236978f91d6Sshahmo32 [Documentation] Rebooting the server. 237978f91d6Sshahmo32 238978f91d6Sshahmo32 Navigate To Server Power Page 239978f91d6Sshahmo32 ${present}= Run Keyword And Return Status 240978f91d6Sshahmo32 ... Element Should Be Visible ${xpath_power_reboot} 241978f91d6Sshahmo32 IF ${present} 242978f91d6Sshahmo32 Click Element ${xpath_power_reboot} 243978f91d6Sshahmo32 Wait Until Element Is Visible ${xpath_confirm} timeout=30 244978f91d6Sshahmo32 Click Button ${xpath_confirm} 245978f91d6Sshahmo32 Wait Until Element Is Visible ${xpath_power_reboot} timeout=60 246978f91d6Sshahmo32 ELSE 247978f91d6Sshahmo32 Log To console Server is already powered Off, can't reboot. 248978f91d6Sshahmo32 END 249