diff --git a/gui/obmc_gui/data/resource_variables.py b/gui/obmc_gui/data/resource_variables.py
index 6fd1de6..27b33a0 100644
--- a/gui/obmc_gui/data/resource_variables.py
+++ b/gui/obmc_gui/data/resource_variables.py
@@ -17,15 +17,62 @@
     xpath_openbmc_ip = "//*[@id='login__form']/input[1]"
     xpath_display_server_power_status = \
         "//*[@id='header__wrapper']/div/div[3]/a[3]/span"
-    xpath_select_button_orderly_power_shutdown = \
-        "//*[@id='power__soft-shutdown']"
-    xpath_select_button_orderly_power_shutdown_yes = \
-        "//*[@id='power-operations']/div[3]/div[5]/confirm/div/div[2]/" \
-        "button[1]"
     xpath_select_button_power_on = "//*[@id='power__power-on']"
 
+    xpath_select_button_warm_reboot = \
+        "//*[@id='power__warm-boot']"
+    xpath_warm_reboot_warning_message = \
+        "//*[@id='power-operations']" \
+        "/div[3]/div[3]/confirm/div/div[1]/p[1]/strong"
+    xpath_select_button_warm_reboot_no = \
+        "//*[@id='power-operations']/div[3]" \
+        "/div[3]/confirm/div/div[2]/button[2]"
+    text_warm_reboot_warning_message = "warm reboot?"
+    xpath_select_button_warm_reboot_yes = \
+        "//*[@id='power-operations']" \
+        "/div[3]/div[3]/confirm/div/div[2]/button[1]"
+
+    xpath_select_button_cold_reboot = \
+        "//*[@id='power__cold-boot']"
+    xpath_cold_reboot_warning_message = \
+        "//*[@id='power-operations']/div[3]/div[4]" \
+        "/confirm/div/div[1]/p[1]/strong"
+    xpath_select_button_cold_reboot_no = \
+        "//*[@id='power-operations']/div[3]/div[4]" \
+        "/confirm/div/div[2]/button[2]"
+    text_cold_reboot_warning_message = "cold reboot?"
+    xpath_select_button_cold_reboot_yes = \
+        "//*[@id='power-operations']" \
+        "/div[3]/div[4]/confirm/div/div[2]/button[2]"
+
+    xpath_select_button_orderly_shutdown = \
+        "//*[@id='power__soft-shutdown']"
+    xpath_orderly_shutdown_warning_message = \
+        "//*[@id='power-operations']/div[3]/div[5]/" \
+        "confirm/div/div[1]/p[1]/strong"
+    xpath_select_button_orderly_shutdown_button_no = \
+        "//*[@id='power-operations']/div[3]/div[5]"\
+        "/confirm/div/div[2]/button[2]"
+    text_orderly_shutdown_warning_message = "orderly shutdown?"
+    xpath_select_button_orderly_shutdown_yes = \
+        "//*[@id='power-operations']/div[3]/div[5]" \
+        "/confirm/div/div[2]/button[1]"
+
+    xpath_select_button_immediate_shutdown = \
+        "//*[@id='power__hard-shutdown']"
+    xpath_immediate_shutdown_warning_message = \
+        "//*[@id='power-operations']/div[3]/div[6]" \
+        "/confirm/div/div[1]/p[1]/strong"
+    xpath_select_button_immediate_shutdown_no = \
+        "//*[@id='power-operations']/div[3]/div[6]" \
+        "/confirm/div/div[2]/button[2]"
+    text_immediate_shutdown_warning_message = "immediate shutdown?"
+    xpath_select_button_immediate_shutdown_yes = \
+        "//*[@id='power-operations']/div[3]/div[6]" \
+        "/confirm/div/div[2]/button[1]"
+
     obmc_off_state = "Off"
-    obmc_quiesced_state = "Quiesced"
+    obmc_standby_state = "Standby"
     obmc_running_state = "Running"
 
     # Power operation elements needed for power on.
diff --git a/gui/obmc_gui/lib/resource.robot b/gui/obmc_gui/lib/resource.robot
index 29b676a..3e5c90d 100644
--- a/gui/obmc_gui/lib/resource.robot
+++ b/gui/obmc_gui/lib/resource.robot
@@ -25,11 +25,11 @@
 *** Variables ***
 ${openbmc_gui_url}              http://localhost:8080/#/login
 # Default Browser.
