diff --git a/gui/obmc_asmi/__init__.robot b/gui/obmc_asmi/__init__.robot
new file mode 100644
index 0000000..c747479
--- /dev/null
+++ b/gui/obmc_asmi/__init__.robot
@@ -0,0 +1,36 @@
+*** 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.
+    Launch OpenBMC GUI Browser
+    Login OpenBMC GUI
+    Get OpenBMC System Info
+    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_asmi/data/resource_variables.py b/gui/obmc_asmi/data/resource_variables.py
new file mode 100644
index 0000000..21f5b3f
--- /dev/null
+++ b/gui/obmc_asmi/data/resource_variables.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+
+r"""
+Contains xpaths and related string constants applicable to all openBMC GUI
+menus.
+"""
+
+class resource_variables():
+
+    xpath_textbox_username = "//*[@id='username']"
+    xpath_textbox_password = "//*[@id='password']"
+    xpath_button_login = "//*[@id='login__submit']"
+    xpath_button_logout = "//*[@id='header']/a"
diff --git a/gui/obmc_asmi/lib/resource.robot b/gui/obmc_asmi/lib/resource.robot
new file mode 100644
index 0000000..bfba9ab
--- /dev/null
+++ b/gui/obmc_asmi/lib/resource.robot
@@ -0,0 +1,93 @@
+*** 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
+Variables    ../data/resource_variables.py
+
+*** Variables ***
+# TO Do: Change the variable once the code finally switches to the OpenBMC.
+${obmc_gui_url}     https://openbmc-test.mybluemix.net/#/login
+# Default Browser.
+${default_browser}  chrome
+
+*** 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 browse 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
+
+OpenBMC Test Setup
+    [Documentation]  Verify all the preconditions to be tested.
+    Rprint Timen  ${TEST NAME}:${TESTDOCUMENTATION} ==> [STARTED]
+    Print Dashes  0  100  1  =
+    Login OpenBMC GUI
+
+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_username}  ${username}
+    Input Password  ${xpath_textbox_password}  ${password}
+    Click Button  ${xpath_button_login}
+    Wait Until Element Is Enabled  ${xpath_button_logout}
+
+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}
+
+OpenBMC Test Closure
+    [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_asmi/lib/supporting_libs.py b/gui/obmc_asmi/lib/supporting_libs.py
new file mode 100644
index 0000000..40ea135
--- /dev/null
+++ b/gui/obmc_asmi/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_asmi/test/server_overview/server_overview.robot b/gui/obmc_asmi/test/server_overview/server_overview.robot
new file mode 100644
index 0000000..a24aa32
--- /dev/null
+++ b/gui/obmc_asmi/test/server_overview/server_overview.robot
@@ -0,0 +1,26 @@
+*** Settings ***
+Documentation  This test suite will validate the "OpenBMC ASMI Menu ->
+...            Server Overview" module.
+
+Resource         ../../lib/resource.robot
+Test Setup       OpenBMC Test Setup
+Test Teardown    OpenBMC Test Closure
+
+*** Variables ***
+${xpath_select_overview_1}  //*[@id="nav__top-level"]/li[1]/a/span
+${xpath_select_overview_2}  //a[@href='#/overview/system']
+${string_display_content}   Server overview
+
+*** Test Case ***
+Verify Title Text Content
+    [Documentation]  Verify display of title text from "Server Overview"
+    ...              module of OpenBMC GUI.
+    [Tags]  Verify_Title_Text_Content
+    Verify Display Content
+
+*** Keywords ***
+Verify Display Content
+    [Documentation]  Verify displaying of text.
+    Click Button  ${xpath_select_overview_1}
+    Click Button  ${xpath_select_overview_2}
+    Page Should Contain  ${string_display_content}
