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
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'
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
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
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'
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)
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
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
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()
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
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
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
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]
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))
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)
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
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)
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