Added test code for the root domain and debug mode for test script. TODO: Implement RobotFramework and switch Dockerfile to use requirement.txt
This commit is contained in:
parent
08150e8d96
commit
6799730a99
@ -28,6 +28,12 @@ That will start up a docker compose setup with a Selenium standalone server and
|
|||||||
|
|
||||||
For now, this will just run a test that opens the browser to [werefox.cafe](https://werefox.cafe) and waits 10 seconds, then closes. Just a small smoke test.
|
For now, this will just run a test that opens the browser to [werefox.cafe](https://werefox.cafe) and waits 10 seconds, then closes. Just a small smoke test.
|
||||||
|
|
||||||
|
You can also just bring up a selenium-standalone container with:
|
||||||
|
|
||||||
|
```
|
||||||
|
./run_tests.sh debug
|
||||||
|
```
|
||||||
|
|
||||||
## Production
|
## Production
|
||||||
|
|
||||||
You can also use the `deploy.sh` script to start up the container in production mode.
|
You can also use the `deploy.sh` script to start up the container in production mode.
|
||||||
|
10
run_tests.sh
10
run_tests.sh
@ -1,5 +1,13 @@
|
|||||||
#/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -xe
|
||||||
|
|
||||||
|
MODE=$1
|
||||||
|
|
||||||
|
if [ "$MODE" == "debug" ]; then
|
||||||
|
docker run --rm --name selenium-debug -p "4444:4444" -p "7900:7900" -e SE_OPTS="--allow-cors true" --shm-size="2g" selenium/standalone-chrome:108.0
|
||||||
|
else
|
||||||
cd tests/
|
cd tests/
|
||||||
docker compose build --no-cache --pull && docker compose up --remove-orphans --abort-on-container-exit --exit-code-from selenium-node
|
docker compose build --no-cache --pull && docker compose up --remove-orphans --abort-on-container-exit --exit-code-from selenium-node
|
||||||
docker compose rm -sf
|
docker compose rm -sf
|
||||||
|
fi
|
||||||
|
@ -27,4 +27,4 @@ services:
|
|||||||
- ./test_suite:/tests:ro
|
- ./test_suite:/tests:ro
|
||||||
- ./output:/output:rw
|
- ./output:/output:rw
|
||||||
user: "1000:1000"
|
user: "1000:1000"
|
||||||
command: 'python3 /tests/test.py'
|
command: 'python3 /tests/root_domain_test.py'
|
||||||
|
1
tests/requirements.txt
Executable file
1
tests/requirements.txt
Executable file
@ -0,0 +1 @@
|
|||||||
|
selenium>=4.7.2
|
65
tests/test_suite/root_domain_test.py
Normal file
65
tests/test_suite/root_domain_test.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# Necessary imports
|
||||||
|
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
|
||||||
|
|
||||||
|
def check_subdomains(driver):
|
||||||
|
# setup wait and grab original tab/window
|
||||||
|
wait = WebDriverWait(driver, 10)
|
||||||
|
main_tab = driver.current_window_handle
|
||||||
|
|
||||||
|
# Try to grab button elements of maintained subdomains
|
||||||
|
try:
|
||||||
|
sites = driver.find_element(By.TAG_NAME, "nav").find_elements(By.XPATH, "./div/div")
|
||||||
|
except:
|
||||||
|
print("Couldn't find the element.")
|
||||||
|
driver.close()
|
||||||
|
driver.quit()
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Iterate through subdomains
|
||||||
|
for e in sites:
|
||||||
|
try:
|
||||||
|
link_element = e.find_element(By.XPATH, "./a")
|
||||||
|
link_element.click()
|
||||||
|
wait.until(expected_conditions.number_of_windows_to_be(2))
|
||||||
|
for window_handle in driver.window_handles:
|
||||||
|
if window_handle != main_tab:
|
||||||
|
driver.switch_to.window(window_handle)
|
||||||
|
driver.close()
|
||||||
|
driver.switch_to.window(main_tab)
|
||||||
|
except:
|
||||||
|
print("Couldn't find the element somewhere...")
|
||||||
|
driver.close()
|
||||||
|
driver.quit()
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def execute_tests():
|
||||||
|
# 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.')
|
||||||
|
|
||||||
|
# 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.')
|
||||||
|
|
||||||
|
# Close browser and lean up
|
||||||
|
driver.close()
|
||||||
|
driver.quit()
|
||||||
|
|
||||||
|
execute_tests()
|
@ -1,12 +0,0 @@
|
|||||||
from selenium import webdriver
|
|
||||||
from time import sleep
|
|
||||||
chrome_options = webdriver.ChromeOptions()
|
|
||||||
print('Attempting to establish connection to remote webdriver...')
|
|
||||||
driver = webdriver.Remote(command_executor='http://selenium-hub:4444', options=chrome_options)
|
|
||||||
print('Connection established.')
|
|
||||||
print('Attempting to get page...')
|
|
||||||
driver.get("https://werefox.cafe")
|
|
||||||
print('Page loaded.')
|
|
||||||
sleep(10)
|
|
||||||
driver.close()
|
|
||||||
driver.quit()
|
|
Loading…
Reference in New Issue
Block a user