diff --git a/gui/obmc_gui/__init__.robot b/gui/obmc_gui/__init__.robot
new file mode 100644
index 0000000..c92e0cc
--- /dev/null
+++ b/gui/obmc_gui/__init__.robot
@@ -0,0 +1,40 @@
+*** Settings ***
+Documentation  Main initialization file for the test cases contained in this
+...            directory and setting up the test environment variables.
+
+Resource          lib/resource.robot
+Suite Setup       Initializing Setup
+Suite Teardown    Init Teardown Steps
+
+*** Keywords ***
+Initializing Setup
+    [Documentation]  Initialize test environment.
+
+    Get OpenBMC System Info
+    Launch OpenBMC GUI Browser
+    Login OpenBMC GUI
+    Initial Message
+    LogOut OpenBMC GUI
+
+Initial Message
+    [Documentation]  Display initial info about the test cases.
+
+    Rpvars  EXECDIR
+    Rprint Timen  OBMC_GUI Testing ==> [IN PROGRESS]
+    Print Dashes  0  100  1  =
+
+Get OpenBMC System Info
+    [Documentation]  Display open BMC system info like system name and IP.
+
+    ${OPENBMC_HOST_NAME}=  Get Hostname From IP Address  ${OPENBMC_HOST}
+    Rpvars  OPENBMC_HOST  OPENBMC_HOST_NAME
+    ${build_info}  ${stderr}  ${rc}=  BMC Execute Command  cat /etc/os-release
+    ...  print_output=1
+    Print Dashes  0  100  1  =
+
+Init Teardown Steps
+    [Documentation]  End the test execution by closing browser.
+
+    Print Timen  OBMC_GUI Testing ==> [Finished]
+    Print Dashes  0  100  1  =
+    Close Browser
diff --git a/gui/obmc_gui/data/resource_variables.py b/gui/obmc_gui/data/resource_variables.py
new file mode 100644
index 0000000..086bec1
--- /dev/null
+++ b/gui/obmc_gui/data/resource_variables.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+
+r"""
+Contains xpaths and related string constants applicable to all openBMC GUI
+menus.
+"""
+
+
+class resource_variables():
+
+    xpath_textbox_hostname = "//*[@id='login__form']/input[1]"
+    xpath_textbox_username = "//*[@id='username']"
+    xpath_textbox_password = "//*[@id='password']"
+    xpath_button_login = "//*[@id='login__submit']"
+    xpath_button_logout = "//*[@id='header']/a"
+    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']"
+
+    obmc_off_state = "Off"
+    obmc_quiesced_state = "Quiesced"
+    obmc_running_state = "Running"
diff --git a/gui/obmc_gui/lib/resource.robot b/gui/obmc_gui/lib/resource.robot
new file mode 100644
index 0000000..c77bd01
--- /dev/null
+++ b/gui/obmc_gui/lib/resource.robot
@@ -0,0 +1,181 @@
+*** Settings ***
+Documentation  This is a resource file of OpenBMC ASMI It contains the
+...            user-defined keywords which are available to all gui modules
+
+Library      String
+Library      Collections
+Library      DateTime
+Library      XvfbRobot
+Library      OperatingSystem
+Library      Selenium2Library  120  120
+Library      AngularJSLibrary
+Library      SSHLibrary  30 Seconds
+Library      Process
+Library      supporting_libs.py
+Library      ../../../lib/gen_print.py
+Library      ../../../lib/gen_robot_print.py
+Library      ../../../lib/gen_valid.py
+Library      ../../../lib/gen_robot_ssh.py
+Library      ../../../lib/bmc_ssh_utils.py
+Resource     ../../../lib/resource.txt
+Resource     ../../../lib/rest_client.robot
+Resource     ../../../lib/state_manager.robot
+Variables    ../data/resource_variables.py
+
+*** Variables ***
+${obmc_gui_url}              http://localhost:8080/#/login
+# Default Browser.
+${default_browser}           chrome
+
+${obmc_PowerOff_state}       Off
+${obmc_PowerRunning_state}   Running
+${obmc_PowerQuiesced_state}  Quiesced
+
+*** Keywords ***
+Launch OpenBMC GUI Browser
+    [Documentation]  Launch the OpenBMC GUI URL on a browser.
+    # By default uses headless mode, otherwise, the GUI browser.
+
+    ${op_system}=  Get Operating System
+    Run Keyword If  '${op_system}' == 'windows'
+    ...     Launch Browser in Windows Platform
+    ...  ELSE
+    ...     Launch Headless Browser
+
+Get Operating System
+    [Documentation]  Identify platform/OS.
+
+    ${curdir_lower_case}=  Convert To Lowercase  ${CURDIR}
+    ${windows_platform}=  Run Keyword And Return Status
+    ...  Should Contain  ${curdir_lower_case}  c:\
+    ${op_system}=  Run Keyword If  '${windows_platform}' == 'True'
+    ...     Set Variable  windows
+    ...   ELSE
+    ...     Set Variable  linux
+    [Return]  ${op_system}
+
+Launch Browser in Windows Platform
+    [Documentation]  Open the browser with the URL and
+    ...              login on windows platform.
+
+    ${BROWSER_ID}=  Open Browser  ${obmc_gui_url}  ${default_browser}
+    Maximize Browser Window
+    Set Global Variable  ${BROWSER_ID}
+
+Launch Headless Browser
+    [Documentation]  Launch headless browser.
+
+    Start Virtual Display  1920  1080
+    ${BROWSER_ID}=  Open Browser  ${obmc_gui_url}
+    Set Global Variable  ${BROWSER_ID}
+    Set Window Size  1920  1080
+
+Login OpenBMC GUI
+    [Documentation]  Perform login to open BMC GUI.
+    [Arguments]  ${username}=${OPENBMC_USERNAME}
+    ...  ${password}=${OPENBMC_PASSWORD}
+    # Description of argument(s):
+    # username      The username.
+    # password      The password.
+
+    Go To  ${obmc_gui_url}
+    Input Text  ${xpath_textbox_hostname}  ${OPENBMC_HOST}
+    Input Text  ${xpath_textbox_username}  ${username}
+    Input Password  ${xpath_textbox_password}  ${password}
+    Click Button  ${xpath_button_login}
+    Wait Until Element Is Enabled  ${xpath_button_logout}
+
+
+Test Setup Execution
+    [Documentation]  Verify all the preconditions to be tested.
+    [Arguments]  ${obmc_test_setup_state}=NONE
+    # Description of argument(s):
+    # obmc_test_setup      The OpenBMC required state.
+
+    Rprint Timen  ${TEST NAME} ==> [STARTED]
+    Login OpenBMC GUI
+    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
+    ...  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
+    Run Keyword If  '${obmc_test_setup_state}' == '${obmc_PowerRunning_state}'
+    ...  Power On OpenBMC
+    Run Keyword If  '${obmc_test_setup_state}' == '${obmc_PowerOff_state}'
+    ...  Power Off OpenBMC
+
+Power Off OpenBMC
+    [Documentation]  Power off the OBMC system.
+
+    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}
+    Wait OpenBMC To Become Stable  ${obmc_off_state}
+
+Power On OpenBMC
+    [Documentation]  Power on the OBMC system.
+
+    Log To Console  Power On OpenBMC...
+    Click Element  ${xpath_display_server_power_status}
+    Click Button  ${xpath_select_button_power_on }
+    Wait OpenBMC To Become Stable  ${obmc_running_state}
+
+Reboot OpenBMC
+    [Documentation]  Rebooting the OBMC system.
+
+    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}
+    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
+    ...  ${retry_interval}=45 sec
+    # Description of argument(s):
+    # OBMC_expected_state      The OBMC state which is required for test.
+    # retry_time               Total wait time after executing the command.
+    # retry_interval           Time interval for to keep checking with in the
+    #                          above total wait time.
+
+    Wait Until Keyword Succeeds  ${retry_time}  ${retry_interval}
+    ...  Wait Until Element Contains  ${xpath_display_server_power_status}
+    ...  ${obmc_expected_state}
+    Wait Until Keyword Succeeds  ${retry_time}  ${retry_interval}
+    ...  Verify OpenBMC State From REST Interface  ${obmc_expected_state}
+
+Verify OpenBMC State From REST Interface
+    [Documentation]  Verify system state from REST Interface.
+    [Arguments]  ${obmc_required_state}
+    # Description of argument(s):
+    # obmc_required_state      The OBMC state which is required for test.
+
+    ${obmc_current_state_REST}=  Get Host State
+    Should Be Equal  ${obmc_current_state_REST}  ${obmc_required_state}
+
+Click Yes Button
+    [Documentation]  Click the 'yes' button.
+    [Arguments]  ${xpath_button_yes}
+    # Description of argument(s):
+    # xpath_button_yes      The xpath of 'yes' button.
+
+    Click Button  ${xpath_button_yes}
+
+LogOut OpenBMC GUI
+    [Documentation]  Log out of OpenBMC GUI.
+    SSHLibrary.Close All Connections
+    click button  ${xpath_button_logout}
+    Wait Until Page Contains Element  ${xpath_button_login}
+
+Test Teardown Execution
+    [Documentation]  Do final closure activities of test case execution.
+    Rprint Pgm Footer
+    Print Dashes  0  100  1  =
+    LogOut OpenBMC GUI
diff --git a/gui/obmc_gui/lib/supporting_libs.py b/gui/obmc_gui/lib/supporting_libs.py
new file mode 100644
index 0000000..40ea135
--- /dev/null
+++ b/gui/obmc_gui/lib/supporting_libs.py
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+
+r"""
+This is an extended user library to support Robot Selenium code.
+The class contains functions which the robot framework will use
+and import as a user-defined keyword.
+"""
+
+import socket
+
+class supporting_libs():
+
+    def get_hostname_from_ip_address(self, ip):
+        return socket.gethostbyaddr(ip)[0]
+
+
+
diff --git a/gui/obmc_gui/test/gui_header/test_obmc_gui_power_operations.robot b/gui/obmc_gui/test/gui_header/test_obmc_gui_power_operations.robot
new file mode 100644
index 0000000..5d7d3ab
--- /dev/null
+++ b/gui/obmc_gui/test/gui_header/test_obmc_gui_power_operations.robot
@@ -0,0 +1,64 @@
+*** Settings ***
+
+Documentation  Test Open BMC GUI Power Operations under GUI Header.
+
+Resource  ../../lib/resource.robot
+
+Suite Setup  Login OpenBMC GUI  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
+Suite Teardown  Close Browser
+
+*** Test Cases ***
+
+Power On The Host
+    [Documentation]  Power on the Host.
+    [Tags]  Power_On_the_Host
+
+    GUI Power On
+
+Immediate Power Off The Host
+    [Documentation]  Immediate power off the Host.
+    [Tags]  Immediate_Power_Off_The_Host
+
+    Controller Server Power Click Button  power__hard-shutdown
+    Controller Power Operations Confirmation Click Button  ${power_operations}
+    ...  ${power_off}  ${confirm_msg}  ${yes}
+
+Cold Boot The Host
+    [Documentation]  Cold boot the Host.
+    [Tags]  Cold_Boot_the_Host
+
+    GUI Power On
+    Controller Server Power Click Button  power__cold-boot
+    Controller Power Operations Confirmation Click Button  ${power_operations}
+    ...  ${cold_boot}  ${confirm_msg}  ${yes}
+    Page Should Contain  Running
+
+Warm Boot The Host
+    [Documentation]  Warm boot the Host.
+    [Tags]  Warm_Boot_The_Host
+
+    Controller Server Power Click Button  power__warm-boot
+    Controller Power Operations Confirmation Click Button  ${power_operations}
+    ...  ${warm_boot}  ${confirm_msg}  ${yes}
+    Page Should Contain  Running
+
+Orderly Shutdown The Host
+    [Documentation]  Orderly shutdown the Host.
+    [Tags]  Orderly_Shutdown_The_Host
+
+    Controller Server Power Click Button  power__soft-shutdown
+    Controller Power Operations Confirmation Click Button  ${power_operations}
+    ...  ${shut_down}  ${confirm_msg}  ${yes}
+    Page Should Contain  Off
+
+OpenBMC GUI Logoff
+    [Documentation]  Log out from OpenBMC GUI.
+    [Tags]  OpenBMC_GUI_Logoff
+
+    Log  ${xpath_openbmc_url}
+    Log To Console  ${xpath_openbmc_url}
+    Click Element  header
+
+
+
+
diff --git a/gui/obmc_gui/test/server_overview/server_overview.robot b/gui/obmc_gui/test/server_overview/server_overview.robot
new file mode 100644
index 0000000..c967120
--- /dev/null
+++ b/gui/obmc_gui/test/server_overview/server_overview.robot
@@ -0,0 +1,120 @@
+*** Settings ***
+Documentation  This test suite will validate the "OpenBMC ASMI Menu ->
+...            Server Overview" module.
+
+Resource         ../../lib/resource.robot
+Test Setup       Test Setup Execution  ${OBMC_PowerOff_state}
+Test Teardown    Test Teardown Execution
+
+*** Variables ***
+${xpath_select_overview_1}         //*[@id="nav__top-level"]/li[1]/a/span
+${string_content}                  witherspoon
+${string_server_info}              Server information
+${string_high_priority_events}     High priority events
+${string_BMC_info}                 BMC information
+${string_power_info}               Power information
+${xpath_high_priority_events}      //a[@href='#/server-health/event-log']
+${string_event_log}                Event log
+${xpath_launch_serial_over_lan}    //a[@class='no-icon quick-links__item']
+${string_launch_serial_over_lan}   Serial over LAN console
+
+*** Test Case ***
+# OpenBMC @ Power Off state test cases.
+
+Verify Title Text Content At OBMC Power Off State
+    [Documentation]  Verify display of title text from "Server Overview"
+    ...  module of OpenBMC GUI.
+    [Tags]  Verify_Title_Text_Content_At_OBMC_Power_Off_State
+    ...  OBMC_PowerOff_state
+
+    Select Server Overview Menu
+    Verify Display Content  ${string_content}
+
+Verify Display Text Server Information At OBMC Power Off State
+    [Documentation]  Verify existence of text "Server information".
+    [Tags]  Verify_Display_Text_Server_Information_At_OBMC_Power_Off_State
+    ...  OBMC_PowerOff_state
+
+    Select Server Overview Menu
+    Verify Display Content  ${string_server_info}
+
+Verify BMC Information Should Display At OBMC Power Off State
+    [Documentation]  Verify existence of text "BMC information".
+    [Tags]  Verify_BMC_Information_Should_Display_At_OBMC_Power_Off_State
+    ...  OBMC_PowerOff_State
+
+    Select Server Overview Menu
+    Verify Display Content  ${string_BMC_info}
+
+Verify POWER Information Should Display At OBMC Power Off State
+    [Documentation]  Verify existence of text "Power information".
+    [Tags]  Verify_Power_Information_Should_Display_At_OBMC_Power_Off_State
+    ...  OBMC_PowerOff_State
+
+    Select Server Overview Menu
+    Verify Display Content  ${string_power_info}
+
+Verify High Priority Events Should Display At OBMC Power Off State
+    [Documentation]  Verify the text display.
+    [Tags]  Verify_High_Priority_Events_Should_Display_At_OBMC_Power_Off_State
+    ...  OBMC_PowerOff_State
+
+    Select Server Overview Menu
+    Verify Display Content  ${string_high_priority_events}
+
+Verify High Priority Events Can Be Operated At OBMC Power Off State
+    [Documentation]  Will open the "High Priority Events".
+    ...  menu to view and operate.
+    [Tags]  Verify_High_Priority_Events_Can_Be_Operated_At_OBMC_Power_Off_State
+    ...   OBMC_PowerOff_state
+
+    Select Server Overview Menu
+    Click Link  ${xpath_high_priority_events}
+    Verify Display Content  ${string_event_log}
+
+Verify Launching Of Serial Over LAN Console At OBMC Power Off State
+    [Documentation]  Will open the serial over the lan command prompt window.
+    [Tags]  Verify_Launching_Of_Serial_Over_LAN_Console_At_OBMC_Power_Off_State
+    ...  OBMC_PowerOff_State
+
+    Select Server Overview Menu
+    Click Element  ${xpath_launch_serial_over_lan}
+    Verify Display Content  ${string_launch_serial_over_lan}
+
+
+# OpenBMC @ Power Running state test cases.
+
+Verify High Priority Events Can Be Operated At OBMC Power Running State
+    [Documentation]  Will open the "High Priority Events"
+    ...  menu to view and operate.
+    [Tags]  Verify_High_Priority_Events_Can_Be_Operated_At_OBMC_Power_Running_State
+    ...  OBMC_PowerRunning_state
+    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
+
+    Select Server Overview Menu
+    Click Link  ${xpath_high_priority_events}
+    Verify Display Content  ${string_event_log}
+
+Verify Launching Of Serial Over LAN Console At OBMC Power Running State
+    [Documentation]  Will open the serial over the lan command prompt window.
+    [Tags]  Verify_Launching_Of_Serial_Over_LAN_Console_At_OBMC_Power_Running_State
+    ...  OBMC_PowerRunning_State
+    [Setup]  Test Setup Execution  ${OBMC_PowerRunning_state}
+
+    Select Server Overview Menu
+    Click Element  ${xpath_launch_serial_over_lan}
+    Verify Display Content  ${string_launch_serial_over_lan}
+
+*** Keywords ***
+Select Server Overview Menu
+    [Documentation]  Selecting of OpenBMC "Server overview" menu.
+
+    Click Button  ${xpath_select_overview_1}
+
+Verify Display Content
+    [Documentation]  Verify text content display.
+    [Arguments]  ${display_text}
+    # Description of argument(s):
+    # display_text   The display text on web page.
+
+    Page Should Contain  ${display_text}
