change Dockerfile to use requirements.txt, add Robot Framework files and change command to run test suites in specified dir as well as output in a seperate dir.
This commit is contained in:
parent
6799730a99
commit
401ee636f5
4
.gitignore
vendored
4
.gitignore
vendored
@ -1 +1,3 @@
|
|||||||
.vscode/
|
.vscode/
|
||||||
|
output/
|
||||||
|
__pycache__/
|
@ -1,5 +1,6 @@
|
|||||||
FROM python:alpine
|
FROM python:alpine
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
RUN python3 -m pip install selenium
|
COPY ./requirements.txt /requirements.txt
|
||||||
|
RUN python3 -m pip install -r /requirements.txt
|
||||||
WORKDIR /
|
WORKDIR /
|
||||||
|
@ -23,8 +23,10 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
selenium-hub:
|
selenium-hub:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- PYTHONPYCACHEPREFIX:"${HOME}/"
|
||||||
volumes:
|
volumes:
|
||||||
- ./test_suite:/tests:ro
|
- ./test_suite:/tests:ro
|
||||||
- ./output:/output:rw
|
- ./output:/output:rw
|
||||||
user: "1000:1000"
|
user: "1000:1000"
|
||||||
command: 'python3 /tests/root_domain_test.py'
|
command: 'python3 -m robot -d /output /tests'
|
||||||
|
@ -1 +1,2 @@
|
|||||||
selenium>=4.7.2
|
selenium>=4.7.2
|
||||||
|
robotframework>=6.0.0
|
@ -5,6 +5,8 @@ from selenium import webdriver
|
|||||||
from selenium.webdriver.common.by import By
|
from selenium.webdriver.common.by import By
|
||||||
from selenium.webdriver.support.ui import WebDriverWait
|
from selenium.webdriver.support.ui import WebDriverWait
|
||||||
from selenium.webdriver.support import expected_conditions
|
from selenium.webdriver.support import expected_conditions
|
||||||
|
from robot.api.logger import info, debug, trace, console, error
|
||||||
|
|
||||||
|
|
||||||
def check_subdomains(driver):
|
def check_subdomains(driver):
|
||||||
# setup wait and grab original tab/window
|
# setup wait and grab original tab/window
|
||||||
@ -13,9 +15,10 @@ def check_subdomains(driver):
|
|||||||
|
|
||||||
# Try to grab button elements of maintained subdomains
|
# Try to grab button elements of maintained subdomains
|
||||||
try:
|
try:
|
||||||
sites = driver.find_element(By.TAG_NAME, "nav").find_elements(By.XPATH, "./div/div")
|
sites = driver.find_element(
|
||||||
|
By.TAG_NAME, "nav").find_elements(By.XPATH, "./div/div")
|
||||||
except:
|
except:
|
||||||
print("Couldn't find the element.")
|
error("Couldn't find the element.")
|
||||||
driver.close()
|
driver.close()
|
||||||
driver.quit()
|
driver.quit()
|
||||||
return False
|
return False
|
||||||
@ -32,34 +35,43 @@ def check_subdomains(driver):
|
|||||||
driver.close()
|
driver.close()
|
||||||
driver.switch_to.window(main_tab)
|
driver.switch_to.window(main_tab)
|
||||||
except:
|
except:
|
||||||
print("Couldn't find the element somewhere...")
|
error("Couldn't find the element somewhere...")
|
||||||
driver.close()
|
driver.close()
|
||||||
driver.quit()
|
driver.quit()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def execute_tests():
|
|
||||||
|
def setup_webdriver(remote_url):
|
||||||
# Set up webdriver and necessary variables for later
|
# Set up webdriver and necessary variables for later
|
||||||
chrome_options = webdriver.ChromeOptions()
|
chrome_options = webdriver.ChromeOptions()
|
||||||
print('Attempting to establish connection to remote webdriver...')
|
info('Attempting to establish connection to remote webdriver...')
|
||||||
driver = webdriver.Remote(command_executor='http://192.168.0.202:4444', options=chrome_options)
|
driver = webdriver.Remote(
|
||||||
print('Connection established.')
|
command_executor=remote_url, options=chrome_options)
|
||||||
|
info('Connection established.')
|
||||||
|
return driver
|
||||||
|
|
||||||
# Load requested site
|
|
||||||
print('Attempting to get page...')
|
|
||||||
driver.get("https://werefox.cafe")
|
|
||||||
print('Page loaded.')
|
|
||||||
|
|
||||||
# Check all the subdomain buttons work
|
|
||||||
print('Attempting to click through subdomain buttons...')
|
|
||||||
if(check_subdomains(driver)):
|
|
||||||
print('Test succeeded.')
|
|
||||||
else:
|
|
||||||
print('Test failed.')
|
|
||||||
|
|
||||||
|
def teardown_webdriver(driver):
|
||||||
# Close browser and lean up
|
# Close browser and lean up
|
||||||
driver.close()
|
driver.close()
|
||||||
driver.quit()
|
driver.quit()
|
||||||
|
|
||||||
execute_tests()
|
|
||||||
|
def execute_tests(driver, site_url):
|
||||||
|
# Load requested site
|
||||||
|
info('Attempting to get page...')
|
||||||
|
driver.get(site_url)
|
||||||
|
info('Page loaded.')
|
||||||
|
|
||||||
|
# Check all the subdomain buttons work
|
||||||
|
info('Attempting to click through subdomain buttons...')
|
||||||
|
if (check_subdomains(driver)):
|
||||||
|
info('Test succeeded.')
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
info('Test failed.')
|
||||||
|
return False
|
||||||
|
|
||||||
|
# execute_tests()
|
||||||
|
19
tests/test_suite/werefox_cafe.resource
Executable file
19
tests/test_suite/werefox_cafe.resource
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
*** Settings ***
|
||||||
|
Documentation Import Python functions
|
||||||
|
|
||||||
|
Library ./root_domain_test.py
|
||||||
|
|
||||||
|
|
||||||
|
*** Keywords ***
|
||||||
|
# My Keyword [Arguments] ${path}
|
||||||
|
# Directory Should Exist ${path}
|
||||||
|
Werefox Cafe Test Cases
|
||||||
|
[Arguments] ${remote_url} ${site_url}
|
||||||
|
|
||||||
|
${driver}= Setup Webdriver ${remote_url}
|
||||||
|
|
||||||
|
${result}= Execute Tests ${driver} ${site_url}
|
||||||
|
|
||||||
|
Should Be True ${result}
|
||||||
|
|
||||||
|
[Teardown] Teardown Webdriver ${driver}
|
16
tests/test_suite/werefox_cafe.robot
Executable file
16
tests/test_suite/werefox_cafe.robot
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
*** Settings ***
|
||||||
|
Documentation Validate functionality of root domain site.
|
||||||
|
|
||||||
|
Resource werefox_cafe.resource
|
||||||
|
|
||||||
|
Default Tags positive
|
||||||
|
|
||||||
|
|
||||||
|
*** Variables ***
|
||||||
|
${remote_url} http://192.168.0.202:4444
|
||||||
|
${site_url} https://werefox.cafe
|
||||||
|
|
||||||
|
|
||||||
|
*** Test Cases ***
|
||||||
|
Test Werefox Cafe [Documentation] Run Werefox Cafe Test Cases.
|
||||||
|
Werefox Cafe Test Cases ${remote_url} ${site_url}
|
Loading…
Reference in New Issue
Block a user