1*** Settings ***
2
3Documentation  Test OpenBMC GUI "Server power operations" sub-menu of "Operations".
4
5Resource        ../../lib/gui_resource.robot
6Resource        ../../../lib/state_manager.robot
7
8Test Setup      Run Keywords  Launch Browser And Login GUI  AND  Navigate to Server Power Operation Page
9Test Teardown   Close Browser
10
11
12*** Variables ***
13
14${xpath_server_power_heading}              //h1[text()="Server power operations"]
15${xpath_enable_onetime_boot_checkbox}      //*[contains(@class,'custom-checkbox')]
16${xpath_boot_option_select}                //*[@id='boot-option']
17${xpath_shutdown_button}                   //*[@data-test-id='serverPowerOperations-button-shutDown']
18${xpath_reboot_button}                     //*[@data-test-id='serverPowerOperations-button-reboot']
19${xpath_poweron_button}                    //*[@data-test-id='serverPowerOperations-button-powerOn']
20${xpath_tpm_policy_button}                 //input[@id='tpm-required-policy']
21${xpath_save_button}                       //button[contains(text(),'Save')]
22${xpath_shutdown_orderly_radio}            //*[@data-test-id='serverPowerOperations-radio-shutdownOrderly']
23${xpath_shutdown_immediate_radio}          //*[@data-test-id='serverPowerOperations-radio-shutdownImmediate']
24${xpath_confirm_button}                    //button[contains(text(),'Confirm')]
25${xpath_current_power_state}               //*[@data-test-id='powerServerOps-text-hostStatus']
26${xpath_reboot_orderly_radio}              //*[@data-test-id='serverPowerOperations-radio-rebootOrderly']
27${xpath_reboot_immediate_radio}            //*[@data-test-id='serverPowerOperations-radio-rebootImmediate']
28
29
30*** Test Cases ***
31
32Verify Navigation To Server Power Operations Page
33    [Documentation]  Verify navigation to server power operations page.
34    [Tags]  Verify_Navigation_To_Server_Power_Operations_Page
35
36    Page Should Contain Element  ${xpath_server_power_heading}
37
38
39Verify Immediate Shutdown
40    [Documentation]  Verify shutdown after clicking immediate shutdown button.
41    [Tags]  Verify_Immediate_Shutdown
42    [Setup]  Run Keywords  Redfish Power On  stack_mode=skip  AND  Launch Browser And Login GUI
43    ...  AND  Navigate to Server Power Operation Page
44
45    Click Element At Coordinates  ${xpath_shutdown_immediate_radio}  0  0
46    Click Element  ${xpath_shutdown_button}
47    Wait Until Page Contains Element  ${xpath_confirm_button}  timeout=10
48    Click Element  ${xpath_confirm_button}
49    Wait Until Keyword Succeeds  3 min  15 sec  Element Should Contain  ${xpath_current_power_state}  Off
50
51
52Verify Orderly Shutdown
53    [Documentation]  Verify shutdown after clicking orderly shutdown button.
54    [Tags]  Verify_Orderly_Shutdown
55    [Setup]  Run Keywords  Redfish Power On  stack_mode=skip  AND  Launch Browser And Login GUI
56    ...  AND  Navigate to Server Power Operation Page
57
58    Click Element At Coordinates  ${xpath_shutdown_orderly_radio}  0  0
59    Click Element  ${xpath_shutdown_button}
60    Wait Until Page Contains Element  ${xpath_confirm_button}  timeout=10
61    Click Element  ${xpath_confirm_button}
62    Wait Until Keyword Succeeds  10 min  15 sec  Element Should Contain  ${xpath_current_power_state}  Off
63
64
65Verify Existence Of All Sections In Server Power Operations Page
66    [Documentation]  Verify existence of all sections in Server Power Operations page.
67    [Tags]  Verify_Existence_Of_All_Sections_In_Server_Power_Operations_Page
68
69    # Added a delay for the page to load boot settings section.
70    Wait Until Page Contains  Boot settings  timeout=5
71    Page Should Contain  Current status
72    Page Should Contain  Boot settings
73    Page Should Contain  Operations
74
75
76Verify Existence Of All Input Boxes In Host Os Boot Settings
77    [Documentation]  Verify existence of all input boxes in host os boot settings.
78    [Tags]  Verify_Existence_Of_All_Input_Boxes_In_Host_Os_Boot_Settings
79
80    # Added a delay for the page to load boot settings section.
81    Wait Until Page Contains  Boot settings  timeout=5
82    Page Should Contain Element  ${xpath_enable_onetime_boot_checkbox}
83    Page Should Contain Element  ${xpath_boot_option_select}
84
85
86Verify Existence Of All Sections In Host Os Boot Settings
87    [Documentation]  Verify existence of all sections in host os boot settings.
88    [Tags]  Verify_Existence_Of_All_Sections_In_Host_Os_Boot_Settings
89
90    Wait Until Page Contains  Boot settings override  timeout=5
91    Page Should Contain  TPM required policy
92
93
94Verify System State At Power Off
95    [Documentation]  Verify state of the system in power off state.
96    [Tags]  Verify_System_State_At_Power_Off
97
98    Redfish Power Off  stack_mode=skip
99    Page Should Contain Element  ${xpath_current_power_state}
100    Element Should Contain   ${xpath_current_power_state}  Off
101
102
103Verify System State At Power On
104    [Documentation]  Verify state of the system in power on state.
105    [Tags]  Verify_System_State_At_Power_On
106    [Setup]  Run Keywords  Redfish Power On  stack_mode=skip  AND  Launch Browser And Login GUI
107    ...  AND  Navigate to Server Power Operation Page
108
109    Wait Until Keyword Succeeds  15 sec  5 sec   Element Should Contain   ${xpath_current_power_state}  On
110
111Verify PowerOn Button Should Present At Power Off
112    [Documentation]  Verify existence of poweron button at power off.
113    [Tags]  Verify_PowerOn_Button_Should_Present_At_Power_Off
114
115    Redfish Power Off  stack_mode=skip
116    # TODO: Implement power off using GUI later.
117    Page Should Contain Element  ${xpath_poweron_button}
118
119
120Verify Shutdown And Reboot Buttons Presence At Power On
121    [Documentation]  Verify existence of shutdown and reboot buttons at power on.
122    [Tags]  Verify_Shutdown_And_Reboot_Buttons_Presence_At_Power_On
123    [Setup]  Run Keywords  Redfish Power On  stack_mode=skip  AND  Launch Browser And Login GUI
124    ...  AND  Navigate to Server Power Operation Page
125
126    # TODO: Implement power on using GUI later.
127    Page Should Contain Element  ${xpath_shutdown_button}
128    Page Should Contain Element  ${xpath_reboot_button}
129
130
131Verify Existence Of Buttons In Host Os Boot Settings
132    [Documentation]  Verify existence of buttons in Host OS boot settings.
133    [Tags]  Verify_Existence_Of_Buttons_In_Host_Os_Boot_Settings
134
135    # Added a delay for the page to load boot settings section.
136    Wait Until Page Contains  Boot settings  timeout=5
137    Page Should Contain Element  ${xpath_tpm_policy_button}
138    Page Should Contain Element  ${xpath_save_button}
139
140
141Verify Host Immediate Reboot
142    [Documentation]  Verify host reboot after triggering immediate reboot.
143    [Tags]  Verify_Host_Immediate_Reboot
144    [Setup]  Run Keywords  Redfish Power On  stack_mode=skip  AND  Launch Browser And Login GUI
145    ...  AND  Navigate to Server Power Operation Page
146
147    Click Element At Coordinates  ${xpath_reboot_immediate_radio}  0  0
148    Click Element  ${xpath_reboot_button}
149    Wait Until Page Contains Element  ${xpath_confirm_button}  timeout=10
150    Click Element  ${xpath_confirm_button}
151    Wait Until Keyword Succeeds  3 min  2 sec  Element Should Contain  ${xpath_current_power_state}  Off
152    Click Element  ${xpath_refresh_button}
153    Wait Until Keyword Succeeds  10 min  15 sec  Element Should Contain  ${xpath_current_power_state}  On
154
155
156Verify Host Orderly Reboot
157    [Documentation]  Verify host reboot after triggering orderly reboot.
158    [Tags]  Verify_Host_Orderly_Reboot
159    [Setup]  Run Keywords  Redfish Power On  stack_mode=skip  AND  Launch Browser And Login GUI
160    ...  AND  Navigate to Server Power Operation Page
161
162    Click Element At Coordinates  ${xpath_reboot_orderly_radio}  0  0
163    Click Element  ${xpath_reboot_button}
164    Wait Until Page Contains Element  ${xpath_confirm_button}  timeout=10
165    Click Element  ${xpath_confirm_button}
166    Wait Until Keyword Succeeds  3 min  2 sec  Element Should Contain  ${xpath_current_power_state}  Off
167    Click Element  ${xpath_refresh_button}
168    Wait Until Keyword Succeeds  10 min  15 sec  Element Should Contain  ${xpath_current_power_state}  On
169
170
171*** Keywords ***
172
173Navigate to Server Power Operation Page
174    [Documentation]  Go to server power operation page.
175
176    Click Element  ${xpath_operations_menu}
177    Click Element  ${xpath_server_power_operations_sub_menu}
178    Wait Until Keyword Succeeds  30 sec  10 sec  Location Should Contain  server-power-operations
179