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