def driver(request, browser_config, webdriver_module): # type: (SubRequest, dict, webdriver) -> typing.Generator[dict] test_name = request.node.name test_page_url = request.node.get_closest_marker("test_page_url") test_page_url = test_page_url.args[-1] if test_page_url else None force_remote = bool(os.getenv("TEST_REMOTE", False)) if "appiumVersion" in browser_config: force_remote = True if force_remote: sauce_url = "https://{username}:{password}@ondemand.saucelabs.com:443/wd/hub".format( username=os.getenv("SAUCE_USERNAME", None), password=os.getenv("SAUCE_ACCESS_KEY", None), ) selenium_url = os.getenv("SELENIUM_SERVER_URL", sauce_url) logger.debug("SELENIUM_URL={}".format(selenium_url)) desired_caps = browser_config.copy() desired_caps["build"] = os.getenv("BUILD_TAG", None) desired_caps["tunnelIdentifier"] = os.getenv("TUNNEL_IDENTIFIER", None) desired_caps["name"] = test_name browser = webdriver_module.Remote(command_executor=selenium_url, desired_capabilities=desired_caps) else: # Use local browser. Use ENV variable for driver binary or install if no one. driver_manager_class, webdriver_class, options = BROWSERS_WEBDRIVERS.get( browser_config["browserName"]) if options: headless = strtobool(os.getenv("TEST_BROWSER_HEADLESS", "True")) options = options() options.headless = bool(headless) if driver_manager_class: browser = webdriver_class( executable_path=driver_manager_class().install(), options=options) else: browser = webdriver_class() if browser is None: raise WebDriverException("Never created!") if test_page_url: browser.get(test_page_url) logger.info("navigation to URL: {}".format(test_page_url)) yield browser # report results try: browser.execute_script("sauce:job-result=%s" % str(not request.node.rep_call.failed).lower()) except WebDriverException: # we can ignore the exceptions of WebDriverException type -> We're done with tests. logger.info( "Warning: The driver failed to quit properly. Check test and server side logs." ) finally: browser.quit()
def test_classic_runner_raise_exception(driver): classic_runner = ClassicRunner() eyes = Eyes(classic_runner) eyes.open( driver, "Applitools Eyes Java SDK", "Classic Runner Test", dict(width=1200, height=800), ) eyes.check("Step 1", Target.window()) logger.info(str(eyes.close(False))) with pytest.raises(Exception): classic_runner.get_all_test_results()