def test_define_browsers_drivers_empty(self): """Verify that _define_browsers returns correct value when selected drivers is empty """ drivers = [] expected = [] drivers_defined = exc_runner.define_browsers(drivers, self.remote_browsers, self.default_browsers) assert drivers_defined == expected
def test_define_browsers_driver_is_not_defined(self): """Verify that _define_browsers raises the correct exception when a driver name that is not defined is passed """ drivers = ['not_defined'] expected_msg = [ 'Error: the browser {} is not defined\n'.format('not_defined'), 'available options are:\n', '\n'.join(self.default_browsers), '\n'.join(list(self.remote_browsers.keys())) ] expected_msg = ''.join(expected_msg) with pytest.raises(Exception) as excinfo: _ = exc_runner.define_browsers(drivers, self.remote_browsers, self.default_browsers) assert str(excinfo.value) == expected_msg
def test_define_browsers_browser_order_of_preference(self): """Verify that _define_browsers selects the drivers in the correct order of precedence, first remote drivers then predefined drivers""" remote_drivers = { 'chromex': { 'browserName': 'chrome', 'version': '60.0', 'platform': 'macOS 10.12' } } default_drivers = ['chromex'] drivers = ['chromex'] drivers_defined = exc_runner.define_browsers(drivers, remote_drivers, default_drivers) assert len(drivers_defined) == 1 assert drivers_defined[0]['remote'] is True assert drivers_defined[0]['capabilities']['version'] == '60.0'
def interactive(settings, cli_browsers): """Starts the Golem interactive shell.""" browsers = utils.choose_browser_by_precedence( cli_browsers=cli_browsers, suite_browsers=[], settings_default_browser=settings['default_browser']) execution.browser_name = browsers[0] remote_browsers = settings_manager.get_remote_browsers(session.settings) default_browsers = gui_utils.get_supported_browsers_suggestions() browser_defs = define_browsers(browsers, remote_browsers, default_browsers) execution.browser_definition = browser_defs[0] execution.settings = settings execution.settings['interactive'] = True execution.logger = test_logger.get_logger( cli_log_level=execution.settings['cli_log_level'], log_all_events=execution.settings['log_all_events']) actions.interactive_mode()
def test_define_browsers(self): """Verify that _define_browsers returns the correct values""" browsers = ['chrome', 'chrome_60_mac'] expected = [{ 'name': 'chrome', 'capabilities': {} }, { 'name': 'chrome_60_mac', 'capabilities': { 'browserName': 'chrome', 'version': '60.0', 'platform': 'macOS 10.12' } }] drivers_defined = exc_runner.define_browsers(browsers, self.remote_browsers, self.default_browsers, self.custom_browsers) assert drivers_defined == expected
def test_driver_path_is_not_defined(self): execution.settings = settings_manager.assign_settings_default_values( {}) execution.logger = test_logger.get_logger() default_browsers = gui_utils.get_supported_browsers_suggestions() drivers = [ ('chromedriver_path', 'chrome'), ('chromedriver_path', 'chrome-headless'), ('edgedriver_path', 'edge'), ('geckodriver_path', 'firefox'), ('iedriver_path', 'ie'), ('operadriver_path', 'opera'), ] for setting_path, browser_name in drivers: execution.browser_definition = execution_runner.define_browsers( [browser_name], [], default_browsers, [])[0] with pytest.raises(Exception) as excinfo: browser.open_browser() expected = 'Exception: {setting_path} setting is not defined' assert expected in str(excinfo.value)
def test_initialize_reports_for_test_files(self, project_class, test_utils): """test file json reports are initialized with status pending for each test function""" _, project = project_class.activate() test_name = test_utils.random_string() content = 'def test_one(data):\n' \ ' pass\n' \ 'def test_two(data):\n' \ ' pass' test_utils.create_test(project, test_name, content) timestamp = utils.get_timestamp() execution_name = test_name execution_runner = exc_runner.ExecutionRunner(project, timestamp=timestamp) execution_runner.tests = [test_name] execution_runner.execution.processes = 1 execution_runner.execution.browsers = exc_runner.define_browsers( ['chrome'], [], ['chrome'], []) execution_runner.execution.envs = [] execution_runner.execution_name = execution_name execution_runner.execution.reportdir = execution_runner._create_execution_directory( ) execution_list = execution_runner._define_execution_list() exc_runner.initialize_reports_for_test_files(project, execution_list) test_file_report = test_report.get_test_file_report_json( project, execution_name, timestamp, test_name) assert len(test_file_report) == 2 assert any( t['test'] == 'test_one' and t['result'] == ResultsEnum.PENDING for t in test_file_report) assert any( t['test'] == 'test_two' and t['result'] == ResultsEnum.PENDING for t in test_file_report)
def test_executable_not_present(self): execution.settings = settings_manager.assign_settings_default_values( {}) execution.logger = test_logger.get_logger() default_browsers = gui_utils.get_supported_browsers_suggestions() drivers = [ ('chromedriver_path', './drivers/chromedriver*', 'chrome'), ('chromedriver_path', './drivers/chromedriver*', 'chrome-headless'), ('edgedriver_path', './drivers/edgedriver*', 'edge'), ('geckodriver_path', './drivers/geckodriver*', 'firefox'), ('iedriver_path', './drivers/iedriver*', 'ie'), ('operadriver_path', './drivers/operadriver*', 'opera'), ] for setting_key, setting_path, browser_name in drivers: execution.browser_definition = execution_runner.define_browsers( [browser_name], [], default_browsers, [])[0] execution.settings[setting_key] = setting_path with pytest.raises(Exception) as excinfo: browser.open_browser() expected = f'No executable file found using path {setting_path}' assert expected in str(excinfo.value)
def test_generate_execution_report(self, project_class, test_utils): _, project = project_class.activate() execution = test_utils.execute_random_suite(project) os.remove(execution['report_path']) elapsed_time = 1122 browsers = define_browsers(['chrome'], [], ['chrome']) processes = 2 envs = ['test', 'staging'] tags = ['foo', 'bar'] remote_url = 'https://foo.bar' reprt = generate_execution_report(execution['exec_dir'], elapsed_time, browsers, processes, envs, tags, remote_url) expected_params = { 'browsers': [{'name': 'chrome', 'full_name': None, 'remote': False, 'capabilities': {}}], 'processes': 2, 'environments': ['test', 'staging'], 'tags': ['foo', 'bar'], 'remote_url': '' } assert reprt['params'] == expected_params assert os.path.isfile(execution['report_path'])
def _define_browsers_mock(selected_browsers): default_browsers = gui_utils.get_supported_browsers_suggestions() return execution_runner.define_browsers(selected_browsers, [], default_browsers)