1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# META: timeout=long
import pytest
pytestmark = pytest.mark.asyncio
@pytest.mark.parametrize(
"ranges,expected",
[
(
["2-4"],
[
{"type": "string", "value": "Page 2"},
{"type": "string", "value": "Page 3"},
{"type": "string", "value": "Page 4"},
],
),
(
["2-4", "2-3"],
[
{"type": "string", "value": "Page 2"},
{"type": "string", "value": "Page 3"},
{"type": "string", "value": "Page 4"},
],
),
(
["2-4", "3-5"],
[
{"type": "string", "value": "Page 2"},
{"type": "string", "value": "Page 3"},
{"type": "string", "value": "Page 4"},
{"type": "string", "value": "Page 5"},
],
),
(
["9-"],
[
{"type": "string", "value": "Page 9"},
{"type": "string", "value": "Page 10"},
],
),
(
["-2"],
[
{"type": "string", "value": "Page 1"},
{"type": "string", "value": "Page 2"},
],
),
(
[7],
[
{"type": "string", "value": "Page 7"},
],
),
(
["7"],
[
{"type": "string", "value": "Page 7"},
],
),
(
["-2", "9-", "7"],
[
{"type": "string", "value": "Page 1"},
{"type": "string", "value": "Page 2"},
{"type": "string", "value": "Page 7"},
{"type": "string", "value": "Page 9"},
{"type": "string", "value": "Page 10"},
],
),
(
["-5", "2-"],
[
{"type": "string", "value": "Page 1"},
{"type": "string", "value": "Page 2"},
{"type": "string", "value": "Page 3"},
{"type": "string", "value": "Page 4"},
{"type": "string", "value": "Page 5"},
{"type": "string", "value": "Page 6"},
{"type": "string", "value": "Page 7"},
{"type": "string", "value": "Page 8"},
{"type": "string", "value": "Page 9"},
{"type": "string", "value": "Page 10"},
],
),
(
[],
[
{"type": "string", "value": "Page 1"},
{"type": "string", "value": "Page 2"},
{"type": "string", "value": "Page 3"},
{"type": "string", "value": "Page 4"},
{"type": "string", "value": "Page 5"},
{"type": "string", "value": "Page 6"},
{"type": "string", "value": "Page 7"},
{"type": "string", "value": "Page 8"},
{"type": "string", "value": "Page 9"},
{"type": "string", "value": "Page 10"},
],
),
],
)
async def test_page_ranges_document(
bidi_session, inline, top_context, assert_pdf_content, ranges, expected
):
url = inline(
"""
<style>
div {page-break-after: always}
</style>
<div>Page 1</div>
<div>Page 2</div>
<div>Page 3</div>
<div>Page 4</div>
<div>Page 5</div>
<div>Page 6</div>
<div>Page 7</div>
<div>Page 8</div>
<div>Page 9</div>
<div>Page 10</div>"""
)
await bidi_session.browsing_context.navigate(
context=top_context["context"], url=url, wait="complete"
)
value = await bidi_session.browsing_context.print(
context=top_context["context"], page_ranges=ranges
)
await assert_pdf_content(value, expected)
|