harbor/tests/resources/Util.robot

338 lines
12 KiB
Plaintext
Raw Normal View History

# Copyright Project Harbor Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License
*** Settings ***
Library OperatingSystem
Library String
Library Collections
Library requests
Library Process
Library SSHLibrary 1 minute
Library DateTime
Library SeleniumLibrary 60 10
Library JSONLibrary
Resource Harbor-Util.robot
Resource Harbor-Pages/Public_Elements.robot
Resource Harbor-Pages/HomePage.robot
Resource Harbor-Pages/HomePage_Elements.robot
Resource Harbor-Pages/Project.robot
Resource Harbor-Pages/Project_Elements.robot
Resource Harbor-Pages/Project-Members.robot
Resource Harbor-Pages/Project-Members_Elements.robot
Resource Harbor-Pages/Project-P2P-Preheat.robot
Resource Harbor-Pages/Project-P2P-Preheat-Elements.robot
Resource Harbor-Pages/Project-Webhooks.robot
Resource Harbor-Pages/Project-Webhooks_Elements.robot
Resource Harbor-Pages/Project-Repository.robot
Resource Harbor-Pages/Project-Repository_Elements.robot
Resource Harbor-Pages/Project-Artifact.robot
Resource Harbor-Pages/Project-Artifact-Elements.robot
Resource Harbor-Pages/Project-Config.robot
Resource Harbor-Pages/Project-Config-Elements.robot
Resource Harbor-Pages/Project-Copy.robot
Resource Harbor-Pages/Project-Copy-Elements.robot
Resource Harbor-Pages/Project-Tag-Retention.robot
Resource Harbor-Pages/Project-Tag-Retention_Elements.robot
Resource Harbor-Pages/Project_Robot_Account.robot
Resource Harbor-Pages/Project_Robot_Account_Elements.robot
Resource Harbor-Pages/Replication.robot
Resource Harbor-Pages/Replication_Elements.robot
Resource Harbor-Pages/UserProfile.robot
Resource Harbor-Pages/UserProfile_Elements.robot
Resource Harbor-Pages/Administration-Project-Quotas.robot
Resource Harbor-Pages/Administration-Project-Quotas_Elements.robot
Resource Harbor-Pages/Administration-Users.robot
Resource Harbor-Pages/Administration-Users_Elements.robot
Resource Harbor-Pages/GC.robot
Resource Harbor-Pages/GC_Elements.robot
Resource Harbor-Pages/Configuration.robot
Resource Harbor-Pages/Configuration_Elements.robot
Resource Harbor-Pages/ToolKit.robot
Resource Harbor-Pages/ToolKit_Elements.robot
Resource Harbor-Pages/Vulnerability.robot
Resource Harbor-Pages/Vulnerability_Elements.robot
Resource Harbor-Pages/LDAP-Mode.robot
Resource Harbor-Pages/OIDC_Auth.robot
Resource Harbor-Pages/OIDC_Auth_Elements.robot
Resource Harbor-Pages/Robot_Account.robot
Resource Harbor-Pages/Robot_Account_Elements.robot
Resource Harbor-Pages/Logs.robot
Resource Harbor-Pages/Logs_Elements.robot
Resource Harbor-Pages/Log_Rotation.robot
Resource Harbor-Pages/Log_Rotation_Elements.robot
Resource Harbor-Pages/Job_Service_Dashboard.robot
Resource Harbor-Pages/Job_Service_Dashboard_Elements.robot
Resource Harbor-Pages/SecurityHub.robot
Resource Harbor-Pages/SecurityHub_Elements.robot
Resource Harbor-Pages/Verify.robot
Resource Harbor-Pages/Vulnerability_Elements.robot
Resource Docker-Util.robot
Resource CNAB_Util.robot
Resource Helm-Util.robot
Resource Cert-Util.robot
Resource SeleniumUtil.robot
Resource Nightly-Util.robot
Resource APITest-Util.robot
Resource Cosign_Util.robot
Resource Notation_Util.robot
Resource Imgpkg-Util.robot
Resource Webhook-Util.robot
Resource TestCaseBody.robot
*** Keywords ***
Wait Until Element Is Visible And Enabled
[Arguments] ${element}
Wait Until Element Is Visible ${element}
Wait Until Element Is Enabled ${element}
Retry Action Keyword
[Arguments] ${keyword} @{param}
Retry Keyword N Times When Error 4 ${keyword} @{param}
Retry Action Keyword And No Output
[Arguments] ${keyword} @{param}
${prev_lvl} Set Log Level NONE
Retry Keyword N Times When Error 4 ${keyword} @{param}
${prev_lvl} Set Log Level ${prev_lvl}
Retry Wait Element
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Wait Until Element Is Visible And Enabled @{param}
Retry Wait Element Visible
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Wait Until Element Is Visible @{param}
Retry Wait Element Not Visible
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Wait Until Element Is Not Visible @{param}
Retry Wait Element Should Be Disabled
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Element Should Be Disabled @{param}
Retry Element Click
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Element Click @{param}
Retry Button Click
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Button Click @{param}
Retry Text Input
[Arguments] ${element_xpath} ${text}
@{param} Create List ${element_xpath} ${text}
Retry Action Keyword Text Input @{param}
Retry Password Input
[Arguments] ${element_xpath} ${text}
Retry Action Keyword And No Output Text Input ${element_xpath} ${text}
Retry Clear Element Text
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Clear Element Text @{param}
Retry Link Click
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Link Click @{param}
Retry Checkbox Should Be Selected
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Checkbox Should Be Selected @{param}
Retry Checkbox Should Not Be Selected
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Checkbox Should Not Be Selected @{param}
Retry Wait Until Page Contains
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Wait Until Page Contains @{param}
Retry Wait Until Page Does Not Contains
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Wait Until Page Does Not Contain @{param}
Retry Wait Until Page Contains Element
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Wait Until Page Contains Element @{param}
Retry Wait Until Page Not Contains Element
[Arguments] ${element_xpath}
@{param} Create List ${element_xpath}
Retry Action Keyword Wait Until Page Does Not Contain Element @{param}
Retry Wait Element Count
[Arguments] ${element_xpath} ${expected_count} ${times}=11
${expected_count}= Convert To Integer ${expected_count}
FOR ${n} IN RANGE 1 ${times}
${actual_count}= Get Element Count ${element_xpath}
${result}= Set Variable If ${expected_count} == ${actual_count} True False
Exit For Loop If ${result}
Sleep 2
END
Should Be True ${result}
Retry Select Object
[Arguments] ${obj_name}
@{param} Create List ${obj_name}
Retry Action Keyword Select Object @{param}
Retry Textfield Value Should Be
[Arguments] ${element} ${text}
@{param} Create List ${element} ${text}
Retry Action Keyword Wait And Textfield Value Should Be @{param}
Retry List Selection Should Be
[Arguments] ${element} ${text}
@{param} Create List ${element} ${text}
Retry Action Keyword Wait And List Selection Should Be @{param}
Link Click
[Arguments] ${element_xpath}
Click Link ${element_xpath}
Wait And List Selection Should Be
[Arguments] ${element} ${text}
Wait Until Element Is Visible And Enabled ${element}
List Selection Should Be ${element} ${text}
Wait And Textfield Value Should Be
[Arguments] ${element} ${text}
Wait Until Element Is Visible And Enabled ${element}
Textfield Value Should Be ${element} ${text}
Element Click
[Arguments] ${element_xpath}
Wait Until Element Is Visible And Enabled ${element_xpath}
Click Element ${element_xpath}
Sleep 1
Button Click
[Arguments] ${element_xpath}
Wait Until Element Is Visible And Enabled ${element_xpath}
Click button ${element_xpath}
Text Input
[Arguments] ${element_xpath} ${text}
Wait Until Element Is Visible And Enabled ${element_xpath}
Input Text ${element_xpath} ${text}
Clear Field Of Characters
[Arguments] ${field} ${character count}
[Documentation] This keyword pushes the BACKSPACE key a specified number of times in a specified field.
FOR ${index} IN RANGE ${character count}
Press Keys ${field} BACKSPACE
END
Wait Unitl Command Success
[Arguments] ${cmd} ${times}=5
FOR ${n} IN RANGE 1 ${times}
Log Trying ${cmd}: ${n} ... console=True
${rc} ${output}= Run And Return Rc And Output ${cmd}
Exit For Loop If '${rc}'=='0'
END
Log Command Result is ${output}
Should Be Equal As Strings '${rc}' '0'
[Return] ${output}
Command Should be Failed
[Arguments] ${cmd}
${rc} ${output}= Run And Return Rc And Output ${cmd}
Should Not Be Equal As Strings '${rc}' '0'
Log ${output}
[Return] ${output}
Retry Keyword N Times When Error
[Arguments] ${times} ${keyword} @{elements}
FOR ${n} IN RANGE 1 ${times}
${out} Run Keyword And Ignore Error ${keyword} @{elements}
Run Keyword If '${keyword}'=='Make Swagger Client' Exit For Loop If '${out[0]}'=='PASS' and '${out[1]}'=='0'
... ELSE Exit For Loop If '${out[0]}'=='PASS'
Sleep 5
END
Run Keyword If '${out[0]}'=='FAIL' Capture Page Screenshot
Should Be Equal As Strings '${out[0]}' 'PASS'
[Return] ${out[1]}
Retry Keyword When Return Value Mismatch
[Arguments] ${keyword} ${expected_value} ${count} @{elements}
FOR ${n} IN RANGE 1 ${count}
Log To Console Trying ${keyword} ${n} times ...
${out} Run Keyword And Ignore Error ${keyword} @{elements}
Log To Console Return value is ${out[1]}
${status}= Set Variable If '${out[1]}'=='${expected_value}' 'PASS' 'FAIL'
Exit For Loop If '${out[1]}'=='${expected_value}'
Sleep 2
END
Run Keyword If ${status}=='FAIL' Capture Page Screenshot
Should Be Equal As Strings ${status} 'PASS'
Retry Double Keywords When Error
[Arguments] ${keyword1} ${element1} ${keyword2} ${element2} ${DoAssert}=${true} ${times}=3
FOR ${n} IN RANGE 1 ${times}
Log To Console Trying ${keyword1} and ${keyword2} ${n} times ...
${out1} Run Keyword And Ignore Error ${keyword1} ${element1}
Sleep 1
${out2} Run Keyword And Ignore Error ${keyword2} ${element2}
Log To Console Return value is ${out1[0]} ${out2[0]}
Exit For Loop If '${out2[0]}'=='PASS'
Sleep 1
END
Capture Page Screenshot
Return From Keyword If ${DoAssert} == ${false} '${out2[0]}'
Should Be Equal As Strings '${out2[0]}' 'PASS'
Retry File Should Exist
[Arguments] ${path}
Retry Keyword N Times When Error 4 OperatingSystem.File Should Exist ${path}
Retry File Should Not Exist
[Arguments] ${path}
Retry Keyword N Times When Error 4 OperatingSystem.File Should Not Exist ${path}
Run Curl And Return Json
[Arguments] ${curl_cmd}
${rc} ${output}= Run And Return Rc And Output ${curl_cmd}
Should Be Equal As Integers 0 ${rc}
${json}= Convert String To Json ${output}
[Return] ${json}
Log All
[Arguments] ${text}
Log To Console ${text}
Log ${text}
New Tab
Execute Javascript window.open('')
Switch Window title=undefined
Click Link New Tab And Switch
[Arguments] ${element_xpath}
Retry Link Click ${element_xpath}
${handles}= Get Window Handles
Retry Action Keyword Switch Window ${handles}[-1]