mirror of https://github.com/pyodide/pyodide.git
Merge pull request #118 from rth/reuse-selenium
Reuse selenium fixture in tests
This commit is contained in:
commit
9ad6830e6c
|
@ -104,7 +104,7 @@ class ChromeWrapper(SeleniumWrapper):
|
|||
|
||||
if pytest is not None:
|
||||
@pytest.fixture(params=['firefox', 'chrome'])
|
||||
def selenium(request):
|
||||
def selenium_standalone(request):
|
||||
if request.param == 'firefox':
|
||||
cls = FirefoxWrapper
|
||||
elif request.param == 'chrome':
|
||||
|
@ -116,6 +116,30 @@ if pytest is not None:
|
|||
print('\n'.join(str(x) for x in selenium.logs))
|
||||
selenium.driver.quit()
|
||||
|
||||
@pytest.fixture(params=['firefox', 'chrome'], scope='module')
|
||||
def _selenium_cached(request):
|
||||
# Cached selenium instance. This is a copy-paste of
|
||||
# selenium_standalone to avoid fixture scope issues
|
||||
if request.param == 'firefox':
|
||||
cls = FirefoxWrapper
|
||||
elif request.param == 'chrome':
|
||||
cls = ChromeWrapper
|
||||
selenium = cls()
|
||||
try:
|
||||
yield selenium
|
||||
finally:
|
||||
selenium.driver.quit()
|
||||
|
||||
@pytest.fixture
|
||||
def selenium(_selenium_cached):
|
||||
# selenium instance cached at the module level
|
||||
try:
|
||||
# clean selenium logs for each test run
|
||||
_selenium_cached.driver.execute_script("window.logs = []")
|
||||
yield _selenium_cached
|
||||
finally:
|
||||
print('\n'.join(str(x) for x in _selenium_cached.logs))
|
||||
|
||||
|
||||
PORT = 0
|
||||
|
||||
|
|
|
@ -368,7 +368,7 @@ test_repl subprocess
|
|||
test_reprlib
|
||||
test_resource
|
||||
test_richcmp
|
||||
test_rlcompleter
|
||||
test_rlcompleter crash
|
||||
test_robotparser
|
||||
test_runpy crash
|
||||
test_sax
|
||||
|
|
|
@ -32,16 +32,17 @@ UNSUPPORTED_PACKAGES = {'ChromeWrapper': ['pandas'],
|
|||
|
||||
|
||||
@pytest.mark.parametrize('name', registered_packages())
|
||||
def test_import(name, selenium):
|
||||
def test_import(name, selenium_standalone):
|
||||
# check that we can parse the meta.yaml
|
||||
meta = common.parse_package(PKG_DIR / name / 'meta.yaml')
|
||||
|
||||
if name in UNSUPPORTED_PACKAGES[selenium.__class__.__name__]:
|
||||
if name in UNSUPPORTED_PACKAGES[selenium_standalone.__class__.__name__]:
|
||||
pytest.xfail(
|
||||
'{} fails to load and is not supported on {}.'
|
||||
.format(name,
|
||||
selenium.__class__.__name__.replace('Wrapper', '')))
|
||||
'{} fails to load and is not supported on {}.'
|
||||
.format(name,
|
||||
selenium_standalone.__class__.__name__
|
||||
.replace('Wrapper', '')))
|
||||
|
||||
for import_name in meta.get('test', {}).get('imports', []):
|
||||
selenium.load_package(name)
|
||||
selenium.run('import %s' % import_name)
|
||||
selenium_standalone.load_package(name)
|
||||
selenium_standalone.run('import %s' % import_name)
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
def test_matplotlib(selenium):
|
||||
selenium.load_package("matplotlib")
|
||||
selenium.run("from matplotlib import pyplot as plt")
|
||||
selenium.run("plt.figure()")
|
||||
selenium.run("x = plt.plot([1,2,3])")
|
||||
|
||||
|
||||
def test_svg(selenium):
|
||||
selenium.load_package("matplotlib")
|
||||
selenium.run("from matplotlib import pyplot as plt")
|
||||
selenium.run("plt.figure()")
|
||||
selenium.run("x = plt.plot([1,2,3])")
|
||||
selenium.run("import io")
|
||||
selenium.run("fd = io.BytesIO()")
|
||||
|
|
|
@ -6,9 +6,9 @@ import time
|
|||
import pytest
|
||||
|
||||
|
||||
def test_init(selenium):
|
||||
assert 'Python initialization complete' in selenium.logs
|
||||
assert len(selenium.driver.window_handles) == 1
|
||||
def test_init(selenium_standalone):
|
||||
assert 'Python initialization complete' in selenium_standalone.logs
|
||||
assert len(selenium_standalone.driver.window_handles) == 1
|
||||
|
||||
|
||||
def test_webbrowser(selenium):
|
||||
|
|
Loading…
Reference in New Issue