예제 #1
0
def test_reset_filters(base_url, selenium, test_job):
    page = Treeherder(selenium, base_url).open()
    with page.filters_menu() as filters:
        getattr(filters, 'toggle_{}_jobs'.format(test_job.result))()
    assert len(page.all_jobs) == 0
    page.reset_filters()
    assert len(page.all_jobs) == 1
예제 #2
0
def test_switch_app(base_url, selenium):
    """Switch between Treeherder and Perfherder using header dropdown"""
    page = Treeherder(selenium, base_url).open()
    assert page.header.active_app == 'Treeherder'
    page = page.switch_to_perfherder()
    assert page.header.active_app == 'Perfherder'
    page = page.switch_to_treeherder()
    assert page.header.active_app == 'Treeherder'
예제 #3
0
def test_select_next_job(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.all_jobs[0].click()
    assert page.all_jobs[0].selected
    assert not page.all_jobs[1].selected
    page.select_next_job()
    assert not page.all_jobs[0].selected
    assert page.all_jobs[1].selected
예제 #4
0
def test_select_previous_job(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.all_jobs[1].click()
    assert not page.all_jobs[0].selected
    assert page.all_jobs[1].selected
    page.select_previous_job()
    assert page.all_jobs[0].selected
    assert not page.all_jobs[1].selected
def test_filter_in_progress(base_url, selenium, test_jobs):
    """Hide all except in_progress and verify job is displayed."""
    page = Treeherder(selenium, base_url).open()
    page.toggle_success()
    page.toggle_failures()
    page.toggle_retry()
    page.toggle_usercancel()
    page.wait.until(lambda _: len(page.all_jobs) == 1)
    page.all_jobs[0].click()
    assert page.details_panel.job_details.result == 'unknown'
def test_filter_jobs_by_failure_result(base_url, selenium, test_jobs, result):
    page = Treeherder(selenium, base_url).open()
    assert len(page.all_jobs) == len(RESULTS)
    with page.filters_menu() as filters:
        for result in RESULTS:
            getattr(filters, 'toggle_{}_jobs'.format(result))()
    assert len(page.all_jobs) == 0
    with page.filters_menu() as filters:
        getattr(filters, 'toggle_{}_jobs'.format(result))()
    assert len(page.all_jobs) == 1
    page.all_jobs[0].click()
    assert page.info_panel.job_details.result == result
예제 #7
0
def test_switch_app(base_url, selenium, test_repository):
    """Switch between Treeherder and Perfherder using header dropdown"""
    page = Treeherder(selenium, base_url).open()
    assert page.header.active_app == 'Treeherder'
    page = page.switch_to_perfherder()
    assert page.header.active_app == 'Perfherder'
    page = page.switch_to_treeherder()
    # Be aware that when switching back from Perfherder, it will try to
    # default to mozilla-inbound, which does not exist in this test scenario.
    # So part of this test is to ensure what happens when the ``repo`` param
    # in the url is an invalid repo.  We should still display the nav bars
    # and a meaningful error message.
    assert page.header.active_app == 'Treeherder'
예제 #8
0
def test_expand_job_group(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_job_groups) == 1)
    group = page.all_job_groups[0]
    assert len(group.jobs) == 0
    group.expand()
    assert len(group.jobs) == len(test_jobs)
예제 #9
0
def test_close_info_panel(base_url, selenium, test_job, method):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: page.all_jobs)
    page.all_jobs[0].click()
    assert page.details_panel.is_open
    page.details_panel.close(method)
    assert not page.details_panel.is_open
예제 #10
0
def test_set_as_top_of_range(base_url, selenium, test_job):
    page = Treeherder(selenium, base_url).open()
    result_sets = page.result_sets
    datestamp = result_sets[1].datestamp
    assert result_sets[0].datestamp != datestamp
    result_sets[1].set_as_top_of_range()
    assert page.result_sets[0].datestamp == datestamp
예제 #11
0
def test_set_as_top_of_range(base_url, selenium, test_job):
    page = Treeherder(selenium, base_url).open()
    pushes = page.pushes
    datestamp = pushes[1].datestamp
    assert pushes[0].datestamp != datestamp
    pushes[1].set_as_top_of_range()
    assert page.pushes[0].datestamp == datestamp
def test_filter_jobs_by_keywords(base_url, selenium, test_job_2):
    page = Treeherder(selenium, base_url).open()
    assert len(page.all_jobs) == 2
    page.all_jobs[0].click()
    keywords = page.info_panel.job_details.keywords
    page.info_panel.job_details.filter_by_keywords()
    assert len(page.all_jobs) == 1
    assert page.quick_filter_term == keywords.lower()
예제 #13
0
def test_clear_pinboard(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.all_jobs[0].click()
    page.info_panel.job_details.pin_job()
    assert len(page.pinboard.jobs) == 1
    page.pinboard.clear()
    assert len(page.pinboard.jobs) == 0
예제 #14
0
def test_set_as_bottom_of_range(base_url, selenium, test_job):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: page.all_jobs)
    pushes = page.pushes
    datestamp = pushes[-2].datestamp
    assert pushes[-1].datestamp != datestamp
    page.pushes[-2].set_as_bottom_of_range()
    assert page.pushes[-1].datestamp == datestamp
예제 #15
0
def test_pin_job(base_url, selenium, test_jobs, method):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.all_jobs[0].click()
    assert len(page.pinboard.jobs) == 0
    page.info_panel.job_details.pin_job(method)
    assert len(page.pinboard.jobs) == 1
    assert page.pinboard.jobs[0].symbol == page.all_jobs[0].symbol
