1*** Settings ***
2
3Documentation  Test OpenBMC GUI "Overview" menu.
4
5Resource        ../../lib/gui_resource.robot
6Resource        ../../../lib/logging_utils.robot
7Resource        ../../../lib/list_utils.robot
8Resource        ../../../lib/bmc_network_utils.robot
9
10Library         String
11
12Suite Setup     Launch Browser And Login GUI
13Suite Teardown  Close Browser
14Test Setup      Test Setup Execution
15
16
17*** Variables ***
18
19${xpath_overview_page_header}          //h1[contains(text(), "Overview")]
20${xpath_edit_network_settings_button}  //*[@data-test-id='overviewQuickLinks-button-networkSettings']
21${view_all_event_logs}                 //*[@data-test-id='overviewEvents-button-eventLogs']
22${xpath_launch_serial_over_lan}        //*[@data-test-id='overviewQuickLinks-button-solConsole']
23${xpath_led_button}                    //*[@data-test-id='overviewQuickLinks-checkbox-serverLed']
24
25
26*** Test Cases ***
27
28Verify Existence Of All Sections In Overview Page
29    [Documentation]  Verify existence of all sections in Overview page.
30    [Tags]  Verify_Existence_Of_All_Sections_In_Overview_Page
31
32    Page Should Contain  BMC information
33    Page Should Contain  Server information
34    Page Should Contain  Network information
35    Page Should Contain  Power consumption
36    Page Should Contain  High priority events
37
38
39Verify Network Information In Overview Page
40    [Documentation]  Verify values under network information section.
41    [Tags]  Verify_Network_Information_In_Overview_Page
42
43    ${hostname}=  Get BMC Hostname
44    Page Should Contain  ${hostname}
45
46    # Get all IP addresses and prefix lengths on system.
47
48    ${ip_addr_list}=  Get BMC IP Info
49    FOR  ${ip_address}  IN  @{ip_addr_list}
50      ${ip}=  Fetch From Left  ${ip_address}  \/
51      Page Should Contain  ${ip}
52    END
53
54    ${macaddr}=  Get BMC MAC Address
55    Page Should Contain  ${macaddr}
56
57
58Verify Message In High Priority Events Section For No Events
59    [Documentation]  Verify message under high priority events section in case of no events.
60    [Tags]  Verify_Message_In_High_Priority_Events_Section_For_No_Events
61
62    Redfish Purge Event Log
63    Click Element  ${xpath_refresh_button}
64    Wait Until Page Contains  no high priority events to display  timeout=10
65
66
67Verify Server Information Section
68    [Documentation]  Verify values under server information section in overview page.
69    [Tags]  Verify_Server_Information_Section
70
71    ${redfish_machine_model}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  Model
72    Page Should Contain  ${redfish_machine_model}
73
74    ${redfish_serial_number}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  SerialNumber
75    Page Should Contain  ${redfish_serial_number}
76
77    ${redfish_motherboard_manufacturer}=  Redfish.Get Attribute
78    ...  /redfish/v1/Systems/system/  Manufacturer
79
80    Page Should Contain  ${redfish_motherboard_manufacturer}
81
82
83Verify BMC Information Section
84    [Documentation]  Verify BMC information section in overview page.
85    [Tags]  Verify_BMC_Information_Section
86
87    ${firmware_version}=  Redfish Get BMC Version
88    Page Should Contain  ${firmware_version}
89
90
91Verify Edit Network Setting Button
92    [Documentation]  Verify navigation to network setting page after clicking the button in overview page.
93    [Tags]  Verify_Edit_Network_Setting_Button
94
95    Click Element  ${xpath_edit_network_settings_button}
96    Wait Until Page Contains Element  ${xpath_network_page_header}
97
98
99Verify Event Under High Priority Events Section
100    [Documentation]  Verify event under high priority events section in case of any event.
101    [Tags]  Verify_Event_Under_High_Priority_Events_Section
102
103    Redfish Purge Event Log
104    Click Element  ${xpath_refresh_button}
105    Generate Test Error Log
106    Click Element  ${xpath_refresh_button}
107    Wait Until Page Contains  xyz.openbmc_project.Common.Error.InternalFailure  timeout=30s
108
109
110Verify View All Event Logs Button
111    [Documentation]  Verify view all event log button in overview page.
112    [Tags]  Verify_View_All_Event_Logs_Button
113
114    Generate Test Error Log
115    Page Should Contain Element  ${view_all_event_logs}  timeout=30
116    Click Element  ${view_all_event_logs}
117    Wait Until Page Contains Element  ${xpath_event_header}  timeout=30
118
119
120Verify Serial Over LAN Console Button In Overview Page
121    [Documentation]  Click serial over LAN button and verify page navigation to serial over LAN page.
122    [Tags]  Verify_Serial_Over_LAN_Console_Button_In_Overview_Page
123
124    Click Element  ${xpath_launch_serial_over_lan}
125    Wait Until Page Contains Element  ${xpath_sol_console_heading}
126
127
128Verify Server LED Turn On
129    [Documentation]  Turn on server LED via GUI and verify its status via Redfish.
130    [Tags]  Verify_Server_LED_Turn_On
131
132    # Turn Off the server LED via Redfish and refresh GUI.
133    Redfish.Patch  /redfish/v1/Systems/system  body={"IndicatorLED":"Off"}   valid_status_codes=[200, 204]
134    Refresh GUI
135
136    # Turn ON the LED via GUI.
137    Click Element At Coordinates  ${xpath_led_button}  0  0
138
139    # Cross check that server LED ON state via Redfish.
140    ${led_status}=  Redfish.Get Attribute  /redfish/v1/Systems/system  IndicatorLED
141    Should Be True  '${led_status}' == 'Lit'
142
143
144Verify Server LED Turn Off
145    [Documentation]  Turn off server LED via GUI and verify its status via Redfish.
146    [Tags]  Verify_Server_LED_Turn_Off
147
148    # Turn On the server LED via Redfish and refresh GUI.
149    Redfish.Patch  /redfish/v1/Systems/system  body={"IndicatorLED":"Lit"}   valid_status_codes=[200, 204]
150    Refresh GUI
151
152    # Turn OFF the LED via GUI.
153    Click Element At Coordinates  ${xpath_led_button}  0  0
154
155    # Cross check that server LED off state via Redfish.
156    ${led_status}=  Redfish.Get Attribute  /redfish/v1/Systems/system  IndicatorLED
157    Should Be True  '${led_status}' == 'Off'
158
159
160Verify BMC Time In Overview Page
161    [Documentation]  Verify that BMC date from GUI matches with BMC time via Redfish.
162    [Tags]  Verify_BMC_Time_In_Overview_Page
163
164    ${date_time}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}Managers/bmc  DateTime
165    ${converted_date}=  Convert Date  ${date_time}  result_format=%Y-%m-%d
166
167    Page Should Contain  ${converted_date}
168
169
170Verify BMC Information At Host Power Off State
171    [Documentation]  Verify that BMC information is displayed at host power off state.
172    [Tags]  Verify_BMC_Information_At_Host_Power_Off_State
173
174    Redfish Power Off  stack_mode=skip
175    ${firmware_version}=  Redfish Get BMC Version
176    Page Should Contain  ${firmware_version}
177
178
179*** Keywords ***
180
181Test Setup Execution
182    [Documentation]  Do test case setup tasks.
183
184    Click Element  ${xpath_overview_menu}
185    Wait Until Page Contains Element  ${xpath_overview_page_header}
186