1from tests.support.asserts import assert_error, assert_success
2
3
4def get_title(session):
5    return session.transport.send(
6        "GET", "session/{session_id}/title".format(**vars(session)))
7
8
9def test_payload(session):
10    session.start()
11
12    response = get_title(session)
13    value = assert_success(response)
14    assert isinstance(value, str)
15
16
17def test_no_top_browsing_context(session, closed_window):
18    response = get_title(session)
19    assert_error(response, "no such window")
20
21
22def test_no_browsing_context(session, closed_frame, inline):
23    session.url = inline("<title>Foo</title>")
24
25    response = get_title(session)
26    assert_success(response, "Foo")
27
28
29def test_with_duplicated_title(session, inline):
30    session.url = inline("<title>First</title><title>Second</title>")
31
32    result = get_title(session)
33    assert_success(result, "First")
34
35
36def test_without_title(session, inline):
37    session.url = inline("<h2>Hello</h2>")
38
39    result = get_title(session)
40    assert_success(result, "")
41
42
43def test_after_modification(session, inline):
44    session.url = inline("<title>Initial</title><h2>Hello</h2>")
45    session.execute_script("document.title = 'Updated'")
46
47    result = get_title(session)
48    assert_success(result, "Updated")
49
50
51def test_strip_and_collapse(session, inline):
52    document = "<title>   a b\tc\nd\t \n e\t\n </title><h2>Hello</h2>"
53    session.url = inline(document)
54
55    result = get_title(session)
56    assert_success(result, "a b c d e")
57