OBMC GUI POC: Test Power Operations

Resolves openbmc/openbmc-test-automation#407

Change-Id: I74e47344add5bf20dec38461d52714610e049e5e
Signed-off-by: Sivas SRR <sivas.srr@in.ibm.com>
diff --git a/gui/data/variables.py b/gui/data/variables.py
index 1abc2e2..6acefd4 100644
--- a/gui/data/variables.py
+++ b/gui/data/variables.py
@@ -16,9 +16,27 @@
     xpath_uname=      "xpath=//*[@id='nosession']/form/input[1]"
     xpath_password=   "xpath=//*[@id='nosession']/form/input[2]"
     xpath_signin=     "xpath=//*[@id='sign-in']"
+
     xpath_search=     "xpath=//*[@id='searchbox']/input"
     scan_name=        "OP Full Scan"
     xpath_op_scan=    "xpath=//*[@id='main']/div[1]/section/table/tbody"
     xpath_launch=     "xpath=//*[@id='scans-show-launch-dropdown']/span"
     xpath_default=    "xpath=//*[@id='scans-show-launch-default']"
     xpath_status=     "xpath=//*[@id='main']/div[1]/section/div[2]/table/tbody/tr[1]/td[4]"
+    obmc_BMC_URL=  "https://openbmc-test.mybluemix.net/#/login"
+    obmc_uname=  "username"
+    obmc_user_name=  "root"
+    obmc_password=  "0penBmc"
+
+    # Power Operation Elements needed for power on
+    header_wrapper=  "2"
+    header_wrapper_elt=  "2"
+
+    # Power Operation Elements needed for power operations confirmation
+    power_operations=  "4"
+    warm_boot=  "3"
+    cold_boot=  "4"
+    shut_down=  "5"
+    power_off=  "6"
+    confirm_msg=  "2"
+    yes=  "1"
diff --git a/gui/lib/obmcgui_utils.robot b/gui/lib/obmcgui_utils.robot
new file mode 100644
index 0000000..25f0889
--- /dev/null
+++ b/gui/lib/obmcgui_utils.robot
@@ -0,0 +1,79 @@
+*** Settings ***
+
+Library  OperatingSystem
+Library  Selenium2Library  120  120
+Library  Screenshot
+
+Resource  resource.txt
+
+*** Keywords ***
+
+Open Browser With URL
+    [Documentation]  Open browser with specified URL and returns browser id.
+    [Arguments]  ${URL}  ${browser}=gc
+    # 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)
+    ${browser_ID}=  Open Browser  ${URL}  ${browser}
+    [Return]  browser_ID
+
+Model Server Power Click
+    [Documentation]  Click main server power in the header section.
+    [Arguments]  ${div_element}  ${anchor_element}
+    # Description of argument(s):
+    # div_element     Server power header divisional element
+    #                 (e.g. header_wrapper)
+    # anchor_element  Server power header anchor element
+    #                 (e.g. header_wrapper_elt)
+    Wait Until Element Is Visible
+    ...  //*[@id='header__wrapper']/div/div[${div_element}]/a[${anchor_element}]/span
+    Click Element
+    ...  //*[@id='header__wrapper']/div/div[${div_element}]/a[${anchor_element}]/span
+
+Controller Server Power Click
+    [Documentation]  Click main server power in the header section.
+    [Arguments]  ${controller_element}
+    # Description of argument(s):
+    # controller_element  Server power controller element
+    #                     (e.g. power__power-on)
+
+    Wait Until Element Is Visible  ${controller_element}
+    Click Element  ${controller_element}
+
+Controller Power Operations Confirmation Click
+    [Documentation]  Click Common Power Operations Confirmation.
+    [Arguments]  ${main_element}  ${sub_element}  ${confirm_msg_elt}  ${confirmation}
+    # Description of argument(s):
+    # main_element     Server power operations element
+    #                  (e.g. power_operations)
+    # sub_element      Server power operations sub element
+    #                  (e.g. warm_boot, shut_down)
+    # confirm_msg_elt  Server power operations confirm message element
+    #                  (e.g. confirm_msg)
+    # confirmation     Server power operations confirmation
+    #                  (e.g. yes)
+
+    Click Element
+    ...  //*[@id='power-operations']/div[${main_element}]/div[${sub_element}]/confirm/div/div[${confirm_msg_elt}]/button[${confirmation}]
+
+GUI Power On
+    [Documentation]  Power on the CEC using GUI.
+
+    Model Server Power Click  ${header_wrapper}  ${header_wrapper_elt}
+    Page Should Contain  Attempts to power on the server
+    Controller Server Power Click  power__power-on
+
+OpenBMC GUI Login
+    [Documentation]  Log into OpenBMC GUI.
+
+    Log  ${obmc_BMC_URL}
+    Open Browser With URL  ${obmc_BMC_URL}  gc
+    Page Should Contain Button  login__submit
+    Wait Until Page Contains Element  ${obmc_uname}
+    Input Text  ${obmc_uname}  ${obmc_user_name}
+    Input Password  password  ${obmc_password}
+    Click Element  login__submit
+    Page Should Contain  System Overview
+
diff --git a/gui/tests/test_obmc_gui_power_operations.robot b/gui/tests/test_obmc_gui_power_operations.robot
new file mode 100644
index 0000000..d57e339
--- /dev/null
+++ b/gui/tests/test_obmc_gui_power_operations.robot
@@ -0,0 +1,60 @@
+*** Settings ***
+
+Documentation  Test OBMC GUI Power Operations
+
+Resource  ../lib/obmcgui_utils.robot
+
+Suite Setup  OpenBMC GUI Login
+Suite Teardown  Close Browser
+
+*** Test Cases ***
+
+Power On the CEC
+    [Documentation]  Power on the CEC.
+    [Tags]  Power_On_the_CEC
+
+    GUI Power On
+
+Warm Boot the CEC
+    [Documentation]  Warm boot the CEC.
+    [Tags]  Warm_Boot_the_CEC
+
+    Controller Server Power Click  power__warm-boot
+    Controller Power Operations Confirmation Click  ${power_operations}
+    ...  ${warm_boot}  ${confirm_msg}  ${yes}
+
+Immediate Power Off the CEC
+    [Documentation]  Immediate power off the CEC.
+    [Tags]  Immediate_Power_Off_the_CEC
+
+    Controller Server Power Click  power__hard-shutdown
+    Controller Power Operations Confirmation Click  ${power_operations}
+    ...  ${power_off}  ${confirm_msg}  ${yes}
+
+Cold Boot the CEC
+    [Documentation]  Cold boot the CEC.
+    [Tags]  Cold_Boot_the_CEC
+
+    Controller Server Power Click  power__cold-boot
+    Controller Power Operations Confirmation Click  ${power_operations}
+    ...  ${cold_boot}  ${confirm_msg}  ${yes}
+
+Orderly Shutdown the CEC
+    [Documentation]  Orderly shutdown  the CEC.
+    [Tags]  Orderly_Shutdown_the_CEC
+
+    Controller Server Power Click  power__soft-shutdown
+    Controller Power Operations Confirmation Click  ${power_operations}
+    ...  ${shut_down}  ${confirm_msg}  ${yes}
+
+OpenBMC GUI Logoff
+    [Documentation]  Log out from OpenBMC GUI.
+    [Tags]  OpenBMC_GUI_Logoff
+
+    Log  ${obmc_BMC_URL}
+    Log To Console  ${obmc_BMC_URL}
+    Click Element  header
+
+
+
+