Esempio n. 1
0
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,
        )
Esempio n. 2
0
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)
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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]
Esempio n. 8
0
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']
Esempio n. 9
0
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)
Esempio n. 10
0
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)
Esempio n. 11
0
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)
Esempio n. 12
0
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
Esempio n. 13
0
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
Esempio n. 14
0
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)
Esempio n. 15
0
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
Esempio n. 16
0
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
Esempio n. 17
0
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
Esempio n. 18
0
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"
Esempio n. 19
0
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)
Esempio n. 20
0
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"
Esempio n. 21
0
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')
Esempio n. 22
0
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)