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