示例#1
0
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)
示例#2
0
文件: test_web.py 项目: philpep/asv
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)
示例#3
0
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)