1*** Settings ***
2
3Documentation  Test Open BMC GUI BMC host information under GUI Header.
4
5Library        DateTime
6
7Resource        ../../lib/resource.robot
8
9Suite Setup     Launch Browser And Login OpenBMC GUI
10Suite Teardown  Close Browser
11
12
13*** Variables ***
14${xpath_select_server_control}  //*[@id="header__wrapper"]/div/div[2]/p[2]
15${xpath_select_refresh_button}  //*[@id="header__wrapper"]/div/div[3]/button
16${xpath_select_date_text}       //*[@id="header__wrapper"]/div/div[3]/p/span
17${xpath_header_scroll_front}    //*[@id="header__wrapper"]/div/div[3]/a[1]/span
18${xpath_header_scroll_back}     //*[@id="header__wrapper"]/div/div[3]/a[1]/i
19
20*** Test Cases ***
21
22Verify Server Power Button
23    [Documentation]  Verify server power page on clicking server power button.
24    [Tags]  Verify_Server_Power_Button
25
26    Click Button  ${xpath_select_server_power}
27    Wait Until Page Contains  Select a power operation
28
29Verify Server Health Button
30    [Documentation]  Verify server health page on clicking server health button.
31    [Tags]  Verify_Server_Health_Button
32
33    Click Button  ${xpath_select_server_health}
34    Wait Until Page Contains  All events from the BMC
35
36Verify IP address
37    [Documentation]  Verify BMC IP address displayed in GUI header.
38    [Tags]  Verify_IP_address
39
40    # NOTE: gui_displayed_ip can be either a host name or an IP address.
41    #       (e.g. "machinex" or "xx.xx.xx.xx").
42    ${gui_displayed_ip}=  Get Text  ${xpath_select_server_control}
43    Should Contain  ${gui_displayed_ip}  ${OPENBMC_HOST}
44
45
46Verify Refresh Button
47    [Documentation]  Verify Refresh Button in GUI header.
48    [Tags]  Verify_Refresh_Button
49
50    # Verify power is on after refresh button.
51
52    Expected Initial Test State  Off
53    Click Element  ${xpath_select_refresh_button}
54    GUI Power On
55    Click Element  ${xpath_select_refresh_button}
56    Wait Until Page Contains  Running
57
58Verify Date Last Refreshed
59    [Documentation]  Verify Date Last Refreshed text in GUI header.
60    [Tags]  Verify_Date_Last_Refreshed
61
62    ${date_info_1st_read}=  Get Text  ${xpath_select_date_text}
63    ${current_date}=  Get Time
64    ${date_conversion}=  Convert Date  ${current_date}  result_format=%b %d %Y
65
66    ${mmmdd}  ${yyyy}=  Split String From Right  ${date_conversion}  ${SPACE}  1
67    Should Contain  ${date_info_1st_read}  ${mmmdd}  msg=Month and day mismatch.
68    Should Contain  ${date_info_1st_read}  ${yyyy}  msg=Year mismatch.
69
70    # Refresh button pressed.
71    Click Element  ${xpath_select_refresh_button}
72    Sleep  2s
73
74    ${date_info_2nd_read}=  Get Text  ${xpath_select_date_text}
75    ${current_date}=  Get Time
76    ${date_conversion}=  Convert Date  ${current_date}  result_format=%b %d %Y
77
78    ${mmmdd}  ${yyyy}=  Split String From Right  ${date_conversion}  ${SPACE}  1
79    Should Contain  ${date_info_1st_read}  ${mmmdd}  msg=Month and day mismatch.
80    Should Contain  ${date_info_1st_read}  ${yyyy}  msg=Year mismatch.
81
82    # Comparison between 1st and 2nd read.
83    Should Not Be Equal As Strings  ${date_info_1st_read}
84    ...  ${date_info_2nd_read}
85
86Verify GUI Header Scrolls
87    [Documentation]  Verify GUI header scrolls on click "Server Info" element.
88    [Tags]  Verify_GUI_Header_Scrolls
89
90    ${current_browser_width}  ${current_browser_height}=  Get Window Size
91    Maximize Browser Window
92    ${max_browser_width}  ${max_browser_height}=  Get Window Size
93    # Shrink the browser to half from max size.
94    ${shrink_browser_width}=  Evaluate  ${max_browser_width} / 2
95    ${shrink_browser_height}=  Evaluate  ${max_browser_height} / 2
96    # Reduce the browser size which enables scroll element.
97    Set Window Size  ${shrink_browser_width}  ${shrink_browser_height}
98    Click Element  ${xpath_header_scroll_front}
99    # Below element is to scroll back.
100    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
101    Click Element  ${xpath_header_scroll_back}
102    # Restore to original browser size.
103    Set Window Size  ${current_browser_width}  ${current_browser_height}
104