gitea: add some screenshots to testing

Change-Id: Id13fdd8ffbca1b0cd19858419d68f012e33f3ba8
This commit is contained in:
Ian Wienand 2021-09-06 15:14:46 +10:00
parent e772abaf96
commit 1dde7628e8
2 changed files with 54 additions and 0 deletions

View File

@ -1,5 +1,9 @@
- hosts: "gitea"
tasks:
- name: Run selenium container
include_role:
name: run-selenium
- name: Test base jobs project was created in gitea
uri:
url: "https://localhost:3000/opendev/base-jobs"

View File

@ -12,6 +12,11 @@
# License for the specific language governing permissions and limitations
# under the License.
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
testinfra_hosts = ['gitea99.opendev.org']
@ -84,3 +89,48 @@ def test_project_clone(host):
'/tmp/disk-image-builder')
assert "Cloning into '/tmp/disk-image-builder'..." in cmd.stderr
assert cmd.succeeded
def test_gitea_screenshots(host):
driver = webdriver.Remote(
command_executor='http://%s:4444/wd/hub' % (host.backend.get_hostname()),
desired_capabilities=webdriver.DesiredCapabilities.FIREFOX)
shots = (
('https://localhost:3081', 'gitea-main.png'),
('https://localhost:3081/opendev/system-config',
'gitea-project-system-config.png'),
('https://localhost:3081/opendev/disk-image-builder',
'gitea-project-dib.png')
)
try:
for url, png in shots:
driver.get(url)
WebDriverWait(driver, 30).until(
lambda driver: driver.execute_script(
'return document.readyState') == 'complete')
time.sleep(5)
# NOTE(ianw) This is a mash-up of things I found on
# stackoverflow and other bits googling "full size
# screenshot". You expand the viewport and take a
# shot of the <body> element so that you don't also
# get scrollbars in the shot, with some tweaking
# because the window size. Apparently selinum 4
# will have getFullPageScreeshotAs, so we should switch
# to that when available.
original_size = driver.get_window_size()
required_width = driver.execute_script(
'return document.body.parentNode.scrollWidth')
required_height = driver.execute_script(
'return document.body.parentNode.scrollHeight') + 100
driver.set_window_size(required_width, required_height)
driver.find_element_by_tag_name('body'). \
screenshot("/var/log/screenshots/%s" % png)
driver.set_window_size(
original_size['width'], original_size['height'])
except TimeoutException as e:
raise e
finally:
driver.quit()