def continuous_integration(): parser = argparse.ArgumentParser(description='Jasmine-CI') parser.add_argument('-b', '--browser', type=str, help='The selenium driver to utilize') parser.add_argument('-l', '--logs', action='store_true', help='Displays browser logs') parser.add_argument('-s', '--seed', type=str, help='Seed for random spec order') parser.add_argument('-c', '--config', type=str, help='Custom path to jasmine.yml') args = parser.parse_args() if _check_for_config(args.config): jasmine_config = _load_config(args.config) jasmine_app = JasmineApp(jasmine_config=jasmine_config) CIRunner(jasmine_config=jasmine_config).run( browser=args.browser, show_logs=args.logs, seed=args.seed, app=jasmine_app, )
def test_displays_top_suite_errors(suite_results, suites, results, run_details_with_failures, capsys, sysexit, firefox_driver, test_server, jasmine_config): results[0] = results[1] del results[1] def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return results if 'jsApiReporter.suiteResults' in js: return suite_results if 'jsApiReporter.runDetails' in js: return run_details_with_failures return None firefox_driver.execute_script = execute_script CIRunner(jasmine_config=jasmine_config).run() stdout, _ = capsys.readouterr() assert "Expected 'foo' to equal 'bar'." in stdout assert "stack trace" in stdout assert "Expected 'baz' to equal 'quux'." in stdout assert "stack trace 2" in stdout sysexit.assert_called_with(1)
def test_run_exits_with_zero_on_success(suites, results, capsys, sysexit, firefox_driver, test_server): results[0] = results[1] del results[1] def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return results if 'jsApiReporter.suiteResults' in js: return [] return None def get_log(type): return [dict(timestamp=0, level='INFO', message='hello')] firefox_driver.execute_script = execute_script firefox_driver.get_log = get_log CIRunner().run(logs=True) stdout, _stderr = capsys.readouterr() assert not sysexit.called stdout, _stderr = capsys.readouterr() dt = datetime.datetime.fromtimestamp(0) assert '[{0} - INFO] hello\n'.format(dt) not in stdout
def test_run_exits_with_zero_on_success(suites, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config): def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return [] if 'jsApiReporter.suiteResults' in js: return [] if 'jsApiReporter.runDetails' in js: return run_details return None def get_log(type): return [dict(timestamp=0, level='INFO', message='hello')] firefox_driver.execute_script = execute_script firefox_driver.get_log = get_log CIRunner(jasmine_config=jasmine_config).run(show_logs=True) capsys.readouterr() assert not sysexit.called stdout, _ = capsys.readouterr() dt = datetime.datetime.fromtimestamp(0) assert '[{0} - INFO] hello\n'.format(dt) not in stdout
def test_run_exits_with_nonzero_on_failure(suites, results, capsys, sysexit, firefox_driver, test_server): def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return results if 'jsApiReporter.suiteResults' in js: return [] return None timestamp = time.time() * 1000 def get_log(type): assert type == 'browser' return [ dict(timestamp=timestamp, level='INFO', message='hello'), dict(timestamp=timestamp + 1, level='WARNING', message='world'), ] firefox_driver.execute_script = execute_script firefox_driver.get_log = get_log CIRunner().run() sysexit.assert_called_with(1) stdout, _stderr = capsys.readouterr() assert "Browser Session Logs" not in stdout assert "hello" not in stdout assert "world" not in stdout
def test_run_with_browser_logs(suites, results, capsys, sysexit, firefox_driver, test_server): def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return results if 'jsApiReporter.suiteResults' in js: return [] return None timestamp = time.time() * 1000 def get_log(type): assert type == 'browser' return [ dict(timestamp=timestamp, level='INFO', message='hello'), dict(timestamp=timestamp + 1, level='WARNING', message='world'), ] firefox_driver.execute_script = execute_script firefox_driver.get_log = get_log CIRunner().run(logs=True) stdout, _stderr = capsys.readouterr() dt = datetime.datetime.fromtimestamp(timestamp / 1000.0) assert '[{0} - INFO] hello\n'.format(dt) in stdout dt = datetime.datetime.fromtimestamp((timestamp + 1) / 1000.0) assert '[{0} - WARNING] world\n'.format(dt) in stdout
def test_process_results__stack(suites, results): processed = CIRunner()._process_results(suites, results) assert processed[0]['status'] == 'failed' assert processed[1]['status'] == 'passed' assert processed[0]['failedExpectations'][0]['stack'] == "Totally the one you want" assert 'failedExpectations' not in processed[1]
def test_run_with_random_seed(suites, results, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config): CIRunner(jasmine_config=jasmine_config).run(seed="1234") firefox_driver.get.assert_called() url = firefox_driver.get.call_args[0][0] uri_tuple = urllib.parse.urlparse(str(url)) params = urllib.parse.parse_qs(uri_tuple[4]) assert params['seed'] == ['1234'] assert params['random'] == ['true']
def continuous_integration(): parser = argparse.ArgumentParser(description='Jasmine-CI') parser.add_argument('-b', '--browser', type=str, help='The selenium driver to utilize') parser.add_argument('-l', '--logs', action='store_true', help='Displays browser logs') args = parser.parse_args() if _check_for_config(): CIRunner().run(browser=args.browser, logs=args.logs)
def continuous_integration(): from jasmine.ci import CIRunner import argparse parser = argparse.ArgumentParser(description='Jasmine-CI') parser.add_argument('--browser', type=str, help='the selenium driver to utilize') args = parser.parse_args() CIRunner().run(browser=args.browser)
def test_run_exits_with_nonzero_on_failure(suites, results, stdout, sysexit, firefox_driver, test_server): def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.results()' in js: return results if 'jsApiReporter.suites()' in js: return suites return None firefox_driver.execute_script = execute_script CIRunner().run() sysexit.assert_called_with(1)
def test_run_exits_with_zero_on_success(suites, results, stdout, sysexit, firefox_driver, test_server): results['0'] = results['1'] del results['1'] def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.results()' in js: return results if 'jsApiReporter.suites()' in js: return suites return None firefox_driver.execute_script = execute_script CIRunner().run() assert not sysexit.called
def test_doesnt_displays_random_seed_if_not_random(results, suite_results, run_details, firefox_driver, capsys, test_server, jasmine_config, sysexit): def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return results if 'jsApiReporter.suiteResults' in js: return suite_results if 'jsApiReporter.runDetails' in js: return run_details return None firefox_driver.execute_script = execute_script CIRunner(jasmine_config=jasmine_config).run() stdout, _ = capsys.readouterr() assert 'Randomized with seed 54321' not in stdout
def test_displays_afterall_errors(suite_results, suites, results, capsys, sysexit, firefox_driver, test_server): results[0] = results[1] del results[1] def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return results if 'jsApiReporter.suiteResults' in js: return suite_results return None firefox_driver.execute_script = execute_script CIRunner().run() stdout, _stderr = capsys.readouterr() assert 'After All something went wrong' in stdout sysexit.assert_called_with(1)
def test_displays_afterall_errors(suite_results, suites, results, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config): results[0] = results[1] del results[1] def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return results if 'jsApiReporter.suiteResults' in js: return suite_results if 'jsApiReporter.runDetails' in js: return run_details return None firefox_driver.execute_script = execute_script CIRunner(jasmine_config=jasmine_config).run() stdout, _ = capsys.readouterr() assert 'something went wrong' in stdout
def test_displays_incomplete_reason(suite_results, suites, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config): run_details['overallStatus'] = 'incomplete' run_details['incompleteReason'] = 'out of cheese' def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return [] if 'jsApiReporter.suiteResults' in js: return suite_results if 'jsApiReporter.runDetails' in js: return run_details return None firefox_driver.execute_script = execute_script CIRunner(jasmine_config=jasmine_config).run() stdout, _ = capsys.readouterr() assert 'Incomplete: out of cheese' in stdout
def test_run_exits_with_nonzero_on_failure(suites, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config): run_details['overallStatus'] = 'something other than passed' def execute_script(js): if 'jsApiReporter.finished' in js: return True if 'jsApiReporter.specResults' in js: return [] if 'jsApiReporter.suiteResults' in js: return [] if 'jsApiReporter.runDetails' in js: return run_details return None timestamp = time.time() * 1000 def get_log(type): assert type == 'browser' return [ dict(timestamp=timestamp, level='INFO', message='hello'), dict(timestamp=timestamp + 1, level='WARNING', message='world'), ] firefox_driver.execute_script = execute_script firefox_driver.get_log = get_log CIRunner(jasmine_config=jasmine_config).run() sysexit.assert_called_with(1) stdout, _ = capsys.readouterr() assert "Browser Session Logs" not in stdout assert "hello" not in stdout assert "world" not in stdout
def test_process_results__fullName(suites, results): processed = CIRunner()._process_results(suites, results) assert processed[0]['fullName'] == "datepicker calls the datepicker constructor" assert processed[1]['fullName'] == "datepicker icon triggers the datepicker"
def test_run_builds_url(suites, results, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config): CIRunner(jasmine_config=jasmine_config).run() firefox_driver.get.assert_called_with('http://localhost:%s?random=true' % test_server().port)
def test_process_results__status(suites, results): processed = CIRunner()._process_results(suites, results) # Python is going to reverse the order of the above OrderedDict assert processed[0]['status'] == "failed" assert processed[1]['status'] == "passed"
def test_run_with_random_seed(suites, results, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config, url_builder): url_builder.build_url.return_value = 'http://localhost:80?seed=1234' CIRunner(jasmine_config=jasmine_config).run(seed="1234") url_builder.build_url.assert_called_with(80, '1234') firefox_driver.get.assert_called_with('http://localhost:80?seed=1234')
def test_run_with_random_seed(suites, results, run_details, capsys, sysexit, firefox_driver, test_server, jasmine_config): CIRunner(jasmine_config=jasmine_config).run(seed="1234") firefox_driver.get.assert_called_with('http://localhost:%s?seed=1234' % test_server().port)