def test_search_is_lazy_and_does_not_start_on_creation(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    non_existent_collection = session_browser.all('.not-existing').filtered_by(
        have.css_class('special')
    )
    assert str(non_existent_collection)
Esempio n. 2
0
def test_fails_on_timeout_when_waiting_parent_in_dom_then_visible_then_inner_in_dom_then_visible(
    session_browser,
):
    browser = session_browser.with_(timeout=0.25)
    page = GivenPage(browser.driver)
    page.opened_empty()
    page.load_body_with_timeout(
        '''
        <p style="display:none">
            <h2 id="second">Heading 2</h2>
        </p>''',
        250,
    ).execute_script_with_timeout(
        'document.getElementsByTagName("p")[0].style = "display:block";', 500
    )
    page.load_body_with_timeout(
        '''
        <p>
            <a href="#second" style="display:none">go to Heading 2</a>
            <h2 id="second">Heading 2</h2>
        </p>''',
        750,
    ).execute_script_with_timeout(
        'document.getElementsByTagName("a")[0].style = "display:block";', 1000
    )

    with pytest.raises(TimeoutException):
        browser.element('p').element('a').click()

    assert "second" not in browser.driver.current_url
def test_search_is_updated_on_next_actual_action_like_questioning_count(
        session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.all('li').filtered_by(
        have.css_class('will-appear'))

    page.load_body('''
                   <ul>Hello to:
                       <li>Anonymous</li>
                       <li class='will-appear'>Bob</li>
                       <li class='will-appear'>Kate</li>
                   </ul>''')

    assert len(elements) == 2

    page.load_body('''
                   <ul>Hello to:
                       <li>Anonymous</li>
                       <li class='will-appear'>Bob</li>
                       <li class='will-appear'>Kate</li>
                       <li class='will-appear'>Joe</li>
                   </ul>''')

    assert len(elements) == 3
def test_search_does_not_start_on_creation(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    non_existent_element = session_browser.element('#not-existing-element-id')

    assert str(non_existent_element)
def test_search_does_not_start_on_creation(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    non_existent_element = session_browser.all('.will-appear')[1]

    assert str(non_existent_element)
Esempio n. 6
0
def test_waits_first_for_parent_in_dom_then_inner_in_dom_then_visibility(
    session_browser,
):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    page.load_body_with_timeout(
        '''
        <p>
            <h2 id="second">Heading 2</h2>
        </p>''',
        250,
    )
    page.load_body_with_timeout(
        '''
        <p>
            <a href="#second" style="display:none">go to Heading 2</a>
            <h2 id="second">Heading 2</h2>
        </p>''',
        500,
    ).execute_script_with_timeout(
        'document.getElementsByTagName("a")[0].style = "display:block";', 750
    )

    session_browser.element('p').element('a').click()

    assert "second" in session_browser.driver.current_url
Esempio n. 7
0
def test_search_is_updated_on_next_actual_action_like_questioning_count(
    session_browser,
):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.element('ul').all('.will-appear')
    page.load_body(
        '''
        <ul>Hello to:
            <li class='will-appear'>Bob</li>
            <li class='will-appear'>Kate</li>
        </ul>
        '''
    )
    original_count = len(elements)
    page.load_body(
        '''
        <ul>Hello to:
            <li class='will-appear'>Bob</li>
            <li class='will-appear'>Kate</li>
            <li class='will-appear'>Joe</li>
        </ul>
        '''
    )

    updated_count = len(elements)

    assert updated_count == 3
    assert updated_count != original_count
def test_search_is_updated_on_next_actual_action_like_questioning_displayed(
    session_browser,
):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    element = session_browser.all('.will-appear').element_by(
        have.css_class('special')
    )

    page.load_body(
        '''
                   <ul>Hello to:
                       <li class="will-appear">Bob</li>
                       <li class="will-appear special">Kate</li>
                   </ul>'''
    )

    assert element().is_displayed() is True

    page.load_body(
        '''
                   <ul>Hello to:
                       <li class="will-appear">Bob</li>
                       <li class="will-appear special" style="display:none">Kate</li>
                   </ul>'''
    )
    assert element().is_displayed() is False
Esempio n. 9
0
def test_search_does_not_start_on_creation(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    non_existent_collection = session_browser.all('.not-existing')

    assert str(non_existent_collection)
def test_waits_nothing(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.all('li').filtered_by(
        have.css_class('will-appear'))

    page.load_body('''
                   <ul>Hello to:
                       <li>Anonymous</li>
                       <li class='will-appear'>Bob</li>
                       <li class='will-appear' style='display:none'>Kate</li>
                   </ul>''')
    assert len(elements) == 2

    page.load_body_with_timeout(
        '''
                                <ul>Hello to:
                                    <li>Anonymous</li>
                                    <li class='will-appear'>Bob</li>
                                    <li class='will-appear' style='display:none'>Kate</li>
                                    <li class='will-appear'>Joe</li>
                                </ul>''',
        500,
    )
    assert len(elements) == 2
def test_search_is_lazy_and_does_not_start_on_creation_for_both_collection_and_indexed(
    session_browser, ):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    non_existent_element = session_browser.all('.non-existing').element_by(
        have.exact_text('Kate'))

    assert str(non_existent_element)
def test_search_is_postponed_until_actual_action_like_questioning_displayed(
        session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    element = session_browser.element('#will-be-existing-element-id')
    page.load_body('<h1 id="will-be-existing-element-id">Hello kitty:*</h1>')

    assert element().is_displayed() is True
Esempio n. 13
0
def test_counts_invisible_tasks(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    elements = session_browser.all('.will-appear')

    page.load_body('''
                   <ul>Hello to:
                       <li class='will-appear'>Bob</li>
                       <li class='will-appear' style='display:none'>Kate</li>
                   </ul>''')

    assert len(elements) == 2
def test_searches_exactly_inside_parent(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    elements = session_browser.element('ul').all('.will-appear')
    page.load_body('''
        <ul>Hello to:
            <li class='will-appear'>Bob</li>
            <li class='will-appear'>Kate</li>
        </ul>
        <li class='forgotten'>Joe</li>''')

    assert len(elements) == 2
Esempio n. 15
0
def test_search_is_updated_on_next_actual_action_like_questioning_displayed(
    session_browser, ):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    element = session_browser.element('#will-be-existing-element-id')
    page.load_body('<h1 id="will-be-existing-element-id">Hello kitty:*</h1>')
    assert element().is_displayed() is True

    page.load_body(
        '<h1 id="will-be-existing-element-id" style="display:none">Hello kitty:*</h1>'
    )
    assert element().is_displayed() is False
Esempio n. 16
0
def test_search_is_postponed_until_actual_action_like_questioning_count(
    session_browser, ):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.all('.will-appear')

    page.load_body('''
                   <ul>Hello to:
                       <li class='will-appear'>Bob</li>
                       <li class='will-appear'>Kate</li>
                   </ul>''')

    assert len(elements) == 2
Esempio n. 17
0
def test_search_is_postponed_until_actual_action_like_questioning_displayed(
        session_browser):
    element = (session_browser.element('#will-be-existing-element').element(
        '.will-exist-inner'))
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    page.load_body('''
        <h1 id="will-be-existing-element">
            <span class="will-exist-inner">Hello</span> kitty:*
        </h1>''')
    answer = element().is_displayed()

    assert answer is True
def test_search_is_postponed_until_actual_action_like_questioning_displayed(
        session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    element = session_browser.all('.will-appear')[1]

    page.load_body('''
                   <ul>Hello to:
                       <li class="will-appear">Bob</li>
                       <li class="will-appear">Kate</li>
                   </ul>''')

    assert element().is_displayed() is True
Esempio n. 19
0
def test_type_failure_when_absent(session_browser):
    browser = session_browser.with_(timeout=1).with_(
        wait_for_no_overlap_found_by_js=True
    )
    page = GivenPage(browser.driver)
    page.opened_empty()
    time_before = time.time()

    try:
        browser.element('#text-field').type(' after')

    except TimeoutException as error:
        time_spent = time.time() - time_before
        assert time_spent >= 1
        assert "no such element: Unable to locate" in error.msg
def test_counts_invisible_tasks(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.all('li').filtered_by(
        have.css_class('will-appear')
    )
    page.load_body(
        '''
        <ul>Hello to:
            <li>Anonymous</li>
            <li class='will-appear'>Bob</li>
            <li class='will-appear' style='display:none'>Kate</li>
        </ul>
        '''
    )

    count = len(elements)

    assert count == 2
def test_waits_for_parent_in_dom_then_visible(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.element('#will-appear').all('.item')

    page.load_body('''
        <li class='item'>Bob</li>
        <li class='item' style='display:none'>Kate</li>''')

    page.load_body_with_timeout(
        '''
        <ul id='will-appear' style="display:none">Hello to:
            <li class='item'>Bob</li>
            <li class='item' style='display:none'>Kate</li>
        </ul>''',
        0.25,
    ).execute_script_with_timeout(
        'document.getElementsByTagName("ul")[0].style = "display:block";', 0.5)

    assert len(elements) == 2
def test_does_not_wait_inner(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.element('ul').all('.will-appear')

    page.load_body('''
        <ul>Hello to:
            <li class='will-appear'>Bob</li>
            <li class='will-appear' style='display:none'>Kate</li>
        </ul>''')

    assert len(elements) == 2

    page.load_body_with_timeout(
        '''
        <ul>Hello to:
            <li class='will-appear'>Bob</li>
            <li class='will-appear' style='display:none'>Kate</li>
            <li class='will-appear'>Joe</li>
        </ul>''', 500)

    assert len(elements) == 2