Refactor server power operation suite

Change-Id: I354205329b74f5b52abfa664ac43496bc67265ea
Signed-off-by: Rahul Maheshwari <rahulmaheshwari@in.ibm.com>
diff --git a/gui/data/resource_variables.py b/gui/data/resource_variables.py
index fb1541f..a8cc1fb 100644
--- a/gui/data/resource_variables.py
+++ b/gui/data/resource_variables.py
@@ -65,6 +65,12 @@
     obmc_standby_state = "Standby"
     obmc_running_state = "Running"
 
+    # xpath for main menu.
+    xpath_select_server_control = "//button[contains(@class,'btn-control')]"
+
+    # xpath for sub main menu.
+    xpath_select_server_power_operations = "//a[@href='#/server-control/power-operations']"
+
     # Power operation elements needed for power on.
     header_wrapper = "3"
     header_wrapper_elt = "3"
diff --git a/gui/test/server_control/test_obmc_gui_server_power_operations.robot b/gui/test/server_control/test_obmc_gui_server_power_operations.robot
index 9438089..d3ceaa7 100644
--- a/gui/test/server_control/test_obmc_gui_server_power_operations.robot
+++ b/gui/test/server_control/test_obmc_gui_server_power_operations.robot
@@ -1,247 +1,62 @@
 *** Settings ***
-Documentation  This test suite will validate the "OpenBMC" GUI ->
-...            "Server control" main menu -> "Server power
-...            operations" submenu module.
 
-Resource         ../../lib/resource.robot
-Test Setup       Test Setup Execution  ${OBMC_PowerOff_state}
-Test Teardown    Test Teardown Execution
+Documentation   Test OpenBMC GUI "Server power operation" sub-menu of
+...             "Server control".
 
-Force Tags       Power_Operations
+Resource        ../../lib/resource.robot
+
+Suite Setup     Launch Browser And Login OpenBMC GUI
+Suite Teardown  Close Browser
+Test Setup      Navigate To Power Operation Page
+
 
 *** Variables ***
-${xpath_select_server_control}           //*[contains(@class,"btn-control")]
-${xpath_select_server_power_operations}  //a[@href='#/server-control/power-operations']
-${string_server_power_operations}        Server power operations
-${string_current_status}                 Current status
-${string_select_power_operation}         Select a power operation
-${string_warm_reboot}                    Attempts to perform an orderly shutdown before restarting the server
-${string_cold_reboot}                    Shuts down the server immediately, then restarts it
-${string_orderly_shutdown}               Attempts to stop all software on the server before removing power
-${string_immediate_shutdown}             Removes power from the server without waiting for software to stop
-${string_power_on}                       Attempts to power on the server
 
-*** Test Case ***
-# OpenBMC @ Power Off state test cases.
-
-Verify Orderly Shutdown Button At Power Off
-    [Documentation]  Verify orderly shutdown button is not present at power Off.
-    [Tags]  Verify_Orderly_Shutdown_Button_At_Power_Off
-
-    Select Server Power Operations Sub Menu
-    Element Should Not Be Visible  ${xpath_select_button_orderly_shutdown}
+${xpath_power_indicator_bar}     //*[@id='power-indicator-bar']
+${xpath_shutdown_button}         //button[contains(text(), "Shut down")]
+${xpath_reboot_button}           //button[contains(text(), "Reboot")]
 
 
-Verify Immediate Shutdown Button At Power Off
-    [Documentation]  Verify immediate shutdown button not present at power Off.
-    [Tags]  Verify_Immediate_Shutdown_Button_At_Power_Off
+*** Test Cases ***
 
-    Select Server Power Operations Sub Menu
-    Element Should Not Be Visible  ${xpath_select_button_immediate_shutdown}
+Verify System State At Power Off
+    [Documentation]  Verify system state at power off.
+    [Tags]  Verify_System_State_At_Power_Off
+
+    Test Setup Execution  ${OBMC_PowerOff_state}
+    Element Should Contain  ${xpath_power_indicator_bar}  Off
 
 
-Verify Warm Reboot Button At Power Off
-    [Documentation]  Verify warm reboot button is not present at power Off.
-    [Tags]  Verify_Warm_Reboot_Button_At_Power_Off
+Verify BMC IP In Server Power Operation Page
+    [Documentation]  Verify BMC IP in server power operation page.
+    [Tags]  Verify_BMC_IP_In_Server_Power_Operation_Page
 
