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