Skip to content

Commit cac4486

Browse files
authored
Wrap content in a <main> div in summary pages. (#937)
Fixes #879
1 parent 4e2ae5b commit cac4486

File tree

6 files changed

+114
-81
lines changed

6 files changed

+114
-81
lines changed

pydoctor/test/test_commandline.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from pydoctor.options import Options
1010
from pydoctor import driver
11+
from pydoctor.test.test_templatewriter import theme_param
1112

1213
from . import CapSys
1314

@@ -344,6 +345,26 @@ def test_html_ids_dont_look_like_python_names(tmp_path: Path) -> None:
344345
else:
345346
assert re.findall(r'id="[a-z]+"', text, re.IGNORECASE) == [], text
346347

348+
@theme_param
349+
def test_html_main_tag_present(tmp_path: Path, theme: str) -> None:
350+
"""
351+
Test that all generated HTML pages have a main tag.
352+
This includes both regular pages (like module/class documentation)
353+
and summary pages (like module index, class hierarchy, etc).
354+
"""
355+
356+
exit_code = driver.main(args=['--html-output', str(tmp_path),
357+
f'--theme={theme}',
358+
'pydoctor/test/testpackages/basic/',
359+
'pydoctor/test/testpackages/allgames/'])
360+
assert exit_code == 0
361+
362+
for html_file in tmp_path.glob("*.html"):
363+
with open(html_file, encoding='utf-8') as f:
364+
content = f.read()
365+
assert "<main" in content, f"No main tag found in {html_file.name}"
366+
run = True
367+
assert run, "No HTML files were tested, invalid glob pattern?"
347368

348369
def test_buildtime_injection_date(tmp_path: Path) -> None:
349370
"""

pydoctor/themes/base/all-documents.html

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,24 @@
99

1010
<div class="container" t:render="subheader" />
1111

12-
<div class="container">
13-
<h1>All Documents</h1>
12+
<div class="container-fluid">
13+
<main>
1414

15-
<ul>
16-
<li t:render="documents">
17-
<t:attr name="id"><t:slot name="id" /></t:attr>
18-
<div class="fullName"><t:slot name="fullName" /></div>
19-
<div class="url"><t:slot name="url" /></div>
20-
<div class="type"><t:slot name="type" /></div>
21-
<div class="kind"><t:slot name="kind" /></div>
22-
<div class="privacy"><t:slot name="privacy" /></div>
23-
<div class="summary"><t:slot name="summary" /></div>
24-
</li>
25-
</ul>
15+
<h1>All Documents</h1>
16+
17+
<ul>
18+
<li t:render="documents">
19+
<t:attr name="id"><t:slot name="id" /></t:attr>
20+
<div class="fullName"><t:slot name="fullName" /></div>
21+
<div class="url"><t:slot name="url" /></div>
22+
<div class="type"><t:slot name="type" /></div>
23+
<div class="kind"><t:slot name="kind" /></div>
24+
<div class="privacy"><t:slot name="privacy" /></div>
25+
<div class="summary"><t:slot name="summary" /></div>
26+
</li>
27+
</ul>
28+
29+
</main>
2630
</div>
2731
<footer class="container-fluid" t:render="footer" />
2832
<script src="pydoctor.js" type='text/javascript'></script>

pydoctor/themes/base/apidocs-help.html

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,23 @@
1313
<t:transparent t:render="nav" /></nav>
1414

1515
<div class="container-fluid">
16-
17-
<div class="page-header">
18-
<h1 t:render="heading">Heading</h1>
19-
<div id="show-private">
20-
<button class="btn btn-link" onclick="togglePrivate()">Toggle Private API</button>
16+
<main>
17+
18+
<div class="page-header">
19+
<h1 t:render="heading">Heading</h1>
20+
<div id="show-private">
21+
<button class="btn btn-link" onclick="togglePrivate()">Toggle Private API</button>
22+
</div>
2123
</div>
22-
</div>
23-
24-
<div t:render="helpcontent" />
2524

26-
<hr />
27-
28-
<p>
29-
<a href="https://github.com/twisted/pydoctor/issues">Report a bug or suggest an enhancement</a>
30-
</p>
25+
<div t:render="helpcontent" />
3126

27+
<hr />
28+
29+
<p>
30+
<a href="https://github.com/twisted/pydoctor/issues">Report a bug or suggest an enhancement</a>
31+
</p>
32+
</main>
3233
</div>
3334
<footer class="container-fluid" t:render="footer" />
3435

pydoctor/themes/base/index.html

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,38 @@
1212
<t:transparent t:render="nav" /></nav>
1313

1414
<div class="container-fluid">
15-
16-
<div t:render="subheader" />
17-
18-
<h2>
19-
Get Started
20-
</h2>
21-
<ul>
22-
<li>
23-
A listing of <a href="moduleIndex.html">all modules and
24-
packages</a>, organized by package hierarchy.
25-
</li>
26-
<li>
27-
A listing of <a href="classIndex.html">all classes</a>,
28-
organized by inheritance hierarchy.
29-
</li>
30-
<li>
31-
A listing of <a href="nameIndex.html">all functions, classes,
32-
modules and packages</a>, ordered by name.
33-
</li>
34-
<li>
35-
Or start at one of the root <t:transparent t:render="rootkind">
36-
packages</t:transparent>:
37-
<ul>
38-
<li t:render="roots">
39-
<t:slot name="root"/>
40-
</li>
41-
</ul>
42-
</li>
43-
</ul>
15+
<main>
16+
17+
<div t:render="subheader" />
18+
19+
<h2>
20+
Get Started
21+
</h2>
22+
<ul>
23+
<li>
24+
A listing of <a href="moduleIndex.html">all modules and
25+
packages</a>, organized by package hierarchy.
26+
</li>
27+
<li>
28+
A listing of <a href="classIndex.html">all classes</a>,
29+
organized by inheritance hierarchy.
30+
</li>
31+
<li>
32+
A listing of <a href="nameIndex.html">all functions, classes,
33+
modules and packages</a>, ordered by name.
34+
</li>
35+
<li>
36+
Or start at one of the root <t:transparent t:render="rootkind">
37+
packages</t:transparent>:
38+
<ul>
39+
<li t:render="roots">
40+
<t:slot name="root"/>
41+
</li>
42+
</ul>
43+
</li>
44+
</ul>
45+
46+
</main>
4447
</div>
4548

4649
<footer class="container-fluid" t:render="footer" />

pydoctor/themes/base/nameIndex.html

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,29 @@
1212
<nav class="navbar navbar-default mainnavbar">
1313
<t:transparent t:render="nav" /></nav>
1414

15-
<div class="container-fluid">
16-
17-
<div class="page-header">
18-
<h1 t:render="heading">Heading</h1>
19-
<div id="show-private">
20-
<button class="btn btn-link" onclick="togglePrivate()">Toggle Private API</button>
15+
<div class="container-fluid">
16+
<main>
17+
18+
<div class="page-header">
19+
<h1 t:render="heading">Heading</h1>
20+
<div id="show-private">
21+
<button class="btn btn-link" onclick="togglePrivate()">Toggle Private API</button>
22+
</div>
2123
</div>
22-
</div>
2324

24-
<t:transparent t:render="index">
25-
<a>
26-
<t:attr name="name" t:render="letter" />
27-
</a>
28-
<h2 t:render="letter" />
29-
<p class="letterlinks" t:render="letterlinks" />
30-
<ul id="summary-tree">
31-
<li t:render="names" />
32-
</ul>
33-
</t:transparent>
34-
35-
</div>
25+
<t:transparent t:render="index">
26+
<a>
27+
<t:attr name="name" t:render="letter" />
28+
</a>
29+
<h2 t:render="letter" />
30+
<p class="letterlinks" t:render="letterlinks" />
31+
<ul id="summary-tree">
32+
<li t:render="names" />
33+
</ul>
34+
</t:transparent>
35+
36+
</main>
37+
</div>
3638

3739
<footer class="container-fluid" t:render="footer" />
3840

pydoctor/themes/base/summary.html

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,19 @@
1212
<t:transparent t:render="nav" /></nav>
1313

1414
<div class="container-fluid">
15+
<main>
1516

16-
<div class="page-header">
17-
<h1 t:render="heading">Heading</h1>
18-
<div id="show-private">
19-
<button class="btn btn-link" onclick="togglePrivate()">Toggle Private API</button>
17+
<div class="page-header">
18+
<h1 t:render="heading">Heading</h1>
19+
<div id="show-private">
20+
<button class="btn btn-link" onclick="togglePrivate()">Toggle Private API</button>
21+
</div>
2022
</div>
21-
</div>
2223

23-
<ul id="summary-tree" t:render="stuff">
24-
</ul>
24+
<ul id="summary-tree" t:render="stuff">
25+
</ul>
2526

27+
</main>
2628
</div>
2729

2830
<div class="container-fluid" t:render="footer" />

0 commit comments

Comments
 (0)