-${default_browser}           chrome
+${default_browser}           ff
 
 ${obmc_PowerOff_state}       Off
 ${obmc_PowerRunning_state}   Running
-${obmc_PowerQuiesced_state}  Quiesced
+${obmc_PowerStandby_state}   Standby
 
 *** Keywords ***
 Launch OpenBMC GUI Browser
@@ -89,7 +89,7 @@
 
 Test Setup Execution
     [Documentation]  Verify all the preconditions to be tested.
-    [Arguments]  ${obmc_test_setup_state}=NONE
+    [Arguments]  ${obmc_test_setup_state}=${OBMC_PowerOff_state}
     # Description of argument(s):
     # obmc_test_setup      The OpenBMC required state.
 
@@ -98,12 +98,16 @@
     Log To Console  Verifying the system state and stablity...
     ${obmc_current_state}=  Get Text  ${xpath_display_server_power_status}
     Rpvars  obmc_current_state
-    ${obmc_state}=  Run Keyword And Return Status
+
+    ${obmc_state_status}=  Run Keyword And Return Status
     ...  Should Contain  ${obmc_current_state}  ${obmc_test_setup_state}
-    Return From Keyword If  '${obmc_state}' == 'True'
-    ${obmc_quiesced_state}=  Run Keyword And Return Status
-    ...  Should Contain  ${obmc_current_state}  ${obmc_quiesced_state}
-    Run Keyword If  '${obmc_quiesced_state}' == 'True'  Reboot OpenBMC
+    Return From Keyword If  '${obmc_state_status}' == 'True'
+
+    ${obmc_standby_state}=  Run Keyword And Return Status
+    ...  Should Contain  ${obmc_current_state}  ${obmc_standby_state}
+
+    Run Keyword If  '${obmc_standby_state}' == 'True'
+    ...  Reboot OpenBMC
     Run Keyword If  '${obmc_test_setup_state}' == '${obmc_PowerRunning_state}'
     ...  Power On OpenBMC
     Run Keyword If  '${obmc_test_setup_state}' == '${obmc_PowerOff_state}'
@@ -115,8 +119,8 @@
     Log To Console  Power Off OpenBMC...
     Click Element  ${xpath_display_server_power_status}
     Execute JavaScript  window.scrollTo(0, document.body.scrollHeight)
-    Click Button  ${xpath_select_button_orderly_power_shutdown}
-    Click Yes Button  ${xpath_select_button_orderly_power_shutdown_yes}
+    Click Button  ${xpath_select_button_orderly_shutdown}
+    Click Yes Button  ${xpath_select_button_orderly_shutdown_yes}
     Wait OpenBMC To Become Stable  ${obmc_off_state}
 
 Power On OpenBMC
@@ -132,13 +136,13 @@
 
     Log To Console  Reboting the OpenBMC...
     Click Element  ${xpath_display_server_power_status}
-    Click Button  ${xpath_select_button_orderly_power_shutdown}
-    Click Yes Button  ${xpath_select_button_orderly_power_shutdown_yes}
+    Click Button  ${xpath_select_button_orderly_shutdown}
+    Click Yes Button  ${xpath_select_button_orderly_shutdown_yes}
     Wait OpenBMC To Become Stable  ${obmc_off_state}
 
 Wait OpenBMC To Become Stable
     [Documentation]  Power off the OBMC.
-    [Arguments]  ${OBMC_expected_state}  ${retry_time}=5 min
+    [Arguments]  ${OBMC_expected_state}  ${retry_time}=15 min
     ...  ${retry_interval}=45 sec
     # Description of argument(s):
     # OBMC_expected_state      The OBMC state which is required for test.
@@ -162,10 +166,10 @@
     Should Be Equal  ${obmc_current_state_REST}  ${obmc_required_state}
 
 Click Yes Button
-    [Documentation]  Click the 'yes' button.
+    [Documentation]  Click the 'Yes' button.
     [Arguments]  ${xpath_button_yes}
     # Description of argument(s):
-    # xpath_button_yes      The xpath of 'yes' button.
+    # xpath_button_yes      The xpath of 'Yes' button.
 
     Click Button  ${xpath_button_yes}
 
@@ -233,10 +237,77 @@
     ...  //*[@id='power-operations']/div[${main_element}]/div[${sub_element}]/confirm/div/div[${confirm_msg_elt}]/button[${confirmation}]
 
 GUI Power On
