def pytest_runtest_teardown(self, item): BaseTarget.pytest_runtest_teardown(self, item) try: if not OSHelper.is_windows(): if item.funcargs['firefox'].runner and item.funcargs[ 'firefox'].runner.process_handler: quit_firefox() status = item.funcargs[ 'firefox'].runner.process_handler.wait(10) if status is None: item.funcargs['firefox'].browser.runner.stop() else: item.funcargs['firefox'].stop() if not target_args.save: profile_instance = item.funcargs['firefox'].profile if os.path.exists(profile_instance.profile): try: shutil.rmtree(profile_instance.profile) except OSError as e: logger.error('Error: %s - %s.' % (e.filename, e.strerror)) else: logger.error('Invalid Path: %s' % profile_instance.profile) except (AttributeError, KeyError): pass
def pytest_sessionstart(self, session): global core_args core_args = get_core_args() global target_args BaseTarget.pytest_sessionstart(self, session) self.validate_config() try: port = core_args.port logger.info('Starting local web server on port %s for directory %s' % (port, self.local_web_root)) web_server_process = Process(target=LocalWebServer, args=(self.local_web_root, port,)) self.process_list.append(web_server_process) web_server_process.start() fx = self.args.firefox locale = core_args.locale app = FX_Collection.get(fx, locale) if not app: FX_Collection.add(fx, locale) app = FX_Collection.get(fx, locale) self.values = {'fx_version': app.version, 'fx_build_id': app.build_id, 'channel': app.channel} except IOError: logger.critical('Unable to launch local web server, aborting Iris.') exit(1) logger.info('Loading more test images...')
def pytest_runtest_setup(self, item): BaseTarget.pytest_runtest_setup(self, item) if OSHelper.is_mac(): mouse_reset() if item.name == 'run' and not core_args.override: skip_reason_list = [] values = item.own_markers[0].kwargs is_disabled = 'enabled' in values and not values.get('enabled') and not core_args.override is_excluded = 'exclude' in values and OSHelper.get_os() in values.get('exclude') incorrect_locale = 'locale' in values and core_args.locale not in values.get('locale') incorrect_platform = 'platform' in values and OSHelper.get_os() not in values.get('platform') fx_version = self.values.get('fx_version') incorrect_fx_version = 'fx_version' in values and not check_version(fx_version, values.get('fx_version')) if is_disabled: skip_reason_list.append('Test is disabled') if is_excluded: skip_reason_list.append('Test is excluded for {}'.format(OSHelper.get_os())) if 'blocked_by' in values: bug_id = '' platform = OSHelper.get_os() if type(values.get('blocked_by')) is str: bug_id = values.get('blocked_by') elif type(values.get('blocked_by')) is dict: try: bug_id = values.get('blocked_by')['id'] platform = values.get('blocked_by')['platform'] except KeyError as e: logger.debug('Missing key in blocked_by field: %s' % e) logger.debug('Looking up bug #%s...' % bug_id) blocked_platform = OSHelper.get_os() in platform logger.debug('Test has blocking issue: %s' % is_blocked(bug_id)) logger.debug('Test is blocked on this platform: %s' % blocked_platform) if is_blocked(bug_id) and blocked_platform: skip_reason_list.append('Test is blocked by [{}] on this platform.'.format(bug_id)) if incorrect_locale: skip_reason_list.append('Test doesn\'t support locale [{}]'.format(core_args.locale)) if incorrect_platform: skip_reason_list.append('Test doesn\'t support platform [{}]'.format(OSHelper.get_os())) if incorrect_fx_version: skip_reason_list.append('Test doesn\'t support Firefox version [{}]'.format(fx_version)) if len(skip_reason_list) > 0: logger.info( 'Test skipped: - [{}]: {} Reason(s): {}'.format(item.nodeid.split(':')[0], values.get('description'), ', '.join(skip_reason_list))) test_instance = (item, 'SKIPPED', None) test_result = create_result_object(test_instance, 0, 0) self.completed_tests.append(test_result) pytest.skip(item)
def pytest_runtest_setup(self, item): BaseTarget.pytest_runtest_setup(self, item) if OSHelper.is_mac(): mouse_reset() if item.name == 'test_run': skip_reason_list = [] values = item.own_markers[0].kwargs is_disabled = 'enabled' in values and not values.get( 'enabled') and not core_args.override is_excluded = 'exclude' in values and OSHelper.get_os( ) in values.get('exclude') incorrect_locale = 'locale' in values and core_args.locale not in values.get( 'locale') incorrect_platform = 'platform' in values and OSHelper.get_os( ) not in values.get('platform') fx_version = self.values.get('fx_version') incorrect_fx_version = 'fx_version' in values and not check_version( fx_version, values.get('fx_version')) if is_disabled: skip_reason_list.append('Test is disabled') if is_excluded: skip_reason_list.append('Test is excluded for {}'.format( OSHelper.get_os())) if 'blocked_by' in values: bug_id = values.get('blocked_by') if is_blocked(bug_id): skip_reason_list.append( 'Test is blocked by [{}]'.format(bug_id)) if incorrect_locale: skip_reason_list.append( 'Test doesn\'t support locale [{}]'.format( core_args.locale)) if incorrect_platform: skip_reason_list.append( 'Test doesn\'t support platform [{}]'.format( OSHelper.get_os())) if incorrect_fx_version: skip_reason_list.append( 'Test doesn\'t support Firefox version [{}]'.format( fx_version)) if len(skip_reason_list) > 0: logger.info('Test skipped: - [{}]: {} Reason(s): {}'.format( item.nodeid.split(':')[0], values.get('description'), ', '.join(skip_reason_list))) test_instance = (item, 'SKIPPED', None) test_result = create_result_object(test_instance, 0, 0) self.completed_tests.append(test_result) pytest.skip(item)
def pytest_sessionfinish(self, session): BaseTarget.pytest_sessionfinish(self, session) for process in self.process_list: logger.info('Terminating process.') process.terminate() process.join() logger.debug('Finishing Firefox session') if core_args.report: report_test_results(self)
def __init__(self): BaseTarget.__init__(self) global target_args target_args = self.get_target_args() self.target_name = 'Firefox' self.process_list = [] self.cc_settings = [{ 'name': 'firefox', 'type': 'list', 'label': 'Firefox', 'value': ['local', 'latest', 'latest-esr', 'latest-beta', 'nightly'], 'default': 'beta' }, { 'name': 'locale', 'type': 'list', 'label': 'Locale', 'value': OSHelper.LOCALES, 'default': 'en-US' }, { 'name': 'mouse', 'type': 'list', 'label': 'Mouse speed', 'value': ['0.0', '0.5', '1.0', '2.0'], 'default': '0.5' }, { 'name': 'highlight', 'type': 'checkbox', 'label': 'Debug using highlighting' }, { 'name': 'override', 'type': 'checkbox', 'label': 'Run disabled tests' }, { 'name': 'email', 'type': 'checkbox', 'label': 'Email results' }, { 'name': 'report', 'type': 'checkbox', 'label': 'Create TestRail report' }] self.local_web_root = os.path.join(PathManager.get_module_dir(), 'targets', 'firefox', 'local_web')