-    Select Server Power Operations Sub Menu
-    Element Should Not Be Visible  ${xpath_select_button_warm_reboot}
-
-Verify Cold Reboot Button At Power Off
-    [Documentation]  Verify cold reboot button is not present at power Off.
-    [Tags]  Verify_Cold_Reboot_Button_At_Power_Off
-
-    Select Server Power Operations Sub Menu
-    Element Should Not Be Visible  ${xpath_select_button_cold_reboot}
-
-Verify Title Text Should Be Server Power Operations At Power Off
-    [Documentation]  Verify display of title text "Server Power Operations".
-    [Tags]  Verify_Title_Text_Should_Be_Server_Power_Operations_At_Power_Off
-    ...  OBMC_PowerOff_state
-
-    Select Server Power Operations Sub Menu
-    Verify Display Content  ${string_server_power_operations}
-
-Verify Sub Title Text Should Be Current Status At Power Off
-    [Documentation]  Verify display of title text "Current Status".
-    [Tags]  Verify_Sub_Title_Text_Should_Be_Current_Status_At_Power_Off
-    ...  OBMC_PowerOff_state
-
-    Select Server Power Operations Sub Menu
-    Verify Display Content  ${string_current_status}
-
-Verify Sub Title Text Should Be Select Power Operation At Power Off
-    [Documentation]  Verify display of title text "Select a power operation".
-    [Tags]  Verify_Sub_Title_Text_Should_Be_Select_Power_Operation_At_Power_Off
-    ...  OBMC_PowerOff_state
-
-    Select Server Power Operations Sub Menu
-    Verify Display Content  ${string_Select_power_operation}
-
-Verify Power On Button Should Present At Power Off
-    [Documentation]  Verify presence of "Warm reboot" button.
-    [Tags]  Verify_Power_On_Button_Should_Present_At_Power_Off
-    ...  OBMC_PowerOff_State
-
-    Select Server Power Operations Sub Menu
-    Verify Presence of Power Button And Text Info
-    ...  ${xpath_select_button_power_on}  ${string_power_on}
-
-Verify Power On At Power Off
-    [Documentation]  Verify presence of "Warm reboot" button.
-    [Tags]  Verify_Power_On_At_Power_Off
-    ...  OBMC_PowerOff_State
-
-    Power On OpenBMC
+    Element Should Contain  ${xpath_power_indicator_bar}  ${OPENBMC_HOST}
 
 
-# OpenBMC @ Power Running state test cases.
+Verify Shutdown Button At Power Off
+    [Documentation]  Verify that shutdown button is not present at power Off.
+    [Tags]  Verify_Shutdown_Button_At_Power_Off
 
-Verify Warm Reboot Button Should Present At Power Running
-    [Documentation]  Verify presence of "Warm reboot" button.
-    [Tags]  Verify_Warm_Reboot_Button_Should_Present_At_Power_Running
-    ...  OBMC_PowerRunning_State
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
+    Test Setup Execution  ${OBMC_PowerOff_state}
+    Element Should Not Be Visible  ${xpath_shutdown_button}
 
-    Select Server Power Operations Sub Menu
-    Verify Presence of Power Button And Text Info
-    ...  ${xpath_select_button_warm_reboot}  ${string_warm_reboot}
 
-Verify Cold Reboot Button Should Present At Power Running
-    [Documentation]  Verify presence of "cold reboot" button.
-    [Tags]  Verify_Cold_Reboot_Button_Should_Present_At_Power_Running
-    ...  OBMC_PowerRunning_State
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
+Verify Reboot Button At Power Off
+    [Documentation]  Verify that reboot button is not present at power Off.
+    [Tags]  Verify_Reboot_Button_At_Power_Off
 
-    Select Server Power Operations Sub Menu
-    Verify Presence of Power Button And Text Info
-    ...  ${xpath_select_button_cold_reboot}  ${string_cold_reboot}
+    Test Setup Execution  ${OBMC_PowerOff_state}
+    Element Should Not Be Visible  ${xpath_reboot_button}
 