-    [Documentation]  Power on the Host using GUI.
+    [Documentation]  Power on the host using GUI.
 
     Model Server Power Click Button  ${header_wrapper}  ${header_wrapper_elt}
     Page Should Contain  Attempts to power on the server
     Controller Server Power Click Button  power__power-on
     Page Should Contain  Running
 
+Verify Display Content
+    [Documentation]  Verify text content display.
+    [Arguments]  ${display_text}
+
+    # Description of argument(s):
+    # display_text   The text which is expected to be found on the web page.
+
+    Page Should Contain  ${display_text}
+
+Warm Reboot openBMC
+    [Documentation]  Warm reboot the OBMC system.
+
+    Log To Console  Warm Reboting the OpenBMC...
+    Click Element  ${xpath_select_button_warm_reboot}
+    Verify Warning Message Display Text  ${xpath_warm_reboot_warning_message}
+    ...  ${text_warm_reboot_warning_message}
+    Click Yes Button  ${xpath_select_button_warm_reboot_yes}
+    Wait OpenBMC To Become Stable  ${obmc_running_state}
+
+Click No Button
+    [Documentation]  Click the 'No' button.
+    [Arguments]  ${xpath_button_no}
+
+    # Description of argument(s):
+    # xpath_button_no      The xpath of 'No' button.
+
+    Click Button  ${xpath_button_no}
+
+Cold Reboot openBMC
+    [Documentation]  Cold reboot the OBMC system.
+
+    Log To Console  Cold Reboting the OpenBMC...
+    Click Element  ${xpath_select_button_cold_reboot}
+    Verify Warning Message Display Text  ${xpath_cold_reboot_warning_message}
+    ...  ${text_cold_reboot_warning_message}
+    Click Yes Button  ${xpath_select_button_cold_reboot_yes}
+    Wait OpenBMC To Become Stable  ${obmc_running_state}
+
+Orderly Shutdown OpenBMC
+    [Documentation]  Do orderly shutdown the OBMC system.
+
+    Log To Console  Orderly Shutdown the OpenBMC...
+    Click Element  ${xpath_select_button_orderly_shutdown}
+    Verify Warning Message Display Text  ${xpath_orderly_shutdown_warning_message}
+    ...  ${text_orderly_shutdown_warning_message}
+    Click Yes Button  ${xpath_select_button_orderly_shutdown_yes}
+    Wait OpenBMC To Become Stable  ${obmc_off_state}
+
+Immediate Shutdown openBMC
+    [Documentation]  Do immediate shutdown the OBMC system.
+
+    Log To Console  Immediate Shutdown the OpenBMC...
+    Click Element  ${xpath_select_button_immediate_shutdown}
+    Verify Warning Message Display Text
+    ...  ${xpath_immediate_shutdown_warning_message}
+    ...  ${text_immediate_shutdown_warning_message}
+    Click Yes Button  ${xpath_select_button_immediate_shutdown_yes}
+    Wait OpenBMC To Become Stable  ${obmc_off_state}
+
+Verify Warning Message Display Text
+    [Documentation]  Verify the warning message display text.
+    [Arguments]  ${xpath_text_message}  ${text_message}
+
+    # xpath_text_message  Xpath of warning message display.
+    # text_message        Content of the display message info.
+
+    Element Text Should Be  ${xpath_text_message}  ${text_message}
diff --git a/gui/obmc_gui/test/server_control/server_power_operations.robot b/gui/obmc_gui/test/server_control/server_power_operations.robot
new file mode 100644
index 0000000..79abb3a
--- /dev/null
+++ b/gui/obmc_gui/test/server_control/server_power_operations.robot
@@ -0,0 +1,215 @@
+*** 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
+
+*** Variables ***
+${xpath_select_server_control}           //*[@id="nav__top-level"]/li[3]/button/span
+${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 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 ower 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
+
+
+# OpenBMC @ Power Running state test cases.
+
+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}
+
+    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}
+
+    Select Server Power Operations Sub Menu
+    Verify Presence of Power Button And Text Info
+    ...  ${xpath_select_button_cold_reboot}  ${string_cold_reboot}
+
+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_warm_reboot_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_cold_reboot_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_orderly_shutdown_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_immediate_shutdown_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}
+    Click Button  ${xpath_select_server_power_operations}
+
+Verify Presence of Power Button And Text Info
+    [Documentation]  Verify the presens fo 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_display_server_power_status}
+    Should Contain  ${obmc_current_state}  ${obmc_running_state}
