def test_web_summarylist(browser, basic_html): from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver import ActionChains from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException ignore_exc = (NoSuchElementException, StaleElementReferenceException) html_dir, dvcs = basic_html last_change_hash = dvcs.get_hash('master~4') browser.set_window_size(1200, 900) with tools.preview(html_dir) as base_url: get_with_retry(browser, base_url) summarylist_btn = browser.find_element_by_link_text('Benchmark list') summarylist_btn.click() # Check text content in the table base_link = browser.find_element_by_link_text( 'params_examples.track_find_test') cur_row = base_link.find_element_by_xpath('../..') m = re.match( 'params_examples.track_find_test \\([12]\\) 2.00 \u221233.3% \\(-1.00\\).*' + last_change_hash[:8], cur_row.text) assert m, cur_row.text # Check link base_href, qs = splitquery(base_link.get_attribute('href')) base_url, tag = splittag(base_href) assert parse_qs(qs) == { 'ram': ['128GB'], 'cpu': ['Blazingly fast'], 'NUL': ['[none]'] } assert tag == 'params_examples.track_find_test' # Change table sort (sorting is async, so needs waits) sort_th = browser.find_element_by_xpath('//th[text()="Recent change"]') sort_th.click() WebDriverWait(browser, 5).until( EC.text_to_be_present_in_element( ('xpath', '//tbody/tr[1]'), 'params_examples.track_find_test')) # Try to click cpu selector link in the panel cpu_select = browser.find_element_by_link_text('Not /really/ <fast>') cpu_select.click() # For the other CPU, there is no recent change recorded, only # the latest result is available def check(*args): base_link = browser.find_element_by_link_text( 'params_examples.track_find_test') cur_row = base_link.find_element_by_xpath('../..') return cur_row.text in ('params_examples.track_find_test (1) 2.00', 'params_examples.track_find_test (2) 2.00') WebDriverWait(browser, 5, ignored_exceptions=ignore_exc).until(check)
def test_web_summarylist(browser, basic_html): ignore_exc = (NoSuchElementException, StaleElementReferenceException) html_dir, dvcs = basic_html last_change_hash = dvcs.get_hash('master~4') browser.set_window_size(1200, 900) with tools.preview(html_dir) as base_url: get_with_retry(browser, base_url) summarylist_btn = browser.find_element_by_link_text('Benchmark list') summarylist_btn.click() # Check text content in the table base_link = browser.find_element_by_link_text('params_examples.track_find_test') cur_row = base_link.find_element_by_xpath('../..') m = re.match('params_examples.track_find_test \\([12]\\) 2.00 \u221233.3% \\(-1.00\\).*' + last_change_hash[:8], cur_row.text) assert m, cur_row.text # Check link base_href, qs = splitquery(base_link.get_attribute('href')) base_url, tag = splittag(base_href) assert parse_qs(qs) == {'ram': ['128GB'], 'cpu': ['Blazingly fast'], 'NUL': ['[none]']} assert tag == 'params_examples.track_find_test' # Change table sort (sorting is async, so needs waits) sort_th = browser.find_element_by_xpath('//th[text()="Recent change"]') sort_th.click() WebDriverWait(browser, WAIT_TIME).until( EC.text_to_be_present_in_element(('xpath', '//tbody/tr[1]'), 'params_examples.track_find_test')) # Try to click cpu selector link in the panel cpu_select = browser.find_element_by_link_text('Not /really/ <fast>') cpu_select.click() # For the other CPU, there is no recent change recorded, only # the latest result is available def check(*args): links = browser.find_elements_by_link_text('params_examples.track_find_test') visible_links = [item for item in links if item.is_displayed()] row_texts = [link.find_element_by_xpath('../..').text for link in visible_links] row_texts.sort() return row_texts == ['params_examples.track_find_test (1) 2.00', 'params_examples.track_find_test (2) 2.00'] WebDriverWait(browser, WAIT_TIME, ignored_exceptions=ignore_exc).until(check)
def test_web_summarylist(browser, basic_html): ignore_exc = (NoSuchElementException, StaleElementReferenceException) html_dir, dvcs = basic_html last_change_hash = dvcs.get_hash('master~4') browser.set_window_size(1200, 900) with tools.preview(html_dir) as base_url: get_with_retry(browser, base_url) summarylist_btn = browser.find_element_by_link_text('Benchmark list') summarylist_btn.click() # Check text content in the table base_link = browser.find_element_by_link_text( 'params_examples.track_find_test') cur_row = base_link.find_element_by_xpath('../..') m = re.match( 'params_examples.track_find_test \\([12]\\) 2.00 \u221233.3% \\(-1.00\\).*' + last_change_hash[:8], cur_row.text) assert m, cur_row.text # Check units in row base_link2 = browser.find_element_by_link_text( 'params_examples.track_bytes') cur_row2 = base_link2.find_element_by_xpath('../..') m = re.match(r'params_examples.track_bytes\s*1.000M', cur_row2.text) assert m, cur_row2.text # Check link base_href, qs = splitquery(base_link.get_attribute('href')) base_url, tag = splittag(base_href) assert parse_qs(qs) == { 'ram': ['128GB'], 'cpu': ['Blazingly fast'], 'NUL': ['[none]'] } assert tag == 'params_examples.track_find_test' # Change table sort (sorting is async, so needs waits) sort_th = browser.find_element_by_xpath('//th[text()="Recent change"]') sort_th.click() WebDriverWait(browser, WAIT_TIME).until( EC.text_to_be_present_in_element( ('xpath', '//tbody/tr[1]'), 'params_examples.track_find_test')) # Try to click cpu selector link in the panel cpu_select = browser.find_element_by_link_text('Not /really/ <fast>') cpu_select.click() # For the other CPU, there is no recent change recorded, only # the latest result is available def check(*args): links = browser.find_elements_by_link_text( 'params_examples.track_find_test') visible_links = [item for item in links if item.is_displayed()] row_texts = [ link.find_element_by_xpath('../..').text for link in visible_links ] row_texts.sort() if len(row_texts) != 2: return False ok = (re.match( r'^params_examples\.track_find_test \(1\) 2\.00 .*\(-1\.00\).*$', row_texts[0] ) and re.match( r'^params_examples\.track_find_test \(2\) 2\.00 .*\(-1\.00\).*$', row_texts[1])) return ok WebDriverWait(browser, WAIT_TIME, ignored_exceptions=ignore_exc).until(check)