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}  (//*[text()="View more"])[3]
21${view_all_event_logs}                 (//*[text()="View more"])[5]
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    Wait Until Page Contains  Network information  timeout=10
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