xref: /openbmc/openbmc-test-automation/gui/lib/resource.robot (revision 286e2f07a1261ad043902a6db05d39429a31a1d4)
1*** Settings ***
2Documentation  This is a resource file of OpenBMC ASMI It contains the
3...            user-defined keywords which are available to all gui modules
4
5Library      String
6Library      Collections
7Library      DateTime
8Library      XvfbRobot
9Library      OperatingSystem
10Library      SeleniumLibrary
11Library      AngularJSLibrary
12Library      SSHLibrary  30 Seconds
13Library      Process
14Library      supporting_libs.py
15Library      ../../lib/gen_print.py
16Library      ../../lib/gen_robot_print.py
17Library      ../../lib/gen_valid.py
18Library      ../../lib/gen_robot_ssh.py
19Library      ../../lib/bmc_ssh_utils.py
20Resource     ../../lib/resource.robot
21Resource     ../../lib/rest_client.robot
22Resource     ../../lib/state_manager.robot
23Variables    ../data/resource_variables.py
24
25*** Variables ***
26${OPENBMC_GUI_URL}              https://${OPENBMC_HOST}:${HTTPS_PORT}
27
28${obmc_PowerOff_state}       Off
29${obmc_PowerRunning_state}   Running
30${obmc_PowerStandby_state}   Standby
31
32# Default GUI browser and mode is set to "Firefox" and "headless"
33# respectively here.
34${GUI_BROWSER}               ff
35${GUI_MODE}                  headless
36
37${CMD_INTERNAL_FAILURE}      busctl call xyz.openbmc_project.Logging /xyz/openbmc_project/logging
38...  xyz.openbmc_project.Logging.Create Create ssa{ss} xyz.openbmc_project.Common.Error.InternalFailure
39...  xyz.openbmc_project.Logging.Entry.Level.Error 0
40
41*** Keywords ***
42Launch OpenBMC GUI Browser
43    [Documentation]  Launch the OpenBMC GUI URL on a browser.
44    # By default uses headless mode, otherwise, the GUI browser.
45
46    ${op_system}=  Get Operating System
47    IF  '${op_system}' == 'windows'
48       Launch Header Browser
49    ELSE IF  '${op_system}' == 'Darwin'
50       # Mac OS is currently having some issues with Firefox, so using Chrome.
51       Launch Header Browser  chrome
52    ELSE
53       # Linux OS.
54       Launch Headless Browser
55    END
56
57
58Get Operating System
59    [Documentation]  Identify platform/OS.
60
61    ${curdir_lower_case}=  Convert To Lowercase  ${CURDIR}
62    ${windows_platform}=  Run Keyword And Return Status
63    ...  Should Contain  ${curdir_lower_case}  c:\
64    IF  '${windows_platform}' == 'True'
65       ${op_system}=  Set Variable  windows
66    ELSE
67       ${op_system}=  Run  uname
68    END
69    RETURN  ${op_system}
70
71
72Launch Header Browser
73    [Documentation]  Open the browser with the URL and
74    ...              login on windows platform.
75    [Arguments]  ${browser_type}=${GUI_BROWSER}
76
77    # Description of argument(s):
78    # browser_type  Type of browser (e.g. "firefox", "chrome", etc.).
79
80    ${BROWSER_ID}=  Open Browser  ${OPENBMC_GUI_URL}  ${browser_type}
81    Maximize Browser Window
82    Set Global Variable  ${BROWSER_ID}
83
84Launch Headless Browser
85    [Documentation]  Launch headless browser.
86    [Arguments]  ${URL}=${OPENBMC_GUI_URL}  ${browser}=${GUI_BROWSER}
87
88    # Description of argument(s):
89    # URL      Openbmc GUI URL to be open
90    #          (e.g. https://openbmc-test.mybluemix.net/#/login).
91    # browser  Browser to open given URL in headless way
92    #          (e.g. gc for google chrome, ff for firefox).
93
94    Start Virtual Display
95    ${browser_ID}=  Open Browser  ${URL}
96    Set Window Size  1920  1080
97
98    RETURN  ${browser_ID}
99
100Login OpenBMC GUI
101    [Documentation]  Perform login to open BMC GUI.
102    [Arguments]  ${username}=${OPENBMC_USERNAME}
103    ...  ${password}=${OPENBMC_PASSWORD}
104
105    # Description of argument(s):
106    # username      The username.
107    # password      The password.
108
109    Go To  ${OPENBMC_GUI_URL}
110    Wait Until Element Is Enabled  ${xpath_textbox_hostname}
111    Input Text  ${xpath_textbox_hostname}  ${OPENBMC_HOST}
112    Input Text  ${xpath_textbox_username}  ${username}
113    Input Password  ${xpath_textbox_password}  ${password}
114    Click Element  login__submit
115    Wait Until Element Is Enabled  ${xpath_button_logout}
116    Page Should Contain  Server information
117
118
119Test Setup Execution
120    [Documentation]  Verify all the preconditions to be tested.
121    [Arguments]  ${obmc_test_setup_state}=${OBMC_PowerOff_state}
122
123    # Description of argument(s):
124    # obmc_test_setup      The OpenBMC required state.
125
126    Print Timen  ${TEST NAME} ==> [STARTED]
127    Launch Browser And Login OpenBMC GUI
128    Log To Console  Verifying the system state and stability.
129
130    Click Element  ${xpath_select_server_power}
131    Wait Until Page Does Not Contain  Unreachable
132    ${obmc_current_state}=  Get Text  ${xpath_power_indicator}
133    Rpvars  obmc_current_state
134
135    ${obmc_state_status}=  Run Keyword And Return Status
136    ...  Should Contain  ${obmc_current_state}  ${obmc_test_setup_state}
137    Return From Keyword If  '${obmc_state_status}' == 'True'
138
139    ${obmc_standby_state}=  Run Keyword And Return Status
140    ...  Should Contain  ${obmc_current_state}  ${obmc_standby_state}
141
142    IF  '${obmc_standby_state}' == 'True'
143        Reboot OpenBMC
144    END
145    IF  '${obmc_test_setup_state}' == '${obmc_PowerRunning_state}'
146        Run Keywords  Power On OpenBMC  AND
147        Wait Until Keyword Succeeds  10 min  60 sec  Is Host Running
148    END
149    IF  '${obmc_test_setup_state}' == '${obmc_PowerOff_state}'
150       Redfish.Login
151       Redfish Power Off
152       Redfish.Logout
153    END
154
155
156Power On OpenBMC
157    [Documentation]  Power on the OBMC system.
158
159    Log To Console  Power On OpenBMC...
160    Click Element  ${xpath_select_server_power}
161    Click Button  ${xpath_select_button_power_on }
162    Wait OpenBMC To Become Stable  ${obmc_running_state}
163
164Reboot OpenBMC
165    [Documentation]  Rebooting the OBMC system.
166
167    Log To Console  Reboting the OpenBMC...
168    Click Element  ${xpath_select_server_power}
169    Click Button  ${xpath_select_button_orderly_shutdown}
170    Click Yes Button  ${xpath_select_button_orderly_shutdown_yes}
171    Wait OpenBMC To Become Stable  ${obmc_off_state}
172
173Wait OpenBMC To Become Stable
174    [Documentation]  Power off the OBMC.
175    [Arguments]  ${obmc_expected_state}  ${retry_time}=15 min
176    ...  ${retry_interval}=45 sec
177
178    # Description of argument(s):
179    # OBMC_expected_state      The OBMC state which is required for test.
180    # retry_time               Total wait time after executing the command.
181    # retry_interval           Time interval for to keep checking with in the
182    #                          above total wait time.
183
184    Wait Until Keyword Succeeds  ${retry_time}  ${retry_interval}
185    ...  Wait Until Element Contains  ${xpath_select_server_power}
186    ...  ${obmc_expected_state}
187    Wait Until Keyword Succeeds  ${retry_time}  ${retry_interval}
188    ...  Verify OpenBMC State From REST Interface  ${obmc_expected_state}
189
190Verify OpenBMC State From REST Interface
191    [Documentation]  Verify system state from REST Interface.
192    [Arguments]  ${obmc_required_state}
193
194    # Description of argument(s):
195    # obmc_required_state      The OBMC state which is required for test.
196
197    ${obmc_current_state_REST}=  Get Host State
198    Should Be Equal  ${obmc_current_state_REST}  ${obmc_required_state}
199
200Click Yes Button
201    [Documentation]  Click the 'Yes' button.
202    [Arguments]  ${xpath_button_yes}
203
204    # Description of argument(s):
205    # xpath_button_yes      The xpath of 'Yes' button.
206
207    Click Button  ${xpath_button_yes}
208
209LogOut OpenBMC GUI
210    [Documentation]  Log out of OpenBMC GUI.
211    SSHLibrary.Close All Connections
212    Click Button  ${xpath_button_user_action}
213    Click Element  ${xpath_button_logout}
214    Wait Until Page Contains Element  ${xpath_button_login}
215
216Test Teardown Execution
217    [Documentation]  Do final closure activities of test case execution.
218    Print Pgm Footer
219    Print Dashes  0  100  1  =
220    Close Browser
221
222
223Open Browser With URL
224    [Documentation]  Open browser with specified URL and returns browser id.
225    [Arguments]  ${URL}  ${browser}=ff  ${mode}=${GUI_MODE}
226
227    # Description of argument(s):
228    # URL      Openbmc GUI URL to be open
229    #          (e.g. https://openbmc-test.mybluemix.net/#/login).
230    # browser  Browser used to open above URL
231    #          (e.g. gc for google chrome, ff for firefox).
232    # mode     Browser opening mode(e.g. headless, header).
233
234    IF  '${mode}' == 'headless'
235       ${browser_ID}=  Launch Headless Browser  ${URL}  ${browser}
236    ELSE
237       ${browser_ID}=  Open Browser  ${URL}  ${browser}
238    END
239    RETURN  ${browser_ID}
240
241
242Controller Server Power Click Button
243    [Documentation]  Click main server power in the header section.
244    [Arguments]  ${controller_element}
245
246    # Description of argument(s):
247    # controller_element  Server power controller element
248    #                     (e.g. power__power-on.)
249
250    Click Element  ${xpath_select_server_power}
251    Wait Until Element Is Visible  ${controller_element}
252    Page Should Contain Button  ${controller_element}
253    Click Element  ${controller_element}
254
255
256GUI Power On
257    [Documentation]  Power on the host using GUI.
258
259    Controller Server Power Click Button  power__power-on
260    Wait Until Page Contains  Running   timeout=30s
261
262Verify Display Content
263    [Documentation]  Verify text content display.
264    [Arguments]  ${display_text}
265
266    # Description of argument(s):
267    # display_text   The text which is expected to be found on the web page.
268
269    Page Should Contain  ${display_text}
270
271
272Verify Warning Message Display Text
273    [Documentation]  Verify the warning message display text.
274    [Arguments]  ${xpath_text_message}  ${text_message}
275
276    # xpath_text_message  Xpath of warning message display.
277    # text_message        Content of the display message info.
278
279    Element Should Contain  ${xpath_text_message}  ${text_message}
280
281
282Expected Initial Test State
283    [Documentation]  Power on the host if "Running" expected, Power off the
284    ...  host if "Off" expected as per the requirement of initial test state.
285    [Arguments]  ${expectedState}
286    # Description of argument(s):
287    # expectedState    Test initial host state.
288
289    IF  '${expectedState}' == 'Running'
290      REST Power On  stack_mode=skip  quiet=1
291    END
292
293    IF  '${expectedState}' == 'Off'
294       REST Power Off  stack_mode=skip  quiet=1
295    END
296
297Launch Browser And Login OpenBMC GUI
298    [Documentation]  Launch browser and log into openbmc GUI.
299
300    Open Browser With URL  ${OPENBMC_GUI_URL}
301    Login OpenBMC GUI  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
302
303Logout And Close Browser
304    [Documentation]  Logout from openbmc application and close the browser.
305
306    Click Button  ${xpath_button_user_action}
307    Click Button  ${xpath_button_logout}
308    Close Browser
309
310