-Verify Orderly Shutdown Button Should Present At Power Running
-    [Documentation]  Verify presence of "Orderly shutdow " button.
-    [Tags]  Verify_Orderly_Shutdown_Button_Should_Present_At_Power_Running
-    ...  OBMC_PowerRunning_State
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Verify Presence of Power Button And Text Info
-    ...  ${xpath_select_button_orderly_shutdown}  ${string_orderly_shutdown}
-
-Verify Immediate Shutdown Button Should Present At Power Running
-    [Documentation]  Verify presence of "Immediate shutdown" button.
-    [Tags]  Verify_Immediate_Shutdown_Button_Should_Present_At_Power_Running
-    ...  OBMC_PowerRunning_State
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Verify Presence of Power Button And Text Info
-    ...  ${xpath_select_button_immediate_shutdown}  ${string_immediate_shutdown}
-
-Verify Warm Reboot Should Not Happen By Clicking No Button
-    [Documentation]  Verify functionality of warm reboot "No" button clicking.
-    [Tags]  Verify_Warm_Reboot_Should_Not_Happen_By_Clicking_No_Button
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Click Element  ${xpath_select_button_warm_reboot}
-    Verify Warning Message Display Text  ${xpath_operation_warning_message}
-    ...  ${text_warm_reboot_warning_message}
-    Verify No Button Functionality
-    ...  ${xpath_select_button_warm_reboot_no}
-
-Verify Cold Reboot Should Not Happen By Clicking No Button
-    [Documentation]  Verify functionality of cold reboot "No" button clicking.
-    [Tags]  Verify_Cold_Reboot_Should_Not_Happen_By_Clicking_No_Button
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Click Element  ${xpath_select_button_cold_reboot}
-    Verify Warning Message Display Text  ${xpath_operation_warning_message}
-    ...  ${text_cold_reboot_warning_message}
-    Verify No Button Functionality
-    ...  ${xpath_select_button_cold_reboot_no}
-
-Verify Orderly Shutdown Should Not Happen By Clicking No Button
-    [Documentation]  Verify functionality of orderly shutdown "No" button clicking.
-    [Tags]  Verify_Orderly_Shutdown_Should_Not_Happen_By_Clicking_No_Button
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Click Element  ${xpath_select_button_orderly_shutdown}
-    Verify Warning Message Display Text  ${xpath_operation_warning_message}
-    ...  ${text_orderly_shutdown_warning_message}
-    Verify No Button Functionality
-    ...  ${xpath_select_button_orderly_shutdown_button_no}
-
-Verify Immediate Shutdown Should Not Happen By Clicking No Button
-    [Documentation]  Verify functionality of immediate shutdown "No" button clicking.
-    [Tags]  Verify_Immediate_Shutdown_Should_Not_Happen_By_Clicking_No_Button
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Click Element  ${xpath_select_button_immediate_shutdown}
-    Verify Warning Message Display Text  ${xpath_operation_warning_message}
-    ...  ${text_immediate_shutdown_warning_message}
-    Verify No Button Functionality
-    ...  ${xpath_select_button_immediate_shutdown_no}
-
-Verify Warm Reboot Should Happen By Clicking Yes Button
-    [Documentation]  Verify functionality of warm reboot "Yes" button clicking.
-    [Tags]  Verify_Warm_Reboot_Should_Happen_By_Clicking_Yes_Button
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Warm Reboot openBMC
-
-Verify Cold Reboot Should Happen By Clicking Yes Button
-    [Documentation]  Verify functionality of cold reboot "Yes" button clicking.
-    [Tags]  Verify_Cold_Reboot_Should_Happen_By_Clicking_Yes_Button
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Cold Reboot openBMC
-
-Verify Orderly Shutdown Should Happen By Clicking Yes Button
-    [Documentation]  Verify functionality of orderly shutdown "Yes" button clicking.
-    [Tags]  Verify_Orderly_Shutdown_Should_Happen_By_Clicking_Yes_Button
-    ...  OBMC_PowerRunning_State
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Orderly Shutdown OpenBMC
-
-Verify Immediate Shutdown Should Happen By Clicking Yes Button
-    [Documentation]  Verify functionality of immediate shutdown "Yes" button clicking.
-    [Tags]  Verify_Immediate_Shutdown_Should_Happen_By_Clicking_Yes_Button
-    ...  OBMC_PowerRunning_State
-    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
-
-    Select Server Power Operations Sub Menu
-    Immediate Shutdown openBMC
 
 *** Keywords ***
-Select Server Power Operations Sub Menu
-    [Documentation]  Selecting of OpenBMC "Server Power Operations" Submenu.
 
-    Click Button  ${xpath_select_server_control}
+Navigate To Power Operation Page
+   [Documentation]  Navigate to server power operation page.
+
+    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
+    Click Element  ${xpath_select_server_control}
+    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
     Click Element  ${xpath_select_server_power_operations}
-
-Verify Presence of Power Button And Text Info
-    [Documentation]  Verify the presence of power button and text message info.
-    [Arguments]      ${power_button}  ${power_button_text}
-
-    # power_button         Xpath of power button.
-    # power_button_text    Text message info.
-
-    Page Should Contain Button  ${power_button}
-    Verify Display Content  ${power_button_text}
-
-Verify No Button Functionality
-    [Documentation]  Verify the functionality of "No" button click.
-    [Arguments]      ${xpath_no_button}
-
-    # xpath_no_button      Xpath of "No" button.
-
-    Click No Button  ${xpath_no_button}
-    ${obmc_current_state}=  Get Text  ${xpath_power_indicator}
-    Should Contain  ${obmc_current_state}  ${obmc_running_state}
+    Wait Until Page Contains  Server power operations