1*** Settings ***
2
3Documentation   Test OpenBMC GUI "Date and time" sub-menu of "Settings".
4
5Resource        ../../lib/gui_resource.robot
6
7Suite Setup     Suite Setup Execution
8Suite Teardown  Close Browser
9
10
11*** Variables ***
12
13${xpath_date_time_heading}     //h1[text()="Date and time"]
14${xpath_select_manual}         //*[@data-test-id="dateTime-radio-configureManual"]
15${xpath_select_ntp}            //*[@data-test-id="dateTime-radio-configureNTP"]
16${xpath_manual_date}           //input[@data-test-id="dateTime-input-manualDate"]
17${xpath_manual_time}           //input[@data-test-id="dateTime-input-manualTime"]
18${xpath_ntp_server1}           //input[@data-test-id="dateTime-input-ntpServer1"]
19${xpath_ntp_server2}           //input[@data-test-id="dateTime-input-ntpServer2"]
20${xpath_ntp_server3}           //input[@data-test-id="dateTime-input-ntpServer3"]
21${xpath_select_save_settings}  //button[@data-test-id="dateTime-button-saveSettings"]
22
23
24*** Test Cases ***
25
26Verify Navigation To Date And Time Page
27    [Documentation]  Verify navigation to date and time page.
28    [Tags]  Verify_Navigation_To_Date_And_Time_Page
29
30    Page Should Contain Element  ${xpath_date_time_heading}
31
32
33Verify Existence Of All Sections In Date And Time Page
34    [Documentation]  Verify existence of all sections in date and time page.
35    [Tags]  Verify_Existence_Of_All_Sections_In_Date_And_Time_Page
36
37    Page Should Contain  Configure settings
38
39
40Verify Existence Of All Buttons In Date And Time Page
41    [Documentation]  Verify existence of all buttons in date and time settings page.
42    [Tags]  Verify_Existence_Of_All_Buttons_In_Date_And_Time_Page
43
44    Page Should Contain Element  ${xpath_select_manual}
45    Page Should Contain Element  ${xpath_select_ntp}
46    Page Should Contain Element  ${xpath_select_save_settings}
47
48
49Verify Existence Of All Input Boxes In Date And Time Page
50    [Documentation]  Verify existence of all input boxes in date time page.
51    [Tags]  Verify_Existence_Of_All_Input_Boxes_In_Date_And_Time_Page
52
53    Click Element At Coordinates  ${xpath_select_manual}  0  0
54    Page Should Contain Element  ${xpath_manual_date}
55    Page Should Contain Element  ${xpath_manual_time}
56
57    Click Element At Coordinates  ${xpath_select_ntp}  0  0
58    Page Should Contain Element  ${xpath_ntp_server1}
59    Page Should Contain Element  ${xpath_ntp_server2}
60    Page Should Contain Element  ${xpath_ntp_server3}
61
62
63Verify Date And Time From Configuration Section
64    [Documentation]  Get date and time from configuration section and verify it via BMC CLI.
65    [Tags]  Verify_Date_And_Time_From_Configuration_Section
66
67    Click Element At Coordinates  ${xpath_select_manual}  0  0
68    ${manual_date}=  Get Value  ${xpath_manual_date}
69    ${manual_time}=  Get Value  ${xpath_manual_time}
70
71    ${cli_date_time}=  CLI Get BMC DateTime
72    Should contain  ${cli_date_time}  ${manual_date}  ${manual_time}
73
74
75Verify Display Of Date And Time In GUI Page
76     [Documentation]  Get date and time from Redfish and verify it via GUI date and time page.
77     [Tags]  Verify_Display_Of_Date_And_Time_In_GUI_Page
78
79    # Set Default timezone in profile settings page.
80    Set Timezone In Profile Settings Page  Default
81    Navigate To Date and Time Page
82
83    # Get date and time from Redfish.
84    ${redfish_date_time}=  CLI Get BMC DateTime
85    ${redfish_date}=  Convert Date  ${redfish_date_time}  result_format=%Y-%m-%d
86    ${redfish_time}=  Convert Date  ${redfish_date_time}  result_format=%H:%M
87
88    # Verify date and time via GUI date and time page.
89
90    Page Should Contain  ${redfish_date}
91    Page Should Contain  ${redfish_time}
92
93
94Verify NTP Server Input Fields In Date And Time Page
95    [Documentation]  Verify NTP server input fields in date and time page.
96    [Tags]  Verify_NTP_Server_Input_Fields_In_Date_And_Time_Page
97
98    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
99    ...  body={'NTP':{'NTPServers': ['10.10.10.10', '20.20.20.20', '30.30.30.30']}}
100    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
101
102    # Refresh the NTP Page.
103    Click Element  ${xpath_refresh_button}
104    Wait Until Page Contains Element  ${xpath_select_ntp}  timeout=10s
105
106    Textfield Value Should Be  ${xpath_ntp_server1}  10.10.10.10
107    Textfield Value Should Be  ${xpath_ntp_server2}  20.20.20.20
108    Textfield Value Should Be  ${xpath_ntp_server3}  30.30.30.30
109
110
111*** Keywords ***
112
113Suite Setup Execution
114   [Documentation]  Do test case setup tasks.
115
116    Launch Browser And Login GUI
117    Navigate To Date and Time Page
118
119Navigate To Date and Time Page
120    [Documentation]  Navigate to the date and time page from main menu.
121
122    Click Element  ${xpath_settings_menu}
123    Click Element  ${xpath_date_time_sub_menu}
124    Wait Until Keyword Succeeds  30 sec  10 sec  Location Should Contain  date-time
125    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
126
127