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
9Test Setup      Navigate To Date and Time Page
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 Profile Setting Button In Date And Time Page
95    [Documentation]  Verify navigation to profile setting page after clicking
96    ...  on profile setting button in date and time page.
97    [Tags]  Verify_Profile_Setting_Button_In_Date_And_Time_Page
98
99    Click Element   ${xpath_profile_settings_link}
100    Wait Until Page Contains Element  ${xpath_profile_settings_heading}  timeout=10
101    Location Should Contain   profile-settings
102
103
104Verify Existence Of Timezone Buttons In Profile Settings Page
105    [Documentation]  Verify default UTC button and browser offset IST button
106    ...  in Profile settings page
107    [Tags]  Verify_Existence_Of_Timezone_Buttons_In_Profile_Settings_Page
108
109    Click Element   ${xpath_profile_settings_link}
110    Wait Until Page Contains Element  ${xpath_profile_settings_heading}  timeout=30
111    Page Should Contain Element  ${xpath_default_UTC}
112    Page Should Contain Element  ${xpath_browser_offset}
113
114
115Verify Date And Time Change To Browser Offset Time
116    [Documentation]  Verify date and time change to broswer's offset time when
117    ...  'Browser offset' option is selected in Profile settings page.
118    [Tags]   Verify_Date_And_Time_Change_To_Browser_Offset_Time
119
120    Click Element   ${xpath_profile_settings_link}
121    Wait Until Page Contains Element  ${xpath_profile_settings_heading}  timeout=10
122    Click Element At Coordinates  ${xpath_browser_offset}  0  0
123    Click Element   ${xpath_profile_save_button}
124    ${xpath_browser_offset_text}=  Get Text  ${xpath_browser_offset_textfield}
125
126    # We get an output ${xpath_browser_offset_text} = Browser offset (CST UTC-6).
127    # Need to compare "CST UTC-6" text so removing the spaces and other values.
128
129    ${text}=  Set Variable  ${xpath_browser_offset_text.split("(")[1].split(")")[0]}
130    Navigate To Date and Time Page
131    Page Should Contain  ${text}
132
133
134Verify NTP Server Input Fields In Date And Time Page
135    [Documentation]  Verify NTP server input fields in date and time page.
136    [Tags]  Verify_NTP_Server_Input_Fields_In_Date_And_Time_Page
137    [Setup]  Setup To Power Off And Navigate
138
139    Click Element At Coordinates  ${xpath_select_ntp}  0  0
140    Input Text  ${xpath_ntp_server1}  10.10.10.10
141    Input Text  ${xpath_ntp_server2}  20.20.20.20
142    Input Text  ${xpath_ntp_server3}  30.30.30.30
143    Click Element  ${xpath_select_save_settings}
144
145
146    # Refresh the NTP Page.
147    Click Element  ${xpath_refresh_button}
148    Wait Until Page Contains Element  ${xpath_select_ntp}  timeout=10s
149
150    Textfield Value Should Be  ${xpath_ntp_server1}  10.10.10.10
151    Textfield Value Should Be  ${xpath_ntp_server2}  20.20.20.20
152    Textfield Value Should Be  ${xpath_ntp_server3}  30.30.30.30
153
154
155Verify Setting Manual BMC Time
156    [Documentation]  Verify changing manual time and comparing it with CLI time.
157    [Tags]  Verify_Setting_Manual_BMC_Time
158    [Setup]  Run Keywords  Set Timezone In Profile Settings Page
159    ...  Default  AND  Setup To Power Off And Navigate
160
161    Click Element At Coordinates  ${xpath_select_manual}  0  0
162    Input Text  ${xpath_manual_date}  2023-05-12
163    Input Text  ${xpath_manual_time}  15:30
164    Click Element  ${xpath_select_save_settings}
165
166    # Wait for changes to take effect.
167    Sleep  120
168    ${manual_date}=  Get Value  ${xpath_manual_date}
169    ${manual_time}=  Get Value  ${xpath_manual_time}
170
171    ${cli_date_time}=  CLI Get BMC DateTime
172    Should contain  ${cli_date_time}  ${manual_date}  ${manual_time}
173
174
175*** Keywords ***
176
177Suite Setup Execution
178   [Documentation]  Do test case setup tasks.
179
180    Launch Browser And Login GUI
181    Maximize Browser Window
182
183Setup To Power Off And Navigate
184   [Documentation]  Power off system if not powered off and go to date and
185   ...  time page.
186
187   Redfish Power off  stack_mode=skip
188   Navigate To Date and Time Page
189
190
191Navigate To Date and Time Page
192    [Documentation]  Navigate to the date and time page from main menu.
193
194    Click Element  ${xpath_settings_menu}
195    Click Element  ${xpath_date_time_sub_menu}
196    Wait Until Keyword Succeeds  30 sec  10 sec  Location Should Contain  date-time
197    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
198
199