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:
Ada Werefox 2023-01-21 20:48:07 +00:00
parent 6799730a99
commit 401ee636f5
7 changed files with 75 additions and 22 deletions

4
.gitignore vendored
View File

@ -1 +1,3 @@
.vscode/
.vscode/
output/
__pycache__/

View File

@ -1,5 +1,6 @@
FROM python:alpine
USER root
RUN python3 -m pip install selenium
COPY ./requirements.txt /requirements.txt
RUN python3 -m pip install -r /requirements.txt
WORKDIR /

View File

@ -23,8 +23,10 @@ services:
depends_on:
selenium-hub:
condition: service_healthy
environment:
- PYTHONPYCACHEPREFIX:"${HOME}/"
volumes:
- ./test_suite:/tests:ro
- ./output:/output:rw
user: "1000:1000"
command: 'python3 /tests/root_domain_test.py'
command: 'python3 -m robot -d /output /tests'

View File

@ -1 +1,2 @@
selenium>=4.7.2
robotframework>=6.0.0

View File

@ -5,6 +5,8 @@ from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from robot.api.logger import info, debug, trace, console, error
def check_subdomains(driver):
# setup wait and grab original tab/window
@ -13,9 +15,10 @@ def check_subdomains(driver):
# Try to grab button elements of maintained subdomains
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:
print("Couldn't find the element.")
error("Couldn't find the element.")
driver.close()
driver.quit()
return False
@ -32,34 +35,43 @@ def check_subdomains(driver):
driver.close()
driver.switch_to.window(main_tab)
except:
print("Couldn't find the element somewhere...")
error("Couldn't find the element somewhere...")
driver.close()
driver.quit()
return False
return True
def execute_tests():
def setup_webdriver(remote_url):
# Set up webdriver and necessary variables for later
chrome_options = webdriver.ChromeOptions()
print('Attempting to establish connection to remote webdriver...')
driver = webdriver.Remote(command_executor='http://192.168.0.202:4444', options=chrome_options)
print('Connection established.')
info('Attempting to establish connection to remote webdriver...')
driver = webdriver.Remote(
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
driver.close()
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()

View 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}

View 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}