예제 #16
0
def test_filter_jobs_by_keywords_from_job_panel(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.all_jobs[0].click()
    keywords = page.details_panel.job_details.keywords
    page.details_panel.job_details.filter_by_keywords()
    page.wait.until(lambda _: len(page.all_jobs) < len(test_jobs))
    assert page.quick_filter_term == keywords.lower()
def test_clear_filter_jobs_by_author(base_url, selenium, commits):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.pushes) == 2)
    page.pushes[0].filter_by_author()
    page.wait.until(lambda _: len(page.pushes) == 1)
    page.active_filters.filters[0].clear()
    page.wait.until(lambda _: len(page.pushes) == 2)
    # check authors are distinct
    assert len(set(push.author for push in page.pushes)) == 2
def test_open_single_result(base_url, selenium, test_commit):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: 1 == len(page.pushes))
    page.pushes[0].view()
    assert 1 == len(page.pushes)
    assert test_commit.author == page.pushes[0].author
    assert test_commit.push.time.strftime('%a, %b %-d, %H:%M:%S') == page.pushes[0].datestamp
    assert 1 == len(page.pushes[0].commits)
    assert test_commit.revision[:12] == page.pushes[0].commits[0].revision
    assert test_commit.comments == page.pushes[0].commits[0].comment
def test_filter_jobs_by_author(base_url, selenium, commits):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.pushes) == 2)
    # check authors are distinct
    assert len(set(push.author for push in page.pushes)) == 2
    author = page.pushes[-1].author
    page.pushes[-1].filter_by_author()
    page.wait.until(lambda _: len(page.pushes) == 1)
    assert page.pushes[0].author == author
    assert len(page.active_filters.filters) == 1
    assert page.active_filters.filters[0].field == 'author:'
    assert page.active_filters.filters[0].value == author.split('@')[0]
예제 #20
0
def test_clear_filter(base_url, selenium, test_jobs, method):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.filter_by('linux')
    page.wait.until(lambda _: len(page.all_jobs) == 1)
    page.clear_filter(method)
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
예제 #21
0
def test_filter_jobs_by_keywords(base_url, selenium, test_jobs, method):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.filter_by('linux', method)
    page.wait.until(lambda _: len(page.all_jobs) == 1)
예제 #22
0
def test_switch_repo(base_url, selenium):
    """Switch to new active watched repo"""
    page = Treeherder(selenium, base_url).open()
    assert 'mozilla-inbound' == page.active_watched_repo
    page.select_mozilla_central_repo()
    assert 'mozilla-central' == page.active_watched_repo
def test_select_previous_unclassified_job(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    for i in reversed(range(len(test_jobs))):
        page.select_previous_unclassified_job()
        assert page.all_jobs[i].selected
def test_filter_unclassified_jobs(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    page.filter_unclassified_jobs()
    assert len(page.all_jobs) == len(RESULTS)
 def switch_to_treeherder(self):
     self.header.switch_app()
     from pages.treeherder import Treeherder
     return Treeherder(self.driver, self.base_url).wait_for_page_to_load()
def test_get_next_results(base_url, selenium, count, push_stored):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: 10 == len(page.pushes))
    getattr(page, 'get_next_{}'.format(count))()
    assert len(page.pushes) == 10 + count
예제 #27
0
def test_pin_all_jobs(base_url, selenium, test_jobs):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
    push = next(p for p in page.pushes if len(p.jobs) > 1)
    push.pin_all_jobs()
    assert len(page.pinboard.jobs) == len(test_jobs)
예제 #28
0
def test_open_log_viewer(base_url, selenium, log):
    page = Treeherder(selenium, base_url).open()
    page.wait.until(lambda _: page.all_jobs)
    page.all_jobs[0].click()
    log_viewer = page.details_panel.job_details.open_log_viewer()
    assert log_viewer.seed_url in selenium.current_url
def test_default_filters(base_url, selenium, test_jobs):
    """Show superseded, and verify all test jobs are displayed."""
    page = Treeherder(selenium, base_url).open()
    page.toggle_superseded()  # defaults to hidden
    page.wait.until(lambda _: len(page.all_jobs) == len(test_jobs))
def test_filter_superseded(base_url, selenium, test_jobs):
    """Hide all except superseded and verify job is displayed."""
    page = Treeherder(selenium, base_url).open()
    page.toggle_success()
    page.toggle_failures()
    page.toggle_retry()
    page.toggle_usercancel()
    page.toggle_superseded()  # defaults to hidden
    page.toggle_in_progress()
    page.wait.until(lambda _: len(page.all_jobs) == 1)
    page.all_jobs[0].click()
    assert page.info_panel.job_details.result == 'superseded'
def test_switch_repo(base_url, selenium, test_repository, test_repository_2):
    """Switch to new active watched repo"""
    page = Treeherder(selenium, base_url).open()
    assert test_repository.name == page.active_watched_repo
    page.select_repository(test_repository_2.name)
    assert test_repository_2.name == page.active_watched_repo
def test_filter_superseded(base_url, selenium, test_jobs):
    """Hide all except superseded and verify job is displayed."""
    page = Treeherder(selenium, base_url).open()
    page.toggle_success()
    page.toggle_failures()
    page.toggle_retry()
    page.toggle_usercancel()
    page.toggle_superseded()  # defaults to hidden
    page.toggle_in_progress()
    page.wait.until(lambda _: len(page.all_jobs) == 1)
    page.all_jobs[0].click()
    assert page.info_panel.job_details.result == 'superseded'