blob: d7dcafa88f32d00b9386795cf868945cba1214d7 [file] [log] [blame]
*** Settings ***
Documentation This is a resource file containing user-defined keywords for new Vue based OpenBMC GUI.
Library XvfbRobot
Library SeleniumLibrary
Library SSHLibrary 30 Seconds
Resource ../../lib/state_manager.robot
Variables ../data/gui_variables.py
*** Variables ***
${obmc_gui_url} https://${OPENBMC_HOST}
${xpath_power_page} //*[@data-test-id='appHeader-container-power']
${xpath_power_shutdown} //*[@data-test-id='serverPowerOperations-button-shutDown']
${xpath_power_power_on} //*[@data-test-id='serverPowerOperations-button-powerOn']
${xpath_power_reboot} //*[@data-test-id='serverPowerOperations-button-reboot']
${xpath_confirm} //button[contains(text(),'Confirm')]
# Default GUI browser and mode is set to "Firefox" and "headless"
# respectively here.
${GUI_BROWSER} ff
${GUI_MODE} headless
*** Keywords ***
Open Browser With URL
[Documentation] Open browser with specified URL and returns browser id.
[Arguments] ${URL} ${browser}=ff ${mode}=${GUI_MODE}
# Description of argument(s):
# URL Openbmc GUI URL to be open
# (e.g. https://openbmc-test.mybluemix.net/#/login).
# browser Browser used to open above URL
# (e.g. gc for google chrome, ff for firefox).
# mode Browser opening mode(e.g. headless, header).
${browser_ID}= Run Keyword If '${mode}' == 'headless'
... Launch Headless Browser ${URL} ${browser}
... ELSE Open Browser ${URL} ${browser}
[Return] ${browser_ID}
Launch Header Browser
[Documentation] Open the browser with the URL and
... login on windows platform.
[Arguments] ${browser_type}=${GUI_BROWSER}
# Description of argument(s):
# browser_type Type of browser (e.g. "firefox", "chrome", etc.).
${BROWSER_ID}= Open Browser ${obmc_gui_url} ${browser_type}
Maximize Browser Window
Set Global Variable ${BROWSER_ID}
Launch Headless Browser
[Documentation] Launch headless browser.
[Arguments] ${URL}=${obmc_gui_url} ${browser}=${GUI_BROWSER}
# Description of argument(s):
# URL Openbmc GUI URL to be open
# (e.g. https://openbmc-test.mybluemix.net/#/login).
# browser Browser to open given URL in headless way
# (e.g. gc for google chrome, ff for firefox).
Start Virtual Display
${browser_ID}= Open Browser ${URL}
Set Window Size 1920 1080
[Return] ${browser_ID}
Launch Browser And Login GUI
[Documentation] Launch browser and login to OpenBMC GUI, retry 2 attempts
... in 1 minute time.
Wait Until Keyword Succeeds 130 sec 65 sec Retry Browser Login Attempts
Retry Browser Login Attempts
[Documentation] Launch browser and login to OpenBMC GUI.
Open Browser With URL ${obmc_gui_url}
Login GUI ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD}
Login GUI
[Documentation] Login to OpenBMC GUI.
[Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD}
# Description of argument(s):
# username The username to be used for login.
# password The password to be used for login.
Go To ${obmc_gui_url}
Wait Until Element Is Enabled ${xpath_login_username_input}
Input Text ${xpath_login_username_input} ${username}
Input Password ${xpath_login_password_input} ${password}
Wait Until Element Is Enabled ${xpath_login_button}
Click Element ${xpath_login_button}
Wait Until Page Contains Overview timeout=60s
Logout GUI
[Documentation] Logout of OpenBMC GUI.
Click Element ${xpath_root_button_menu}
Click Element ${xpath_logout_button}
Wait Until Page Contains Element ${xpath_login_button}
Generate Test Error Log
[Documentation] Generate test error log.
BMC Execute Command ${CMD_UNRECOVERABLE_ERROR}
Set Timezone In Profile Settings Page
[Documentation] Set the given timezone in profile settings page.
[Arguments] ${timezone}=Default
# Description of argument(s):
# timezone Timezone to select (eg. Default or Browser_offset).
Wait Until Page Contains Element ${xpath_root_button_menu}
Click Element ${xpath_root_button_menu}
Click Element ${xpath_profile_settings}
Click Element At Coordinates ${xpath_default_UTC} 0 0
Click Element ${xpath_profile_save_button}
Refresh GUI
[Documentation] Refresh GUI via refresh button in header.
Click Element ${xpath_refresh_button}
# Added delay for page to load fully after refresh.
Sleep 5s
Refresh GUI And Verify Element Value
[Documentation] Refresh GUI using refresh button and verify that given element contains expected value.
[Arguments] ${element} ${expected_value}
# Description of argument(s):
# element Element whose value need to be checked.
# expected_value Expected value of for the given element.
# Refresh GUI.
Click Element ${xpath_refresh_button}
# Check element value and verify that it contains expected value.
${element_value}= Get Text ${element}
Log ${element_value}
Should Contain ${element_value} ${expected_value}
Reboot BMC via GUI
[Documentation] Reboot BMC via GUI.
Click Element ${xpath_operations_menu}
Click Element ${xpath_reboot_bmc_sub_menu}
Click Button ${xpath_reboot_bmc_button}
Wait Until Keyword Succeeds 30 sec 10 sec Click Button ${xpath_confirm_bmc_reboot}
Wait Until Keyword Succeeds 2 min 10 sec Is BMC Unpingable
Wait For Host To Ping ${OPENBMC_HOST} 1 min
Add DNS Servers And Verify
[Documentation] Login to GUI Network page,add DNS server on BMC
... and verify it via BMC CLI.
[Arguments] ${dns_server} ${expected_status}=Valid format
# Description of the argument(s):
# dns_server A list of static name server IPs to be
# configured on the BMC.
# expected_status Expected status while adding DNS server address
# (e.g. Invalid format / Field required).
Wait Until Page Contains Element ${xpath_add_dns_ip_address_button} timeout=15sec
Click Button ${xpath_add_dns_ip_address_button}
Input Text ${xpath_input_static_dns} ${dns_server}
Click Button ${xpath_add_button}
Run keyword if '${expected_status}' != 'Valid format'
... Run keywords Page Should Contain ${expected_status} AND Return From Keyword
Wait Until Page Contains Element ${xpath_add_dns_ip_address_button} timeout=10sec
Wait Until Page Contains ${dns_server} timeout=40sec
# Check if newly added DNS server is configured on BMC.
${cli_name_servers}= CLI Get Nameservers
${cmd_status}= Run Keyword And Return Status
... List Should Contain Sub List ${cli_name_servers} ${dns_server}
Navigate To Server Power Page
[Documentation] Navigate To Server Power Page.
Click Element ${xpath_power_page}
Wait Until Element Is Not Visible ${xpath_progress_bar} timeout=30
Power Off Server
[Documentation] Powering off server.
Navigate To Server Power Page
${present}= Run Keyword And Return Status
... Element Should Be Visible ${xpath_power_shutdown}
IF ${present}
Click Element ${xpath_power_shutdown}
Click Button ${xpath_confirm}
Wait Until Element Is Visible ${xpath_power_poweron} timeout=60
ELSE
Log To console Server is already powered Off.
END
Power On Server
[Documentation] Powering on server.
Navigate To Server Power Page
${present}= Run Keyword And Return Status
... Element Should Be Visible ${xpath_power_power_on}
IF (${present})
Click Element ${xpath_power_power_on}
Wait Until Element Is Visible ${xpath_power_shutdown} timeout=60
ELSE
Log To console Server is already powered On.
END
Reboot Server
[Documentation] Rebooting the server.
Navigate To Server Power Page
${present}= Run Keyword And Return Status
... Element Should Be Visible ${xpath_power_reboot}
IF ${present}
Click Element ${xpath_power_reboot}
Wait Until Element Is Visible ${xpath_confirm} timeout=30
Click Button ${xpath_confirm}
Wait Until Element Is Visible ${xpath_power_reboot} timeout=60
ELSE
Log To console Server is already powered Off, can't reboot.
END