Page MenuHomePhabricator

mw-empty-elt wrapping does not take DOMFragments into account
Closed, ResolvedPublicBUG REPORT

Description

Steps to replicate the issue (include links if applicable):

$ echo "{{1x|[https://www.garesetconnexions.sncf/fr/gares-services/frmor[[Category:Page utilisant P3104]]/ La gare de Moret-Veneux-les-Sablons]}}" | php ./bin/parse.php
<p data-parsoid='{"dsr":[0,137,0,0]}'><a rel="mw:ExtLink nofollow" href="https://www.garesetconnexions.sncf/fr/gares-services/frmor" about="#mwt1" typeof="mw:Transclusion" class="external text" data-parsoid='{"pi":[[{"k":"1"}]],"dsr":[0,137,null,null]}' data-mw='{"parts":[{"template":{"target":{"wt":"1x","href":"./Template:1x"},"params":{"1":{"wt":"[https://www.garesetconnexions.sncf/fr/gares-services/frmor[[Category:Page utilisant P3104]]/ La gare de Moret-Veneux-les-Sablons]"}},"i":0}}]}'><span class="mw-empty-elt"><link rel="mw:PageProp/Category" href="./Category:Page_utilisant_P3104"/>/ La gare de Moret-Veneux-les-Sablons</span></a></p>

What happens?:

The category and the link text are wrapped into an mw-empty-elt span, which makes the text disappear when the CSS is applied.

What should have happened instead?:

The text should not be wrapped into an mw-empty-elt span.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

This is due to the fact that the wrapping happens before DOMFragments are unwrapped; and in this case, the DOMFragment contains the category and the text, but is stored inside a category link:

$ echo "{{1x|[https://www.garesetconnexions.sncf/fr/gares-services/frmor[[Category:Page utilisant P3104]]/ La gare de Moret-Veneux-les-Sablons]}}" | php ./bin/parse.php --dump=dom:pre-tplwrap
[dump] ----- DOM: pre-tplwrap -----
<link rel="mw:PageProp/Category" href="./Category:Page_utilisant_P3104" data-parsoid='{"tsr":[59,92],"stx":"simple","a":{"href":"./Category:Page_utilisant_P3104"},"sa":{"href":"Category:Page utilisant P3104"}}'/>/ La gare de Moret-Veneux-les-Sablons
----------------------------

[dump] ----- DOM: pre-tplwrap -----
<body data-parsoid='{"dsr":[0,138,0,0]}'><p data-parsoid='{"dsr":[0,137,0,0]}'><meta typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"tsr":[0,137],"src":"{{1x|[https://www.garesetconnexions.sncf/fr/gares-services/frmor[[Category:Page utilisant P3104]]/ La gare de Moret-Veneux-les-Sablons]}}","dsr":[0,137,null,null]}'/><a rel="mw:ExtLink" href="https://www.garesetconnexions.sncf/fr/gares-services/frmor" data-parsoid="{}"><link rel="mw:PageProp/Category" href="./Category:Page_utilisant_P3104" typeof="mw:DOMFragment" data-parsoid='{"stx":"simple","a":{"href":"./Category:Page_utilisant_P3104"},"sa":{"href":"Category:Page utilisant P3104"},"html":{"_h":"&lt;link rel=\"mw:PageProp/Category\" href=\"./Category:Page_utilisant_P3104\" data-parsoid=&apos;{\"tsr\":[59,92],\"stx\":\"simple\",\"a\":{\"href\":\"./Category:Page_utilisant_P3104\"},\"sa\":{\"href\":\"Category:Page utilisant P3104\"}}&apos;/>/ La gare de Moret-Veneux-les-Sablons"}}'/></a><meta typeof="mw:Transclusion/End" about="#mwt1" data-parsoid='{"tsr":[null,137],"dsr":[null,137,null,null]}'/></p>
</body>

Change #1304590 had a related patch set uploaded (by Isabelle Hurbain-Palatin; author: Isabelle Hurbain-Palatin):

[mediawiki/services/parsoid@master] Inspect DOMFragments when stashing elements in mw-empty-elt wrappers

https://gerrit.wikimedia.org/r/1304590

Change #1304590 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Inspect DOMFragments when stashing elements in mw-empty-elt wrappers

https://gerrit.wikimedia.org/r/1304590

Change #1305690 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305690

Change #1305690 merged by jenkins-bot:

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305690

Change #1305719 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/vendor@wmf/1.47.0-wmf.8] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305719

Change #1305719 merged by jenkins-bot:

[mediawiki/vendor@wmf/1.47.0-wmf.8] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305719

Mentioned in SAL (#wikimedia-operations) [2026-06-25T16:38:41Z] <cscott@deploy1003> cscott: Backport for [[gerrit:1305719|Bump wikimedia/parsoid to 0.24.0-a12 (T353697 T384490 T387374 T387520 T387521 T391624 T393295 T420336 T429624 T429688 T429822)]], [[gerrit:1305720|Bump wikimedia/parsoid to 0.24.0-a12 (T429822)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-06-25T16:46:32Z] <cscott@deploy1003> Finished scap sync-world: Backport for [[gerrit:1305719|Bump wikimedia/parsoid to 0.24.0-a12 (T353697 T384490 T387374 T387520 T387521 T391624 T393295 T420336 T429624 T429688 T429822)]], [[gerrit:1305720|Bump wikimedia/parsoid to 0.24.0-a12 (T429822)]] (duration: 09m 54s)

ihurbain closed this task as Resolved.EditedJun 26 2026, 8:49 AM

Fixed on https://fr.wikipedia.org/wiki/Gare_de_Moret-Veneux-les-Sablons for this specific issue.

There's still a visual diff because there's a trailing slash in the URL that ends up in the link text, but that's an independent issue, filed in T430280.