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