1*** Settings ***
2
3Documentation  Test Open BMC GUI server health under GUI Header.
4
5Resource        ../../lib/resource.robot
6Resource        ../../../lib/boot_utils.robot
7Resource        ../../../lib/utils.robot
8Resource        ../../../lib/openbmc_ffdc.robot
9Resource        ../../../lib/state_manager.robot
10Resource        ../../../lib/openbmc_ffdc_methods.robot
11Resource        ../../../lib/dump_utils.robot
12Resource        ../../../lib/logging_utils.robot
13Library         ../../../lib/gen_robot_keyword.py
14
15Test Setup      Test Setup Execution
16Test Teardown   Test Teardown Execution
17
18
19*** Test Cases ***
20
21Verify Event Log Text Appears By Clicking Server Health
22    [Documentation]  Check that "Event Log" text appears by clicking server
23    ...  health in GUI header.
24    [Tags]  Verify_Event_Log_Text_Appears_By_Clicking_Server_Health
25
26    Wait Until Page Contains Element  event-log
27    Page should contain  Event log
28
29
30Verify Filters By Severity Elements Appears
31    [Documentation]  Check that the "event log" filters appears by clicking
32    ...  server health in GUI header.
33    [Tags]  Verify_Filters_By_Severity_Elements_Appears
34
35    # Types of event severity: All, High, Medium, Low.
36    Page Should Contain Element  ${xpath_event_severity_all}  limit=1
37    Page Should Contain Element  ${xpath_event_severity_high}  limit=1
38    Page Should Contain Element  ${xpath_event_severity_medium}  limit=1
39    Page Should Contain Element  ${xpath_event_severity_low}  limit=1
40
41
42Verify Drop Down Button User Timezone Appears
43    [Documentation]  Check that the "drop down" button of user timezone appears
44    ...  by clicking server health in GUI header.
45    [Tags]  Verify_Drop_Down_Button_User_Timezone_Appears
46
47    Page Should Contain Button  ${xpath_drop_down_timezone_edt}
48    # Ensure that page is not in refreshing state.
49    # It helps to click the drop down element.
50    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
51    Click Element  //*[@class='dropdown__button']
52    Page Should Contain Button  ${xpath_drop_down_timezone_utc}
53
54
55Verify Content Search Element Appears
56    [Documentation]  Check that the "event search element is available with
57    ...  filter" button appears.
58    [Tags]  Verify_Content_Search_Element_Appears
59
60    Page Should Contain Element  content__search-input  limit=1
61    # Ensure that page is not in refreshing state.
62    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
63    Page Should Contain Button  content__search-submit
64
65
66Verify Filter By Date Element Appears
67    [Documentation]  Check that the "filter by date" elements are available and
68    ...  visible.
69    [Tags]  Verify_Filter_By_Date_Element_Appears
70
71    Wait Until Element Is Visible  event-filter-start-date
72    Page Should Contain Element  event-filter-start-date  limit=1
73    Page Should Contain Element  event-filter-end-date  limit=1
74
75
76Verify Filter By Event Status Element Appears
77    [Documentation]  Check that the "filter by event status" element appears.
78    [Tags]  Verify_Filter_By_Event_Status_Element_Appears
79
80    # Ensure that page is not in refreshing state.
81    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
82    Wait Until Element is Visible  //*[@class='dropdown__wrapper']
83    Click Element  //*[@class='dropdown__wrapper']
84    Page Should Contain Element  ${xpath_event_filter_all}  limit=2
85    Page Should Contain Element  ${xpath_event_filter_resolved}  limit=1
86    Page Should Contain Element  ${xpath_event_filter_unresolved}  limit=1
87
88
89Verify Event Action Bar Element Appears
90    [Documentation]  Check that "event action bar" element appears.
91    [Tags]  Verify_Event_Action_Bar_Element_Appears
92
93    # Ensure that page is not in refreshing state.
94    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
95    Page Should Contain Element  ${xpath_event_action_bars}  limit=1
96    Page Should Contain Element  ${xpath_select_all_events}
97
98
99Verify Click Events Check Box
100    [Documentation]  Check that "event check box" element appears and on click
101    ...  should be able to see elements like "Delete" button and "Export"
102    ...  element.
103    [Tags]  Verify_Click_Events_Check_Box
104
105    Create Test Error Log
106    Click Element  ${xpath_select_refresh_button}
107    # Ensure that page is not in refreshing state.
108    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
109    Click Element  ${xpath_select_all_events}
110    Page Should Contain Button  ${xpath_event_action_delete}  limit=1
111    Page Should Contain Element  ${xpath_event_action_export}  limit=1
112
113
114Verify Number of Events Appears
115    [Documentation]  Check that "number of events" element appears and value is
116    ...  visible.
117    [Tags]  Verify_Number_of_Events_Appears
118
119    # Ensure that page is not in refreshing state.
120    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
121    Page Should Contain Element  ${xpath_number_of_events}
122    ${number_of_events}=  Get Text  ${xpath_number_of_events}
123    Log To Console  \n Number of Events:${number_of_events}
124
125
126Select All Error Logs And Mark As Resolved
127    [Documentation]  Select all error logs and mark them as resolved.
128    [Tags]  Select_All_Error_Logs_And_Mark_As_Resolved
129
130    Create Test Error Log
131    Create Test Error Log
132    Click Element  ${xpath_select_refresh_button}
133    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
134    Page Should Contain Element  ${xpath_number_of_events}
135    ${number_of_events}=  Get Text  ${xpath_number_of_events}
136    Click Element  ${xpath_select_all_events}
137    Run Keyword If  ${number_of_events} > 0
138    ...  Click Element  ${xpath_mark_as_resolved}
139    Element Should Be Disabled  ${xpath_mark_as_resolved}
140
141
142Select All Error Logs And Click Export
143    [Documentation]  Select all error logs and click export element.
144    [Tags]  Select_All_Error_Logs_And_Click_Export
145
146    Create Test Error Log
147    Create Test Error Log
148    Click Element  ${xpath_select_refresh_button}
149    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
150    Page Should Contain Element  ${xpath_number_of_events}
151    ${number_of_events}=  Get Text  ${xpath_number_of_events}
152    Click Element  ${xpath_select_all_events}
153    Page Should Contain Element  ${xpath_events_export}
154    Run Keyword If  ${number_of_events} > 0
155    ...  Click Element  ${xpath_events_export}
156
157
158Select All Error Logs And Delete
159    [Documentation]  Select all error logs and delete them.
160    [Tags]  Select_All_Error_Logs_And_Delete
161
162    Create Test Error Log
163    Create Test Error Log
164    Click Element  ${xpath_select_refresh_button}
165    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
166    Page Should Contain Element  ${xpath_number_of_events}
167    ${number_of_events}=  Get Text  ${xpath_number_of_events}
168    Run Keyword If  ${number_of_events} > 0
169    ...  Common Event Log Click Element  ${xpath_individual_event_delete}
170    ...  ${xpath_yes_button}  ${xpath_select_all_events}
171    ${number_of_events}=  Get Text  ${xpath_number_of_events}
172    Should Be Equal  ${number_of_events}  0
173
174
175Select Single Error Log And Delete
176    [Documentation]  Select single error log and delete it.
177    [Tags]  Select_Single_Error_Log_And_Delete
178
179    Create Test Error Log
180    # Refresh the GUI to get the latest update.
181    Click Element  ${xpath_select_refresh_button}
182    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
183    Page Should Contain Element  ${xpath_number_of_events}
184    ${number_of_events}=  Get Text  ${xpath_number_of_events}
185    Run Keyword If  ${number_of_events} > 0
186    ...  Common Event Log Click Element  ${xpath_individual_event_delete}
187    ...  ${xpath_yes_button}
188    ${number_of_events}=  Get Text  ${xpath_number_of_events}
189    Should Be Equal  ${number_of_events}  0
190    ...  msg=Failed to delete single error log entry.
191
192
193Select Multiple Error Logs And Delete
194    [Documentation]  Select multiple error logs and delete them.
195    [Tags]  Select_Multiple_Error_Logs_And_Delete
196
197    Create Test Error Log
198    Create Test Error Log
199    # Refresh the GUI to get the latest update.
200    Click Element  ${xpath_select_refresh_button}
201    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
202    Page Should Contain Element  ${xpath_number_of_events}
203    ${number_of_events}=  Get Text  ${xpath_number_of_events}
204    Run Keyword If  ${number_of_events} > 0
205    ...  Double Event Log Click Element  ${xpath_individual_event_delete}
206    ...  ${xpath_yes_button}
207    ${number_of_events}=  Get Text  ${xpath_number_of_events}
208    Should Be Equal  ${number_of_events}  0
209    ...  msg=Failed to delete multiple error log entries.
210
211
212Select Single Error Log And Mark As Resolved
213    [Documentation]  Select single error log and mark as resolved.
214    [Tags]  Select_Single_Error_Log_And_Mark_As_Resolved
215
216    Create Test Error Log
217    # Refresh the GUI to get the latest update.
218    Click Element  ${xpath_select_refresh_button}
219    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
220    Page Should Contain Element  ${xpath_number_of_events}
221    ${number_of_events}=  Get Text  ${xpath_number_of_events}
222    Run Keyword If  ${number_of_events} > 0
223    ...  Common Event Log Click Element  ${xpath_individual_event_resolved}
224    ${number_of_events}=  Get Text  ${xpath_number_of_events}
225    Should Be Equal  ${number_of_events}  1
226    ...  msg=Failed to mark single error log entry as resolved.
227
228
229Select Multiple Error Logs And Mark As Resolved
230    [Documentation]  Select multiple error logs and mark as resolved.
231    [Tags]  Select_Multiple_Error_Logs_And_Mark_As_Resolved
232
233    Create Test Error Log
234    Create Test Error Log
235    # Refresh the GUI to get the latest update.
236    Click Element  ${xpath_select_refresh_button}
237    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
238    Page Should Contain Element  ${xpath_number_of_events}
239    ${number_of_events}=  Get Text  ${xpath_number_of_events}
240    Run Keyword If  ${number_of_events} > 0
241    ...  Double Event Log Click Element  ${xpath_individual_event_resolved}
242    ${number_of_events}=  Get Text  ${xpath_number_of_events}
243    Should Be Equal  ${number_of_events}  2
244    ...  msg=Failed to mark multiple error log entries as resolved.
245
246
247Select Single Error Log And Export
248    [Documentation]  Select single error log and export.
249    [Tags]  Select_Single_Error_Log_And_Export
250
251    Create Test Error Log
252    # Refresh the GUI to get the latest update.
253    Click Element  ${xpath_select_refresh_button}
254    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
255    Page Should Contain Element  ${xpath_number_of_events}
256    ${number_of_events}=  Get Text  ${xpath_number_of_events}
257    Run Keyword If  ${number_of_events} > 0
258    ...  Common Event Log Click Element  ${xpath_individual_event_export}
259    ${number_of_events}=  Get Text  ${xpath_number_of_events}
260    Should Be Equal  ${number_of_events}  1
261    ...  msg=Failed to export single error log entry.
262
263
264Select Multiple Error Log And Export
265    [Documentation]  Select multiple error log and export.
266    [Tags]  Select_Multiple_Error_Log_And_Export
267
268    Create Test Error Log
269    Create Test Error Log
270    # Refresh the GUI to get the latest update.
271    Click Element  ${xpath_select_refresh_button}
272    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
273    Page Should Contain Element  ${xpath_number_of_events}
274    ${number_of_events}=  Get Text  ${xpath_number_of_events}
275    Run Keyword If  ${number_of_events} > 0
276    ...  Double Event Log Click Element  ${xpath_individual_event_export}
277    ${number_of_events}=  Get Text  ${xpath_number_of_events}
278    Should Be Equal  ${number_of_events}  2
279    ...  msg=Failed to export multiple error log entries.
280
281*** Keywords ***
282
283Common Event Log Click Element
284   [Documentation]  Keep common click elements associated with event log.
285   [Arguments]  ${action_element}  ${action_click_confirmation}=${None}
286   ...  ${xpath_event_select}=${xpath_individual_event_select}
287
288    # Description of argument(s):
289    # action_element             xpath value of the element to be actioned
290    #                            (e.g. "Delete" or "Resolved" or "Export").
291    # action_click_confirmation  Confirmation of action by pressing yes
292    #                            (e.g.  "Yes" or "No").
293    # xpath_event_select         xpath to select event log.
294
295    Click Element  ${xpath_event_select}
296    Page Should Contain Element  ${action_element}
297    Click Element  ${action_element}
298    Wait Until Page Does Not Contain Element  ${xpath_refresh_circle}
299    Run Keyword If  "${action_click_confirmation}" != "${None}"
300    ...  Click Element  ${action_click_confirmation}
301    Click Element  ${xpath_select_refresh_button}
302    Run Key  Sleep \ 50s
303
304Double Event Log Click Element
305   [Documentation]  Keep double click elements associated with event logs.
306   [Arguments]  ${action_element}  ${action_click_confirmation}=${None}
307
308    # Description of argument(s):
309    # action_element             xpath value of the element to be actioned
310    #                            (e.g. "Delete" or "Resolved" or "Export").
311    # action_click_confirmation  Confirmation of action by pressing yes
312    #                            (e.g.  "Yes" or "No").
313
314   Click Element  ${xpath_second_event_select}
315   Common Event Log Click Element  ${action_element}
316   ...  ${action_click_confirmation}
317
318Test Setup Execution
319   [Documentation]  Do test case setup tasks.
320
321   ${status}=  Run Keyword And Return Status  Logging Test Binary Exist
322   Run Keyword If  ${status} == ${False}  Install Tarball
323   Delete Error Logs And Verify
324
325   # Launch the GUI and navigate to server health page.
326   Launch Browser And Login OpenBMC GUI
327   Click Element  ${xpath_select_server_health}
328   Wait Until Page Contains  Event log
329
330Test Teardown Execution
331   [Documentation]  Do the post test teardown.
332
333   FFDC On Test Case Fail
334   Delete All Error Logs
335   Close All Connections
336   Close Browser
337