mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-08-22 03:35:17 +00:00
139 lines
4.3 KiB
Python
Executable File
139 lines
4.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Run browser tests through Sauce Labs
|
|
|
|
import unittest
|
|
import sys
|
|
import os
|
|
|
|
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 sauceclient import SauceClient
|
|
from browser_tests import BrowserTests
|
|
|
|
# Set your own environment variables
|
|
USERNAME = os.environ.get('SAUCE_USERNAME')
|
|
ACCESS_KEY = os.environ.get('SAUCE_ACCESS_KEY')
|
|
|
|
# The base url that remote browser will access
|
|
# Usually a HTTP server should be set up in the folder containing the test cases
|
|
# Also Sauce Connect should be enabled
|
|
BASEURL='http://localhost:8000/'
|
|
|
|
SAUCE_OPTIONS = {
|
|
'record-video': 'false',
|
|
}
|
|
|
|
# we want to test the latest stable version
|
|
# and 'beta' is usually the best estimation
|
|
BROWSER_MATRIX = [
|
|
('win_ie', {
|
|
'platform': 'Windows 8.1',
|
|
'browserName': 'internet explorer',
|
|
'version': '11',
|
|
}),
|
|
('win_firefox', {
|
|
'platform': 'Windows 8.1',
|
|
'browserName': 'firefox',
|
|
'version': 'beta',
|
|
}),
|
|
('win_chrome', {
|
|
'platform': 'Windows 8.1',
|
|
'browserName': 'chrome',
|
|
'version': 'beta',
|
|
}),
|
|
('mac_firefox', {
|
|
'platform': 'OS X 10.9',
|
|
'browserName': 'firefox',
|
|
'version': 'beta',
|
|
}),
|
|
('mac_chrome', {
|
|
'platform': 'OS X 10.9',
|
|
'browserName': 'chrome',
|
|
'version': '40.0', # beta is not supported
|
|
}),
|
|
('linux_firefox', {
|
|
'platform': 'Linux',
|
|
'browserName': 'firefox',
|
|
'version': 'beta',
|
|
}),
|
|
('linux_chrome', {
|
|
'platform': 'Linux',
|
|
'browserName': 'chrome',
|
|
'version': 'beta',
|
|
}),
|
|
]
|
|
|
|
@unittest.skipIf((not (USERNAME and ACCESS_KEY)), 'Sauce Labs is not available')
|
|
class test_remote_browser_base(BrowserTests):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(test_remote_browser_base, cls).setUpClass()
|
|
if not cls.GENERATING_MODE:
|
|
cls.sauce = SauceClient(USERNAME, ACCESS_KEY)
|
|
cls.sauce_url = 'http://%s:%s@ondemand.saucelabs.com:80/wd/hub' % (USERNAME, ACCESS_KEY)
|
|
|
|
cls.browser = webdriver.Remote(
|
|
desired_capabilities=cls.desired_capabilities,
|
|
command_executor=cls.sauce_url
|
|
)
|
|
|
|
cls.browser.implicitly_wait(30)
|
|
# remote screen may not be large enough for the whole page
|
|
cls.browser.set_window_size(cls.BROWSER_WIDTH, cls.BROWSER_HEIGHT)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
if not cls.GENERATING_MODE:
|
|
cls.browser.quit()
|
|
super(test_remote_browser_base, cls).tearDownClass()
|
|
|
|
def setUp(self):
|
|
super(test_remote_browser_base, self).setUp()
|
|
sys.exc_clear()
|
|
|
|
def tearDown(self):
|
|
try:
|
|
passed = (sys.exc_info() == (None, None, None))
|
|
branch = os.environ.get('TRAVIS_BRANCH', 'manual')
|
|
pull_request = os.environ.get('TRAVIS_PULL_REQUEST', 'false')
|
|
self.sauce.jobs.update_job(self.browser.session_id,
|
|
build_num=os.environ.get('TRAVIS_BUILD_NUMBER', '0'),
|
|
name='pdf2htmlEX',
|
|
passed=passed,
|
|
public='public restricted',
|
|
tags = [pull_request] if pull_request != 'false' else [branch]
|
|
)
|
|
except:
|
|
raise
|
|
pass
|
|
|
|
def generate_image(self, html_file, png_file, page_must_load=True):
|
|
self.browser.get(BASEURL + html_file)
|
|
try:
|
|
WebDriverWait(self.browser, 5).until(expected_conditions.presence_of_element_located((By.ID, 'page-container')))
|
|
except:
|
|
if page_must_load:
|
|
raise
|
|
self.browser.save_screenshot(png_file)
|
|
|
|
test_classnames = []
|
|
|
|
def generate_classes():
|
|
module = globals()
|
|
for browser_name, browser_caps in BROWSER_MATRIX:
|
|
d = dict(test_remote_browser_base.__dict__)
|
|
caps = SAUCE_OPTIONS.copy()
|
|
caps.update(browser_caps)
|
|
tunnel_identifier = os.environ.get('TRAVIS_JOB_NUMBER')
|
|
if tunnel_identifier:
|
|
caps['tunnel-identifier'] = tunnel_identifier
|
|
d['desired_capabilities'] = caps
|
|
name = "test_remote_%s" % (browser_name, )
|
|
module[name] = type(name, (test_remote_browser_base, unittest.TestCase), d)
|
|
test_classnames.append(name)
|
|
|
|
generate_classes()
|