diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py
index 4b067eadb7c..81fac5870e1 100644
--- a/sphinx/builders/html/__init__.py
+++ b/sphinx/builders/html/__init__.py
@@ -655,10 +655,6 @@ def get_doc_context(self, docname: str, body: str, metatags: str) -> dict[str, A
}
def write_doc(self, docname: str, doctree: nodes.document) -> None:
- title_node = self.env.longtitles.get(docname)
- title = self.render_partial(title_node)['title'] if title_node else ''
- self.index_page(docname, doctree, title)
-
destination = StringOutput(encoding='utf-8')
doctree.settings = self.docsettings
@@ -678,6 +674,9 @@ def write_doc(self, docname: str, doctree: nodes.document) -> None:
def write_doc_serialized(self, docname: str, doctree: nodes.document) -> None:
self.imgpath = relative_uri(self.get_target_uri(docname), self.imagedir)
self.post_process_images(doctree)
+ title_node = self.env.longtitles.get(docname)
+ title = self.render_partial(title_node)['title'] if title_node else ''
+ self.index_page(docname, doctree, title)
def finish(self) -> None:
self.finish_tasks.add_task(self.gen_indices)
diff --git a/tests/test_search.py b/tests/test_search.py
index 0fafa297553..d0172df6bbc 100644
--- a/tests/test_search.py
+++ b/tests/test_search.py
@@ -286,3 +286,10 @@ def test_nosearch(app):
assert 'latex' not in index['terms']
assert 'zfs' in index['terms']
assert index['terms']['zfs'] == [] # zfs on nosearch.rst is not registered to index
+
+
+@pytest.mark.sphinx(testroot='search', parallel=3, freshenv=True)
+def test_parallel(app):
+ app.build()
+ index = load_searchindex(app.outdir / 'searchindex.js')
+ assert index['docnames'] == ['index', 'nosearch', 'tocitem']