1 # MediaWiki Parser test cases
2 # Some taken from https://meta.wikimedia.org/wiki/Parser_testing
3 # All (C) their respective authors and released under the GPL
5 # The syntax should be fairly self-explanatory.
7 # Currently supported test options:
8 # One of the following three:
10 # (default) generate HTML output
11 # pst apply pre-save transform
12 # msg apply message transform
14 # Plus any combination of these:
16 # cat add category links
17 # (ignored by Parsoid, since it emits <link>s)
18 # ill add inter-language links
19 # (ignored by Parsoid, since it emits <link>s)
20 # subpage enable subpages (disabled by default)
21 # title=[[XXX]] run test using article title XXX
22 # language=XXX set content language to XXX for this test
23 # variant=XXX set the variant of language for this test (eg zh-tw)
24 # disabled do not run test
25 # parsoid parsoid-specific options (not run by PHP parser unless
26 # the test includes an html/php section)
27 # php php-only test (not run by the parsoid parser unless
28 # the test includes an html/parsoid section)
29 # showtitle make the first line the title
30 # showindicators make the first lines the page status indicators
31 # comment run through Linker::formatComment() instead of main parser
32 # local format section links in edit comment text as local links
33 # notoc disable table of contents
34 # thumbsize=NNN set the default thumb size to NNNpx for this test
35 # wrap include the normal wrapper <div class="mw-parser-output"> (since 1.30)
37 # You can also set the following parser properties via test options:
38 # wgEnableUploads, wgAllowExternalImages, wgMaxTocLevel,
39 # wgLinkHolderBatchSize, wgRawHtml, wgInterwikiMagic,
40 # wgEnableMagicLinks, wgMediaInTargetLanguage
42 # For testing purposes, temporary articles can created:
43 # !!article / NAMESPACE:TITLE / !!text / ARTICLE TEXT / !!endarticle
44 # where '/' denotes a newline.
46 # This is the standard article assumed to exist.
62 Article titles can contain single quotes!
72 Template:redirect to foo
74 #REDIRECT [[Template:Foo]]
95 MediaWiki:bad image list
97 * [[File:Bad.jpg]] except [[Nasty page]]
132 // For Serbian; localize Template namespace
140 Template:echo_with_span
146 Template:echo_with_div
152 Template:echo with depth
165 Template:table_attribs
168 |</noinclude>style="color:red;"|Foo
172 Template:table_attribs_2
175 |</noinclude>style="color:red;"|Foo
180 Template:table_attribs_3
183 |</noinclude>style{{=}}"background:#f9f9f9;"|Foo
187 Template:table_attribs_4
189 | style="background-color:#DC241f;" width="10px" |
193 Template:table_attribs_5
196 |</noinclude>style="color:red;"||Bar
200 Template:table_attribs_6
202 style="background: <nowiki>
209 Template:table_attribs_7
212 |</noinclude>style{{=}}"background:#f9f9f9;"|Foo<ref>foo</ref>
216 Template:table_header_cells
218 {{table_attribs}}!!style='color:red;'|''Bar''||style='color:brown;'|''Foo'' and Baz
224 {{table_attribs}}||style='color:red;'|''Bar''||style='color:brown;'|''Foo'' and Baz
228 Template:PartialTable
235 Template:image_attribs
238 [[File:foobar.jpg|</noinclude>right|Caption text<noinclude>]]</noinclude>
241 ## See T48811 for details
243 Template:mixed_attr_content_template
245 style="color:red;" title="T48811"
251 Template:definition_list
298 Template:EmptyTRWithHTMLAttrTest
301 <tr align="center"></tr>
302 <tr><td>foo</td></tr>
303 <tr align="center"></tr>
304 <tr><td>bar</td></tr>
327 This is a simple paragraph.
329 <p>This is a simple paragraph.
334 Paragraphs with extra newline spacing
365 Paragraphs with newline spacing with comment lines in between
373 <!--foo--><!--More than 1 comment, still stripped-->
377 <!--foo--> <!----> <!-- bar -->
438 Paragraphs with newline spacing with non-empty white-space lines in between
465 Paragraphs with newline spacing with non-empty mixed comment and white-space lines in between
473 <!--foo--><!--More than 1 comment doesn't disable stripping of this line!-->
512 Extra newlines: More paragraphs with indented comment
527 Extra newlines followed by heading
541 <h1><span class="mw-headline" id="b">b</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
542 <p><a href="/index.php?title=A&action=edit&redlink=1" class="new" title="A (page does not exist)">a</a>
545 <h1><span class="mw-headline" id="b_2">b</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
550 Extra newlines between heading and content are swallowed (Parsoid does not)
558 <h1><span class="mw-headline" id="b">b</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
559 <p><a href="/index.php?title=A&action=edit&redlink=1" class="new" title="A (page does not exist)">a</a>
566 <p><a rel="mw:WikiLink" href="./A" title="A">a</a></p>
570 Extra new lines before and after lists are preserved
597 # Parsoid regression test
599 Multiple newlines after tables are converted to p-br-p tags
601 parsoid=wt2html,wt2wt
615 </td></tr></tbody></table>
619 <h1><span class="mw-headline" id="b">b</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: b">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
634 Heading with line break in nowiki
638 wgFragmentMode=[ 'html5', 'legacy' ]
643 <h2><span id="A_B.0AC"></span><span class="mw-headline" id="A_B
645 C</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: A B C">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
649 C"><span id="A_B.0AC" typeof="mw:FallbackId"></span>A <span typeof="mw:Nowiki">B
656 http://fr.wikipedia.org/wiki/🍺
657 <!-- EasterEgg we love beer, better be able be able to link to it -->
659 <p><a rel="nofollow" class="external free" href="http://fr.wikipedia.org/wiki/🍺">http://fr.wikipedia.org/wiki/🍺</a>
678 *plain''italic''plain
679 *plain''italic''plain''italic''plain
680 *plain'''bold'''plain
681 *plain'''bold'''plain'''bold'''plain
682 *plain''italic''plain'''bold'''plain
683 *plain'''bold'''plain''italic''plain
684 *plain''italic'''bold-italic'''italic''plain
685 *plain'''bold''bold-italic''bold'''plain
686 *plain'''''bold-italic'''italic''plain
687 *plain'''''bold-italic''bold'''plain
688 *plain''italic'''bold-italic'''''plain
689 *plain'''bold''bold-italic'''''plain
690 *plain l'''italic''plain
691 *plain l''''bold''' plain
694 <li>plain<i>italic</i>plain</li>
695 <li>plain<i>italic</i>plain<i>italic</i>plain</li>
696 <li>plain<b>bold</b>plain</li>
697 <li>plain<b>bold</b>plain<b>bold</b>plain</li>
698 <li>plain<i>italic</i>plain<b>bold</b>plain</li>
699 <li>plain<b>bold</b>plain<i>italic</i>plain</li>
700 <li>plain<i>italic<b>bold-italic</b>italic</i>plain</li>
701 <li>plain<b>bold<i>bold-italic</i>bold</b>plain</li>
702 <li>plain<i><b>bold-italic</b>italic</i>plain</li>
703 <li>plain<b><i>bold-italic</i>bold</b>plain</li>
704 <li>plain<i>italic<b>bold-italic</b></i>plain</li>
705 <li>plain<b>bold<i>bold-italic</i></b>plain</li>
706 <li>plain l'<i>italic</i>plain</li>
707 <li>plain l'<b>bold</b> plain</li></ul>
711 # this example taken from the [[simple:Moon]] article (T49326)
713 Italics and possessives (1)
715 obtained by ''[[Lunar Prospector]]'''s gamma-ray spectrometer
717 <p>obtained by <i><a href="/index.php?title=Lunar_Prospector&action=edit&redlink=1" class="new" title="Lunar Prospector (page does not exist)">Lunar Prospector</a>'</i>s gamma-ray spectrometer
721 # this example taken from [[en:Flaming Pie]] (T51926)
723 Italics and possessives (2)
725 '''''Flaming Pie''''' is ... released in 1997. In ''Flaming Pie'''s liner notes
727 <p><i><b>Flaming Pie</b></i> is ... released in 1997. In <i>Flaming Pie'</i>s liner notes
731 # this example taken from [[en:Dictionary]] (T51926)
733 Italics and possessives (3)
735 The first monolingual dictionary written in a Romance language was ''Sebastián Covarrubias''' ''Tesoro de la lengua castellana o española'', published in 1611 in Madrid. In 1612 the first edition of the ''Vocabolario dell'[[Accademia della Crusca]]'', for Italian, was published. In 1690 in Rotterdam was published, posthumously, the ''Dictionnaire Universel''.
737 <p>The first monolingual dictionary written in a Romance language was <i>Sebastián Covarrubias'</i> <i>Tesoro de la lengua castellana o española</i>, published in 1611 in Madrid. In 1612 the first edition of the <i>Vocabolario dell'<a href="/index.php?title=Accademia_della_Crusca&action=edit&redlink=1" class="new" title="Accademia della Crusca (page does not exist)">Accademia della Crusca</a></i>, for Italian, was published. In 1690 in Rotterdam was published, posthumously, the <i>Dictionnaire Universel</i>.
743 ### 2-quote opening sequence tests
746 Italics and bold: 2-quote opening sequence: (2,2)
755 Italics and bold: 2-quote opening sequence: (2,3)
764 Italics and bold: 2-quote opening sequence: (2,4)
774 # same html as previous, but wikitext adjusted to match parsoid html2wt
776 Italics and bold: 2-quote opening sequence: (2,4) w/ nowiki
778 ''foo<nowiki>''</nowiki>''
784 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
786 Italics and bold: 2-quote opening sequence: (2,5)
799 # same html as previous, but wikitext adjusted to match parsoid html2wt
801 Italics and bold: 2-quote opening sequence: (2,5+3) w/ nowiki
803 ''foo'''''<nowiki/>'''
814 ### 3-quote opening sequence tests
818 Italics and bold: 3-quote opening sequence: (3,2)
827 Italics and bold: 3-quote opening sequence: (3,3)
836 Italics and bold: 3-quote opening sequence: (3,4)
844 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
846 Italics and bold: 3-quote opening sequence: (3,5)
859 # same html as previous, but wikitext adjusted to match parsoid html2wt
861 Italics and bold: 3-quote opening sequence: (3,5+2) w/ nowiki
863 '''foo'''''<nowiki/>''
874 ### 4-quote opening sequence tests
878 Italics and bold: 4-quote opening sequence: (4,2)
888 # same html as previous, but wikitext adjusted to match parsoid html2wt
890 Italics and bold: 4-quote opening sequence: (4,2) w/ nowiki
892 <nowiki>''</nowiki>''foo''
899 Italics and bold: 4-quote opening sequence: (4,3)
908 Italics and bold: 4-quote opening sequence: (4,4)
918 # same html as previous, but wikitext adjusted to match parsoid html2wt
920 Italics and bold: 4-quote opening sequence: (4,4) w/ nowiki
928 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
930 Italics and bold: 4-quote opening sequence: (4,5)
939 <p>'<b>foo</b><i></i>
943 # same html as previous, but wikitext adjusted to match parsoid html2wt
945 Italics and bold: 4-quote opening sequence: (4,5+2) w/ nowiki
947 '<nowiki/>'''foo'''''<nowiki/>''
952 <p>'<b>foo</b><i></i>
958 ### 5-quote opening sequence tests
962 Italics and bold: 5-quote opening sequence: (5,2)
972 # same html as previous, but wikitext adjusted to match parsoid html2wt
974 Italics and bold: 5-quote opening sequence: (5,2+3)
983 Italics and bold: 5-quote opening sequence: (5,3)
993 # same html as previous, but wikitext adjusted to match parsoid html2wt
995 Italics and bold: 5-quote opening sequence: (5,3+2)
1004 Italics and bold: 5-quote opening sequence: (5,4)
1010 <p><i><b>foo'</b></i>
1015 Italics and bold: 5-quote opening sequence: (5,5)
1019 <p><i><b>foo</b></i>
1024 Italics and bold: 5-quote opening sequence: (5,6)
1028 <p><i><b>foo'</b></i>
1033 ### multiple quote sequences in a line
1037 Italics and bold: multiple quote sequences: (2,4,2)
1043 <p><i>foo'<b>bar</b></i>
1047 # same html as previous, but wikitext adjusted to match parsoid html2wt
1049 Italics and bold: multiple quote sequences: (2,4,2+3) w/ nowiki
1051 ''foo'<nowiki/>'''bar'''''
1053 <p><i>foo'<b>bar</b></i>
1058 Italics and bold: multiple quote sequences: (2,4,3)
1064 <p><i>foo'<b>bar</b></i>
1068 # same html as previous, but wikitext adjusted to match parsoid html2wt
1070 Italics and bold: multiple quote sequences: (2,4,3+2) w/ nowiki
1072 ''foo'<nowiki/>'''bar'''''
1074 <p><i>foo'<b>bar</b></i>
1079 Italics and bold: multiple quote sequences: (2,4,4)
1085 <p><i>foo'<b>bar'</b></i>
1089 # same html as previous, but wikitext adjusted to match parsoid html2wt
1091 Italics and bold: multiple quote sequences: (2,4,4+2) w/ nowiki
1093 ''foo'<nowiki/>'''bar'<nowiki/>'''''
1095 <p><i>foo'<b>bar'</b></i>
1099 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
1101 Italics and bold: multiple quote sequences: (3,4,2)
1110 <p><b>foo'</b>bar<i></i>
1114 # same html as previous, but wikitext adjusted to match parsoid html2wt
1116 Italics and bold: multiple quote sequences: (3,4,2+2) w/ nowiki
1118 '''foo''''bar''<nowiki/>''
1123 <p><b>foo'</b>bar<i></i>
1127 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
1129 Italics and bold: multiple quote sequences: (3,4,3)
1138 <p><b>foo'</b>bar<b></b>
1142 # same html as previous, but wikitext adjusted to match parsoid html2wt
1144 Italics and bold: multiple quote sequences: (3,4,3+3) w/ nowiki
1146 '''foo''''bar'''<nowiki/>'''
1151 <p><b>foo'</b>bar<b></b>
1156 ### other quote tests
1159 Italics and bold: other quote tests: (2,3,5)
1161 ''this is about '''foo's family'''''
1163 <p><i>this is about <b>foo's family</b></i>
1169 Italics and bold: other quote tests: (2,(3,3),2)
1171 ''this is about '''foo's''' family''
1173 <p><i>this is about <b>foo's</b> family</i>
1179 Italics and bold: other quote tests: (3,2,3,2)
1183 '''this is about ''foo'''s family''
1185 <p><b>this is about <i>foo</i></b><i>s family</i>
1190 # same html as previous, but wikitext adjusted to match parsoid html2wt
1192 Italics and bold: other quote tests: (3,2,3+2+2,2)
1194 '''this is about ''foo'''''<nowiki/>''s family''
1196 <p><b>this is about <i>foo</i></b><i>s family</i>
1202 Italics and bold: other quote tests: (3,2,3,3)
1204 '''this is about ''foo'''s family'''
1206 <p>'<i>this is about </i>foo<b>s family</b>
1212 Italics and bold: other quote tests: (3,(2,2),3)
1214 '''this is about ''foo's'' family'''
1216 <p><b>this is about <i>foo's</i> family</b>
1222 Italicized possessive
1224 The ''[[Main Page]]'''s talk page.
1226 <p>The <i><a href="/wiki/Main_Page" title="Main Page">Main Page</a>'</i>s talk page.
1229 <p>The <i><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a>'</i>s talk page.</p>
1233 Quote balancing context should be restricted to td/th cells on the same wikitext line
1235 parsoid=wt2html,wt2wt
1249 </td></tr></tbody></table>
1257 Non-html5 tags should be accepted
1259 <center>''foo''</center>
1261 <font>''foo''</font>
1262 <strike>''foo''</strike>
1265 <center><i>foo</i></center>
1266 <p><big><i>foo</i></big>
1267 <font><i>foo</i></font>
1268 <strike><i>foo</i></strike>
1274 <wbr> is valid wikitext (T54468)
1282 # <strike> is HTML4, <s> is HTML4/5.
1284 <s> or <strike> for strikethrough
1286 <strike>strike</strike>
1290 <p><strike>strike</strike>
1298 Text-level semantic html elements in wikitext
1301 <strong>text</strong>
1317 <ruby><rb>明日</rb><rp>(</rp><rt>Ashita</rt><rp> </rp><rtc>あした</rtc><rp>)</rp></ruby>
1324 <strong>text</strong>
1340 <ruby><rb>明日</rb><rp>(</rp><rt>Ashita</rt><rp> </rp><rtc>あした</rtc><rp>)</rp></ruby>
1348 # test cases taken from
1349 # https://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element
1351 Ruby markup (W3C-style)
1353 ;Mono-ruby for individual base characters
1354 :<ruby>日<rt>に</rt>本<rt>ほん</rt>語<rt>ご</rt></ruby>
1356 :<ruby>今日<rt>きょう</rt></ruby>
1358 :<ruby>法<rb>華</rb><rb>経</rb><rt>ほ</rt><rt>け</rt><rt>きょう</rt></ruby>
1360 :<ruby>東<rb>京</rb><rp>(</rp><rt>とう</rt><rt>きょう</rt><rp>)</rp></ruby>
1362 :<ruby><rb>旧</rb><rb>金</rb><rb>山</rb><rt>jiù</rt><rt>jīn</rt><rt>shān</rt><rtc>San Francisco</rtc></ruby>
1365 <rb>♥</rb><rtc><rt>Heart</rt></rtc><rtc lang="fr"><rt>Cœur</rt></rtc>
1366 <rb>☘</rb><rtc><rt>Shamrock</rt></rtc><rtc lang="fr"><rt>Trèfle</rt></rtc>
1367 <rb>✶</rb><rtc><rt>Star</rt></rtc><rtc lang="fr"><rt>Étoile</rt></rtc>
1370 <dl><dt>Mono-ruby for individual base characters</dt>
1371 <dd><ruby>日<rt>に</rt>本<rt>ほん</rt>語<rt>ご</rt></ruby></dd>
1373 <dd><ruby>今日<rt>きょう</rt></ruby></dd>
1374 <dt>Jukugo ruby</dt>
1375 <dd><ruby>法<rb>華</rb><rb>経</rb><rt>ほ</rt><rt>け</rt><rt>きょう</rt></ruby></dd>
1376 <dt>Inline ruby</dt>
1377 <dd><ruby>東<rb>京</rb><rp>(</rp><rt>とう</rt><rt>きょう</rt><rp>)</rp></ruby></dd>
1378 <dt>Double-sided ruby</dt>
1379 <dd><ruby><rb>旧</rb><rb>金</rb><rb>山</rb><rt>jiù</rt><rt>jīn</rt><rt>shān</rt><rtc>San Francisco</rtc></ruby></dd></dl>
1381 <rb>♥</rb><rtc><rt>Heart</rt></rtc><rtc lang="fr"><rt>Cœur</rt></rtc>
1382 <rb>☘</rb><rtc><rt>Shamrock</rt></rtc><rtc lang="fr"><rt>Trèfle</rt></rtc>
1383 <rb>✶</rb><rtc><rt>Star</rt></rtc><rtc lang="fr"><rt>Étoile</rt></rtc>
1388 # The next two test different paths in the sanitizer.
1390 Non-word characters don't terminate tag names (T19663, T42670, T54022)
1392 <blockquote|>a</blockquote>
1394 <b→> doesn't terminate </b→>
1396 <bä> doesn't terminate </bä>
1398 <boo> doesn't terminate </boo>
1400 <s.foo> doesn't terminate </s.foo>
1404 <p><blockquote|>a</blockquote>
1405 </p><p><b→> doesn't terminate </b→>
1406 </p><p><bä> doesn't terminate </bä>
1407 </p><p><boo> doesn't terminate </boo>
1408 </p><p><s.foo> doesn't terminate </s.foo>
1409 </p><p><sub-ID#1>
1414 Non-word characters don't terminate tag names
1416 <blockquote|>a</blockquote>
1418 <b→> doesn't terminate </b→>
1420 <bä> doesn't terminate </bä>
1422 <boo> doesn't terminate </boo>
1424 <s.foo> doesn't terminate </s.foo>
1428 <p><blockquote|>a
1429 </p><p><b→> doesn't terminate </b→>
1430 </p><p><bä> doesn't terminate </bä>
1431 </p><p><boo> doesn't terminate </boo>
1432 </p><p><s.foo> doesn't terminate </s.foo>
1433 </p><p><sub-ID#1>
1438 ### See tests/parser/ParserTestParserHook.php for the <tåg> extension)
1439 ### This checks that HTML5 tags (with non-word characters in the tag
1440 ### name) make it safely through the parser -- the Sanitizer will
1441 ### munge them later, as it should.
1444 Non-word characters are valid in extension tags (T19663)
1455 <pre typeof="mw:Extension/tåg" data-mw='{"name":"tåg","attrs":{},"body":{"extsrc":"tåg"}}' data-parsoid='{}' about="#mwt2"></pre>
1459 Isolated close tags should be treated as literal text (T54760)
1467 <p class="mw-empty-elt">
1468 </p><p><s.foo>s
1473 ### Special characters
1477 Bare pipe character (T54363)
1486 Bare pipe character from a template (T54363)
1495 ### <nowiki> test cases
1499 <nowiki> unordered list
1501 <nowiki>* This is not an unordered list item.</nowiki>
1503 <p>* This is not an unordered list item.
1506 <p><span typeof="mw:Nowiki">* This is not an unordered list item.</span></p>
1512 <nowiki>Lorem ipsum dolor
1520 <p>Lorem ipsum dolor
1529 <p><span typeof="mw:Nowiki">Lorem ipsum dolor
1539 Don't parse <nowiki><span class="error"></nowiki> (T149622)
1541 <nowiki><span class="error"></nowiki>
1543 <p><span class="error">
1546 <p><span typeof="mw:Nowiki"><span class="error"></span></p>
1552 :There is not nowiki.
1553 :There is <nowiki>nowiki</nowiki>.
1555 #There is not nowiki.
1556 #There is <nowiki>nowiki</nowiki>.
1558 *There is not nowiki.
1559 *There is <nowiki>nowiki</nowiki>.
1561 <dl><dd>There is not nowiki.</dd>
1562 <dd>There is nowiki.</dd></dl>
1563 <ol><li>There is not nowiki.</li>
1564 <li>There is nowiki.</li></ol>
1565 <ul><li>There is not nowiki.</li>
1566 <li>There is nowiki.</li></ul>
1569 <dl><dd data-parsoid='{}'>There is not nowiki.</dd>
1570 <dd data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</dd></dl>
1572 <ol><li data-parsoid='{}'>There is not nowiki.</li>
1573 <li data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</li></ol>
1575 <ul><li data-parsoid='{}'>There is not nowiki.</li>
1576 <li data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</li></ul>
1580 Entities inside <nowiki>
1582 <nowiki><</nowiki>
1587 <p><span typeof="mw:Nowiki"><span typeof="mw:Entity" data-parsoid='{"src":"&lt;","srcContent":"<"}'><</span></span></p>
1591 Entities inside template parameters
1598 <p><span typeof="mw:Transclusion mw:Entity" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&ndash;"}},"i":0}}]}'>–</span></p>
1602 Properly escape nowiki when combined with other wiki markup
1606 <p>* </nowiki> tag</p>
1608 <nowiki>*</nowiki> <nowiki></nowiki></nowiki> tag
1612 T93824: Put escaped HTML tags inside nowiki
1616 <p><h2>foo</h2></p>
1618 <nowiki><h2>foo</h2></nowiki>
1622 T71950: 1. Put nowiki as close to cause as possible, even with non-quote escapable chars
1626 <p>This text: L'<a rel="mw:WikiLink" href="./Foo">Foo</a>
1627 This text: L''<a rel="mw:WikiLink" href="./Foo">Foo</a>
1628 This text: L'''<a rel="mw:WikiLink" href="./Foo">Foo</a>''</p>
1630 This text: L'[[Foo]]
1631 This text: L<nowiki>''</nowiki>[[Foo]]
1632 This text: L<nowiki>'''</nowiki>[[Foo]]<nowiki>''</nowiki>
1635 # This test fails because wikitext whitespace is not normalized before comparing.
1637 T71950: 2. Put nowiki as close to cause as possible, after ' :'
1641 <p>This text : L''<a rel="mw:WikiLink" href="./Foo">Foo</a>
1644 This text : L<nowiki>''</nowiki>[[Foo]]
1647 # This test and the next one are html2wt only as they test that incorrect wikitext
1648 # passed in template arguments gets escaped or wrapped in nowikis where required.
1650 T71482: Use {{!}} instead of nowiki for single pipe in template argument
1654 <p><span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo|bar"}},"i":0}}]}" about="#mwt1"></span>
1655 <span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo|bar |[["}},"i":0}}]}" about="#mwt2"></p>
1657 {{echo|foo{{!}}bar}}
1658 {{echo|<nowiki>foo|bar |[[</nowiki>}}
1662 T53961: Output correct nowikis in template arguments
1666 <p><span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a [ b"}},"i":0}}]}" about="#mwt1"></span>
1667 <span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a }} b"}},"i":0}}]}" about="#mwt2"></span>
1668 <span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a [[ b"}},"i":0}}]}" about="#mwt3"></span>
1669 <span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a | {{ ]]"}},"i":0}}]}" about="#mwt4"></span>
1670 <span typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a }"}},"i":0}}]}" about="#mwt5"></span></p>
1673 {{echo|<nowiki>a }} b</nowiki>}}
1674 {{echo|<nowiki>a [[ b</nowiki>}}
1675 {{echo|<nowiki>a | {{ ]]</nowiki>}}
1676 {{echo|a <nowiki>}</nowiki>}}
1680 Cases where "!!" needs nowiki protection
1685 <tr><th>this needs protection !! here</th></tr>
1689 <tr><th>this does not need
1690 protection !! here</th></tr>
1694 !<nowiki>this needs protection !! here</nowiki>
1707 Comments and Indent-Pre
1709 <!-- comment 1 --> asdf
1711 <!-- comment 1 --> asdf
1714 <!-- comment 1 --> asdf
1715 <!-- comment 2 -->xyz
1717 <!-- comment 1 --> asdf
1718 <!-- comment 2 --> xyz
1774 asdf<!-- comment 1 -->jkl
1784 <!-- foo --> b <!-- bar -->
1798 <!-- returns a single newline, not nothing, since the newline after > is not stripped -->
1804 Comment semantics and delimiters
1806 <!-- --><!----><!-----><!------>
1810 <!-- --><!----><!-----><!------>
1814 Comment semantics and delimiters, redux
1816 <!-- In SGML every "foo" here would actually show up in the text -- foo -- bar
1817 -- foo -- funky huh? ... -->
1821 <!-- In SGML every "foo" here would actually show up in the text -- foo -- bar
1822 -- foo -- funky huh? ... -->
1826 Comment semantics and delimiters: directors cut
1828 <!-- ... However we like to keep things simple and somewhat XML-ish so we eat
1829 everything starting with < followed by !-- until the first -- and > we see,
1830 that wouldn't be valid XML however, since in XML -- has to terminate a comment
1836 <!-- ... However we like to keep things simple and somewhat XML-ish so we eat
1837 everything starting with < followed by !-- until the first -- and > we see,
1838 that wouldn't be valid XML however, since in XML -- has to terminate a comment
1843 Comment semantics: nesting
1845 <!--<!-- no, we're not going to do anything fancy here -->-->
1850 <!--<!-- no, we're not going to do anything fancy here --><p>--></p>
1853 # Parsoid closes the unclosed comment, even if it means a slight
1856 Comment semantics: unclosed comment at end
1858 parsoid=wt2html,html2html
1860 <!--This comment will run out to the end of the document
1864 <!--This comment will run out to the end of the document-->
1868 Comment semantics: normalize comments to play nice with XML and browsers
1870 <!-- Browsers --!> think this is closed -->
1871 <!--> This would normally be text -->
1872 <!---> As would this -->
1873 <!-- XML doesn't like trailing dashes -------->
1874 <!-- Nor doubled hyphens -- anywhere in the data -->
1875 But this is not a comment.
1877 <p>But this is not a comment.
1880 <!-- Browsers --!> think this is closed -->
1881 <!--> This would normally be text -->
1882 <!---> As would this -->
1883 <!-- XML doesn't like trailing dashes -------->
1884 <!-- Nor doubled hyphens -- anywhere in the data -->
1885 <p>But this is not a comment.</p>
1889 Comment semantics: round-trip even text which contains encoded -->
1891 <!-- hello & goodbye - > --> --&gt; --&xx -->
1893 <!-- hello & goodbye - > --> --&gt; --&xx -->
1897 Comment in template title
1906 Comment on its own line post-expand
1918 Comment on its own line post-expand with non-significant whitespace
1930 post-expand include size being exceeded
1934 {{echo3|1234567890}}
1936 <p><a href="/wiki/Template:Echo3" title="Template:Echo3">Template:Echo3</a><!-- WARNING: template omitted, post-expand include size too large -->
1941 max template depth being reached
1945 {{echo with depth|too deep!}}
1947 <p><span class="error">Template recursion depth limit exceeded (1)</span>
1952 multiple templates that are redirects
1963 Multiple comments should still parse as SOL-transparent
1965 parsoid=wt2html,wt2wt
1968 <!--c2--><!--c3--><!--c4-->*b
1977 <!--c2--><!--c3--><!--c4-->
1983 ## Make sure ">" gets escaped in comments to avoid XSS
1985 IE conditional comments
1988 <script>alert('hi');</script>
1991 <!--[if lt IE 9]>
1992 <script>alert('hi');</script>
1997 ### paragraph wrapping tests
2013 Block tag on one line (<div>)
2023 <p>a </p><div>foo</div>
2029 No p-wrappable content
2031 parsoid=wt2html,html2html
2033 <span><div>x</div></span>
2034 <span><s><div>x</div></s></span>
2035 <small><em></em></small><span><s><div>x</div></s></span>
2037 <span><div>x</div></span>
2038 <span><s><div>x</div></s></span>
2039 <p><small><em></em></small></p><span><s><div>x</div></s></span>
2042 # T177612: Parsoid-only test
2044 Transclusion meta tags shouldn't trip Parsoid's useless p-wrapper stripping code
2046 {{echo|<span><div>x</div></span>}}
2049 <span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<span><div>x</div></span>"}},"i":0}}]}'><div>x</div></span>
2054 Block tag on one line (<blockquote>)
2056 a <blockquote>foo</blockquote>
2060 a <blockquote>foo</blockquote>
2064 <p>a </p><blockquote><p>foo</p></blockquote>
2070 Block tag on both lines (<div>)
2080 <p>a </p><div>foo</div><p>
2081 b </p><div>foo</div>
2085 Block tag on both lines (<blockquote>)
2087 a <blockquote>foo</blockquote>
2089 b <blockquote>foo</blockquote>
2091 a <blockquote>foo</blockquote>
2092 b <blockquote>foo</blockquote>
2095 <p>a </p><blockquote><p>foo</p></blockquote><p>
2096 b </p><blockquote><p>foo</p></blockquote>
2100 Multiple lines without block tags
2121 x </p><div>foo</div><p> z
2126 Empty lines between lines with block tags
2161 </p><div>b</div><p>d
2166 <div data-parsoid='{"stx":"html"}'></div>
2169 <div data-parsoid='{"stx":"html"}'></div><p>a</p>
2172 <div data-parsoid='{"stx":"html"}'>a</div><p>b</p>
2174 <div data-parsoid='{"stx":"html"}'>b</div><p>d</p>
2177 <div data-parsoid='{"stx":"html"}'>e</div>
2181 Unclosed HTML p-tags should be handled properly
2188 <div><p>foo</p></div>
2193 <div data-parsoid='{"stx":"html"}'><p data-parsoid='{"stx":"html", "autoInsertedEnd":true}'>foo</p></div>
2198 ## SSS FIXME: I can come up with other scenarios where this doesn't work because
2199 ## of eager output of buffered tokens in the p-wrapper. But, I'm going to ignore
2202 1. P-wrapping should leave sol-transparent tags outside p-tags where possible
2206 a [[Category:A1]] [[Category:A2]]
2211 <link rel="mw:PageProp/Category" href="./Category:A1"/> <link rel="mw:PageProp/Category" href="./Category:A2"/> <link rel="mw:PageProp/Category" href="./Category:A3"/> <link rel="mw:PageProp/Category" href="./Category:A4"/>
2215 2. P-wrapping should leave sol-transparent tags outside p-tags where possible
2221 <link rel="mw:PageProp/Category" href="./Category:A1"/><p>a</p>
2225 No paragraph necessary for SOL transparent template
2227 <span><div>foo</div></span>
2230 <span><div>foo</div></span>
2231 {{echo|[[Category:Foo]]}}
2233 <span><div>foo</div></span>
2234 <span><div>foo</div></span>
2237 <span data-parsoid='{"stx":"html"}'><div data-parsoid='{"stx":"html"}'>foo</div></span>
2238 <link rel="mw:PageProp/Category" href="./Category:Foo"/>
2240 <span data-parsoid='{"stx":"html"}'><div data-parsoid='{"stx":"html"}'>foo</div></span>
2241 <link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]]"}},"i":0}}]}'/>
2245 Avoid expanding multiline sol transparent template ranges unnecessarily
2263 <br about="#mwt1" typeof="mw:Transclusion" data-parsoid='{}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<br/>\n"}},"i":0}}]}'/><span about="#mwt1">
2266 <link rel="mw:PageProp/Category" href="./Category:Ho" />
2270 Paragraph wrapping following unclosed table
2272 parsoid=wt2html,html2html
2293 </td></tr></tbody></table>
2299 <table data-parsoid='{"autoInsertedEnd":true}'>
2300 <tbody><tr class="mw-empty-elt" data-parsoid='{"startTagSrc":"|-"}'></tr>
2302 </tbody></table><table>
2303 <tbody><tr data-parsoid='{"autoInsertedStart":true}'><td>x</td></tr>
2314 Paragraph wrapping suppressed in html p
2316 parsoid=wt2html,html2html
2336 <p data-parsoid='{"stx":"html"}'>
2347 Dangling table row doesn't prevent p-wrapping
2349 parsoid=wt2html,html2html
2357 <tbody><tr><td>hi</td></tr>
2358 <tr class="mw-empty-elt"></tr>
2359 </tbody></table><p> ho</p>
2363 ### Preformatted text
2373 And a [[Main Page|link]]
2379 And a <a href="/wiki/Main_Page" title="Main Page">link</a>
2384 Tabs don't trigger preformatted text
2388 This is preformatted text.
2394 <pre>This is preformatted text.
2399 preformatted text.</p>
2400 <pre>This is preformatted text.
2405 Space before tab needs nowiki pre protection
2411 <nowiki> </nowiki> a
2415 Ident preformatting with inline content
2426 <pre> with <nowiki> inside (compatibility with 1.6 and earlier)
2443 Regression with preformatted in <center>
2457 T54763: Preformatted in <blockquote>
2463 indented cell (no pre-wrapping!)
2473 <p> indented cell (no pre-wrapping!)
2481 T53086: Double newlines in blockquotes should be turned into paragraphs
2498 T17491: <ins>/<del> in blockquote
2501 Foo <del>bar</del> <ins>baz</ins> quux
2505 <p>Foo <del>bar</del> <ins>baz</ins> quux
2511 <p>Foo <del>bar</del> <ins>baz</ins> quux
2517 T17491: <ins>/<del> in blockquote (2)
2519 <blockquote>Foo <del>bar</del> <ins>baz</ins> quux
2522 <blockquote>Foo <del>bar</del> <ins>baz</ins> quux
2526 <blockquote><p>Foo <del>bar</del> <ins>baz</ins> quux
2531 <pre> with attributes (T5202)
2533 <pre style="background: blue; color:white">Bluescreen of WikiDeath</pre>
2535 <pre style="background: blue; color:white">Bluescreen of WikiDeath</pre>
2540 <pre> with width attribute (T5202)
2542 <pre width="8">Narrow screen goodies</pre>
2544 <pre width="8">Narrow screen goodies</pre>
2549 <pre> with forbidden attribute (T5202)
2551 <pre width="8" onmouseover="alert(document.cookie)">Narrow screen goodies</pre>
2553 <pre width="8">Narrow screen goodies</pre>
2558 Entities inside <pre>
2567 <pre> with forbidden attribute values (T5202)
2569 <pre width="8" style="border-width: expression(alert(document.cookie))">Narrow screen goodies</pre>
2571 <pre width="8" style="/* insecure input */">Narrow screen goodies</pre>
2576 <nowiki> inside <pre> (T15238)
2584 <pre><nowiki><nowiki></nowiki>Foo<nowiki></nowiki></nowiki></pre>
2592 <pre><nowiki>Foo</nowiki></pre>
2597 <nowiki> inside of #tag:pre
2599 {{#tag:pre|Foo <nowiki>→bar</nowiki>}}
2601 <pre>Foo →bar</pre>
2604 <pre about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:pre","function":"tag"},"params":{"1":{"wt":"Foo <nowiki>&rarr;bar</nowiki>"}},"i":0}}]}'>Foo <span typeof="mw:Entity">→</span>bar</pre>
2607 ## Don't expect this to rt, Parsoid drops the unmatched closing pre tags that
2608 ## aren't enclosed in nowikis.
2610 <nowiki> and <pre> preference (first one wins)
2641 <pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"\n<nowiki>\n"}}'><nowiki>
2646 <p><span typeof="mw:Nowiki">
2654 </pre> inside nowiki
2656 <nowiki></pre></nowiki>
2663 Empty pre; pre inside other HTML tags (T56946)
2680 <div data-parsoid='{"stx":"html"}'><pre typeof="mw:Extension/pre" about="#mwt2" data-parsoid='{"stx":"html"}' data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"\nfoo\n"}}'>foo
2682 <pre typeof="mw:Extension/pre" about="#mwt4" data-parsoid='{"stx":"html"}' data-mw='{"name":"pre","attrs":{},"body":{"extsrc":""}}'></pre>
2686 HTML pre followed by indent-pre
2699 <p><pre>foo</pre></p>
2701 <p class="mw-empty-elt"></p><pre>foo</pre><p class="mw-empty-elt"></p>
2703 <p class='mw-empty-elt' data-parsoid='{"stx":"html","autoInsertedEnd":true}'></p><pre typeof="mw:Extension/pre" about="#mwt2" data-parsoid='{"stx":"html"}' data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"foo"}}'>foo</pre><p class='mw-empty-elt' data-parsoid='{"autoInsertedStart":true,"stx":"html"}'></p>
2707 Templates: Indent-Pre: 1a. Templates that break a line should suppress <pre>
2715 Templates: Indent-Pre: 1b. Templates that break a line should suppress <pre>
2725 Templates: Indent-Pre: 1c: Wrapping should be based on expanded content
2737 Templates: Indent-Pre: 1d: Wrapping should be based on expanded content
2758 Templates: Indent-Pre: 1e. Wrapping should be based on expanded content
2762 {{echo| foo}}{{echo| bar}}
2767 {{echo|<!--cmt--> foo}}
2769 <!--cmt-->{{echo| foo}}
2771 {{echo|{{echo| }}bar}}
2789 Templates: Indent-Pre: 1f: Wrapping should be based on expanded content
2825 ## Hmm, should Parsoid rt this?
2827 Pres with newline attributes
2829 parsoid=wt2html,html2html
2834 <pre class="one two">hi</pre>
2837 <pre class="one two" typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{"class":"one two"},"body":{"extsrc":"hi"}}'>hi</pre>
2841 Things that look like <pre> tags aren't treated as such
2843 Barack Obama <President> of the United States
2844 <President></President>
2846 <p>Barack Obama <President> of the United States
2847 <President></President>
2851 ## Remex doesn't account for fostered content.
2852 ## The difference between Parsoid and the PHP parser can be attributed to core
2853 ## commit 674e8388cba and 710618f89af in Parsoid's repo. Parsoid doesn't
2854 ## tokenize unmatched extension tags that shadow html tags as strings to ease
2855 ## an escaping mechanism. See the comment in `maybeExtensionTag`.
2857 Handle broken pre-like tags (T66025)
2861 {{echo|<pre <pre>x</pre>}}
2863 <table><pre </table>
2866 <table><pre </table>
2870 <pre <table></table>
2872 <pre typeof="mw:Extension/pre mw:Transclusion" about="#mwt2" data-parsoid='{"stx":"html","a":{"<pre":null},"sa":{"<pre":""},"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<pre <pre>x</pre>"}},"i":0}}]}'>x</pre>
2874 <pre data-parsoid='{"stx":"html","src":"<pre </table>","tagWidths":[13,0],"a":{"<":null,"table":null},"sa":{"<":"","table":""},"fostered":true,"autoInsertedEnd":true}'></pre><table data-parsoid='{"stx":"html","autoInsertedEnd":true}'></table>
2877 ## Similar to the above, but shows the difference between extension and html tags
2879 Less than in attribute position
2886 <div </p><div>123</div>
2888 <pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{"<pre":""},"body":{"extsrc":"123"}}'>123</pre><p>
2890 <div </p><div>123</div>
2894 Parsoid: handle pre with space after attribute
2898 <pre style="width:50%;" >{{echo|foo}}</pre>
2900 <pre style="width:50%;">{{echo|foo}}</pre>
2903 <pre typeof="mw:Extension/pre" about="#mwt2" style="width:50%;" data-mw='{"name":"pre","attrs":{"style":"width:50%;"},"body":{"extsrc":"{{echo|foo}}"}}'>{{echo|foo}}</pre>
2914 <pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{}}'></pre>
2918 Newline before table-close generates empty table row: T208619
2926 <tbody><tr><td></td></tr></tbody></table>
2928 <table data-parsoid='{}'>
2933 # PHP has one more row in the output than Parsoid does: T208619
2935 Parsoid: Don't paragraph-wrap fosterable content even if table syntax is unbalanced
2955 </tr><tr><td></td></tr></tbody></table>
2972 #--------------------------------------------------------------------
2973 # Transclusion parameter whitespace stripping tests
2974 # Behavior is different for positional and named parameters
2975 #--------------------------------------------------------------------
2977 Templates: Strip leading and trailing whitespace from named-param values
2981 {{echo|1= {{echo|b}} }}
2999 Templates: Don't strip whitespace from positional-param values
3003 {{echo|{{echo|b}} }}
3043 Templates: Don't recognize targets split by newlines
3059 Templates: Recognize targets when newlines and comments don't split the target
3064 <!--X--> ech<!--X-->o<!--X-->
3072 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"ech<!--X-->o<!--X--> \n <!--X--> <!--X-->\n\n ","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
3076 Templates: Handle empty comment-and-ws-only lines correctly
3079 <!--should be ignored-->
3080 <!--should be ignored as well-->
3087 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo\n<!--should be ignored-->\n <!--should be ignored as well-->\nbar"}},"i":0}}]}'>foo <!--should be ignored--> <!--should be ignored as well--> bar</p>
3091 Templates: Handle comments in the target
3094 <!-- should be ignored -->
3098 <!-- should be ignored and spaces on next line should not trip us up (T147742) -->
3101 {{echo<!-- should be ignored -->
3104 {{echo<!-- should be ignored -->|foo}}
3106 {{<!-- should be ignored -->echo|foo}}
3115 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo\n<!-- should be ignored -->\n","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
3117 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo\n<!-- should be ignored and spaces on next line should not trip us up (T147742) -->\n ","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
3119 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo<!-- should be ignored -->\n","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
3121 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo<!-- should be ignored -->","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
3123 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
3127 Templates: Handle comments in parameter names (T69657)
3130 <!-- should be ignored -->
3134 <!-- should be ignored -->
3137 {{echo|1<!-- should be ignored -->=foo}}
3139 {{echo|<!-- should be ignored -->1=foo}}
3147 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"1\n<!-- should be ignored -->"}}},"i":0}}]}'>foo</p>
3149 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"<!-- should be ignored -->\n1"}}},"i":0}}]}'>foo</p>
3151 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"1<!-- should be ignored -->"}}},"i":0}}]}'>foo</p>
3153 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"<!-- should be ignored -->1"}}},"i":0}}]}'>foo</p>
3157 Templates: Other wikitext in parameter names (T69657)
3164 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"''1''":{"wt":"foo"}},"i":0}}]}'>{{{1}}}</p>
3168 Templates: With colons
3172 <p>Template with colon
3175 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"With: Colon","href":"./Template:With:_Colon"},"params":{},"i":0}}]}'>Template with colon</p>
3178 #--------------------------------------------------------------------
3179 # Transclusion parameter escaping tests
3180 #--------------------------------------------------------------------
3183 Templates: Parsoid parameter escaping test 1
3185 {{echo|[foo]|{{echo|[bar]}}}}
3190 <p about="#mwt1" typeof="mw:Transclusion"
3191 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[foo]"},"2":{"wt":"{{echo|[bar]}}"}},"i":0}}]}'>[foo]</p>
3195 Parsoid: Pipes in external links in template parameter
3197 {{echo|[{{echo|http://example.com}} link]}}
3199 <p><a rel="nofollow" class="external text" href="http://example.com">link</a>
3202 <p><a rel="mw:ExtLink" class="external text" href="http://example.com" about="#mwt31" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{echo|http://example.com}} link]"}},"i":0}}]}'>link</a></p>
3206 Parsoid: pipe in transclusion parameter
3208 {{echo|http://foo.com/a|b}}
3210 <p><a rel="nofollow" class="external free" href="http://foo.com/a%7Cb">http://foo.com/a%7Cb</a>
3213 <p><a rel="mw:ExtLink" class="external free" href="http://foo.com/a%7Cb" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://foo.com/a&#124;b"}},"i":0}}]}'>http://foo.com/a%7Cb</a></p>
3217 Parsoid: Pipe in external link target and content in template parameter
3219 parsoid=html2wt,wt2wt
3221 {{echo|[http://foo.com/a|b a|b]}}
3223 <p><a rel="nofollow" class="external text" href="http://foo.com/a%7Cb">a|b</a>
3226 <p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
3227 typeof="mw:Transclusion"
3228 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},
3229 "params":{"1":{"wt":"[http://foo.com/a|b a|b]"}},"i":0}}]}'>a|b</a></p>
3233 Parsoid: Pipe in template with nested template in external link target in template parameter (seriously)
3235 {{echo|[{{fullurl:{{FULLPAGENAME}}|action=edit}} bar]}}
3237 <p><a rel="nofollow" class="external text" href="http://example.org/index.php?title=Parser_test&action=edit">bar</a>
3240 <p><a rel="mw:ExtLink" class="external text" href="http://example.org/index.php?title=Parser_test&action=edit" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{fullurl:{{FULLPAGENAME}}|action=edit}} bar]"}},"i":0}}]}'>bar</a></p>
3244 Templates: Don't escape already nowiki-escaped text in template parameters
3246 parsoid=html2wt,wt2wt
3248 {{echo|foo<nowiki>|</nowiki>bar}}
3249 {{echo|<nowiki><div></nowiki>}}
3250 {{echo|<nowiki></nowiki>}}
3257 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo<nowiki>|</nowiki>bar"}},"i":0}}]}'}'>foo</span><span typeof="mw:Nowiki" about="#mwt1">|</span><span about="#mwt1">bar</span>
3258 <span typeof="mw:Transclusion mw:Nowiki" about="#mwt2" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki>&lt;div&gt;</nowiki>"}},"i":0}}]}'><span typeof="mw:Entity"><</span>div<span typeof="mw:Entity">></span></span>
3259 <span typeof="mw:Transclusion mw:Nowiki" about="#mwt3" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki></nowiki>"}},"i":0}}]}'></span>
3265 Templates: '=' char in nested transclusions should not trigger nowiki escapes or conversion to named param
3267 parsoid=html2wt,wt2wt
3269 {{echo|{{echo|1=bar}}}}
3274 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{echo|1=bar}}"}},"i":0}}]}'>bar</p>
3279 Templates parameters with special tokenizing behavior dont get modified because of arg escaping
3286 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a : b"}},"i":0}}]}'>a<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"isDisplayHack":true}'> </span>: b</p>
3291 Templates: Preserve blank parameter names
3298 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"":{"wt":"foo"}},"i":0}}]}'>{{{1}}}</p>
3302 Templates: Preserve blank parameter names in other positions
3304 {{blank_param|bar|=foo}}
3310 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"},{"k":"","named":true}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"blank_param","href":"./Template:Blank_param"},"params":{"1":{"wt":"bar"},"":{"wt":"foo"}},"i":0}}]}'>bar
3315 ### Parsoid-centric tests for testing RT edge cases for pre
3319 1a. Indent-Pre and Comments
3332 1b. Indent-Pre and Comments
3345 1c. Indent-Pre and Comments
3358 1d. Indent-Pre and Comments
3359 (Pre-handler currently cannot distinguish between comment/ws order and normalizes them to [comment,ws] order)
3372 2a. Indent-Pre and tables
3393 2b. Indent-Pre and tables
3409 2c. Indent-Pre and tables (T44252)
3426 2d. Indent-Pre and tables
3443 <tbody><tr><td> b</td></tr>
3448 2e. Indent-Pre and table-line syntax
3461 2f. Indent-pre started by table-line syntax
3480 2g. Indented table markup mixed with indented pre content (proposed in T8200)
3485 Text that should be rendered preformatted
3493 <pre>Text that should be rendered preformatted
3502 2h. Indent pre in tables
3504 parsoid=wt2html,html2html
3547 </td><td data-parsoid='{"startTagSrc":"{{!}}"}'>
3549 </td></tr></tbody></table>
3553 3a. Indent-Pre and block tags (single-line html)
3557 c <blockquote> foo </blockquote>
3562 c <blockquote> foo </blockquote>
3563 <pre><span> foo </span>
3566 <p> a </p><p> foo </p><p>
3567 b </p><div> foo </div><p>
3568 c </p><blockquote><p> foo </p></blockquote>
3569 <pre><span> foo </span>
3572 <p> a </p><p data-parsoid='{"stx":"html"}'> foo </p><p>
3573 b </p><div data-parsoid='{"stx":"html"}'> foo </div><p>
3574 c </p><blockquote data-parsoid='{"stx":"html"}'><p> foo </p></blockquote>
3575 <pre><span data-parsoid='{"stx":"html"}'> foo </span></pre>
3579 3b. Indent-Pre and block tags (multi-line html)
3582 <!-- comment --> b <div> foo </div>
3584 <pre>a <span>foo</span>
3589 <pre>a <span data-parsoid='{"stx":"html"}'>foo</span></pre>
3590 <!-- comment --> <p>b </p><div data-parsoid='{"stx":"html"}'> foo </div>
3592 <pre>a <span>foo</span>
3594 b </p><div> foo </div>
3598 3c. Indent-Pre and block tags (pre-content on separate line)
3662 4. Indent-Pre and extension tags
3664 parsoid=wt2html,html2html
3673 <p> a </p><pre typeof="mw:Extension/tag" about="#mwt2" data-mw='{"name":"tag","attrs":{}}'></pre>
3677 5. Indent-Pre and html pre
3679 <pre class="123">hi</pre>
3681 <pre class="123">hi</pre>
3684 <pre class="123" typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{"class":"123"},"body":{"extsrc":"hi"}}'>hi</pre>
3688 Render paragraphs when indent-pre is suppressed in blocklevels
3705 4. Multiple spaces at start-of-line
3723 ## NOTE: the leading white-space chars on empty line are significant
3725 5a. White-space in indent-pre
3737 ## NOTE: the leading white-space chars on empty line are significant
3739 5b. White-space in indent-pre
3758 5c. White-space in indent-pre
3771 6. Pre-blocks should extend across lines with leading WS even when there is no wrappable content
3794 7a. Indent-pre and category links
3796 parsoid=wt2html,wt2wt
3798 [[Category:foo]] <!-- No pre-wrapping -->
3799 {{echo| [[Category:foo]]}} <!-- No pre-wrapping -->
3802 <link rel="mw:PageProp/Category" href="./Category:Foo"> <!-- No pre-wrapping -->
3803 <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":" [[Category:foo]]"}},"i":0}}]}'> </span><link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1"> <!-- No pre-wrapping -->
3806 ## We used to, but no longer wt2wt this test since the default serializer
3807 ## will normalize all categories to serialize on their own line.
3808 ## This wikitext usage is going to be fairly uncommon in production and
3809 ## selser will take care of preserving formatting in those scenarios.
3811 7b. Indent-pre and category links
3816 [[Category:foo]] {{echo|b}}
3818 <pre><link rel="mw:PageProp/Category" href="./Category:Foo"> a
3819 <link rel="mw:PageProp/Category" href="./Category:Foo"> <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b"}},"i":0}}]}'>b</span></pre>
3823 Indent-Pre: Newlines in comments shouldn't affect sol state
3838 ### HTML-pre (some to spec PHP parser behavior and some Parsoid-RT-centric)
3842 HTML-pre: 1. embedded newlines
3874 <pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"foo"}}'>foo</pre>
3876 <pre typeof="mw:Extension/pre" about="#mwt4" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"\nfoo\n"}}'>foo
3879 <pre typeof="mw:Extension/pre" about="#mwt6" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"\n\nfoo\n"}}'>
3884 <pre typeof="mw:Extension/pre" about="#mwt8" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"\n\n\nfoo\n"}}'>
3892 HTML-pre: big spaces
3928 <pre typeof="mw:Extension/pre" about="#mwt2" data-parsoid='{"stx":"html"}' data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"\n\n\n\n\nhaha\n\n\n\n\nhaha\n\n\n\n\n"}}'>
3947 HTML-pre: 2: indented text
3960 HTML-pre: 3: other wikitext
3979 <pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"\n* foo\n# bar\n= no-h =\n'' no-italic ''\n[[ NoLink ]]\n"}}'>* foo
3988 ### Definition lists
3996 <dd>Definition</dd></dl>
4001 Definition list for indentation only
4005 <dl><dd>Indented text</dd></dl>
4010 Definition list with no space
4015 <dd>Definition</dd></dl>
4020 Definition list with URL link
4022 ;http://example.com/ :definition
4024 <dl><dt><a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a></dt>
4025 <dd>definition</dd></dl>
4030 Definition list with bracketed URL link
4032 ;[http://www.example.com/ Example]:Something about it
4034 <dl><dt><a rel="nofollow" class="external text" href="http://www.example.com/">Example</a></dt>
4035 <dd>Something about it</dd></dl>
4040 Definition list with wikilink containing colon
4042 ;[[Help:FAQ]]:The least-read page on Wikipedia
4044 <dl><dt><a href="/index.php?title=Help:FAQ&action=edit&redlink=1" class="new" title="Help:FAQ (page does not exist)">Help:FAQ</a></dt>
4045 <dd>The least-read page on Wikipedia</dd></dl>
4049 # At Brion's and JeLuF's insistence... :)
4051 Definition list with news link containing colon
4053 ;news:alt.wikipedia.rox :This isn't even a real newsgroup!
4055 <dl><dt><a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a></dt>
4056 <dd>This isn't even a real newsgroup!</dd></dl>
4059 <dl><dt><a rel="mw:ExtLink" class="external free" href="news:alt.wikipedia.rox" data-parsoid='{"stx":"url"}'>news:alt.wikipedia.rox</a></dt><dd data-parsoid='{"stx":"row"}'>This isn't even a real newsgroup!</dd></dl>
4063 Malformed definition list with colon
4065 ;news:alt.wikipedia.rox -- don't crash or enter an infinite loop
4067 <dl><dt><a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop</dt></dl>
4072 Definition lists: colon in external link text
4074 ;[http://www.wikipedia2.org/ Wikipedia :The Next Generation] :OK, I made that up
4076 <dl><dt><a rel="nofollow" class="external text" href="http://www.wikipedia2.org/">Wikipedia :The Next Generation</a></dt>
4077 <dd>OK, I made that up</dd></dl>
4082 Definition lists: colon in HTML attribute
4084 ;<b style="display: inline">bold</b>
4086 <dl><dt><b style="display: inline">bold</b></dt></dl>
4091 Definition lists: self-closed tag
4093 ;one<br/>two :two-line fun
4095 <dl><dt>one<br />two</dt>
4096 <dd>two-line fun</dd></dl>
4101 Definition lists: ignore colons inside tags
4103 ;one <b>two : tag <i>fun:</i>:</b>:def
4105 <dl><dt>one <b>two : tag <i>fun:</i>:</b></dt>
4111 Definition lists: excess closed tags
4113 ;one</b>two :bad tag fun
4116 <dd>bad tag fun</dd></dl>
4120 <dd>bad tag fun</dd>
4125 T13748: Literal closing tags
4129 <dd>test test test test test</dd>
4131 <dd>test test test test test</dd>
4136 <dd>test test test test test</dd>
4138 <dd>test test test test test</dd>
4144 Definition and unordered list using wiki syntax nested in unordered list using html tags.
4153 <dd>description</dd></dl>
4154 <ul><li>unordered</li></ul>
4160 Definition list with empty definition and following paragraph
4173 Nested definition lists using html syntax
4186 Definition Lists: No nesting: Multiple dd's
4199 Definition Lists: Indentation: Regular
4207 <dl><dd>i3</dd></dl></dd></dl></dd></dl>
4212 Definition Lists: Indentation: Missing 1st level
4218 <dl><dd>i3</dd></dl></dd></dl></dd></dl>
4223 Definition Lists: Indentation: Multi-level indent
4227 <dl><dd><dl><dd><dl><dd>i3</dd></dl></dd></dl></dd></dl>
4232 Definition Lists: Hacky use to indent tables
4239 should be left alone
4241 <dl><dd><dl><dd><table>
4246 </td></tr></table></dd></dl></dd></dl>
4248 should be left alone
4253 Definition Lists: Hacky use to indent tables (with content following table)
4258 |} <!--c1--> this text should be part of the dl
4265 </td></tr></tbody></table> this text should be part of the dl</dd></dl>
4272 </td></tr></tbody></table> <!--c1--> this text should be part of the dl</dd></dl>
4276 Definition Lists: Hacky use to indent tables, with comments (T65979)
4284 should be left alone
4287 <dl><dd><dl><dd><table><tr>
4290 </tr></table><!-- bar --></dd></dl></dd></dl>
4292 should be left alone</p>
4296 Definition Lists: Hacky use to indent tables, with comment before table
4304 <dl><dd><dl><dd><!-- foo --><table><tr>
4306 </tr></table></dd></dl></dd></dl>
4309 # The trailing whitespace in this test is to catch a regression in
4310 # Parsoid after T54473.
4312 Definition Lists: Hacky use to indent tables (WS-insensitive)
4321 </td></tr></table></dd></dl>
4325 <tbody><tr><td>a</td></tr>
4326 </tbody></table></dd></dl>
4329 ## The PHP parser treats : items (dd) without a corresponding ; item (dt)
4330 ## as an empty dt item. It also ignores all but the last ";" when followed
4331 ## by ":" later on. So, ";" are not ignored in ";;;t3" but are ignored in
4332 ## ";;;t3 :d1". So, PHP parser behavior is a little inconsistent wrt multiple
4335 ## Ex: ";;t2 ::d2" is transformed into:
4347 ## But, Parsoid treats "; :" as a tight atomic unit and excess ":" as plain text
4348 ## So, the same wikitext above (;;t2 ::d2) is transformed into:
4359 ## All Parsoid only definition list tests have this difference.
4361 ## See also: https://phabricator.wikimedia.org/T8569
4362 ## and https://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
4365 Table / list interaction: indented table with lists in table contents
4387 </td></tr></table></dd></dl>
4392 Table / list interaction: lists nested in tables nested in indented lists
4415 </td></tr></table></dd></dl>
4422 Definition Lists: Nesting: Multi-level (Parsoid only)
4450 Definition Lists: Nesting: Test 2
4457 <dl><dd>d2</dd></dl></dd></dl>
4462 Definition Lists: Nesting: Test 3
4467 <dl><dd><dl><dt>t1</dt>
4469 <dl><dd><dl><dd>d2</dd></dl></dd></dl></dd></dl></dd></dl>
4474 Definition Lists: Nesting: Test 4
4479 <dl><dd><dl><dd><dl><dt>t3</dt>
4480 <dd>d3</dd></dl></dd></dl></dd></dl>
4485 ## The Parsoid team believes the following three test exposes a
4486 ## bug in the PHP parser. (Parsoid team thinks the PHP parser is
4487 ## wrong to close the <dl> after the <dt> containing the <ul>.)
4488 ## It also exposes a "misfeature" in tidy, which doesn't like
4489 ## <dl> tags with a single <dt> child; it converts the <dt> into
4490 ## a <dd> in that case. (Parsoid leaves the <dt> alone!)
4492 Definition Lists: Mixed Lists: Test 1
4498 <dl><dd><dl><dt><ul><li>foo</li>
4499 <li>bar</li></ul></dt></dl>
4500 <dl><dt>baz</dt></dl></dd></dl>
4503 <dl><dd><dl><dt><ul><li>foo</li>
4504 <li>bar</li></ul></dt></dl>
4505 <dl><dt>baz</dt></dl></dd></dl>
4523 Definition Lists: Mixed Lists: Test 2
4528 <ul><li><dl><dd>d1</dd>
4529 <dd>d2</dd></dl></li></ul>
4535 Definition Lists: Mixed Lists: Test 3
4540 <ul><li><dl><dd><dl><dd><dl><dd>d1</dd>
4541 <dd>d2</dd></dl></dd></dl></dd></dl></li></ul>
4547 Definition Lists: Mixed Lists: Test 4
4552 <ul><li><dl><dt>d1</dt>
4555 <dd>d4</dd></dl></li></ul>
4561 Definition Lists: Mixed Lists: Test 5
4567 <dl><dd>d2</dd></dl></dd></dl></li></ul>
4573 Definition Lists: Mixed Lists: Test 6
4578 <ol><li><ul><li><dl><dd>d1
4579 <dl><dd><dl><dd>d3</dd></dl></dd></dl></dd></dl></li></ul></li></ol>
4585 Definition Lists: Mixed Lists: Test 7
4590 <dl><dd><ul><li>d1</li>
4591 <li>d2</li></ul></dd></dl>
4597 Definition Lists: Mixed Lists: Test 8
4602 <dl><dd><ul><li>d1</li></ul>
4603 <dl><dd><ul><li>d2</li></ul></dd></dl></dd></dl>
4609 Definition Lists: Mixed Lists: Test 9
4613 <ul><li><dl><dt>foo</dt>
4614 <dd>bar</dd></dl></li></ul>
4620 Definition Lists: Mixed Lists: Test 10
4624 <ul><li><ol><li><dl><dt>foo</dt>
4625 <dd>bar</dd></dl></li></ol></li></ul>
4629 # The Parsoid team disagrees with the PHP parser's seemingly-random
4630 # rules regarding dd/dt on the next few tests. Parsoid is more
4631 # consistent, and recognizes the shared nesting and keeps the
4632 # still-open tags around until the nesting is complete.
4634 # This is a regression test for T175099
4636 Definition Lists: Mixed Lists: Test 11
4643 <ul><li>b</li></ul></dd></dl>
4647 <dd><ul><li>b</li></ul></dd></dl>
4650 # FIXME: Maybe get rid of this test?
4652 Definition Lists: Mixed Lists: Test 12
4657 <ul><li><ol><li><ul><li><ol><li><dl><dt>foo</dt>
4658 <dd><ul><li><dl><dt><dl><dt>bar</dt></dl></dd></dl></li></ul></dd></dl>
4660 <dd>baz</dd></dl></li></ol></li></ul></li></ol></li></ul>
4663 <ul><li><ol><li><ul><li><ol><li><dl><dt>foo</dt>
4664 <dd><ul><li><dl><dt><dl><dt>bar</dt></dl></dt></dl></li></ul></dd></dl></li></ol></li></ul>
4666 <dd>baz</dd></dl></li></ol></li></ul>
4684 <dd data-parsoid='{"stx":"row"}'>bar</dd>
4689 <dd data-parsoid='{"stx":"row"}'>baz</dd>
4698 Definition Lists: Mixed Lists: Test 13
4703 <ul><li><ol><li><ul><li><ol><li><dl><dt>foo </dt>
4704 <dd><ul><li><dl><dt><dl><dt>bar</dt></dl></dt></dl></li></ul></dd></dl></li></ol></li></ul>
4705 <dl><dt>boo </dt>
4706 <dd>baz</dd></dl></li></ol></li></ul>
4709 # FIXME: Maybe get rid of this test?
4711 # * The test is wrong, there are two colons where there should be :;
4712 # * The PHP parser is wrong to close the <dl> after the <dt> containing the <ul>.
4714 Definition Lists: Weird Ones: Test 1
4716 *#;*::;;foo :bar (who uses this?)
4718 <ul><li><ol><li><dl><dt>foo</dt>
4719 <dd><ul><li><dl><dd><dl><dd><dl><dt><dl><dt>bar (who uses this?)</dt></dl></dt></dl></dd></dl></dd></dl></li></ul></dd></dl></li></ol></li></ul>
4737 <dd data-parsoid='{"stx":"row"}'>bar (who uses this?)</dd>
4749 Definition Lists: colons occurring in tags
4766 <dt><span>a:b</span></dt>
4767 <dt><div>a:b</div></dt>
4768 <dt><div>a</div></dt>
4772 <dt><i>a:b</i></dt></dl>
4773 <dl><dt><dl><dt><dl><dt><i>a:b</i></dt></dl></dt></dl></dt></dl>
4775 <dl><dt>a</dt><dd data-parsoid='{"stx":"row"}'>b</dd>
4777 <dt><i data-parsoid='{"stx":"html"}'>a:b</i></dt>
4778 <dt><span data-parsoid='{"stx":"html"}'>a:b</span></dt>
4779 <dt><div data-parsoid='{"stx":"html"}'>a:b</div></dt>
4780 <dt><div data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a</div></dt>
4782 <dt><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a:b"}},"i":0}}]}'>a:b</span></dt>
4783 <dt><i about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"''a:b''"}},"i":0}}]}'>a:b</i>
4784 <dl><dt><dl><dt><i>a:b</i></dt></dl></dt></dl></dt></dl>
4787 # Parsoid's output differs here again because it shares
4788 # nesting between the two lists unlike the PHP parser.
4789 # Unsure which is more desirable.
4791 Definition Lists: colons and tables 1
4803 </td></tr></table></dd></dl>
4807 </td></tr></table></dd></dl>
4813 </td></tr></table></dd>
4817 </td></tr></table></dd></dl>
4820 # FIXME: Does this need a html/php section?
4822 Definition Lists: template interaction
4824 ::{{definition_list}}
4827 ::{{definition_list}}
4832 <dl><dd><dl data-parsoid='{}'><dd about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[":",{"template":{"target":{"wt":"definition_list","href":"./Template:Definition_list"},"params":{},"i":0}}]}'>one</dd><span about="#mwt1">
4833 </span><dd about="#mwt1">two</dd></dl></dd></dl>
4835 <dl><dd data-parsoid='{}'>one
4836 <dl><dd about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":["::",{"template":{"target":{"wt":"definition_list","href":"./Template:Definition_list"},"params":{},"i":0}},"\n:::two\n:::three"]}'>one</dd><span about="#mwt2">
4837 </span><dd about="#mwt2">two
4839 <dd>three</dd></dl></dd>
4840 <dd data-parsoid='{}'>four</dd></dl></dd></dl>
4848 External links: non-bracketed
4850 Non-bracketed: http://example.com
4852 <p>Non-bracketed: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
4856 # parsoid doesn't explicitly mark autonumbered links, see T55505
4858 External links: numbered
4860 Numbered: [http://example.com]
4861 Numbered: [http://example.net]
4862 Numbered: [http://example.com]
4864 <p>Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[1]</a>
4865 Numbered: <a rel="nofollow" class="external autonumber" href="http://example.net">[2]</a>
4866 Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[3]</a>
4869 <p>Numbered: <a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a>
4870 Numbered: <a rel="mw:ExtLink" class="external autonumber" href="http://example.net"></a>
4871 Numbered: <a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a></p>
4875 External links: specified text
4877 Specified text: [http://example.com link]
4879 <p>Specified text: <a rel="nofollow" class="external text" href="http://example.com">link</a>
4884 External links: trail
4886 Linktrails should not work for external links: [http://example.com link]s
4888 <p>Linktrails should not work for external links: <a rel="nofollow" class="external text" href="http://example.com">link</a>s
4893 External links: dollar sign in URL
4895 http://example.com/1$2345
4897 <p><a rel="nofollow" class="external free" href="http://example.com/1$2345">http://example.com/1$2345</a>
4901 # parsoid doesn't explicitly mark autonumbered links, see T55505
4903 External links: dollar sign in URL (autonumber)
4905 [http://example.com/1$2345]
4907 <p><a rel="nofollow" class="external autonumber" href="http://example.com/1$2345">[1]</a>
4910 <p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/1$2345"></a></p>
4914 External links: open square bracket forbidden in URL (T6377)
4916 parsoid=wt2html,wt2wt,html2html
4918 http://example.com/1[2345
4920 <p><a rel="nofollow" class="external free" href="http://example.com/1">http://example.com/1</a>[2345
4923 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/1">http://example.com/1</a>[2345</p>
4927 External links: open square bracket forbidden in URL (named) (T6377)
4929 parsoid=wt2html,html2html
4931 [http://example.com/1[2345]
4933 <p><a rel="nofollow" class="external text" href="http://example.com/1">[2345</a>
4936 <p><a rel="mw:ExtLink" class="external text" href="http://example.com/1">[2345</a></p>
4939 # parsoid adds a space before the link name
4941 External links: open square bracket forbidden in URL (named) (T6377)
4944 [http://example.com/1 [2345]
4946 <p><a rel="nofollow" class="external text" href="http://example.com/1">[2345</a>
4951 External links: nowiki in URL link text (T8230)
4953 [http://example.com/ <nowiki>''example site''</nowiki>]
4955 <p><a rel="nofollow" class="external text" href="http://example.com/">''example site''</a>
4960 External links: newline forbidden in text (T8230 regression check)
4962 [http://example.com/ first
4965 <p>[<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a> first
4971 External links: Pipe char between url and text
4973 [http://example.com | link]
4975 <p><a rel="nofollow" class="external text" href="http://example.com">| link</a>
4980 External links: protocol-relative URL in brackets
4982 [//example.com/ Test]
4984 <p><a rel="nofollow" class="external text" href="//example.com/">Test</a>
4988 # parsoid doesn't explicitly mark autonumbered links, see T55505
4990 External links: protocol-relative URL in brackets without text
4994 <p><a rel="nofollow" class="external autonumber" href="//example.com">[1]</a>
4997 <p><a rel="mw:ExtLink" class="external autonumber" href="//example.com"></a></p>
5001 External links: protocol-relative URL in free text is left alone
5005 <p>//example.com/Foo
5010 External links: protocol-relative URL in the middle of a word is left alone (T32269)
5012 foo//example.com/Foo
5014 <p>foo//example.com/Foo
5018 ## html2wt and html2html will fail because we will prefer the :en: interwiki prefix over wikipedia:
5020 External links: with no contents
5022 parsoid=wt2html,wt2wt
5024 [http://en.wikipedia.org/wiki/Foo]
5026 [[wikipedia:Foo|Bar]]
5028 [[wikipedia:Foo|<span>Bar</span>]]
5030 <p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/wiki/Foo">[1]</a>
5031 </p><p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo">Bar</a>
5032 </p><p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo"><span>Bar</span></a>
5035 <p><a rel="mw:ExtLink" class="external autonumber" href="http://en.wikipedia.org/wiki/Foo"></a></p>
5036 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" title="wikipedia:Foo">Bar</a></p>
5037 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" title="wikipedia:Foo"><span>Bar</span></a></p>
5041 External links: Free with trailing punctuation
5051 http://example.com/url_with_(brackets)
5052 (http://example.com/url_without_brackets)
5053 http://example.com/url_with_entity&
5054 http://example.com/url_with_entity&
5055 http://example.com/url_with_entity&
5056 http://example.com/url_with_entity
5057 http://example.com/url_with_entity 
5058 http://example.com/url_with_entity 
5059 http://example.com/url_with_entity<
5060 http://example.com/url_with_entity<
5061 http://example.com/url_with_entity<
5063 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>,
5064 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>;
5065 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>\
5066 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>.
5067 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>:
5068 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>!
5069 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>?
5070 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
5071 <a rel="nofollow" class="external free" href="http://example.com/url_with_(brackets)">http://example.com/url_with_(brackets)</a>
5072 (<a rel="nofollow" class="external free" href="http://example.com/url_without_brackets">http://example.com/url_without_brackets</a>)
5073 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity&">http://example.com/url_with_entity&</a>
5074 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity&">http://example.com/url_with_entity&</a>
5075 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity&">http://example.com/url_with_entity&</a>
5076 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a> 
5077 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a> 
5078 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a> 
5079 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><
5080 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><
5081 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><
5084 <p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>,
5085 <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>;
5086 <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>\
5087 <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>.
5088 <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>:
5089 <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>!
5090 <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>?
5091 <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>)
5092 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_(brackets)">http://example.com/url_with_(brackets)</a>
5093 (<a rel="mw:ExtLink" class="external free" href="http://example.com/url_without_brackets">http://example.com/url_without_brackets</a>)
5094 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&">http://example.com/url_with_entity&</a>
5095 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&">http://example.com/url_with_entity&</a>
5096 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&">http://example.com/url_with_entity&</a>
5097 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&nbsp;","srcContent":" "}'> </span>
5098 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&#xA0;","srcContent":" "}'> </span>
5099 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&#160;","srcContent":" "}'> </span>
5100 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&lt;","srcContent":"<"}'><</span>
5101 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&#x3C;","srcContent":"<"}'><</span>
5102 <a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&#60;","srcContent":"<"}'><</span></p>
5106 External links: tricky Parsoid html2html case
5108 parsoid=wt2html,wt2wt,html2html
5110 http://example.com/url_with_entity&amp;
5112 <p><a rel="nofollow" class="external free" href="http://example.com/url_with_entity&amp">http://example.com/url_with_entity&amp</a>;
5115 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&amp">http://example.com/url_with_entity&amp</a>;</p>
5119 External links: Free with trailing quotes (T113666)
5121 '''News:''' Stuff here
5125 <p><b>News:</b> Stuff here
5126 </p><p><a rel="nofollow" class="external free" href="news:'a'b">news:'a'b</a><i>c</i>d e
5129 <p><b>News:</b> Stuff here</p>
5130 <p><a rel="mw:ExtLink" class="external free" href="news:'a'b">news:'a'b</a><i>c</i>d e</p>
5134 External links: with entity
5136 [http:// www.librarieswithoutborders.org Libraries without borders]
5138 <p><a rel="nofollow" class="external text" href="http://+www.librarieswithoutborders.org">Libraries without borders</a>
5141 <p><a rel="mw:ExtLink" class="external text" href="http://+www.librarieswithoutborders.org" data-parsoid='{"a":{"href":"http://+www.librarieswithoutborders.org"},"sa":{"href":"http://&#x20;www.librarieswithoutborders.org"}}'>Libraries without borders</a></p>
5145 External links: Lone protocols are never linked (T105697)
5164 External links: No preceding word characters allowed (T67278)
5166 NOPEhttp://example.com
5167 N0http://example.com
5168 ok:http://example.com
5169 ok-http://example.com
5171 <p>NOPEhttp://example.com
5172 N0http://example.com
5173 ok:<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
5174 ok-<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
5179 External links: nofollow domain exception
5181 A [https://no-nofollow.org/foobar link], and another [https://example.org link].
5183 <p>A <a class="external text" href="https://no-nofollow.org/foobar">link</a>, and another <a rel="nofollow" class="external text" href="https://example.org">link</a>.
5190 External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
5192 <p>External image: <img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png"/>
5197 External image from https
5199 External image from https: https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
5201 <p>External image from https: <img src="https://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png"/>
5206 External image (when not allowed)
5208 wgAllowExternalImages=0
5210 External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
5212 <p>External image: <a rel="nofollow" class="external free" href="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png">http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png</a>
5217 Link to non-http image, no img tag
5219 Link to non-http image, no img tag: ftp://example.com/test.jpg
5221 <p>Link to non-http image, no img tag: <a rel="nofollow" class="external free" href="ftp://example.com/test.jpg">ftp://example.com/test.jpg</a>
5226 External links: terminating separator
5228 Terminating separator: http://example.com/thing,
5230 <p>Terminating separator: <a rel="nofollow" class="external free" href="http://example.com/thing">http://example.com/thing</a>,
5235 External links: intervening separator
5237 Intervening separator: http://example.com/1,2,3
5239 <p>Intervening separator: <a rel="nofollow" class="external free" href="http://example.com/1,2,3">http://example.com/1,2,3</a>
5244 External links: old bug with URL in query
5246 Old bug with URL in query: [http://example.com/thing?url=http://example.com link]
5248 <p>Old bug with URL in query: <a rel="nofollow" class="external text" href="http://example.com/thing?url=http://example.com">link</a>
5253 External links: old URL-in-URL bug, mixed protocols
5255 And again with mixed protocols: [ftp://example.com?url=http://example.com link]
5257 <p>And again with mixed protocols: <a rel="nofollow" class="external text" href="ftp://example.com?url=http://example.com">link</a>
5261 # Since Parsoid is starting to emit canonical wikitext for links,
5262 # [http://example.com http://example.com] will not RT back to that
5265 External links: URL in text
5269 URL in text: [http://example.com http://example.com]
5271 <p>URL in text: <a rel="nofollow" class="external text" href="http://example.com">http://example.com</a>
5274 <p>URL in text: <a rel="mw:ExtLink" class="external text" href="http://example.com">http://example.com</a></p>
5278 External links: Clickable images
5280 ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png]
5282 <p>ja-style clickable images: <a rel="nofollow" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png"/></a>
5285 <p>ja-style clickable images: <a rel="mw:ExtLink" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" data-parsoid='{"type":"extlink"}'/></a></p>
5289 External links: raw ampersand
5291 Old & use: http://x&y
5293 <p>Old & use: <a rel="nofollow" class="external free" href="http://x&y">http://x&y</a>
5298 External links: encoded ampersand
5300 Old & use: http://x&y
5302 <p>Old & use: <a rel="nofollow" class="external free" href="http://x&y">http://x&y</a>
5305 <p>Old <span typeof="mw:Entity">&</span> use: <a rel="mw:ExtLink" class="external free" href="http://x&y">http://x&y</a></p>
5309 External links: encoded equals (T8102)
5311 http://example.com/?foo=bar
5313 <p><a rel="nofollow" class="external free" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a>
5316 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a></p>
5320 ## Note that parsoid doesn't explicit mark autonumbered links, nor
5321 ## does it number them. As discussed in T55505, we can identify
5322 ## autonumbered links via CSS.
5326 External links: [raw ampersand]
5328 Old & use: [http://x&y]
5330 <p>Old & use: <a rel="nofollow" class="external autonumber" href="http://x&y">[1]</a>
5333 <p>Old <span typeof="mw:Entity">&</span> use: <a rel="mw:ExtLink" class="external autonumber" href="http://x&y"></a></p>
5336 # note that parsoid html is identical to [raw ampersand] case; so html2wt
5337 # mode will return the [raw ampersand] wikitext
5339 External links: [encoded ampersand]
5341 parsoid=wt2html,wt2wt,html2html
5343 Old & use: [http://x&y]
5345 <p>Old & use: <a rel="nofollow" class="external autonumber" href="http://x&y">[1]</a>
5348 <p>Old <span typeof="mw:Entity">&</span> use: <a rel="mw:ExtLink" class="external autonumber" href="http://x&y"></a></p>
5352 External links: [raw equals]
5354 [http://example.com/?foo=bar]
5356 <p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
5359 <p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/?foo=bar"></a></p>
5362 # note that parsoid html is identical to [raw equals] case; so html2wt
5363 # mode will return the [raw equals] wikitext
5365 External links: [encoded equals] (T8102)
5367 parsoid=wt2html,wt2wt,html2html
5369 [http://example.com/?foo=bar]
5371 <p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
5374 <p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/?foo=bar"></a></p>
5377 # xxx parsoid strips the IDN character, so the round-trip tests will
5378 # obviously fail and are disabled. --cscott
5380 External links: [IDN ignored character reference in hostname; strip it right off]
5382 parsoid=wt2html,wt2wt,html2html
5384 [http://e‌xample.com/]
5386 <p><a rel="nofollow" class="external autonumber" href="http://example.com/">[1]</a>
5389 <p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/"></a></p>
5392 # FIXME: This test (the IDN characters in the text of a link) is an inconsistency.
5393 # Where an external link could easily circumvent the sanitization of the text of
5394 # a link like this (where an IDN-ignore character is in the URL somewhere), this
5395 # test demands a higher standard. That's a bit strange.
5399 # http://example.com -> [http://example.com|http://example.com]
5400 # [http://example.com|http://example.com] -> [http://example.com|http://example.com]
5402 # The first example is sanitized, but the second is not. Any security benefits
5403 # from this production are trivial to circumvent. Either remove this test and
5404 # let the parser(s) do their thing unaccosted, or fix the inconsistency and change
5405 # the test accordingly.
5409 # xxx parsoid strips the IDN character, so the round-trip tests will
5410 # obviously fail and are disabled. --cscott
5412 External links: IDN ignored character reference in hostname; strip it right off
5414 parsoid=wt2html,html2html
5416 http://e‌xample.com/
5418 <p><a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>
5421 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/">http://example.com/</a></p>
5425 External links: www.jpeg.org (T2554)
5429 <p><a rel="nofollow" class="external free" href="http://www.jpeg.org">http://www.jpeg.org</a>
5433 # parsoid doesn't explicitly mark autonumbered links, see T55505
5435 External links: URL within URL (T2002)
5437 [http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp]
5439 <p><a rel="nofollow" class="external autonumber" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp">[1]</a>
5442 <p><a rel="mw:ExtLink" class="external autonumber" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp"></a></p>
5446 T2361: URL inside bracketed URL
5448 [http://www.example.com/foo http://www.example.com/bar]
5450 <p><a rel="nofollow" class="external text" href="http://www.example.com/foo">http://www.example.com/bar</a>
5455 T2361: URL within URL, not bracketed
5457 http://www.example.com/foo?=http://www.example.com/bar
5459 <p><a rel="nofollow" class="external free" href="http://www.example.com/foo?=http://www.example.com/bar">http://www.example.com/foo?=http://www.example.com/bar</a>
5464 T2289: ">"-token in URL-tail
5466 http://www.example.com/<hello>
5468 <p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a><hello>
5473 T2289: literal ">"-token in URL-tail
5475 http://www.example.com/<b>html</b>
5477 <p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a><b>html</b>
5480 <p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/" data-parsoid='{"stx":"url"}'>http://www.example.com/</a><b data-parsoid='{"stx":"html"}'>html</b></p>
5484 T2289: ">"-token in bracketed URL
5486 [http://www.example.com/<hello> stuff]
5488 <p><a rel="nofollow" class="external text" href="http://www.example.com/"><hello> stuff</a>
5493 T2289: literal ">"-token in bracketed URL
5495 [http://www.example.com/<b>html</b> stuff]
5497 <p><a rel="nofollow" class="external text" href="http://www.example.com/"><b>html</b> stuff</a>
5502 T2289: literal double quote at end of URL
5504 http://www.example.com/"hello"
5506 <p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a>"hello"
5511 T2289: literal double quote in bracketed URL
5513 [http://www.example.com/"hello" stuff]
5515 <p><a rel="nofollow" class="external text" href="http://www.example.com/">"hello" stuff</a>
5520 External links: multiple legal whitespace is fine, Magnus. Don't break it please. (T7081)
5522 [http://www.example.com test]
5524 <p><a rel="nofollow" class="external text" href="http://www.example.com">test</a>
5529 External links: link text with spaces
5531 [http://www.example.com a b c]
5532 [http://www.example.com ''a'' ''b'']
5534 <p><a rel="nofollow" class="external text" href="http://www.example.com">a b c</a>
5535 <a rel="nofollow" class="external text" href="http://www.example.com"><i>a</i> <i>b</i></a>
5539 # Note edge case difference between PHP and Parsoid here.
5541 External links: wiki links within external link (T5695)
5543 parsoid=wt2html,html2html
5545 [http://example.com [[wikilink]] embedded in ext link]
5547 [http://example.com test [[wikilink]] embedded in ext link]
5549 <p><a rel="nofollow" class="external text" href="http://example.com"></a><a href="/index.php?title=Wikilink&action=edit&redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a rel="nofollow" class="external text" href="http://example.com"> embedded in ext link</a>
5550 </p><p><a rel="nofollow" class="external text" href="http://example.com">test </a><a href="/index.php?title=Wikilink&action=edit&redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a rel="nofollow" class="external text" href="http://example.com"> embedded in ext link</a>
5553 <p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a><a rel="mw:WikiLink" href="./Wikilink" title="Wikilink">wikilink</a><span> embedded in ext link</span></p>
5554 <p><a rel="mw:ExtLink" class="external text" href="http://example.com">test </a><a rel="mw:WikiLink" href="./Wikilink" title="Wikilink">wikilink</a><span> embedded in ext link</span></p>
5558 T2787: Links with one slash after the url protocol are invalid
5562 [http:/example.com title]
5564 <p>http:/example.com
5565 </p><p>[http:/example.com title]
5570 Bracketed external links with template-generated invalid target
5572 [{{echo|http:/example.com}} title]
5574 <p>[http:/example.com title]
5578 # wt2html only because Parsoid would want to add <nowiki>s coming from html
5580 Broken wikilinks (but not external links) prevent templates from closing
5584 [http://example.com x
5586 {{echo|[http://example.com x}}
5592 <p>[<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> x
5593 </p><p>[<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> x
5595 </p><p>{{echo|[[Foo}}
5598 <p>[<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a> x</p>
5599 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://example.com x"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a> x</p>
5601 <p>{{echo|[[Foo}}</p>
5605 Wikilinks with embedded newlines are not broken
5616 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[ Foo\nB\nC]]"}},"i":0}}]}'>[[ Foo B C]]</p>
5628 <p>{{echo|<a href="/wiki/Foo" title="Foo">}}</a>
5632 <p>{{echo|<a rel="mw:WikiLink" href="./Foo" title="Foo">}}</a></p>
5633 <p>[[Foo|<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"]]"}},"i":0}}]}'>]]</span></p>
5637 T4702: Mismatched <i>, <b> and <a> tags are invalid
5639 ''[http://example.com text'']
5640 [http://example.com '''text]'''
5641 ''Something [http://example.com in italic'']
5642 ''Something [http://example.com mixed''''', even bold]'''
5643 '''''Now [http://example.com both''''']
5645 <p><a rel="nofollow" class="external text" href="http://example.com"><i>text</i></a>
5646 <a rel="nofollow" class="external text" href="http://example.com"><b>text</b></a>
5647 <i>Something </i><a rel="nofollow" class="external text" href="http://example.com"><i>in italic</i></a>
5648 <i>Something </i><a rel="nofollow" class="external text" href="http://example.com"><i>mixed</i><b>, even bold</b></a>
5649 <i><b>Now </b></i><a rel="nofollow" class="external text" href="http://example.com"><i><b>both</b></i></a>
5657 http://www.example.com/?title=AT%26T
5659 <p><a rel="nofollow" class="external free" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a>
5662 <p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a></p>
5665 # According to https://www.w3.org/TR/2011/WD-html5-20110525/Overview.html#parsing-urls a plain
5666 # % is actually legal in HTML5. Any change in output would need testing though.
5668 T6781, T7267: %25 in URL
5670 http://www.example.com/?title=100%25_Bran
5672 <p><a rel="nofollow" class="external free" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a>
5675 <p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a></p>
5679 T6781, T7267: %28, %29 in URL
5681 http://www.example.com/?title=Ben-Hur_%281959_film%29
5683 <p><a rel="nofollow" class="external free" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a>
5686 <p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a></p>
5691 T6781: %26 in autonumber URL
5693 [http://www.example.com/?title=AT%26T]
5695 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=AT%26T">[1]</a>
5698 <p><a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com/?title=AT%26T"></a></p>
5702 T6781, T7267: %26 in autonumber URL
5704 [http://www.example.com/?title=100%25_Bran]
5706 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=100%25_Bran">[1]</a>
5709 <p><a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com/?title=100%25_Bran"></a></p>
5713 T6781, T7267: %28, %29 in autonumber URL
5715 [http://www.example.com/?title=Ben-Hur_%281959_film%29]
5717 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">[1]</a>
5720 <p><a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com/?title=Ben-Hur_%281959_film%29"></a></p>
5725 T6781: %26 in bracketed URL
5727 [http://www.example.com/?title=AT%26T link]
5729 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=AT%26T">link</a>
5732 <p><a rel="mw:ExtLink" class="external text" href="http://www.example.com/?title=AT%26T">link</a></p>
5736 T6781, T7267: %25 in bracketed URL
5738 [http://www.example.com/?title=100%25_Bran link]
5740 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=100%25_Bran">link</a>
5745 T6781, T7267: %28, %29 in bracketed URL
5747 [http://www.example.com/?title=Ben-Hur_%281959_film%29 link]
5749 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a>
5752 <p><a rel="mw:ExtLink" class="external text" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a></p>
5756 External link containing a period in the anchor. (T65947)
5758 [//foo.org/bar#baz. bang]
5760 [//foo.org/bar. bang]
5762 <p><a rel="nofollow" class="external text" href="//foo.org/bar#baz.">bang</a>
5763 </p><p><a rel="nofollow" class="external text" href="//foo.org/bar.">bang</a>
5766 <p><a rel="mw:ExtLink" class="external text" href="//foo.org/bar#baz.">bang</a></p>
5767 <p><a rel="mw:ExtLink" class="external text" href="//foo.org/bar.">bang</a></p>
5771 External link containing a single quote. (T65947)
5775 [//foo.org/bar'baz bang]
5777 <p><a rel="nofollow" class="external autonumber" href="//foo.org/bar'baz">[1]</a>
5778 </p><p><a rel="nofollow" class="external text" href="//foo.org/bar'baz">bang</a>
5781 <p><a rel="mw:ExtLink" class="external autonumber" href="//foo.org/bar'baz"></a></p>
5782 <p><a rel="mw:ExtLink" class="external text" href="//foo.org/bar'baz">bang</a></p>
5786 External link containing double-single-quotes in text '' (T6598 sanity check)
5788 Some [http://example.com/ pretty ''italics'' and stuff]!
5790 <p>Some <a rel="nofollow" class="external text" href="http://example.com/">pretty <i>italics</i> and stuff</a>!
5795 External link containing double-single-quotes in text embedded in italics (T6598 sanity check)
5797 ''Some [http://example.com/ pretty ''italics'' and stuff]!''
5799 <p><i>Some </i><a rel="nofollow" class="external text" href="http://example.com/"><i>pretty </i>italics<i> and stuff</i></a><i>!</i>
5803 # Don't add the html/php section since the output is broken and there isn't any reason to spec it
5805 External link containing double-single-quotes with no space separating the url from text in italics
5807 [http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm''La muerte de Casagemas'' (1901) en el sitio de [[Museo Picasso (París)|Museo Picasso]].]
5809 <p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&action=edit&redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.
5812 <p><a rel="mw:ExtLink" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a rel="mw:WikiLink" href="./Museo_Picasso_(París)" title="Museo Picasso (París)">Museo Picasso</a><span>.</span></p>
5816 External link with comments in link text
5818 [http://www.google.com Google <!-- comment -->]
5820 <p><a rel="nofollow" class="external text" href="http://www.google.com">Google </a>
5823 <p><a rel="mw:ExtLink" class="external text" href="http://www.google.com">Google <!-- comment --></a></p>
5827 External link to bare IPv4 address
5829 [http://192.168.0.1 Link]
5831 <p><a rel="nofollow" class="external text" href="http://192.168.0.1">Link</a>
5834 <p><a rel="mw:ExtLink" class="external text" href="http://192.168.0.1">Link</a></p>
5838 URL-encoding in URL functions (single parameter)
5840 {{localurl:Some page|amp=&}}
5842 <p>/index.php?title=Some_page&amp=&
5847 URL-encoding in URL functions (multiple parameters)
5849 {{localurl:Some page|q=?&=&}}
5851 <p>/index.php?title=Some_page&q=?&amp=&
5858 http://example.com/index.php?foozoid%5B%5D=bar
5860 http://example.com/index.php?foozoid[]=bar
5862 <p><a rel="nofollow" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a>
5863 </p><p><a rel="nofollow" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a>
5866 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a></p>
5868 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar" data-parsoid='{"stx":"url","a":{"href":"http://example.com/index.php?foozoid%5B%5D=bar"},"sa":{"href":"http://example.com/index.php?foozoid&#x5B;&#x5D;=bar"}}'>http://example.com/index.php?foozoid%5B%5D=bar</a></p>
5872 IPv6 urls, autolink format (T23261)
5874 http://[2404:130:0:1000::187:2]/index.php
5876 Examples from RFC 2373, section 2.2:
5878 *http://[1080::8:800:200C:417A]/unicast
5879 *http://[FF01::101]/multicast
5880 *http://[::1]/loopback
5881 *http://[::]/unspecified
5882 *http://[::13.1.68.3]/ipv4compat
5883 *http://[::FFFF:129.144.52.38]/ipv4compat
5885 Examples from RFC 2732, section 2:
5887 *http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
5888 *http://[1080:0:0:0:8:800:200C:417A]/index.html
5889 *http://[3ffe:2a00:100:7031::1]
5890 *http://[1080::8:800:200C:417A]/foo
5891 *http://[::192.9.5.5]/ipng
5892 *http://[::FFFF:129.144.52.38]:80/index.html
5893 *http://[2010:836B:4179::836B:4179]
5895 <p><a rel="nofollow" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a>
5896 </p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
5898 <ul><li><a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
5899 <li><a rel="nofollow" class="external free" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
5900 <li><a rel="nofollow" class="external free" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
5901 <li><a rel="nofollow" class="external free" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
5902 <li><a rel="nofollow" class="external free" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
5903 <li><a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
5904 <p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
5906 <ul><li><a rel="nofollow" class="external free" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
5907 <li><a rel="nofollow" class="external free" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
5908 <li><a rel="nofollow" class="external free" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
5909 <li><a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
5910 <li><a rel="nofollow" class="external free" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
5911 <li><a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
5912 <li><a rel="nofollow" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
5915 <p><a rel="mw:ExtLink" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a></p>
5917 <p>Examples from <a href="https://tools.ietf.org/html/rfc2373" rel="mw:ExtLink" class="external mw-magiclink">RFC 2373</a>, section 2.2:</p>
5918 <ul><li><a rel="mw:ExtLink" class="external free" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
5919 <li><a rel="mw:ExtLink" class="external free" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
5920 <li><a rel="mw:ExtLink" class="external free" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
5921 <li><a rel="mw:ExtLink" class="external free" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
5922 <li><a rel="mw:ExtLink" class="external free" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
5923 <li><a rel="mw:ExtLink" class="external free" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
5925 <p>Examples from <a href="https://tools.ietf.org/html/rfc2732" rel="mw:ExtLink" class="external mw-magiclink">RFC 2732</a>, section 2:</p>
5926 <ul><li><a rel="mw:ExtLink" class="external free" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
5927 <li><a rel="mw:ExtLink" class="external free" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
5928 <li><a rel="mw:ExtLink" class="external free" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
5929 <li><a rel="mw:ExtLink" class="external free" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
5930 <li><a rel="mw:ExtLink" class="external free" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
5931 <li><a rel="mw:ExtLink" class="external free" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
5932 <li><a rel="mw:ExtLink" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
5936 IPv6 urls, bracketed format (T23261)
5938 [http://[2404:130:0:1000::187:2]/index.php test]
5940 Examples from RFC 2373, section 2.2:
5942 *[http://[1080::8:800:200C:417A] unicast]
5943 *[http://[FF01::101] multicast]
5944 *[http://[::1]/ loopback]
5945 *[http://[::] unspecified]
5946 *[http://[::13.1.68.3] ipv4compat]
5947 *[http://[::FFFF:129.144.52.38] ipv4compat]
5949 Examples from RFC 2732, section 2:
5951 *[http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html 1]
5952 *[http://[1080:0:0:0:8:800:200C:417A]/index.html 2]
5953 *[http://[3ffe:2a00:100:7031::1] 3]
5954 *[http://[1080::8:800:200C:417A]/foo 4]
5955 *[http://[::192.9.5.5]/ipng 5]
5956 *[http://[::FFFF:129.144.52.38]:80/index.html 6]
5957 *[http://[2010:836B:4179::836B:4179] 7]
5959 <p><a rel="nofollow" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a>
5960 </p><p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc2373">RFC 2373</a>, section 2.2:
5962 <ul><li><a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]">unicast</a></li>
5963 <li><a rel="nofollow" class="external text" href="http://[FF01::101]">multicast</a></li>
5964 <li><a rel="nofollow" class="external text" href="http://[::1]/">loopback</a></li>
5965 <li><a rel="nofollow" class="external text" href="http://[::]">unspecified</a></li>
5966 <li><a rel="nofollow" class="external text" href="http://[::13.1.68.3]">ipv4compat</a></li>
5967 <li><a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
5968 <p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
5970 <ul><li><a rel="nofollow" class="external text" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
5971 <li><a rel="nofollow" class="external text" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
5972 <li><a rel="nofollow" class="external text" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
5973 <li><a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
5974 <li><a rel="nofollow" class="external text" href="http://[::192.9.5.5]/ipng">5</a></li>
5975 <li><a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
5976 <li><a rel="nofollow" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
5979 <p><a rel="mw:ExtLink" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a></p>
5981 <p>Examples from <a href="https://tools.ietf.org/html/rfc2373" rel="mw:ExtLink" class="external mw-magiclink">RFC 2373</a>, section 2.2:</p>
5982 <ul><li><a rel="mw:ExtLink" class="external text" href="http://[1080::8:800:200C:417A]">unicast</a></li>
5983 <li><a rel="mw:ExtLink" class="external text" href="http://[FF01::101]">multicast</a></li>
5984 <li><a rel="mw:ExtLink" class="external text" href="http://[::1]/">loopback</a></li>
5985 <li><a rel="mw:ExtLink" class="external text" href="http://[::]">unspecified</a></li>
5986 <li><a rel="mw:ExtLink" class="external text" href="http://[::13.1.68.3]">ipv4compat</a></li>
5987 <li><a rel="mw:ExtLink" class="external text" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
5989 <p>Examples from <a href="https://tools.ietf.org/html/rfc2732" rel="mw:ExtLink" class="external mw-magiclink">RFC 2732</a>, section 2:</p>
5990 <ul><li><a rel="mw:ExtLink" class="external text" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
5991 <li><a rel="mw:ExtLink" class="external text" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
5992 <li><a rel="mw:ExtLink" class="external text" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
5993 <li><a rel="mw:ExtLink" class="external text" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
5994 <li><a rel="mw:ExtLink" class="external text" href="http://[::192.9.5.5]/ipng">5</a></li>
5995 <li><a rel="mw:ExtLink" class="external text" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
5996 <li><a rel="mw:ExtLink" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
6000 Non-extlinks in brackets
6009 [{{echo|foo}} ''bar'']
6010 [{{echo|foo}}l's] errand
6011 [{{echo|foo}}l's errand]
6013 [url=http://example.com]
6014 [http:// bare protocols don't count]
6027 [url=<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>]
6028 [http:// bare protocols don't count]
6036 [<span about="#mwt19" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>]
6037 [<span about="#mwt20" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span> bar]
6038 [<span about="#mwt21" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span> <i>bar</i>]
6039 [<span about="#mwt22" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>l's] errand
6040 [<span about="#mwt23" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>l's errand]
6041 [url=<span about="#mwt24" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>]
6042 [url=<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>]
6043 [http:// bare protocols don't count]</p>
6047 Percent encoding in external links
6049 [https://github.com/search?l=&q=ResourceLoader+%40wikimedia Search]
6051 <p><a rel="nofollow" class="external text" href="https://github.com/search?l=&q=ResourceLoader+%40wikimedia">Search</a>
6054 <p><a rel="mw:ExtLink" class="external text" href="https://github.com/search?l=&q=ResourceLoader+%40wikimedia">Search</a></p>
6058 Use url link syntax for links where the content is equal the link target
6062 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
6065 <p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></p>
6069 Parenthesis in external links, especially URL links
6073 http://example.com/test)
6075 http://example.com/(test)
6077 http://example.com/((test)
6079 (http://example.com/(test))
6081 (http://example.com/(test)))))
6083 http://example.com/a)b
6085 [http://example.com) foo]
6087 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
6088 </p><p><a rel="nofollow" class="external free" href="http://example.com/test">http://example.com/test</a>)
6089 </p><p><a rel="nofollow" class="external free" href="http://example.com/(test)">http://example.com/(test)</a>
6090 </p><p><a rel="nofollow" class="external free" href="http://example.com/((test)">http://example.com/((test)</a>
6091 </p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test))">http://example.com/(test))</a>
6092 </p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test)))))">http://example.com/(test)))))</a>
6093 </p><p><a rel="nofollow" class="external free" href="http://example.com/a)b">http://example.com/a)b</a>
6094 </p><p><a rel="nofollow" class="external text" href="http://example.com)">foo</a>
6097 <p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>)</p>
6098 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/test">http://example.com/test</a>)</p>
6099 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/(test)">http://example.com/(test)</a></p>
6100 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/((test)">http://example.com/((test)</a></p>
6101 <p>(<a rel="mw:ExtLink" class="external free" href="http://example.com/(test))">http://example.com/(test))</a></p>
6102 <p>(<a rel="mw:ExtLink" class="external free" href="http://example.com/(test)))))">http://example.com/(test)))))</a></p>
6103 <p><a rel="mw:ExtLink" class="external free" href="http://example.com/a)b">http://example.com/a)b</a></p>
6104 <p><a rel="mw:ExtLink" class="external text" href="http://example.com)">foo</a></p>
6108 Parenthesis in external links, w/ transclusion or comment
6110 (http://example.com/{{echo|hi}})
6112 (http://example.com<!-- hi -->)
6114 <p>(<a rel="nofollow" class="external free" href="http://example.com/hi">http://example.com/hi</a>)
6115 </p><p>(<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
6118 <p>(<a typeof="mw:ExpandedAttrs" about="#mwt2" rel="mw:ExtLink" class="external free" href="http://example.com/hi" data-parsoid='{"stx":"url","a":{"href":"http://example.com/hi"},"sa":{"href":"http://example.com/{{echo|hi}}"}}' data-mw='{"attribs":[[{"txt":"href"},{"html":"http://example.com/<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[20,31,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"hi\"}},\"i\":0}}]}'>hi</span>"}]]}'>http://example.com/hi</a>)</p>
6120 <p>(<a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url","a":{"href":"http://example.com"},"sa":{"href":"http://example.com<!-- hi -->"}}'>http://example.com</a>)</p>
6124 Serialize <a> tags with invalid link targets as plain text
6126 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
6128 <a rel="mw:WikiLink" href="[[foo]]">text</a>
6129 <a rel="mw:WikiLink" href="[[foo]]">*text</a>
6130 <a rel="mw:WikiLink" href="[[foo]]">[[foo]]</a>
6131 <a rel="mw:WikiLink" href="[[foo]]">*a [[foo]]</a>
6134 <nowiki>*</nowiki>text
6135 <nowiki>[[foo]]</nowiki>
6136 <nowiki>*</nowiki>a <nowiki>[[foo]]</nowiki>
6140 mw:ExtLink -vs- mw:WikiLink (T94723)
6144 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"piped","a":{"href":"./Foo"},"sa":{"href":"Foo"}}'>Bar</a>
6145 <a rel="mw:WikiLink" href="./Foo" title="Foo">Bar</a>
6146 <a rel="mw:WikiLink" href="http://en.wikipedia.org/wiki/Foo" title="Foo">Bar</a>
6147 <a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" title="Foo">Bar</a>
6149 <a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/European_Robin">European Robin</a>
6150 <a rel="mw:WikiLink" href="http://en.wikipedia.org/wiki/European_Robin">European Robin</a>
6158 [[:en:European_Robin|European Robin]]
6159 [[:en:European_Robin|European Robin]]
6163 mw:ExtLink linking to a interwiki URL can be round-tripped losslessly (T94723)
6167 [http://en.wikipedia.org/wiki/European_Robin European Robin]
6169 THIS SECTION IS NOT USED (but Parsoid won't run the test without it)
6180 Normal text. '''Bold text.''' Normal text. ''Italic text.''
6182 Normal text. '''''Bold italic text.''''' Normal text.
6184 <p>Normal text. <b>Bold text.</b> Normal text. <i>Italic text.</i>
6185 </p><p>Normal text. <i><b>Bold italic text.</b></i> Normal text.
6190 Quotes wrapping HTML table
6192 '''<table><tr><td>hi</td></tr></table>'''
6194 <b><table><tbody><tr><td>hi</td></tr></tbody></table></b>
6196 <b><table data-parsoid='{"stx":"html"}'><tbody><tr data-parsoid='{"stx":"html"}'><td data-parsoid='{"stx":"html"}'>hi</td></tr></tbody></table></b>
6199 # Parsoid inserts an empty bold tag pair at the end of the line, that the PHP
6200 # parser strips. The wikitext contains just the first half of the bold
6203 Unclosed and unmatched quotes
6205 '''''Bold italic text '''with bold deactivated''' in between.'''''
6207 '''''Bold italic text ''with italic deactivated'' in between.'''''
6211 ..spanning two paragraphs (should not work).'''
6213 '''Bold tag left open
6215 ''Italic tag left open
6219 <!-- Unmatching number of opening, closing tags: -->
6220 '''This year''''s election ''should'' beat '''last year''''s.
6222 ''Tom'''s car is bigger than ''Susan'''s.
6224 Plain ''italic'''s plain
6226 <p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
6227 </p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
6228 </p><p><b>Bold text..</b>
6229 </p><p>..spanning two paragraphs (should not work).
6230 </p><p><b>Bold tag left open</b>
6231 </p><p><i>Italic tag left open</i>
6233 </p><p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
6234 </p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
6235 </p><p>Plain <i>italic'</i>s plain
6238 <p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
6239 </p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
6240 </p><p><b>Bold text..</b>
6241 </p><p>..spanning two paragraphs (should not work).<b></b>
6242 </p><p><b>Bold tag left open</b>
6243 </p><p><i>Italic tag left open</i>
6246 <!-- Unmatching number of opening, closing tags: -->
6247 <p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
6248 </p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
6249 </p><p>Plain <i>italic'</i>s plain
6256 ### some content taken from http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide:_Using_tables
6259 # This should not produce <table></table> as <table><tr><td></td></tr></table>
6260 # is the bare minimum required by the spec, see:
6261 # https://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_Basic_Tables
6262 # Parsoid team replies: empty table tags are legal in HTML5
6264 A table with no data.
6276 # Note that the PHP parser output appears to be broken when the table
6277 # end tag is not separated by a space from the style attribute
6279 A table with stray table end tags on start tag line (wt2html)
6283 {|style="color: red;"|}
6285 {|style="color: red;" |}
6289 {|style="color: red;"|} id="foo"
6293 {|style="color: red;" |} id="foo"
6297 <table style=""color:">
6299 </table><table style="color: red;">
6302 </td></tr></tbody></table>
6303 <table style=""color:" id="foo">
6306 </td></tr></tbody></table>
6307 <table style="color: red;" id="foo">
6310 </td></tr></tbody></table>
6312 <table style="color: red;"></table>
6314 <table style="color: red;">
6320 <table style="color: red;" id="foo">
6326 <table style="color: red;" id="foo">
6335 A table with no data (take 2)
6343 # A table with nothing but a caption is invalid XHTML, we might want to render
6344 # this as <p>caption</p>
6345 # Parsoid team replies: table with only a caption is legal in HTML5
6347 A table with nothing but a caption
6355 </caption><tr><td></td></tr></table>
6358 <table><caption>caption</caption></table>
6362 A table with caption with default-spaced attributes and a table row
6365 |+ style="color: red;" |caption1
6371 <caption style="color: red;">caption1
6380 A table with captions with non-default spaced attributes and a table row
6383 |+style="color: red;"|caption2
6384 |+ style="color: red;"|caption3
6390 <caption style="color: red;">caption2
6392 <caption style="color: red;">caption3
6401 Table td-cell syntax variations
6406 |style='color:red;'|baz
6407 |style='color:red;'||baz
6414 <td>foo bar foo</td>
6417 <td style="color:red;">baz
6419 <td>style='color:red;'</td>
6447 Simple table but with multiple dashes for row wikitext
6466 Multiplication table
6468 {| border="1" cellpadding="2"
6469 |+Multiplication table
6489 <table border="1" cellpadding="2">
6490 <caption>Multiplication table
6537 Accept "||" in table headings
6552 Accept "!!" in table data
6566 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'> Foo!! </td><td data-parsoid='{"stx":"row","autoInsertedEnd":true}'></td></tr>
6571 Accept "||" in indented table headings
6581 </th></tr></table></dd></dl>
6586 Accept "!!" in templates
6600 <tbody><tr><th typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"pi":[[{"k":"1"}]]}' data-mw='{"parts":["!a ",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b!!c"}},"i":0}}]}'>a b</th><th about="#mwt1">c</th></tr>
6604 Accept "!!" in table headings after newline
6621 <p>b!!c</p></th></tr>
6626 Accept "!!" in table data of mixed wikitext / html syntax
6630 <tr><td>b!!c</td></tr>
6636 </th></tr><tr><td>b!!c</td></tr>
6640 <tbody><tr><th>a</th></tr>
6641 <tr data-parsoid='{"stx":"html"}'><td data-parsoid='{"stx":"html"}'>b!!c</td></tr>
6646 Accept empty attributes in td/th cells (td/th cells starting with leading ||)
6663 Accept "| !" at start of line in tables (ignore !-attribute)
6667 |!style="color:red"|bar
6679 Allow +/- in 2nd and later cells in a row, in 1st cell when td-attrs are present, or in 1st cell when there is a space between "|" and +/-
6683 |style='color:red;'|+1
6684 |style='color:blue;'|-1
6696 <td style="color:red;">+1
6698 <td style="color:blue;">-1
6722 |rowspan=2|Cell 2, row 1 (and 2)
6733 <td rowspan="2">Cell 2, row 1 (and 2)
6751 {| bgcolor=#ABCDEF border=2
6756 |the original table again
6764 <table bgcolor="#ABCDEF" border="2">
6772 <td>the original table again
6778 Invalid attributes in table cell (T3830)
6792 Table cell attributes: Pipes protected by nowikis should be treated as a plain character
6796 |title="foo<nowiki>|</nowiki>" |bar
6797 |title="foo<nowiki>|</nowiki>" bar
6804 <td title="foo|">bar
6806 <td>title="foo|" bar
6811 <tbody><tr><td title="foo">bar</td>
6812 <td title="foo|" data-parsoid='{"a":{"title":"foo|"},"sa":{"title":"foo<nowiki>|</nowiki>"},"autoInsertedEnd":true}'>bar</td>
6813 <td> title="foo<span typeof="mw:Nowiki">|</span>" bar</td></tr>
6817 # See: http://lists.wikimedia.org/mailman/htdig/wikitech-l/2006-April/022293.html
6818 # N.B. The "|}" to close the table is missing from the input, so parsoid's
6819 # *2wt modes will fail.
6821 Table security: embedded pipes
6823 parsoid=wt2html,html2html
6826 | |[ftp://|x||]" onmouseover="alert(document.cookie)">test
6830 <td>[<a rel="nofollow" class="external free" href="ftp://%7Cx">ftp://%7Cx</a></td>
6831 <td>]" onmouseover="alert(document.cookie)">test
6839 <td data-parsoid='{"startTagSrc":"| ","attrSepSrc":"|","autoInsertedEnd":true}'>[<a rel="mw:ExtLink" class="external free" href="ftp://%7Cx" data-parsoid='{"stx":"url","a":{"href":"ftp://%7Cx"},"sa":{"href":"ftp://|x"}}'>ftp://%7Cx</a></td><td data-parsoid='{"stx":"row","autoInsertedEnd":true}'>]" onmouseover="alert(document.cookie)">test</td></tr></tbody></table>
6843 Element attributes with double ! should not be broken up by <th>
6846 !hi <div class="!!">ha</div> ho
6851 <th>hi <div class="!!">ha</div> ho
6856 <tbody><tr><th>hi <div class="!!" data-parsoid='{"stx":"html"}'>ha</div> ho</th></tr>
6861 ! and || in element attributes should not be parsed as <th>/<td>
6864 |<div style="color: red !important;" data-contrived="put this here ||">hi</div>
6869 <td><div style="color: red !important;" data-contrived="put this here ||">hi</div>
6874 <tbody><tr><td><div style="color: red !important;" data-contrived="put this here ||" data-parsoid='{"stx":"html"}'>hi</div></td></tr>
6878 # FIXME: The output seems broken. Filed as T110268.
6880 ! and || in td attributes should not be parsed as <th>/<td>
6885 |style="color: red !important;" data-contrived="put this here ||"|foo
6890 <td>style="color: red !important;" data-contrived="put this here</td>
6896 <tbody><tr><td>style="color: red !important;" data-contrived="put this here</td><td data-parsoid='{"stx":"row","a":{"\"":null},"sa":{"\"":""},"autoInsertedEnd":true}'>foo</td></tr>
6901 Break on | in element attribute in template
6903 parsoid=wt2html,html2html
6905 {{echo|1=<div class="hi|ho">ha</div>}}
6907 <p>ho">ha</div>
6910 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"ho\">ha</div>"}},"i":0}}]}'>ho">ha</p>
6914 Break on | in element attribute name in template
6916 {{echo|<div cla|ss="hiho">ha</div>}}
6918 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"},{"k":"ss","named":true}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div cla"},"ss":{"wt":"\"hiho\">ha</div>"}},"i":0}}]}'><div cla</p>
6922 Don't break on | in extension attribute in template
6924 {{echo|<ref name="hi|ho">ha</ref>}}
6928 <p><sup about="#mwt2" class="mw-ref" id="cite_ref-hi|ho_1-0" rel="dc:references" typeof="mw:Transclusion mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<ref name=\"hi|ho\">ha</ref>"}},"i":0}}]}'><a href="./Parser_test#cite_note-hi|ho-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p>
6930 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-hi|ho-1" id="cite_note-hi|ho-1"><a href="./Parser_test#cite_ref-hi|ho_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-hi|ho-1" class="mw-reference-text">ha</span></li></ol>
6933 ## We don't support roundtripping of these attributes in Parsoid.
6934 ## Selective serialization takes care of preventing dirty diffs.
6935 ## But, on edits, we dirty-diff the invalid attribute text.
6937 Invalid text in table attributes should be discarded
6941 {| <span>boo</span> style='border:1px solid black'
6942 | <span>boo</span> style='color:blue' |1
6943 |<span>boo</span> style='color:blue'|2
6946 <table style="border:1px solid black">
6948 <td style="color:blue">1
6950 <td style="color:blue">2
6954 <table style="border:1px solid black">
6956 <td style="color:blue">1</td>
6957 <td style="color:blue">2</td>
6963 Invalid text in table attributes should be preserved by selective serializer
6966 "modes": ["selser"],
6968 ["td:first-child", "text", "abc"],
6969 ["td + td", "text", "xyz"]
6973 {| <span>boo</span> style='border:1px solid black'
6974 | <span>boo</span> style='color:blue' | 1
6975 |<span>boo</span> style='color:blue'| 2
6978 {| <span>boo</span> style='border:1px solid black'
6979 | <span>boo</span> style='color:blue' | abc
6980 |<span>boo</span> style='color:blue'| xyz
6985 1. Template-generated table cell attributes and cell content
6990 || {{table_attribs_5}}
6991 | <!--foo--> <!--bar--> <!--baz--> {{table_attribs}}
6992 |align=center {{table_attribs}}
6993 | <!--foo--> align=center <!--bar--> {{table_attribs}}
6998 <td style="color:red;">Foo
7000 <td style="color:red;">Foo
7002 <td>style="color:red;"</td>
7005 <td style="color:red;">Foo
7007 <td align="center" style="color:red;">Foo
7009 <td align="center" style="color:red;">Foo
7015 2. Template-generated table cell attributes and cell content
7018 |{{table_attribs_2}}
7023 <td style="color:red;">Foo
7031 <tbody><tr><td about="#mwt1" typeof="mw:Transclusion" style="color:red;" data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_2","href":"./Template:Table_attribs_2"},"params":{},"i":0}}]}'>Foo</td>
7032 <td about="#mwt1">Bar</td><td about="#mwt1">Baz</td></tr>
7037 3. Template-generated table cell attributes and cell content
7040 !align=center {{table_header_cells}}
7042 |align=center {{table_cells}}
7047 <th align="center" style="color:red;">Foo</th>
7048 <th style="color:red;"><i>Bar</i></th>
7049 <th style="color:brown;"><i>Foo</i> and Baz
7052 <td align="center" style="color:red;">Foo</td>
7053 <td style="color:red;"><i>Bar</i></td>
7054 <td style="color:brown;"><i>Foo</i> and Baz
7059 <tbody><tr><th align="center" style="color:red;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["!align=center ",{"template":{"target":{"wt":"table_header_cells","href":"./Template:Table_header_cells"},"params":{},"i":0}}]}'>Foo</th><th about="#mwt1" style="color:red;"><i about="#mwt1">Bar</i></th><th about="#mwt1" style="color:brown;"><i about="#mwt1">Foo</i> and Baz</th></tr><tr>
7060 <td align="center" style="color:red;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["|align=center ",{"template":{"target":{"wt":"table_cells","href":"./Template:Table_cells"},"params":{},"i":0}}]}'>Foo</td><td about="#mwt1" style="color:red;"><i about="#mwt1">Bar</i></td><td about="#mwt1" style="color:brown;"><i about="#mwt1">Foo</i> and Baz</td></tr>
7065 4. Template-generated table cell attributes and cell content inside a templated table
7068 !align=center {{table_header_cells}}
7070 |align=center {{table_cells}}
7075 <th align="center" style="color:red;">Foo</th>
7076 <th style="color:red;"><i>Bar</i></th>
7077 <th style="color:brown;"><i>Foo</i> and Baz
7080 <td align="center" style="color:red;">Foo</td>
7081 <td style="color:red;"><i>Bar</i></td>
7082 <td style="color:brown;"><i>Foo</i> and Baz
7086 <table about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[],[],[],[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"tbl-start","href":"./Template:Tbl-start"},"params":{},"i":0}},"\n!align=center ",{"template":{"target":{"wt":"table_header_cells","href":"./Template:Table_header_cells"},"params":{},"i":1}},"\n|-\n|align=center ",{"template":{"target":{"wt":"table_cells","href":"./Template:Table_cells"},"params":{},"i":2}},"\n",{"template":{"target":{"wt":"tbl-end","href":"./Template:Tbl-end"},"params":{},"i":3}}]}'>
7087 <tbody><tr><th align="center" style="color:red;">Foo</th><th style="color:red;"><i>Bar</i></th><th style="color:brown;"><i>Foo</i> and Baz</th></tr>
7089 <td align="center" style="color:red;">Foo</td><td style="color:red;"><i>Bar</i></td><td style="color:brown;"><i>Foo</i> and Baz</td></tr>
7093 ## Edge case fix to prevent future regressions
7095 T107652: <ref>s in templates that also generate table cell attributes should be rendered properly
7098 |{{table_attribs_7}}
7103 <tbody><tr><td style="background:#f9f9f9;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_7","href":"./Template:Table_attribs_7"},"params":{},"i":0}}]}'>Foo<sup class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{},"body":{"id":"mw-reference-text-cite_note-1"}}'><a href="./Parser_test#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></s></td></tr>
7105 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Parser_test#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
7109 Table with row followed by newlines and table heading
7111 parsoid=wt2html,html2html
7129 Table with empty line following the start tag
7131 parsoid=wt2html,html2html
7149 Table attributes with empty value
7151 parsoid=wt2html,html2html
7164 <tbody><tr><td style="">hello</td></tr>
7169 Wikitext table with a lot of comments
7192 Wikitext table comments represented in parsoid dom
7194 {|<!--c1--><!--c2-->
7203 </td></tr></tbody></table>
7205 <table><!--c1--><!--c2-->
7206 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'><!--c3-->
7207 <td data-parsoid='{"autoInsertedEnd":true}'>x</td></tr>
7212 Wikitext table with double-line table cell
7229 Table cell with a single comment
7246 Table-cell after a comment-only-empty-line
7263 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'>a</td>
7265 <!--c2--><td data-parsoid='{"autoInsertedEnd":true}'>b</td></tr>
7271 Build table with {{!}}
7273 {{{!}} class="wikitable"
7276 {{!}}- style="color:red;"
7277 {{!}}data{{!}}{{!}} style="color:red;" {{!}}second data
7280 <table class="wikitable">
7286 <tr style="color:red;">
7288 <td style="color:red;">second data
7294 Build table with pipe as data
7296 {| class="wikitable"
7299 |- style="color:red;"
7300 |data|| style="color:red;" |second data
7302 | style="color:red;" |data with | || style="color:red;" | second data with |
7304 ||data with | |||second data with |
7307 <table class="wikitable">
7313 <tr style="color:red;">
7315 <td style="color:red;">second data
7318 <td style="color:red;">data with |</td>
7319 <td style="color:red;">second data with |
7322 <td>data with |</td>
7323 <td>second data with |
7329 Build table with wikilink
7331 {| class="wikitable"
7332 !header||second header
7333 |- style="color:red;"
7334 |data [[Main Page|linktext]]||second data [[Main Page|linktext]]
7336 |data||second data [[Main Page|link|text with pipe]]
7339 <table class="wikitable">
7344 <tr style="color:red;">
7345 <td>data <a href="/wiki/Main_Page" title="Main Page">linktext</a></td>
7346 <td>second data <a href="/wiki/Main_Page" title="Main Page">linktext</a>
7350 <td>second data <a href="/wiki/Main_Page" title="Main Page">link|text with pipe</a>
7355 # The expected HTML structure in this test is debatable. The PHP parser does
7356 # not parse this kind of table at all. The main focus for Parsoid is on
7357 # round-tripping, so this output is ok for now. TODO: revisit!
7359 Wikitext table with html-syntax row
7369 <td>foo</td></tr></tbody></table>
7372 ## Remex doesn't account for fostered content.
7374 Fostered content in tables: Plain text
7394 <p data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true}'>
7397 <tbody><tr class="mw-empty-elt" data-parsoid='{"startTagSrc":"|-"}'></tr></tbody></table>
7401 Fostered content in tables: Lists
7403 parsoid=wt2html,html2html
7416 <ul><li>a</li></ul><table>
7421 <ul data-parsoid='{"fostered":true,"autoInsertedEnd":true}'><li>a</li></ul><table>
7422 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
7424 </tr></tbody></table>
7428 Template generated table cell with attributes
7432 {{table_attribs_4}} ||a||b
7438 <td style="background-color:#DC241f;" width="10px"></td>
7441 </td></tr></tbody></table>
7444 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
7445 <td style="background-color:#DC241f;" width="10px" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"table_attribs_4","href":"./Template:Table_attribs_4"},"params":{},"i":0}}," ||a||b"]}'></td><td about="#mwt1">a</td><td about="#mwt1">b</td></tr>
7449 Parsoid: Round-trip tables directly followed by content (T53219)
7451 parsoid=wt2html,wt2wt
7464 </td></tr></tbody></table><p> bar
7468 </td></tr></tbody></table><p><b>quux</b>
7473 Parsoid: Default to a newline after tables in new content (T53219)
7478 <tr><td>foo</td></tr></tbody></table> bar
7480 <tr><td>baz</td></tr></tbody></table><b>quux</b>
7485 <nowiki> </nowiki>bar
7493 Parsoid: Row-syntax table headings followed by comment & table cells
7495 parsoid=wt2html,wt2wt
7499 <!-- foo --> ||baz||quux
7513 <tbody><tr><th>foo</th><th>bar
7514 <!-- foo --></th><td> baz </td><td>quux</td></tr>
7519 Parsoid: Recover better from broken table attributes
7533 </td></tr></tbody></table>
7538 <p>foo</p></td></tr>
7542 # Note: PHP parser omits empty rows
7544 Tables: Digest broken attributes on table and tr tag
7560 <tr class='mw-empty-elt'></tr>
7561 <tr class='mw-empty-elt'></tr>
7566 Table with missing opening <tr> tag
7568 parsoid=wt2html,wt2wt
7576 <tbody><tr><td>foo</td>
7581 # T137406: Whitespace in the HTML
7583 1. Generate correct wikitext for tables with thead/tbody/tfoot
7588 <caption>Test</caption>
7650 </td></tr></tbody></table>
7653 # T137406: No whitespace in the HTML
7655 2. Generate correct wikitext for tables with thead/tbody/tfoot
7659 <table><thead><tr><th>heading</th></tr></thead><tbody><tr><td>foo</td></tr></tbody></table>
7669 Wikitext tables can be nested inside HTML tables
7673 <table data-parsoid='{"stx":"html"}'>
7676 <tr><td>foo</td></tr>
7694 </td></tr></tbody></table>
7703 Plain link, capitalized
7707 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
7712 Plain link, uncapitalized
7716 <p><a href="/wiki/Main_Page" title="Main Page">main Page</a>
7723 [[Main Page|The Main Page]]
7725 <p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
7730 Piped link with comment in link text
7732 [[Main Page|The Main<!--front--> Page]]
7734 <p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
7739 Piped link with multiple pipe characters in link text
7741 [[Main Page||The|Main|Page|]]
7743 <p><a href="/wiki/Main_Page" title="Main Page">|The|Main|Page|</a>
7746 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">|The|Main|Page|</a></p>
7750 Piped link with no link text
7752 [[Thomas Bek (bishop of St David's)|]]
7754 <p>[[Thomas Bek (bishop of St David's)|]]
7757 <p>[[Thomas Bek (bishop of St David's)|]]</p>
7761 Piped link with empty link text
7763 [[Main Page|<nowiki/>]] - empty nowiki
7764 [[Main Page| ]] - empty space
7765 [[Main Page| ]] - empty non breaking space
7767 <p><a href="/wiki/Main_Page" title="Main Page"></a> - empty nowiki
7768 <a href="/wiki/Main_Page" title="Main Page"> </a> - empty space
7769 <a href="/wiki/Main_Page" title="Main Page"> </a> - empty non breaking space
7772 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page"><span typeof="mw:Nowiki"></span></a> - empty nowiki
7773 <a rel="mw:WikiLink" href="./Main_Page" title="Main Page"> </a> - empty space
7774 <a rel="mw:WikiLink" href="./Main_Page" title="Main Page"><span typeof="mw:Entity" data-parsoid='{"src":"&nbsp;","srcContent":" "}'> </span></a> - empty non breaking space</p>
7782 <p><a href="/index.php?title=Zigzagzogzagzig&action=edit&redlink=1" class="new" title="Zigzagzogzagzig (page does not exist)">Zigzagzogzagzig</a>
7787 Broken link with fragment
7789 [[Zigzagzogzagzig#zug]]
7791 <p><a href="/index.php?title=Zigzagzogzagzig&action=edit&redlink=1" class="new" title="Zigzagzogzagzig (page does not exist)">Zigzagzogzagzig#zug</a>
7796 Special page link with fragment
7798 [[Special:Version#anchor]]
7800 <p><a href="/wiki/Special:Version#anchor" title="Special:Version">Special:Version#anchor</a>
7805 Nonexistent special page link with fragment
7807 [[Special:ThisNameWillHopefullyNeverBeUsed#anchor]]
7809 <p><a href="/wiki/Special:ThisNameWillHopefullyNeverBeUsed" class="new" title="Special:ThisNameWillHopefullyNeverBeUsed (page does not exist)">Special:ThisNameWillHopefullyNeverBeUsed#anchor</a>
7816 xxx[[main Page]], xxx[[Main Page]], Xxx[[main Page]] XXX[[main Page]], XXX[[Main Page]]
7818 <p>xxx<a href="/wiki/Main_Page" title="Main Page">main Page</a>, xxx<a href="/wiki/Main_Page" title="Main Page">Main Page</a>, Xxx<a href="/wiki/Main_Page" title="Main Page">main Page</a> XXX<a href="/wiki/Main_Page" title="Main Page">main Page</a>, XXX<a href="/wiki/Main_Page" title="Main Page">Main Page</a>
7825 [[Main Page]]xxx, [[Main Page]]XXX, [[Main Page]]!!!
7827 <p><a href="/wiki/Main_Page" title="Main Page">Main Pagexxx</a>, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>XXX, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>!!!
7838 T45661: Piped links with identical prefixes
7840 [[prefixed article|prefixed articles with spaces]]
7842 [[prefixed article|prefixed articlesaoeu]]
7844 [[Main Page|Main Page test]]
7846 <p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articles with spaces</a>
7847 </p><p><a href="/wiki/Prefixed_article" title="Prefixed article">prefixed articlesaoeu</a>
7848 </p><p><a href="/wiki/Main_Page" title="Main Page">Main Page test</a>
7854 Link with HTML entity in suffix / tail
7856 [[Main Page]]", [[Main Page]]a
7858 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>", <a href="/wiki/Main_Page" title="Main Page">Main Page</a>a
7861 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a><span typeof="mw:Entity" data-parsoid='{"src":"&quot;","srcContent":"\""}'>"</span>, <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a><span typeof="mw:Entity" data-parsoid='{"src":"&#97;","srcContent":"a"}'>a</span></p>
7865 Link with 3 brackets
7876 Link with 4 brackets
7880 <p>[[<a href="/wiki/Main_Page" title="Main Page">Main Page</a>]]
7885 Piped link with 3 brackets
7887 [[[main page|the main page]]]
7889 <p>[[[main page|the main page]]]
7894 Piped link with extlink-like text
7897 [[Main Page|This is a [bar]]]
7900 <p><a href="/wiki/Main_Page" title="Main Page">[bar]</a>
7901 <a href="/wiki/Main_Page" title="Main Page">This is a [bar]</a>
7902 <a href="/wiki/Main_Page" title="Main Page">[bar</a>
7905 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>[bar]</a>
7906 <a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>This is a [bar]</a>
7907 <a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>[bar</a></p>
7911 Link with multiple pipes
7913 [[Main Page|The|Main|Page]]
7915 <p><a href="/wiki/Main_Page" title="Main Page">The|Main|Page</a>
7920 Anchor containing a #. (T65430)
7922 wgFragmentMode=[ 'html5', 'legacy' ]
7924 [[Main Page#And#Link]]
7926 <p><a href="/wiki/Main_Page#And#Link" title="Main Page">Main Page#And#Link</a>
7929 <p><a rel="mw:WikiLink" href="./Main_Page#And#Link" title="Main Page" data-parsoid='{"stx":"simple","a":{"href":"./Main_Page#And#Link"},"sa":{"href":"Main Page#And#Link"}}'>Main Page#And#Link</a></p>
7935 [[Talk:Parser testing]], [[Meta:Disclaimers]]
7937 <p><a href="/index.php?title=Talk:Parser_testing&action=edit&redlink=1" class="new" title="Talk:Parser testing (page does not exist)">Talk:Parser testing</a>, <a href="/index.php?title=Meta:Disclaimers&action=edit&redlink=1" class="new" title="Meta:Disclaimers (page does not exist)">Meta:Disclaimers</a>
7942 Link with space in namespace
7944 [[User talk:Foo bar]]
7946 <p><a href="/index.php?title=User_talk:Foo_bar&action=edit&redlink=1" class="new" title="User talk:Foo bar (page does not exist)">User talk:Foo bar</a>
7951 MemoryAlpha:AlphaTest
7953 This is an article in the MemoryAlpha namespace
7954 (which shadows the memoryalpha interwiki link).
7958 Namespace takes precedence over interwiki link (T53680)
7960 [[MemoryAlpha:AlphaTest]]
7962 <p><a href="/wiki/MemoryAlpha:AlphaTest" title="MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a>
7966 # The previous test doesn't work correctly in html2*, due to not recognizing the
7967 # link as an internal one. This one checks for the correct behavior.
7969 Link to namespace preferred over interwiki with correct rel attribute
7971 parsoid=html2wt,html2html
7973 <p><a rel="mw:WikiLink" href="./MemoryAlpha:AlphaTest" title="MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a></p>
7975 [[MemoryAlpha:AlphaTest]]
7979 Piped link to namespace
7981 [[Meta:Disclaimers|The disclaimers]]
7983 <p><a href="/index.php?title=Meta:Disclaimers&action=edit&redlink=1" class="new" title="Meta:Disclaimers (page does not exist)">The disclaimers</a>
7990 [[Usually caused by a typo (oops}]]
7992 <p>[[Usually caused by a typo (oops}]]
7999 Just a test of an article title containing a percent.
8003 Link containing % (not as a hex sequence)
8006 [[7% Solution|7%25 Solution]]
8008 <p><a href="/wiki/7%25_Solution" title="7% Solution">7% Solution</a>
8009 <a href="/wiki/7%25_Solution" title="7% Solution">7%25 Solution</a>
8012 <p><a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7% Solution</a>
8013 <a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7%25 Solution</a></p>
8016 # note that the parsoid HTML is identical to the previous test output,
8017 # so the previous test ensures that the html2wt mode will generate the
8018 # "not as a hex sequence" wikitext.
8020 Link containing % as a single hex sequence interpreted to char
8022 parsoid=wt2wt,wt2html,html2html
8025 [[7%25 Solution|7%25 Solution]]
8027 <p><a href="/wiki/7%25_Solution" title="7% Solution">7% Solution</a>
8028 <a href="/wiki/7%25_Solution" title="7% Solution">7%25 Solution</a>
8031 <p><a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7% Solution</a>
8032 <a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7%25 Solution</a></p>
8036 Link containing % as a double hex sequence interpreted to hex sequence
8040 <p>[[7%2525 Solution]]
8044 ## Example for such a section: == < ==
8046 Link containing "#<" and "#>" % as a hex sequences- these are valid section anchors
8050 wgFragmentMode=[ 'html5', 'legacy' ]
8052 [[%23%3c]][[%23%3e]]
8054 <p><a href="#<">#<</a><a href="#>">#></a>
8057 <p><a rel="mw:WikiLink" href="./Main_Page#<" title="Main Page" data-parsoid='{"stx":"simple","a":{"href":"./Main_Page#<"},"sa":{"href":"%23%3c"}}'>#<</a><a rel="mw:WikiLink" href="./Main_Page#>" title="Main Page" data-parsoid='{"stx":"simple","a":{"href":"./Main_Page#>"},"sa":{"href":"%23%3e"}}'>#></a></p>
8060 ## Example for such a section: == < ==
8062 Link containing "#<" and "#>" % as a hex sequences- these are valid section anchors (legacy)
8064 wgFragmentMode=[ 'legacy' ]
8066 [[%23%3c]][[%23%3e]]
8068 <p><a href="#.3C">#<</a><a href="#.3E">#></a>
8073 Link containing "<#" and ">#" as a hex sequences
8075 [[%3c%23]][[%3e%23]]
8077 <p>[[%3c%23]][[%3e%23]]
8082 Link containing an equals sign
8084 [[Special:BookSources/isbn=4-00-026157-6]]
8086 <p><a href="/wiki/Special:BookSources/isbn%3D4-00-026157-6" title="Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a>
8089 <p><a rel="mw:WikiLink" href="./Special:BookSources/isbn=4-00-026157-6" title="Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a></p>
8095 Just a test of an article title containing an ampersand
8099 Link containing an ampersand
8105 [[Foo &amp; bar]]
8107 <p><a href="/wiki/Foo_%26_bar" title="Foo & bar">Foo & bar</a>
8108 </p><p><a href="/wiki/Foo_%26_bar" title="Foo & bar">Foo & bar</a>
8109 </p><p>[[Foo &amp; bar]]
8112 <p><a rel="mw:WikiLink" href="./Foo_&_bar" title="Foo & bar">Foo & bar</a></p>
8113 <p><a rel="mw:WikiLink" href="./Foo_&_bar" title="Foo & bar" data-parsoid='{"stx":"simple","a":{"href":"./Foo_&_bar"},"sa":{"href":"Foo &amp; bar"}}'>Foo & bar</a></p>
8114 <p>[[Foo <span typeof="mw:Entity" data-parsoid='{"src":"&amp;","srcContent":"&"}'>&</span>amp; bar]]</p>
8120 Just a test of an article title containing a tilde.
8123 # note that links containing signatures, like [[Foo~~~~]], are
8124 # massaged by the pre-save transform (PST) and so the tildes are never
8125 # seen by the parser.
8127 Link containing a tilde
8131 <p><a href="/wiki/Foo~bar" title="Foo~bar">Foo~bar</a>
8134 <p><a rel="mw:WikiLink" href="./Foo~bar" title="Foo~bar">Foo~bar</a></p>
8138 Link containing double-single-quotes '' (T6598)
8140 [[Lista d''e paise d''o munno]]
8142 <p><a href="/index.php?title=Lista_d%27%27e_paise_d%27%27o_munno&action=edit&redlink=1" class="new" title="Lista d''e paise d''o munno (page does not exist)">Lista d''e paise d''o munno</a>
8145 <p><a rel="mw:WikiLink" href="./Lista_d''e_paise_d''o_munno" title="Lista d''e paise d''o munno">Lista d''e paise d''o munno</a></p>
8149 Link containing double quotes and spaces
8153 <p><a href="/index.php?title=Cool_%22Gator%22&action=edit&redlink=1" class="new" title="Cool "Gator" (page does not exist)">Cool "Gator"</a>
8156 <p><a rel="mw:WikiLink" href='./Cool_"Gator"' title='Cool "Gator"'>Cool "Gator"</a></p>
8160 File containing double quotes and spaces
8162 [[File:Cool "Gator".png]]
8164 <p><figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Cool_%22Gator%22.png" data-parsoid='{"a":{"href":"./File:Cool_%22Gator%22.png"},"sa":{"href":"File:Cool \"Gator\".png"}}'><img resource='./File:Cool_"Gator".png' src="./Special:FilePath/Cool_%22Gator%22.png" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Cool_\"Gator\".png","height":"220","width":"220","src":"./Special:FilePath/Cool_%22Gator%22.png"},"sa":{"resource":"File:Cool \"Gator\".png","src":"./Special:FilePath/Cool_\"Gator\".png"}}'/></a></figure-inline></p>
8168 Redirect containing double quotes and spaces
8170 #REDIRECT [[Cool "Gator"]]
8172 <link rel="mw:PageProp/redirect" href="./Cool_%22Gator%22" data-parsoid='{"src":"#REDIRECT ","a":{"href":"./Cool_%22Gator%22"},"sa":{"href":"Cool \"Gator\""}}'/>
8176 Link containing double-single-quotes '' in text (T6598 sanity check)
8178 Some [[Link|pretty ''italics'' and stuff]]!
8180 <p>Some <a href="/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">pretty <i>italics</i> and stuff</a>!
8183 <p>Some <a rel="mw:WikiLink" href="./Link" title="Link">pretty <i>italics</i> and stuff</a>!</p>
8187 Link containing double-single-quotes '' in text embedded in italics (T6598 sanity check)
8189 ''Some [[Link|pretty ''italics'' and stuff]]!''
8191 <p><i>Some <a href="/index.php?title=Link&action=edit&redlink=1" class="new" title="Link (page does not exist)">pretty <i>italics</i> and stuff</a>!</i>
8196 Link with double quotes in title part (literal) and alternate part (interpreted)
8198 [[File:Denys_Savchenko_''Pentecoste''.jpg]]
8202 [[''Pentecoste''|Pentecoste]]
8204 [[''Pentecoste''|''Pentecoste'']]
8206 <p><a href="/index.php?title=Special:Upload&wpDestFile=Denys_Savchenko_%27%27Pentecoste%27%27.jpg" class="new" title="File:Denys Savchenko ''Pentecoste''.jpg">File:Denys Savchenko <i>Pentecoste</i>.jpg</a>
8207 </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&action=edit&redlink=1" class="new" title="''Pentecoste'' (page does not exist)">''Pentecoste''</a>
8208 </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&action=edit&redlink=1" class="new" title="''Pentecoste'' (page does not exist)">Pentecoste</a>
8209 </p><p><a href="/index.php?title=%27%27Pentecoste%27%27&action=edit&redlink=1" class="new" title="''Pentecoste'' (page does not exist)"><i>Pentecoste</i></a>
8212 <p><figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Denys_Savchenko_''Pentecoste''.jpg"><img resource="./File:Denys_Savchenko_''Pentecoste''.jpg" src="./Special:FilePath/Denys_Savchenko_''Pentecoste''.jpg" height="220" width="220"/></a></figure-inline></p>
8213 <p><a rel="mw:WikiLink" href="./''Pentecoste''" title="''Pentecoste''">''Pentecoste''</a></p>
8214 <p><a rel="mw:WikiLink" href="./''Pentecoste''" title="''Pentecoste''">Pentecoste</a></p>
8215 <p><a rel="mw:WikiLink" href="./''Pentecoste''" title="''Pentecoste''"><i>Pentecoste</i></a></p>
8219 Broken image links with HTML captions (T41700)
8221 [[File:Nonexistent|<script></script>]]
8222 [[File:Nonexistent|100x100px|<script></script>]]
8223 [[File:Nonexistent|<]]
8224 [[File:Nonexistent|a<i>b</i>c]]
8226 <p><a href="/index.php?title=Special:Upload&wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><script></script></a>
8227 <a href="/index.php?title=Special:Upload&wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><script></script></a>
8228 <a href="/index.php?title=Special:Upload&wpDestFile=Nonexistent" class="new" title="File:Nonexistent"><</a>
8229 <a href="/index.php?title=Special:Upload&wpDestFile=Nonexistent" class="new" title="File:Nonexistent">abc</a>
8232 <p><figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"<script></script>"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"&lt;script>&lt;/script>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></figure-inline>
8233 <figure-inline typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"100x100px"},{"ck":"caption","ak":"<script></script>"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"&lt;script>&lt;/script>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="100" width="100" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"100","width":"100"},"sa":{"resource":"File:Nonexistent"}}'/></a></figure-inline>
8234 <figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"&lt;"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"<span typeof=\"mw:Entity\" data-parsoid='{\"src\":\"&amp;lt;\",\"srcContent\":\"&lt;\",\"dsr\":[107,111,null,null]}'>&lt;</span>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></figure-inline>
8235 <figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"a<i>b</i>c"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"a<i data-parsoid='{\"stx\":\"html\",\"dsr\":[134,142,3,4]}'>b</i>c"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Nonexistent","height":"220","width":"220"},"sa":{"resource":"File:Nonexistent"}}'/></a></figure-inline></p>
8241 [[http://www.example.com]]
8243 <p>[<a rel="nofollow" class="external autonumber" href="http://www.example.com">[1]</a>]
8246 <p>[<a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com"></a>]</p>
8250 Plain link to URL with link text
8252 [[http://www.example.com Link text]]
8254 <p>[<a rel="nofollow" class="external text" href="http://www.example.com">Link text</a>]
8259 Plain link to protocol-relative URL
8261 [[//www.example.com]]
8263 <p>[<a rel="nofollow" class="external autonumber" href="//www.example.com">[1]</a>]
8266 <p>[<a rel="mw:ExtLink" class="external autonumber" href="//www.example.com"></a>]</p>
8270 Plain link to protocol-relative URL with link text
8272 [[//www.example.com Link text]]
8274 <p>[<a rel="nofollow" class="external text" href="//www.example.com">Link text</a>]
8279 Plain link to page with question mark in title
8285 <p><a href="/wiki/A%3Fb" title="A?b">A?b</a>
8286 </p><p><a href="/wiki/A%3Fb" title="A?b">Baz</a>
8290 # I'm fairly sure the expected result here is wrong.
8291 # We want these to be URL links, not pseudo-pages with URLs for titles....
8292 # However the current output is also pretty screwy.
8295 # I'm changing it to match the current output--it arguably makes more
8296 # sense in the light of the test above. Old expected result was:
8297 #<p>Piped link to URL: <a href="/index.php?title=Http://www.example.com&action=edit" class="new">an example URL</a>
8299 # But I think this test is bordering on "garbage in, garbage out" anyway.
8304 Piped link to URL: [[http://www.example.com|an example URL]]
8306 <p>Piped link to URL: [<a rel="nofollow" class="external text" href="http://www.example.com%7Can">example URL</a>]
8309 <p>Piped link to URL: [<a rel="mw:ExtLink" class="external text" href="http://www.example.com%7Can" data-parsoid='{"a":{"href":"http://www.example.com%7Can"},"sa":{"href":"http://www.example.com|an"}}'>example URL</a>]</p>
8313 Plain link in template argument
8317 {{echo|[http://www.example.com |123]}}
8319 {{echo|[[http://www.example.com |123]]}}
8321 {{echo|[[http://www.example.com |123]}}
8323 {{echo|[http://www.example.com |123]]}}
8325 <p>[<a rel="nofollow" class="external free" href="http://www.example.com">http://www.example.com</a>
8326 </p><p>[<a rel="nofollow" class="external text" href="http://www.example.com">|123</a>]
8327 </p><p>{{echo|[<a rel="nofollow" class="external text" href="http://www.example.com">|123</a>}}
8328 </p><p>[<a rel="nofollow" class="external free" href="http://www.example.com">http://www.example.com</a>
8331 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external free" href="http://www.example.com">http://www.example.com</a> </p>
8333 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[http://www.example.com |123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external text" href="http://www.example.com">|123</a>]</p>
8335 <p>{{echo|[<a rel="mw:ExtLink" class="external text" href="http://www.example.com" data-parsoid='{"targetOff":114,"contentOffsets":[114,118],"dsr":[90,119,24,1]}'>|123</a>}}</p>
8337 <p about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external free" href="http://www.example.com">http://www.example.com</a> </p>
8341 T2002: [[page|http://url/]] should link to page, not http://url/
8343 [[Main Page|http://url/]]
8345 <p><a href="/wiki/Main_Page" title="Main Page">http://url/</a>
8348 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">http://url/</a></p>
8351 # Parsoid does not mark self-links, by design.
8353 T2337: Escaped self-links should be bold
8357 [[Bug462]] [[Bug462]]
8359 <p><a class="mw-selflink selflink">Bug462</a> <a class="mw-selflink selflink">Bug462</a>
8362 <p><a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a> <a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a></p>
8366 Self-link to section should not be bold
8370 [[Main Page#section]]
8372 <p><a href="/wiki/Main_Page#section" title="Main Page">Main Page#section</a>
8383 Self-link to numeric title
8389 <p><a class="mw-selflink selflink">0</a>
8394 Link to numeric-equivalent title
8400 <p><a href="/wiki/00" title="00">00</a>
8405 <nowiki> inside a link
8407 [[Main<nowiki> Page</nowiki>]] [[Main Page|the main page <nowiki>[it's not very good]</nowiki>]]
8409 <p>[[Main Page]] <a href="/wiki/Main_Page" title="Main Page">the main page [it's not very good]</a>
8414 Non-breaking spaces in title
8416 [[ Main Page ]]
8418 <p><a href="/wiki/Main_Page" title="Main Page">  Main   Page  </a>
8422 # Add new article for the test below so that it doesn't red-link
8430 Multiple spaces in titles should normalize to a single underscore
8432 parsoid=wt2html,wt2wt
8438 <p><a href="/wiki/Foo_bar_baz" title="Foo bar baz">x</a>
8439 <a href="/wiki/Foo_bar_baz" title="Foo bar baz">x</a>
8440 <a href="/wiki/Foo_bar_baz" title="Foo bar baz">x</a>
8443 <p><a rel="mw:WikiLink" href="./Foo_bar_baz" title="Foo bar baz">x</a>
8444 <a rel="mw:WikiLink" href="./Foo_bar_baz" title="Foo bar baz">x</a>
8445 <a rel="mw:WikiLink" href="./Foo_bar_baz" title="Foo bar baz">x</a>
8450 Internal link with ca linktrail, surrounded by bold apostrophes (T29473 primary issue)
8456 <p><b><a href="/wiki/Main_Page" title="Main Page">Main Page</a></b>
8461 Internal link with ca linktrail, surrounded by italic apostrophes (T29473 primary issue)
8467 <p><i><a href="/wiki/Main_Page" title="Main Page">Main Page</a></i>
8472 Internal link with en linktrail: no apostrophes (T29473)
8478 <p><a href="/index.php?title=Something&action=edit&redlink=1" class="new" title="Something (page does not exist)">Something</a>'nice
8483 Internal link with ca linktrail with apostrophes (T29473)
8489 <p><a href="/index.php?title=Something&action=edit&redlink=1" class="new" title="Something (encara no existeix)">Something'nice</a>
8494 Internal link with kaa linktrail with apostrophes (T29473)
8500 <p><a href="/index.php?title=Something&action=edit&redlink=1" class="new" title="Something (bet ele jaratılmag'an)">Something'nice</a>
8505 Link with multiple ":" in a subpage-supporting namespace (T65636)
8507 [[User:Foo/Test/63636:Bar|Test]]
8509 <p><a href="/index.php?title=User:Foo/Test/63636:Bar&action=edit&redlink=1" class="new" title="User:Foo/Test/63636:Bar (page does not exist)">Test</a>
8512 <p><a rel="mw:WikiLink" href="./User:Foo/Test/63636:Bar" title="User:Foo/Test/63636:Bar">Test</a></p>
8515 ## Mainly a sanity check for Parsoid
8517 Handle title parsing for subpages
8537 Link to a subpage from a namespace other than main
8544 <p><a href="/wiki/User:Test/123" title="User:Test/123">/123</a>
8547 <p><a rel="mw:WikiLink" href="./User:Test/123" title="User:Test/123" data-parsoid='{"stx":"simple","a":{"href":"./User:Test/123"},"sa":{"href":"/123"}}'>/123</a></p>
8551 Ensure that transclusion titles are not url-decoded
8553 subpage title=[[Test]]
8556 {{Bar%C3%A9}} {{/Bar%C3%A9}}
8558 <p>{{Bar%C3%A9}} {{/Bar%C3%A9}}
8561 <p>{{Bar%C3%A9}} {{/Bar%C3%A9}}</p>
8565 Purely hash wikilink
8567 title=[[User:Test/123]]
8572 <p><a href="#a">b</a>
8575 <p><a rel="mw:WikiLink" href="./User:Test/123#a" data-parsoid='{"stx":"piped","a":{"href":"./User:Test/123#a"},"sa":{"href":"#a"}}'>b</a></p>
8579 Serialization of purely hash wikilink
8581 title=[[User:Test/123]]
8585 <p><a href="#a">[[</a></p>
8587 [[#a|<nowiki>[[</nowiki>]]
8589 <p><a href="#a">[[</a>
8594 1. Interaction of linktrail and template encapsulation
8598 <p><a href="/wiki/Foo" title="Foo">Fool</a>
8601 <p><a rel="mw:WikiLink" href="./Foo" title="Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo]]"}},"i":0}},"l"]}'>Fool</a></p>
8605 2. Interaction of linktrail and template encapsulation
8607 {{echo|Some [[Fool]]}}s
8609 <p>Some <a href="/index.php?title=Fool&action=edit&redlink=1" class="new" title="Fool (page does not exist)">Fools</a>
8612 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]"}},"i":0}},"s"]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>Some </span><a rel="mw:WikiLink" href="./Fool" title="Fool" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a></p>
8616 3. Interaction of linktrail and template encapsulation
8618 {{echo|Some [[Fool]]s are '''bold and foolish'''}}
8620 <p>Some <a href="/index.php?title=Fool&action=edit&redlink=1" class="new" title="Fool (page does not exist)">Fools</a> are <b>bold and foolish</b>
8623 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]s are '''bold and foolish'''"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>Some <a rel="mw:WikiLink" href="./Fool" title="Fool" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a> are <b>bold and foolish</b></p>
8633 Internal link with is link prefix
8637 Aðrir mótmælenda[[söfnuður|söfnuðir]] og
8639 <p>Aðrir <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuðir</a> og
8650 Internal link with is link trail and link prefix
8654 [[mótmælendatrú|xxx]]ar
8656 mótmælenda[[söfnuður]]
8657 mótmælenda[[söfnuður|söfnuðir]]
8658 mótmælenda[[söfnuður|söfnuðir]]xxx
8660 <p><a href="/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA" title="Mótmælendatrú">xxxar</a>
8661 <a href="/wiki/M%C3%B3tm%C3%A6lendatr%C3%BA" title="Mótmælendatrú">mótmælendatrúar</a>
8662 <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuður</a>
8663 <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuðir</a>
8664 <a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">mótmælendasöfnuðirxxx</a>
8669 Parsoid link trail escaping
8671 parsoid=html2wt,html2html
8673 <p><a rel="mw:WikiLink" href="./Apple" title="Apple">apple</a>s</p>
8679 Parsoid link prefix escaping
8682 parsoid=html2wt,html2html
8684 <p>Aðrir mótmælenda<a rel="mw:WikiLink" href="./Söfnuður" title="Söfnuður">söfnuður</a></p>
8686 Aðrir mótmælenda<nowiki/>[[söfnuður]]
8690 Parsoid link bracket escaping
8692 parsoid=html2wt,html2html
8694 <p><a rel="mw:WikiLink" href="./Test" title="Test">Test</a></p>
8695 <p>[<a rel="mw:WikiLink" href="./Test" title="Test">Test</a>]</p>
8696 <p>[[<a rel="mw:WikiLink" href="./Test" title="Test">Test</a>]]</p>
8697 <p>[[[<a rel="mw:WikiLink" href="./Test" title="Test">Test</a>]]]</p>
8698 <p>[[[[<a rel="mw:WikiLink" href="./Test" title="Test">Test</a>]]]]</p>
8699 <p>[[[[[<a rel="mw:WikiLink" href="./Test" title="Test">Test</a>]]]]]</p>
8707 [[[<nowiki/>[[Test]]]]]
8711 [[[[[<nowiki/>[[Test]]]]]]]
8715 Parsoid-centric test: Whitespace in ext- and wiki-links should be preserved
8723 [http://wp.org ''foo'']
8725 <p><a href="/wiki/Foo" title="Foo"> bar</a>
8726 </p><p><a href="/wiki/Foo" title="Foo"> <i>bar</i></a>
8727 </p><p><a rel="nofollow" class="external text" href="http://wp.org">foo</a>
8728 </p><p><a rel="nofollow" class="external text" href="http://wp.org"><i>foo</i></a>
8733 Parsoid: Scoped parsing should handle mixed transclusions and plain text
8735 [[Foo|{{echo|a}} b {{echo|c}}]]
8737 <p><a rel="mw:WikiLink" href="./Foo" title="Foo"><span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a"}},"i":0}}]}'>a</span> b <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"c"}},"i":0}}]}'>c</span></a></p>
8741 Link with angle bracket after anchor
8743 wgFragmentMode=[ 'html5', 'legacy' ]
8747 <p><a href="/wiki/Foo#<bar>" title="Foo">Foo#<bar></a>
8750 <p><a rel="mw:WikiLink" href="./Foo#<bar>" title="Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo#<bar>"},"sa":{"href":"Foo#<bar>"}}'>Foo#<bar></a></p>
8754 Link with angle bracket after anchor (legacy)
8756 wgFragmentMode=[ 'legacy' ]
8760 <p><a href="/wiki/Foo#.3Cbar.3E" title="Foo">Foo#<bar></a>
8765 ### Interwiki links (see maintenance/interwiki.sql)
8769 Inline interwiki link
8771 parsoid=wt2html,wt2wt,html2html
8773 [[MeatBall:SoftSecurity]]
8775 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" class="extiw" title="meatball:SoftSecurity">MeatBall:SoftSecurity</a>
8778 <p><a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" title="meatball:SoftSecurity">MeatBall:SoftSecurity</a></p>
8782 Inline interwiki link with empty title (T4372)
8784 parsoid=wt2html,wt2wt,html2html
8788 <p><a href="http://www.usemod.com/cgi-bin/mb.pl" class="extiw" title="meatball:">MeatBall:</a>
8791 <p><a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?" title="meatball:">MeatBall:</a></p>
8794 ## html2wt and html2html will fail because we will prefer the :en: interwiki prefix over wikipedia:
8796 Interwiki link encoding conversion (T3636)
8798 parsoid=wt2html,wt2wt
8800 *[[Wikipedia:ro:Olteniţa]]
8801 *[[Wikipedia:ro:Olteniţa]]
8803 <ul><li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
8804 <li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li></ul>
8807 <ul><li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
8808 <li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li></ul>
8811 <li><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/ro:Olteniţa" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
8812 <li><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/ro:Olteniţa" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
8817 Interwiki link with fragment (T4130)
8819 [[MeatBall:SoftSecurity#foo]]
8821 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity#foo" class="extiw" title="meatball:SoftSecurity">MeatBall:SoftSecurity#foo</a>
8826 Link scenarios with escaped fragments
8830 wgFragmentMode=[ 'html5', 'legacy' ]
8833 [[Foo#Is this great?]]
8834 [[meatball:Foo#Is this great?]]
8836 <p><a href="#Is_this_great?">#Is this great?</a>
8837 <a href="/wiki/Foo#Is_this_great?" title="Foo">Foo#Is this great?</a>
8838 <a href="http://www.usemod.com/cgi-bin/mb.pl?Foo#Is_this_great.3F" class="extiw" title="meatball:Foo">meatball:Foo#Is this great?</a>
8841 <p><a rel="mw:WikiLink" href="./Main_Page#Is_this_great?" data-parsoid='{"stx":"simple","a":{"href":"./Main_Page#Is_this_great?"},"sa":{"href":"#Is this great?"}}'>#Is this great?</a>
8842 <a rel="mw:WikiLink" href="./Foo#Is_this_great?" title="Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo#Is_this_great?"},"sa":{"href":"Foo#Is this great?"}}'>Foo#Is this great?</a>
8843 <a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?Foo#Is_this_great?" title="meatball:Foo" data-parsoid='{"stx":"simple","a":{"href":"http://www.usemod.com/cgi-bin/mb.pl?Foo#Is_this_great?"},"sa":{"href":"meatball:Foo#Is this great?"},"isIW":true}'>meatball:Foo#Is this great?</a></p>
8847 Link scenarios with escaped fragments (legacy)
8849 wgFragmentMode=[ 'legacy' ]
8852 [[Foo#Is this great?]]
8853 [[meatball:Foo#Is this great?]]
8855 <p><a href="#Is_this_great.3F">#Is this great?</a>
8856 <a href="/wiki/Foo#Is_this_great.3F" title="Foo">Foo#Is this great?</a>
8857 <a href="http://www.usemod.com/cgi-bin/mb.pl?Foo#Is_this_great.3F" class="extiw" title="meatball:Foo">meatball:Foo#Is this great?</a>
8861 # Ideally the wikipedia: prefix here should be proto-relative too
8862 # [CSA]: this is kind of a bogus test, as the PHP parser test doesn't
8863 # define the 'en' prefix, and originally the test used 'wikipedia',
8864 # which isn't a localinterwiki prefix hence the links to the 'en:Foo'
8867 Different interwiki prefixes mapping to the same URL
8875 [[:wikipedia:Foo|Foo]]
8877 [[wikipedia:en:Foo]]
8879 [[:wikipedia:en:Foo]]
8883 <p><a rel="mw:WikiLink/Interwiki" href="//en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"//en.wikipedia.org/wiki/Foo"},"sa":{"href":":en:Foo"},"isIW":true}' title="en:Foo">en:Foo</a></p>
8885 <p><a rel="mw:WikiLink/Interwiki" href="//en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"piped","a":{"href":"//en.wikipedia.org/wiki/Foo"},"sa":{"href":":en:Foo"},"isIW":true}' title="en:Foo">Foo</a></p>
8887 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":"wikipedia:Foo"},"isIW":true}' title="wikipedia:Foo">wikipedia:Foo</a></p>
8889 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"piped","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":":wikipedia:Foo"},"isIW":true}' title="wikipedia:Foo">Foo</a></p>
8891 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/en:Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/en:Foo"},"sa":{"href":"wikipedia:en:Foo"},"isIW":true}' title="wikipedia:en:Foo">wikipedia:en:Foo</a></p>
8893 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/en:Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/en:Foo"},"sa":{"href":":wikipedia:en:Foo"},"isIW":true}' title="wikipedia:en:Foo">wikipedia:en:Foo</a></p>
8895 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":" wikiPEdia :Foo"},"isIW":true}' title="wikipedia:Foo"> wikiPEdia :Foo</a></p>
8899 Interwiki links that cannot be represented in wiki syntax
8902 [[meatball:ok#foo|ok with fragment]]
8903 [[meatball:ok_as_well?|ok ending with ? mark]]
8904 [http://de.wikipedia.org/wiki/Foo?action=history has query]
8905 [http://de.wikipedia.org/wiki/#foo is just fragment]
8908 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?ok" class="extiw" title="meatball:ok">meatball:ok</a>
8909 <a href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo" class="extiw" title="meatball:ok">ok with fragment</a>
8910 <a href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well%3F" class="extiw" title="meatball:ok as well?">ok ending with ? mark</a>
8911 <a rel="nofollow" class="external text" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
8912 <a rel="nofollow" class="external text" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a>
8915 <p><a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?ok" title="meatball:ok">meatball:ok</a>
8916 <a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo" title="meatball:ok">ok with fragment</a>
8917 <a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well%3F" title="meatball:ok as well?">ok ending with ? mark</a>
8918 <a rel="mw:ExtLink" class="external text" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
8919 <a rel="mw:ExtLink" class="external text" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a></p>
8923 Interwiki links: trail
8925 [[wikipedia:Foo|Ba]]r
8927 <p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo">Bar</a>
8930 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"piped","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":"wikipedia:Foo"},"isIW":true,"tail":"r"}' title="wikipedia:Foo">Bar</a></p>
8934 Local interwiki link
8936 parsoid=wt2html,wt2wt,html2html
8938 [[local:Template:Foo]]
8940 <p><a href="/wiki/Template:Foo" title="Template:Foo">local:Template:Foo</a>
8943 <p><a rel="mw:WikiLink" href="./Template:Foo" title="Template:Foo">local:Template:Foo</a></p>
8946 # Parsoid does not mark self-links, by design.
8948 Local interwiki link: self-link to current page
8951 parsoid=wt2html,wt2wt,html2html
8955 <p><a class="mw-selflink selflink">local:Main Page</a>
8958 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">local:Main Page</a></p>
8962 Local interwiki link: prefix only (T66167)
8964 parsoid=wt2html,wt2wt,html2html
8968 <p><a href="/wiki/Main_Page" title="Main Page">local:</a>
8971 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">local:</a></p>
8975 Local interwiki link: with additional interwiki prefix (T63357)
8977 parsoid=wt2html,wt2wt,html2html
8979 [[local:meatball:Hello]]
8981 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?Hello" class="extiw" title="meatball:Hello">local:meatball:Hello</a>
8984 <p><a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?Hello" title="meatball:Hello">local:meatball:Hello</a></p>
8988 Multiple local interwiki link prefixes
8990 [[local:local:local:local:mi:local:Foo]]
8992 parsoid=wt2html,wt2wt,html2html
8994 <p><a href="/wiki/Foo" title="Foo">local:local:local:local:mi:local:Foo</a>
8997 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">local:local:local:local:mi:local:Foo</a></p>
9001 Interwiki link with percent encoded target
9003 [[:es:Nueva Guip%C3%BAzcoa|Nueva Guipúzcoa]]
9005 <p><a href="http://es.wikipedia.org/wiki/Nueva_Guip%C3%BAzcoa" class="extiw" title="es:Nueva Guipúzcoa">Nueva Guipúzcoa</a>
9008 <p><a rel="mw:WikiLink/Interwiki" href="http://es.wikipedia.org/wiki/Nueva%20Guipúzcoa" title="es:Nueva Guipúzcoa" data-parsoid='{"stx":"piped","a":{"href":"http://es.wikipedia.org/wiki/Nueva%20Guipúzcoa"},"sa":{"href":":es:Nueva Guip%C3%BAzcoa"},"isIW":true}'>Nueva Guipúzcoa</a></p>
9012 ### Interlanguage links
9013 ### Language links (so that searching for '### language' matches..)
9025 <p>Blah blah blah</p>
9026 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
9029 ## parsoid html2wt will lose the space variations
9031 Interlanguage link with spacing
9033 parsoid=wt2html,wt2wt,html2html
9041 <p>Blah blah blah</p>
9042 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
9046 Double interlanguage link
9055 <p>Blah blah blah</p>
9056 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Spanish"/>
9057 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
9060 ## parsoid html2wt will lose the space variations
9062 Interlanguage link variations
9064 parsoid=wt2html,wt2wt,html2html
9074 <p>Blah blah blah</p>
9075 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Spanish" />
9076 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese" />
9077 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Foo_bar" />
9081 Escaping of interlanguage links (T129218, T156308)
9085 [[ : zh : Chinese ]]
9088 <a href="http://es.wikipedia.org/wiki/Spanish" class="extiw" title="es:Spanish">es:Spanish</a>
9089 <a href="http://zh.wikipedia.org/wiki/Chinese" class="extiw" title="zh:Chinese"> zh : Chinese </a>
9093 <a rel="mw:WikiLink/Interwiki" href="http://es.wikipedia.org/wiki/Spanish" title="es:Spanish">es:Spanish</a>
9094 <a rel="mw:WikiLink/Interwiki" href="http://zh.wikipedia.org/wiki/Chinese" title="zh:Chinese"> zh : Chinese </a></p>
9098 Multiple colons escaping interlanguage links
9106 <p><a href="http://es.wikipedia.org/wiki/Spanish" class="extiw" title="es:Spanish">es:Spanish</a>
9111 <p><a rel="mw:WikiLink/Interwiki" href="http://es.wikipedia.org/wiki/Spanish" title="es:Spanish">es:Spanish</a>
9113 [[:::es:Spanish]]</p>
9116 ## parsoid html2wt will normalize the space to _
9118 Space and question mark encoding in interlanguage links (T95473)
9120 parsoid=wt2html,wt2wt,html2html
9128 <p>Blah blah blah</p>
9129 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Foo_bar%3F" />
9133 Interlanguage link, with prefix links
9143 <p>Blah blah blah</p>
9144 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
9148 Double interlanguage link, with prefix links (T10897)
9159 <p>Blah blah blah</p>
9160 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Spanish"/>
9161 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/Chinese"/>
9165 "Extra" interlanguage links (T34189 / gerrit 111390)
9173 <p>Blah blah blah</p>
9174 <link rel="mw:PageProp/Language" title="Multilingual" href="http://wikisource.org/wiki/Article"/>
9177 ## PHP parser tests script needs an update
9178 ## Parsoid html2wt will normalize output to [[:zh:Chinese]]
9180 Language links render as inline links if $wgInterwikiMagic=false
9182 wgInterwikiMagic=false
9183 parsoid=wt2html,wt2wt,html2html
9188 <p>Blah blah blah <a rel="mw:WikiLink/Interwiki" href="http://zh.wikipedia.org/wiki/Chinese" title="zh:Chinese">zh:Chinese</a></p>
9191 ## PHP parser tests script needs an update
9192 ## Parsoid html2wt will normalize output to [[:zh:Chinese]]
9194 Language links render as inline links in the Talk namespace
9197 parsoid=wt2html,wt2wt,html2html
9202 <p>Blah blah blah <a rel="mw:WikiLink/Interwiki" href="http://zh.wikipedia.org/wiki/Chinese" title="zh:Chinese">zh:Chinese</a></p>
9206 Parsoid-specific test: Wikilinks with should RT properly
9212 <p><a href="/index.php?title=WW_II&action=edit&redlink=1" class="new" title="WW II (lonkásá ezalí tɛ̂)">WW II</a>
9217 Parsoid T55221: Wikilinks should be properly entity-escaped
9219 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
9221 <p>He&nbsp;llo <a href="./Foo" rel="mw:WikiLink">He&nbsp;llo</a></p>
9222 <p>He&nbsp;llo <a href="./He&nbsp;llo" rel="mw:WikiLink">He&nbsp;llo</a></p>
9224 He&nbsp;llo [[Foo|He&nbsp;llo]]
9226 He&nbsp;llo He&nbsp;llo
9228 <p>He&nbsp;llo <a href="/wiki/Foo" title="Foo">He&nbsp;llo</a>
9229 </p><p>He&nbsp;llo He&nbsp;llo
9233 # html2wt will fail because of title normalization without data-parsoid
9235 Parsoid: handle constructor well
9237 parsoid=wt2html,wt2wt
9243 <p><a href="/index.php?title=Constructor&action=edit&redlink=1" class="new" title="Constructor (page does not exist)">constructor</a>
9244 </p><p><a href="/index.php?title=Constructor:foo&action=edit&redlink=1" class="new" title="Constructor:foo (page does not exist)">constructor:foo</a>
9247 <p><a rel="mw:WikiLink" href="./Constructor" title="Constructor" data-parsoid='{"stx":"simple","a":{"href":"./Constructor"},"sa":{"href":"constructor"}}'>constructor</a></p>
9249 <p><a rel="mw:WikiLink" href="./Constructor:foo" title="Constructor:foo" data-parsoid='{"stx":"simple","a":{"href":"./Constructor:foo"},"sa":{"href":"constructor:foo"}}'>constructor:foo</a></p>
9253 Template parameter named "constructor"
9255 {{echo| constructor = |hi}}
9257 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"constructor","named":true,"spc":[" "," ",""," "]},{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"},"constructor":{"wt":""}},"i":0}}]}'>hi</p>
9266 # Note that `ko` isn't a known interlanguage prefix
9268 Parsoid: recognize interlanguage links without a target page
9278 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/"/>
9280 <p><a rel="mw:WikiLink" href="./Ko:" title="Ko:">ko:</a></p>
9283 # Note that `ko` isn't a known interwiki prefix
9285 Parsoid: recognize interwiki links without a target page
9287 parsoid=wt2html,wt2wt,html2html
9293 <p><a href="http://es.wikipedia.org/wiki/" class="extiw" title="es:">es:</a>
9294 </p><p><a href="/wiki/Ko:" title="Ko:">ko:</a>
9297 <p><a rel="mw:WikiLink/Interwiki" href="http://es.wikipedia.org/wiki/" title="es:">es:</a></p>
9298 <p><a rel="mw:WikiLink" href="./Ko:" title="Ko:">ko:</a></p>
9302 Handle interwiki links pointing to the current wiki as plain wiki links (T47209)
9306 <p><a href="/wiki/Foo" title="Foo">mi:Foo</a>
9309 <p><a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo"},"sa":{"href":"mi:Foo"}}'>mi:Foo</a></p>
9313 Interlanguage link with preceding local interwiki link (T70085)
9315 parsoid=wt2html,wt2wt,html2html
9318 [[local:es:Spanish]]
9321 <a href="http://es.wikipedia.org/wiki/Spanish" class="extiw" title="es:Spanish">local:es:Spanish</a>
9325 <a rel="mw:WikiLink/Interwiki" href="http://es.wikipedia.org/wiki/Spanish" title="es:Spanish">local:es:Spanish</a></p>
9329 Looks like an interlanguage link, but is actually a local interwiki
9331 parsoid=wt2html,wt2wt,html2html
9337 <a href="/wiki/Template:Foo" title="Template:Foo">mi:Template:Foo</a>
9341 <a rel="mw:WikiLink" href="./Template:Foo" title="Template:Foo">mi:Template:Foo</a></p>
9345 ### Redirects, Parsoid-only
9349 1. Simple redirect to page
9351 #REDIRECT [[Main Page]]
9353 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
9357 2. Other redirect variants
9359 #REDIRECT [[Main_Page]]
9361 <link rel="mw:PageProp/redirect" href="./Main_Page" data-parsoid='{"src":"#REDIRECT ","a":{"href":"./Main_Page"},"sa":{"href":"Main_Page"}}'/>
9364 # Not a valid redirect in PHP (although perhaps it was, once upon a time)
9365 # This tests the Parsoid bail-out code.
9367 3. Other redirect variants
9371 #REDIRECT [[<nowiki>[[Bar]]</nowiki>]]
9373 <ol><li>REDIRECT [[<span typeof="mw:Nowiki">[[Bar]]</span>]]</li></ol>
9377 4. Redirect to a templated destination
9379 #REDIRECT [[{{echo|Foo}}bar]]
9381 <link about="#mwt2" typeof="mw:ExpandedAttrs" rel="mw:PageProp/redirect" href="./Foobar" data-parsoid='{"a":{"href":"./Foobar"},"sa":{"href":"{{echo|Foo}}bar"}}' data-mw='{"attribs":[[{"txt":"href"},{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[12,24,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"Foo\"}},\"i\":0}}]}'>Foo</span>bar"}]]}'/>
9387 parsoid=wt2html,wt2wt
9392 <li>REDIRECT [[]]</li></ol>
9396 Optional colon in #REDIRECT
9398 # the colon is archaic syntax. we support it for wt2html, but we
9399 # don't care that it roundtrips back to the modern syntax.
9400 parsoid=wt2html,html2html
9402 #REDIRECT:[[Main Page]]
9404 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
9408 Whitespace in #REDIRECT with optional colon
9410 # the colon and gratuitous whitespace is archaic syntax. we support
9411 # it for wt2html, but we don't care that it roundtrips back to the
9412 # modern syntax (without extra whitespace)
9413 parsoid=wt2html,html2html
9420 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
9424 Piped link in #REDIRECT
9426 # content after piped link is ignored. we support this syntax,
9427 # but don't care that the piped link is lost when we roundtrip this.
9430 #REDIRECT [[Main Page|bar]]
9432 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
9436 Redirect to category (T104502)
9438 parsoid=wt2html,wt2wt
9440 #REDIRECT [[Category:Foo]]
9442 <link rel="mw:PageProp/redirect" href="./Category:Foo"/>
9446 Redirect to category with URL encoding (T104502)
9450 #REDIRECT [[Category%3AFoo]]
9452 <link rel="mw:PageProp/redirect" href="./Category:Foo"/>
9456 Redirect to category page
9458 #REDIRECT [[:Category:Foo]]
9460 <link rel="mw:PageProp/redirect" href="./Category:Foo"/>
9464 Redirect to image page (1)
9466 #REDIRECT [[File:Wiki.png]]
9468 <link rel="mw:PageProp/redirect" href="./File:Wiki.png"/>
9472 Redirect to image page (2)
9474 #REDIRECT [[Image:Wiki.png]]
9476 <link rel="mw:PageProp/redirect" href="./File:Wiki.png" data-parsoid='{"src":"#REDIRECT ","a":{"href":"./File:Wiki.png"},"sa":{"href":"Image:Wiki.png"}}'/>
9479 # html2wt disabled because wts serializes as "#REDIRECT [[:en:File:Wiki.png]]"
9480 # Next test confirms this.
9482 Redirect to language (1) (T104918)
9484 parsoid=wt2html,wt2wt,html2html
9486 #REDIRECT [[en:File:Wiki.png]]
9488 <link rel="mw:PageProp/redirect" href="//en.wikipedia.org/wiki/File:Wiki.png"/>
9492 Redirect to language (2) (T104918)
9494 #REDIRECT [[:en:File:Wiki.png]]
9496 <link rel="mw:PageProp/redirect" href="//en.wikipedia.org/wiki/File:Wiki.png"/>
9500 Redirect to interwiki (T104918)
9502 #REDIRECT [[meatball:File:Wiki.png]]
9504 <link rel="mw:PageProp/redirect" href="http://www.usemod.com/cgi-bin/mb.pl?File:Wiki.png"/>
9508 Non-English #REDIRECT
9512 #TILVÍSUN [[Main Page]]
9514 <link rel="mw:PageProp/redirect" href="./Main_Page" data-parsoid='{"src":"#TILVÍSUN ","a":{"href":"./Main_Page"},"sa":{"href":"Main Page"}}'/>
9518 Redirect syntax under text isn't considered a redirect
9522 #redirect [[Main Page]]
9525 <ol data-parsoid='{}'><li data-parsoid='{}'>redirect <a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"simple","a":{"href":"./Main_Page"},"sa":{"href":"Main Page"}}'>Main Page</a></li></ol>
9533 <p>Foo<link rel="mw:PageProp/redirect" href="./Foo"/></p>
9540 Redirect followed by block on the same line
9544 #REDIRECT [[Main Page]]<!-- haha -->==hi==
9546 <link rel="mw:PageProp/redirect" href="./Main_Page"/><!-- haha --><h2 id="hi">hi</h2>
9550 Redirect followed by a newline
9552 #REDIRECT [[Main Page]]
9555 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
9560 Redirect followed by multiple newlines
9562 #REDIRECT [[Main Page]]
9567 <link rel="mw:PageProp/redirect" href="./Main_Page"/>
9574 Drop duplicate redirects
9578 <link rel="mw:PageProp/redirect" href="./Foo"/>
9579 <link rel="mw:PageProp/redirect" href="./Bar"/>
9580 <link rel="mw:PageProp/redirect" href="./Baz"/>
9599 Broken br tag sanitization
9607 # TODO: Fix html2html mode (T53055)!
9609 Parsoid: Broken br tag recognition
9623 Incorrecly removing closing slashes from correctly formed XHTML
9625 <br style="clear:both;" />
9627 <p><br style="clear:both;" />
9632 Failing to transform badly formed HTML into correct XHTML
9634 <br style="clear: left;">
9635 <br style="clear: right;">
9636 <br style="clear: both;">
9638 <p><br style="clear: left;" />
9639 <br style="clear: right;" />
9640 <br style="clear: both;" />
9644 ## FIXME: Is Parsoid's acceptance of self-closing html-tags
9645 ## a feature or a bug? See https://phabricator.wikimedia.org/T76962
9647 Handling html with a div self-closing tag
9656 <p><div title />
9660 <p><div title=bar />
9661 <div title=bar/>
9663 <div title="bar/"></div>
9667 <div title="" data-parsoid='{"stx":"html","selfClose":true}'></div>
9668 <div title="" data-parsoid='{"stx":"html","selfClose":true}'></div>
9669 <div title="" data-parsoid='{"stx":"html","autoInsertedEnd":true}'>
9670 <div title="bar" data-parsoid='{"stx":"html","selfClose":true}'></div>
9671 <div title="bar" data-parsoid='{"stx":"html","selfClose":true}'></div>
9672 <div title="bar/" data-parsoid='{"stx":"html","autoInsertedEnd":true}'></div></div>
9676 Elements with solidus in various attribute positions
9678 parsoid=wt2html,html2html
9680 <div cla/ss="123">ha</div>
9682 <div / class="123">ha</div>
9684 <div class= / "123">ha</div>
9687 <div class="123">ha</div>
9688 <div class="/">ha</div>
9690 <div data-parsoid='{"stx":"html","a":{"cla":null,"ss":null},"sa":{"cla":"","ss":"123"}}'>ha</div>
9692 <div class="123" data-parsoid='{"stx":"html"}'>ha</div>
9694 <div class="/" data-parsoid='{"stx":"html","a":{"\"123\"":null},"sa":{"\"123\"":""}}'>ha</div>
9698 Handling html with a br self-closing tag
9725 Horizontal ruler (should it add that extra space?)
9734 foo </p><hr /><p> bar
9739 Horizontal ruler -- 4+ dashes render hr
9748 Horizontal ruler -- eats additional dashes on the same line
9757 Horizontal ruler -- does not collapse dashes on consecutive lines
9768 Horizontal ruler -- <4 dashes render as plain text
9777 Horizontal ruler -- Supports content following dashes on same line
9789 ### Block-level elements
9798 <ul><li>Common list</li>
9800 <li>item 3</li></ul>
9811 <ol><li>Numbered list</li>
9813 <li>item 3</li></ol>
9817 # the switch from level 3 to ordered should not introduce a newline between
9828 ***#Number on level 4
9830 **#Number on level 3
9831 **#Number on level 3
9835 #**Level 3, but ordered
9838 <ol><li>with numbers</li></ol>
9839 <ul><li>and bullets</li></ul>
9840 <ol><li>and numbers</li></ol></li>
9842 <ul><li>bullet level 2
9843 <ul><li>bullet level 3
9844 <ol><li>Number on level 4</li></ol></li></ul></li>
9846 <ol><li>Number on level 3</li>
9847 <li>Number on level 3</li></ol></li></ul>
9848 <ol><li>number level 2</li></ol></li>
9850 <ul><li><ul><li>Level 3</li></ul></li></ul></li></ul>
9851 <ol><li><ul><li><ul><li>Level 3, but ordered</li></ul></li></ul></li></ol>
9856 1. Nested mixed wikitext and html list
9859 *<ul><li>ho</li></ul>
9864 <li><ul><li>ho</li></ul></li>
9866 <ul><li>ho</li></ul></li></ul>
9870 <li><ul data-parsoid='{"stx":"html"}'><li data-parsoid='{"stx":"html"}'>ho</li></ul></li>
9872 <ul><li>ho</li></ul></li></ul>
9876 2. Nested mixed wikitext and html list (incompatible)
9879 :{{echo|<li>ho</li>}}
9882 <dd><li>ho</li></dd></dl>
9886 <dd><li about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<li>ho</li>"}},"i":0}}]}'>ho</li></dd></dl>
9896 <ul><li>bar</li></ul></li></ul>
9906 <ul><li><ul><li>foo</li></ul></li>
9912 Nested lists 3 (first element empty)
9918 <ul><li>bar</li></ul></li></ul>
9923 Nested lists 4 (first element empty)
9928 <ul><li><ul><li></li></ul></li>
9934 Nested lists 5 (both elements empty)
9939 <ul><li><ul><li></li></ul></li>
9945 Nested lists 6 (both elements empty)
9951 <ul><li></li></ul></li></ul>
9956 Nested lists 7 (skip initial nesting levels)
9960 <ul><li><ul><li><ul><li>foo</li></ul></li></ul></li></ul>
9965 Nested lists 8 (multiple nesting transitions)
9973 <ul><li><ul><li>bar</li></ul></li>
9974 <li>baz</li></ul></li>
9979 # XXX this test should be moved to citeParserTests, since it depends
9980 # on the Cite extension, which is "built in" to Parsoid.
9982 Nested lists 9 (extension interaction)
9985 !! html/php+tidy-DISABLED
9986 <ul><li class="mw-empty-elt"></li></ul>
9988 <ul><li data-parsoid='{}'><ol class="mw-references references" typeof="mw:Extension/references" about="#mwt2" data-parsoid='{}' data-mw='{"name":"references","attrs":{}}'></ol></li></ul>
9992 1. Lists with start-of-line-transparent tokens before bullets: Comments
10005 Nested lists 10 (list and span siblings: wt2wt regression)
10010 <ul><li>a <span>x</span>
10011 <ul><li>b <span>y</span></li></ul></li></ul>
10015 2. Lists with start-of-line-transparent tokens before bullets: Template close
10020 <ul><li>foo bar</li>
10026 List items are not parsed correctly following a <pre> block (T2785)
10032 <ul><li><pre>foo</pre></li>
10033 <li><pre>bar</pre></li>
10037 <ul><li><pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"foo"}}'>foo</pre></li>
10038 <li><pre typeof="mw:Extension/pre" about="#mwt4" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"bar"}}'>bar</pre></li>
10042 # FIXME: Might benefit from a html/parsoid since this has a template
10044 List items from template
10055 *notSOL{{inner list}}
10058 <ul><li>item 1</li>
10059 <li>item 2</li></ul>
10060 <ul><li>item 0</li>
10062 <li>item 2</li></ul>
10063 <ul><li>item 0</li>
10066 <li>item 2</li></ul>
10071 List interrupted by empty line or heading
10079 <ul><li>foo</li></ul>
10080 <ul><li><ul><li>bar</li></ul></li></ul>
10081 <h2><span class="mw-headline" id="A_heading">A heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: A heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
10082 <ul><li>Another list item</li></ul>
10087 Multiple list tags generated by templates
10106 <li about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<li>"}},"i":0}},"a"]}'>a</li>
10107 <li about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<li>"}},"i":0}},"b"]}'>b</li>
10108 <li about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<li>"}},"i":0}},"c"]}'>c</li>
10112 Multiple newlines in between HTML list items don't induce paragraph wrapping
10125 <dd>ho<div>123</div>
10141 <dd>ho<div>123</div>
10149 Single-comment whitespace lines dont break lists, and neither do multi-comment whitespace lines
10152 <!--This line will NOT split the list-->
10154 <!--This line will NOT split the list either-->
10156 <!--foo--> <!----> <!--This line NOT split the list either-->
10167 Replacing whitespace with tabs still doesn't break the list (gerrit 78327)
10170 <!--This line will NOT split the list-->
10172 <!--This line will NOT split the list either-->
10174 <!--foo--> <!----> <!--This line NOT split the list
10185 # FIXME: Parsoid has a dedicated DOM pass to mimic this Tidy-specific li-hack
10186 # That pass could possibly be removed.
10188 Test the li-hack (a hack from Tidy days, but doesn't work as advertised with Remex)
10190 parsoid=wt2html,wt2wt
10194 *{{echo|<li>templated li-hack}}
10195 *<!--foo--><li> unsupported li-hack with preceding comments
10198 <li><li>not a li-hack
10203 <li class="mw-empty-elt"></li><li>li-hack</li>
10204 <li class="mw-empty-elt"></li><li>templated li-hack</li>
10205 <li class="mw-empty-elt"></li><li> unsupported li-hack with preceding comments</li></ul>
10207 <li class="mw-empty-elt"></li><li>not a li-hack
10212 <li data-parsoid='{"stx":"html","autoInsertedEnd":true,"liHackSrc":"*"}'>li-hack</li>
10213 <li about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,,"pi":[[{"k":"1"}]]}' data-mw='{"parts":["*",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<li>templated li-hack"}},"i":0}}]}'>templated li-hack</li>
10214 <li data-parsoid='{"autoInsertedEnd":true}'><!--foo--></li><li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>unsupported li-hack with preceding comments</li></ul>
10216 <ul data-parsoid='{"stx":"html"}'>
10217 <li class="mw-empty-elt" data-parsoid='{"stx":"html","autoInsertedEnd":true}'></li><li data-parsoid='{"stx":"html"}'>not a li-hack
10224 Parsoid: Make sure nested lists are serialized on their own line even if HTML contains no newlines
10236 <ol><li>bar</li></ol></li></ol>
10238 <ul><li>bar</li></ul></li></ul>
10240 <dl><dd>bar</dd></dl></dd></dl>
10258 Parsoid: Test of whitespace serialization with Templated bullets
10265 <li class="mw-empty-elt"> </li><li about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"bullet","href":"./Template:Bullet"},"params":{},"i":0}}]}'> Bar</li>
10269 # ------------------------------------------------------------------------
10270 # The next set of tests are about Parsoid's ability to handle badly nested
10271 # tags (parse, minimize scope of fixup, and roundtrip back)
10272 # ------------------------------------------------------------------------
10274 # Remex and Parsoid output stems from list handling diffs because Parsoid & PHP parser.
10275 # Parsoid's list handling is more aware of block structure.
10277 Unbalanced closing block tags break a list
10284 <ul><li>a</li></ul></div><div>
10296 Unbalanced closing non-block tags don't break a list
10298 parsoid=wt2html,html2html
10306 <ul><li>a<span></span></li>
10309 <p><span data-parsoid='{"stx":"html","autoInsertedEnd":true}'></span></p>
10310 <ul><li>a<span data-parsoid='{"stx":"html","autoInsertedEnd":true}'></span></li>
10314 # Parsoid does some post-dom-building cleanup
10315 # which is why its output differs from Remex.
10317 Unclosed formatting tags that straddle lists are closed and reopened
10319 parsoid=wt2html,wt2wt,html2html
10324 <ol><li><s> a</s></li><s>
10325 </s><li><s>b </s></li></ol>
10327 <ol><li><s> a</s></li>
10328 <li><s>b </s></li></ol>
10331 # Output is ugly because of all the misnested tag fixups.
10333 1. List embedded in a formatting tag
10340 </small></p><small><ul><li>foo</li></ul></small><small></small><p><small></small>
10343 <p><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'></small></p><small data-parsoid='{"stx":"html","autoInsertedEnd":true,"autoInsertedStart":true}'>
10344 <ul><li data-parsoid='{}'>foo</li></ul></small>
10345 <p><small data-parsoid='{"stx":"html","autoInsertedStart":true}'></small></p>
10348 # Output is ugly because of all the misnested tag fixups.
10350 2. List embedded in a formatting tag in a misnested way
10357 </small></p><small></small><ul><small><li>a</li>
10358 </small><li><small>b</small></li></ul>
10360 <p><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'></small></p>
10361 <ul><small data-parsoid='{"stx":"html","autoInsertedEnd":true,"autoInsertedStart":true}'><li>a</li></small>
10362 <li><small data-parsoid='{"stx":"html","autoInsertedStart":true}'>b</small></li></ul>
10365 # Output is ugly because of all the misnested tag fixups.
10367 3. List embedded in a formatting tag in a misnested way
10374 </small></p><small></small><ul><small></small><li><small></small><ul><small></small><li><small>123</small></li></ul></li></ul>
10376 <p><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'></small></p>
10378 <ul><li><ul><li data-parsoid='{}'><small data-parsoid='{"stx":"html","autoInsertedStart":true}'> 123</small></li></ul></li></ul>
10385 # Note that the current date is hard-coded as
10386 # 1970-01-01T00:02:03Z (a Thursday)
10387 # when running parser tests. The timezone is also fixed to GMT, so
10388 # local date will be identical to current date.
10391 Magic Word: {{CURRENTDAY}}
10400 Magic Word: {{CURRENTDAY2}}
10409 Magic Word: {{CURRENTDAYNAME}}
10418 Magic Word: {{CURRENTDOW}}
10427 Magic Word: {{CURRENTMONTH}}
10436 Magic Word: {{CURRENTMONTH1}}
10445 Magic Word: {{CURRENTMONTHABBREV}}
10447 {{CURRENTMONTHABBREV}}
10454 Magic Word: {{CURRENTMONTHNAME}}
10456 {{CURRENTMONTHNAME}}
10463 Magic Word: {{CURRENTMONTHNAMEGEN}}
10465 {{CURRENTMONTHNAMEGEN}}
10472 Magic Word: {{CURRENTTIME}}
10481 Magic Word: {{CURRENTHOUR}}
10490 Magic Word: {{CURRENTWEEK}} (T6594)
10499 Magic Word: {{CURRENTYEAR}}
10508 Magic Word: {{CURRENTTIMESTAMP}}
10510 {{CURRENTTIMESTAMP}}
10517 Magic Words LOCAL (UTC)
10521 *{{LOCALMONTHNAME}}
10522 *{{LOCALMONTHNAMEGEN}}
10523 *{{LOCALMONTHABBREV}}
10532 *{{LOCALTIMESTAMP}}
10547 <li>19700101000203</li></ul>
10552 Magic Word: {{FULLPAGENAME}}
10554 title=[[User:Ævar Arnfjörð Bjarmason]]
10555 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10559 <p>User:Ævar Arnfjörð Bjarmason
10564 Magic Word: {{FULLPAGENAMEE}}
10566 title=[[User:Ævar Arnfjörð Bjarmason]]
10567 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10571 <p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
10576 Magic Word: {{TALKSPACE}}
10578 title=[[User:Ævar Arnfjörð Bjarmason]]
10579 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10588 Magic Word: {{TALKSPACE}}, same namespace
10590 title=[[User talk:Ævar Arnfjörð Bjarmason]]
10591 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10600 Magic Word: {{TALKSPACE}}, main namespace
10602 title=[[Parser Test]]
10603 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10612 Magic Word: {{TALKSPACEE}}
10614 title=[[User:Ævar Arnfjörð Bjarmason]]
10615 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10624 Magic Word: {{SUBJECTSPACE}}
10626 title=[[User talk:Ævar Arnfjörð Bjarmason]]
10627 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10636 Magic Word: {{SUBJECTSPACE}}, same namespace
10638 title=[[User:Ævar Arnfjörð Bjarmason]]
10639 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10648 Magic Word: {{SUBJECTSPACE}}, main namespace
10650 title=[[Parser Test]]
10651 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10659 Magic Word: {{SUBJECTSPACEE}}
10661 title=[[User talk:Ævar Arnfjörð Bjarmason]]
10662 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10671 Magic Word: {{NAMESPACE}}
10673 title=[[User:Ævar Arnfjörð Bjarmason]]
10674 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10683 Magic Word: {{NAMESPACEE}}
10685 title=[[User:Ævar Arnfjörð Bjarmason]]
10686 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10695 Magic Word: {{NAMESPACENUMBER}}
10697 title=[[User:Ævar Arnfjörð Bjarmason]]
10698 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10700 {{NAMESPACENUMBER}}
10707 Magic Word: {{SUBPAGENAME}}
10709 title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
10710 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10719 Magic Word: {{SUBPAGENAMEE}}
10721 title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
10722 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10731 Magic Word: {{ROOTPAGENAME}}
10733 title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
10734 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10738 <p>Ævar Arnfjörð Bjarmason
10743 Magic Word: {{ROOTPAGENAMEE}}
10745 title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
10746 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10750 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
10755 Magic Word: {{BASEPAGENAME}}
10757 title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
10758 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10762 <p>Ævar Arnfjörð Bjarmason
10767 Magic Word: {{BASEPAGENAMEE}}
10769 title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
10770 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10774 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
10779 Magic Word: {{TALKPAGENAME}}
10781 title=[[User:Ævar Arnfjörð Bjarmason]]
10782 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10786 <p>User talk:Ævar Arnfjörð Bjarmason
10791 Magic Word: {{TALKPAGENAMEE}}
10793 title=[[User:Ævar Arnfjörð Bjarmason]]
10794 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10798 <p>User_talk:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
10803 Magic Word: {{SUBJECTPAGENAME}}
10805 title=[[User talk:Ævar Arnfjörð Bjarmason]]
10806 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10808 {{SUBJECTPAGENAME}}
10810 <p>User:Ævar Arnfjörð Bjarmason
10815 Magic Word: {{SUBJECTPAGENAMEE}}
10817 title=[[User talk:Ævar Arnfjörð Bjarmason]]
10818 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10820 {{SUBJECTPAGENAMEE}}
10822 <p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
10827 Magic Word: {{NUMBEROFFILES}}
10829 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10838 Magic Word: {{PAGENAME}}
10840 title=[[User:Ævar Arnfjörð Bjarmason]]
10841 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10845 <p>Ævar Arnfjörð Bjarmason
10850 Magic Word: {{PAGENAME}} with metacharacters
10852 title=[['foo & bar = baz']]
10853 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10857 <p><i>'foo & bar = baz'</i>
10862 Magic Word: {{PAGENAME}} with metacharacters (T28781)
10864 title=[[*RFC 1234 http://example.com/]]
10865 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10869 <p>*RFC 1234 http://example.com/
10874 Magic Word: {{PAGENAMEE}}
10876 title=[[User:Ævar Arnfjörð Bjarmason]]
10877 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10881 <p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
10886 Magic Word: {{PAGENAMEE}} with metacharacters (T28781)
10888 title=[[*RFC 1234 http://example.com/]]
10889 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10893 <p>*RFC_1234_http://example.com/
10898 Magic Word: {{REVISIONID}}
10900 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10907 flags=vary-revision-id
10911 Magic Word: {{SCRIPTPATH}}
10913 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10921 Magic Word: {{STYLEPATH}}
10923 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10932 Magic Word: {{SERVER}}
10934 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10938 <p><a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>
10943 Magic Word: {{SERVERNAME}}
10945 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10954 Magic Word: {{SITENAME}}
10956 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10965 Magic Word: {{PAGELANGUAGE}}
10968 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10977 Magic Word: {{PAGELANGUAGE}} on a page with no explicitly set language
10979 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
10988 Case-sensitive magic words, when cased differently, should just be template transclusions
10995 <p><a href="/index.php?title=Template:CurrentMonth&action=edit&redlink=1" class="new" title="Template:CurrentMonth (page does not exist)">Template:CurrentMonth</a>
10996 <a href="/index.php?title=Template:Currentday&action=edit&redlink=1" class="new" title="Template:Currentday (page does not exist)">Template:Currentday</a>
10997 <a href="/index.php?title=Template:CURreNTweEK&action=edit&redlink=1" class="new" title="Template:CURreNTweEK (page does not exist)">Template:CURreNTweEK</a>
10998 <a href="/index.php?title=Template:CurrentHour&action=edit&redlink=1" class="new" title="Template:CurrentHour (page does not exist)">Template:CurrentHour</a>
11003 Case-insensitive magic words should still work with weird casing.
11013 <a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>
11017 # From plwiki:PLOS_ONE
11019 Parsoid: Page property magic word with magic word contents
11023 wgAllowDisplayTitle=true
11024 wgRestrictDisplayTitle=false
11026 {{DISPLAYTITLE:''{{PAGENAME}}''}}
11031 <meta property="mw:PageProp/displaytitle" content="Parser test" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"src":"{{DISPLAYTITLE:''{{PAGENAME}}''}}"}' data-mw='{"attribs":[[{"txt":"content"},{"html":"DISPLAYTITLE:<i data-parsoid='{\"dsr\":[15,31,2,2]}'><span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[17,29,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PAGENAME\",\"function\":\"pagename\"},\"params\":{},\"i\":0}}]}'>Parser test</span></i>"}]]}'/>
11034 # NOTE: mw:ExpandedAttrs is not the best typeof here. mw:Transclusion is better.
11035 # But, this is a limitation of our representation and is documented in
11036 # TemplateHandler.js in processSpecialMagicWord
11038 Parsoid: Template-generated DISPLAYTITLE
11040 {{{{echo|DISPLAYTITLE}}:Foo}}
11044 wgAllowDisplayTitle=true
11045 wgRestrictDisplayTitle=false
11050 <meta property="mw:PageProp/displaytitle" content="Foo" about="#mwt1" typeof="mw:ExpandedAttrs" data-parsoid='{"pi":[[]]}' data-mw='{"attribs":[[{"txt":"content"},{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,23,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"DISPLAYTITLE\"}},\"i\":0}}]}'>DISPLAYTITLE</span>:Foo"}]]}'/>
11054 Namespace 1 {{ns:1}}
11063 Namespace 1 {{ns:01}}
11072 Namespace 0 {{ns:0}} (T6783)
11080 Namespace 0 {{ns:00}} (T6783)
11088 Namespace -1 {{ns:-1}}
11097 Namespace User {{ns:User}}
11106 Namespace User talk {{ns:User_talk}}
11115 Namespace User talk {{ns:uSeR tAlK}}
11124 Namespace File {{ns:File}}
11133 Namespace File {{ns:Image}}
11142 Namespace (lang=de) Benutzer {{ns:User}}
11153 Namespace (lang=de) Benutzer Diskussion {{ns:3}}
11159 <p>Benutzer Diskussion
11166 {{urlencode:hi world?!}}
11167 {{urlencode:hi world?!|WIKI}}
11168 {{urlencode:hi world?!|PATH}}
11169 {{urlencode:hi world?!|QUERY}}
11179 Magic Word: prioritize type info over data-parsoid
11183 <meta property="mw:PageProp/forcetoc" data-parsoid='{"magicSrc":"__NOTOC__"}'/>
11189 Magic Word: serialize on separate line (parsoid)
11191 parsoid=wt2wt,html2wt
11197 foo<meta property="mw:PageProp/notoc"/>bar
11201 Magic Word: rt non-english wikis
11208 <meta property="mw:PageProp/noeditsection" data-parsoid='{"magicSrc":"__NOEDITSECTION__"}'/>
11212 __proto__ is treated as normal wikitext (T105997)
11224 Magic links: internal link to RFC (T2479)
11228 <p><a href="/index.php?title=RFC_123&action=edit&redlink=1" class="new" title="RFC 123 (page does not exist)">RFC 123</a>
11231 <p><a rel="mw:WikiLink" href="./RFC_123" title="RFC 123">RFC 123</a></p>
11235 Magic links: RFC (T2479)
11239 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc822">RFC 822</a>
11242 <p><a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink" class="external mw-magiclink">RFC 822</a></p>
11246 Magic links: RFC (T67278)
11248 This is RFC 822 but thisRFC 822 is not RFC 822linked.
11250 <p>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc822">RFC 822</a> but thisRFC 822 is not RFC 822linked.
11253 <p>This is <a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink" class="external mw-magiclink">RFC 822</a> but thisRFC 822 is not RFC 822linked.</p>
11257 Magic links: RFC (w/ non-newline whitespace, T30950/T31025)
11259 RFC      822
11263 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc822">RFC 822</a>
11268 <p><a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink" class="external mw-magiclink">RFC <span typeof="mw:Entity" data-parsoid='{"src":"&nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#Xa0;","srcContent":" "}'> </span> 822</a>
11274 Magic links: ISBN (T3937)
11278 <p><a href="/wiki/Special:BookSources/0306406152" class="internal mw-magiclink-isbn">ISBN 0-306-40615-2</a>
11281 <p><a href="./Special:BookSources/0306406152" rel="mw:WikiLink">ISBN 0-306-40615-2</a></p>
11285 Magic links: ISBN (T67278)
11287 This is ISBN 978-0-316-09811-3 but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.
11289 <p>This is <a href="/wiki/Special:BookSources/9780316098113" class="internal mw-magiclink-isbn">ISBN 978-0-316-09811-3</a> but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.
11292 <p>This is <a href="./Special:BookSources/9780316098113" rel="mw:WikiLink">ISBN 978-0-316-09811-3</a> but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked.</p>
11296 Magic links: ISBN (w/ non-newline whitespace, T30950/T31025)
11298 ISBN      978 0 316 09811 3
11304 <p><a href="/wiki/Special:BookSources/9780316098113" class="internal mw-magiclink-isbn">ISBN 978 0 316 09811 3</a>
11311 <p><a href="./Special:BookSources/9780316098113" rel="mw:WikiLink">ISBN <span typeof="mw:Entity" data-parsoid='{"src":"&nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#Xa0;","srcContent":" "}'> </span> 978<span typeof="mw:Entity" data-parsoid='{"src":"&nbsp;","srcContent":" "}'> </span>0<span typeof="mw:Entity" data-parsoid='{"src":"&#160;","srcContent":" "}'> </span>316<span typeof="mw:Entity" data-parsoid='{"src":"&#0160;","srcContent":" "}'> </span>09811<span typeof="mw:Entity" data-parsoid='{"src":"&#xA0;","srcContent":" "}'> </span>3</a>
11319 Magic links: PMID incorrectly converts space to underscore
11323 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
11326 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external mw-magiclink">PMID 1234</a></p>
11330 Magic links: PMID (T67278)
11332 This is PMID 1234 but thisPMID 1234 is not PMID 1234linked.
11334 <p>This is <a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.
11337 <p>This is <a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external mw-magiclink">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.</p>
11341 Magic links: PMID (w/ non-newline whitespace, T30950/T31025)
11343 PMID      1234
11347 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
11352 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external mw-magiclink">PMID <span typeof="mw:Entity" data-parsoid='{"src":"&nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&#Xa0;","srcContent":" "}'> </span> 1234</a>
11357 # <nowiki> nodes shouldn't be inserted during html2wt by Parsoid,
11358 # since these are ExtLinkText, not MagicLinkText
11360 Magic links: use appropriate serialization for "almost" magic links.
11362 X[[Special:BookSources/0978739256|foo]]
11364 X[https://tools.ietf.org/html/rfc1234 foo]
11366 <p>X<a href="/wiki/Special:BookSources/0978739256" title="Special:BookSources/0978739256">foo</a>
11367 </p><p>X<a rel="nofollow" class="external text" href="https://tools.ietf.org/html/rfc1234">foo</a>
11370 <p>X<a rel="mw:WikiLink" href="./Special:BookSources/0978739256" title="Special:BookSources/0978739256">foo</a></p>
11371 <p>X<a rel="mw:ExtLink" class="external text" href="https://tools.ietf.org/html/rfc1234">foo</a></p>
11375 Magic links: All disabled (T47942)
11377 wgEnableMagicLinks={"ISBN":false, "PMID":false, "RFC":false}
11383 <p>ISBN 0-306-40615-2
11394 Nonexistent template
11396 {{thistemplatedoesnotexist}}
11398 <p><a href="/index.php?title=Template:Thistemplatedoesnotexist&action=edit&redlink=1" class="new" title="Template:Thistemplatedoesnotexist (page does not exist)">Template:Thistemplatedoesnotexist</a>
11403 Template with invalid target containing tags
11405 {{a<b>b</b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
11407 <p>{{a<b>b</b>|foo|a=b|a = b}}
11412 Template with invalid target containing unclosed tag
11414 {{a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
11416 <p>{{a<b>|foo|a=b|a = b}}</b>
11421 Template with invalid target containing wikilink
11425 <p>{{<a href="/wiki/Main_Page" title="Main Page">Main Page</a>}}
11428 <p><span typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":[{"template":{"target":{"wt":"[[Main Page]]"},"params":{},"i":0}}]}'>{{</span><a rel="mw:WikiLink" href="./Main_Page" about="#mwt1">Main Page</a><span about="#mwt1">}}</span></p>
11432 Template with just whitespace in it, T70421
11436 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{ }}"}},"i":0}}]}'>{{ }}</p>
11442 This is a test template
11450 <p>This is a test template
11455 Template with explicit namespace
11459 <p>This is a test template
11467 This is a test template with parameter {{{param}}}
11473 {{paramtest|param=foo}}
11475 <p>This is a test template with parameter foo
11480 Template:paramtestnum
11482 [[{{{1}}}|{{{2}}}]]
11486 Template unnamed parameter
11488 {{paramtestnum|Main Page|the main page}}
11490 <p><a href="/wiki/Main_Page" title="Main Page">the main page</a>
11495 Template:templatesimple
11501 Template:templateredirect
11503 #redirect [[Template:templatesimple]]
11507 Template:templateasargtestnum
11513 Template:templateasargtest
11515 {{template{{{templ}}}}}
11519 Template:templateasargtest2
11525 Template with template name as unnamed argument
11527 {{templateasargtestnum|templatesimple}}
11534 Template with template name as argument
11536 {{templateasargtest|templ=simple}}
11543 Template with template name as argument (2)
11545 {{templateasargtest2|templ=templatesimple}}
11552 Template:templateasargtestdefault
11554 {{{{{templ|templatesimple}}}}}
11564 Template with default value
11566 {{templateasargtestdefault}}
11573 Template with default value (value set)
11575 {{templateasargtestdefault|templ=templa}}
11584 {{templateredirect}}
11589 <link rel="mw:PageProp/redirect" href="./Template:Templatesimple" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"templateredirect","href":"./Template:Templateredirect"},"params":{},"i":0}}]}'/>
11593 Template with argument in separate line
11595 {{ templateasargtest |
11603 Template with complex template as argument
11606 param ={{ templateasargtest |
11607 templ = simple }}}}
11609 <p>This is a test template with parameter (test)
11614 Templates with templated name
11616 {{{{echo|echo}}|foo}}
11617 {{{{echo|inner list}} }}
11621 <ul><li>item 1</li></ul>
11624 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|echo}}","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
11625 <ul about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"{{echo|inner list}} ","href":"./Template:Inner_list"},"params":{},"i":0}}]}'><li>item 1</li></ul>
11628 ## Regression test; the output here isn't really that interesting.
11630 Templates with templated name and top level template args
11632 {{1{{2{{{3}}}|4=5}}}}
11634 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"1{{2{{{3}}}|4=5}}"},"params":{},"i":0}}]}'>{{1{{2{{{3}}}|4=5}}}}</p>
11637 # Parsoid markup is deliberate "broken". This is an edge case.
11638 # See long comment in TemplateHandler.js:convertAttribsToString.
11640 Templates with invalid templated targets
11651 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo\n{{echo|foo}}\n"},"params":{},"i":0}}]}'>{{echo
11656 Template with thumb image (with link in description)
11658 {{paramtest|param=[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]}}
11660 This is a test template with parameter <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a> <div class="thumbcaption"><a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">caption</a></div></div></div>
11663 <p>This is a test template with parameter </p><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a> <div class="thumbcaption"><a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">caption</a></div></div></div>
11665 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"paramtest","href":"./Template:Paramtest"},"params":{"param":{"wt":"[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]"}},"i":0}}]}'>This is a test template with parameter </p><figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" about="#mwt1" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Noimage.png" ><img resource="./File:Noimage.png" src="./Special:FilePath/Noimage.png" height="220" width="220"/></a><figcaption><a rel="mw:WikiLink" href="./No_link" title="No link">link</a> <a rel="mw:WikiLink" href="./No_link" title="No link">caption</a></figcaption></figure>
11669 Template:complextemplate
11671 {{{1}}} {{paramtest|
11672 param ={{{param}}}}}
11676 Template with complex arguments
11679 param ={{ templateasargtest |
11680 templ = simple }}|[[Template:complextemplate|link]]}}
11682 <p><a href="/wiki/Template:Complextemplate" title="Template:Complextemplate">link</a> This is a test template with parameter (test)
11687 T2553: link with two variables in a piped link
11690 |[[{{{1}}}|{{{2}}}]]
11695 <td>[[{{{1}}}|{{{2}}}]]
11700 <tbody><tr><td>[[<span about="#mwt5" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"1"},"params":{},"i":0}}]}'>{{{1}}}</span>|<span about="#mwt2" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"2"},"params":{},"i":0}}]}'>{{{2}}}</span>]]</td></tr>
11706 Abort table cell attribute parsing on wikilink
11709 |testing [[one|two]] |three||four
11710 |testing one two |three||four
11711 |testing="[[one|two]]" |three||four
11716 <td>testing <a href="/index.php?title=One&action=edit&redlink=1" class="new" title="One (page does not exist)">two</a> |three</td>
11722 <td>testing="<a href="/index.php?title=One&action=edit&redlink=1" class="new" title="One (page does not exist)">two</a>" |three</td>
11728 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'>testing <a rel="mw:WikiLink" href="./One" title="One" data-parsoid='{"stx":"piped","a":{"href":"./One"},"sa":{"href":"one"}}'>two</a> |three</td><td data-parsoid='{"stx":"row","autoInsertedEnd":true}'>four</td>
11729 <td data-parsoid='{"a":{"testing":null,"one":null,"two":null},"sa":{"testing":"","one":"","two":""},"autoInsertedEnd":true}'>three</td><td data-parsoid='{"stx":"row","autoInsertedEnd":true}'>four</td>
11730 <td>testing="<a rel="mw:WikiLink" href="./One" title="One" data-parsoid='{"stx":"piped","a":{"href":"./One"},"sa":{"href":"one"}}'>two</a>" |three</td><td data-parsoid='{"stx":"row","autoInsertedEnd":true}'>four</td></tr>
11735 Don't abort table cell attribute parsing if wikilink is found in template arg
11738 |Test {{#tag:ref|One two "[[three]]" four}}
11742 <tbody><tr><td>Test <ref about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:ref","function":"tag"},"params":{"1":{"wt":"One two \"[[three]]\" four"}},"i":0}}]}'>One two "<a rel="mw:WikiLink" href="./Three" title="Three">three</a>" four</ref></td></tr>
11747 Magic variable as template parameter
11749 {{paramtest|param={{SITENAME}}}}
11751 <p>This is a test template with parameter MediaWiki
11758 [[{{{param}}}|link]]
11762 Template parameter as link source
11764 {{linktest|param=Main Page}}
11766 <p><a href="/wiki/Main_Page" title="Main Page">link</a>
11771 Template:paramtest2
11773 including another template, {{paramtest|param={{{arg}}}}}
11777 Template passing argument to another template
11779 {{paramtest2|arg='hmm'}}
11781 <p>including another template, This is a test template with parameter 'hmm'
11792 Template as link source
11796 [[{{linktest2}}|Main Page]]
11798 [[{{linktest2}}]]Page
11800 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
11801 </p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
11802 </p><p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>Page
11820 Template infinite loop
11824 <p><span class="error">Template loop detected: <a href="/wiki/Template:Loop1" title="Template:Loop1">Template:Loop1</a></span>
11829 Template from main namespace
11838 Template from non-includable namespace
11840 wgNonincludableNamespaces=10
11844 <p><a href="/wiki/Template:Echo" title="Template:Echo">Template:Echo</a>
11859 T2529: Template with table, not included at beginning of line
11878 T2523: Template shouldn't eat newline (or add an extra one before table)
11898 T2041: Template parameters shown as broken links
11907 Template with targets containing wikilinks
11913 {{[[{{echo|foo}}]]}}
11915 {{{{echo|[[foo}}]]}}
11917 <p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
11918 </p><p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
11922 <p>{{<a rel="mw:WikiLink" href="./Foo" title="Foo">foo</a>}}</p>
11923 <p>{{<a typeof="mw:ExpandedAttrs" rel="mw:WikiLink" href="./Foo" title="Foo" data-mw='{"attribs":[[{"txt":"href"},{"html":"<span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[17,29,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo\"}},\"i\":0}}]}'>foo</span>"}]]}'>foo</a>}}</p>
11924 <p>{{<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[foo}}]]"}},"i":0}}]}'>[[foo}}]]</span></p>
11934 Templates: Double quotes as template target
11941 <p>foo <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"''","href":"./Template:''"},"params":{},"i":0}}]}'>bar</span> baz
11945 ## This test is about making sure Parsoid's data-mw is well formed in the
11946 ## face of multiple templates with intersecting and overlapping ranges. The
11947 ## wikitext itself is wretched.
11949 Templates with intersecting and overlapping ranges
11960 </table><p>ho</p><table>
11964 </td></tr></tbody></table>
11966 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}],[{"k":"1"}],[{"k":"1"}]],"firstWikitextNode":"table"}' data-mw='{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n<p>ha</p>"}},"i":0}},"\n","{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n<p>ho</p>"}},"i":1}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}}hi"}},"i":2}},"\n|}"]}'>ha</p><table about="#mwt1" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"","html":""},{"html":""}]]}'>
11968 </table><p about="#mwt1">ho</p><table about="#mwt1" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"","html":""},{"html":""}]]}'>
11970 <tbody><tr><td>hi</td></tr>
11975 Template:MSGNW test
11977 ''None'' of '''this''' should be
11979 but rather passed unmodified
11987 # hmm, fix this or just deprecate msgnw and document its behavior?
11991 {{msgnw:MSGNW test}}
11993 <p>''None'' of '''this''' should be
11995  but rather passed unmodified
11996 {{test}}
12000 <!-- comment -->
12007 {{int:youhavenewmessages|lots of money|not!}}
12009 <p>You have lots of money (not!).
12014 int keyword - non-existing message
12025 Foo<noinclude>zar</noinclude><includeonly>bar</includeonly>
12029 <includeonly> and <noinclude> being included
12040 <onlyinclude>Foo</onlyinclude>bar
12044 <onlyinclude> being included
12056 <onlyinclude>Foo</onlyinclude>bar<includeonly>zar</includeonly>
12060 <onlyinclude> and <includeonly> being included
12069 <includeonly> and <noinclude> on a page
12071 Foo<noinclude>zar</noinclude><includeonly>bar</includeonly>
12078 Un-closed <noinclude>
12085 <onlyinclude> on a page
12087 <onlyinclude>Foo</onlyinclude>bar
12094 Un-closed <onlyinclude>
12101 Self-closed noinclude, includeonly, onlyinclude tags
12112 Unbalanced includeonly and noinclude tags
12116 |b</noinclude></noinclude>
12117 |c</noinclude></includeonly>
12118 |d</includeonly></includeonly>
12127 <td>c</includeonly>
12129 <td>d</includeonly></includeonly>
12135 Template:Includeonly section
12138 ==Includeonly section==
12144 T8563: Edit link generation for section shown by <includeonly>
12146 {{includeonly section}}
12148 <h2><span class="mw-headline" id="Includeonly_section">Includeonly section</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Includeonly_section&action=edit&section=T-1" title="Template:Includeonly section">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
12149 <h2><span class="mw-headline" id="Section_T-1">Section T-1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Includeonly_section&action=edit&section=T-2" title="Template:Includeonly section">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
12153 # Uses same input as the contents of [[Template:Includeonly section]]
12155 T8563: Section extraction for section shown by <includeonly>
12160 ==Includeonly section==
12168 T8563: Edit link generation for section suppressed by <includeonly>
12171 ==Includeonly section==
12175 <h2><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
12180 T8563: Section extraction for section suppressed by <includeonly>
12185 ==Includeonly section==
12193 Un-closed <includeonly>
12198 <meta typeof="mw:Includes/IncludeOnly" data-parsoid='{"src":"<includeonly>"}' data-mw='{"src":"<includeonly>"}'/>
12201 ## We used to, but no longer wt2wt this test since the default serializer
12202 ## will normalize the include directives to serialize on their own line.
12203 ## Selser will take care of preserving formatting in scenarios where they
12204 ## intermingled with other wikitext.
12206 Includes and comments at SOL
12208 parsoid=wt2html,html2html
12210 <!-- comment --><noinclude><!-- comment --></noinclude><!-- comment -->==hu==
12218 some</noinclude>* stuff
12221 <includeonly>can have stuff</includeonly>===here===
12224 <h2><span class="mw-headline" id="hu">hu</span></h2>
12232 <ul><li>here</li></ul>
12233 <h3><span class="mw-headline" id="here">here</span></h3>
12236 <!-- comment --><meta typeof="mw:Includes/NoInclude" data-parsoid='{"src":"<noinclude>"}'/><!-- comment --><meta typeof="mw:Includes/NoInclude/End" data-parsoid='{"src":"</noinclude>"}'/><!-- comment --><h2 id="hu">hu</h2>
12238 <meta typeof="mw:Includes/NoInclude" data-parsoid='{"src":"<noinclude>"}'/>
12240 <meta typeof="mw:Includes/NoInclude/End" data-parsoid='{"src":"</noinclude>"}'/><ul><li>stuff</li>
12243 <meta typeof="mw:Includes/NoInclude" data-parsoid='{"src":"<noinclude>"}'/>
12244 <p>some<meta typeof="mw:Includes/NoInclude/End" data-parsoid='{"src":"</noinclude>"}'/>* stuff</p>
12245 <ul><li>here</li></ul>
12247 <meta typeof="mw:Includes/IncludeOnly" data-parsoid='{"src":"<includeonly>can have stuff</includeonly>"}' data-mw='{"src":"<includeonly>can have stuff</includeonly>"}'/><meta typeof="mw:Includes/IncludeOnly/End" data-parsoid='{"src":""}'/><h3 id="here">here</h3>
12251 # TODO: test with DOM fragment reuse!
12253 Parsoid: DOM fragment reuse
12255 parsoid=wt2wt,wt2html
12257 a{{echo|b<table></table>c}}d
12269 <p>ab</p><table></table><p>cd
12280 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["a",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b<table></table>c"}},"i":0}},"d"]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>ab</p><table about="#mwt1" data-parsoid='{"stx":"html"}'></table><p about="#mwt1">cd</p>
12282 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":["a",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b\n<table></table>\nc"}},"i":0}},"d"]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>ab</p><span about="#mwt2">
12283 </span><table about="#mwt2" data-parsoid='{"stx":"html"}'></table><span about="#mwt2">
12284 </span><p about="#mwt2">cd</p>
12286 <p about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n\n<table></table>\n\nb"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>a</p><span about="#mwt3">
12288 </span><table about="#mwt3" data-parsoid='{"stx":"html"}'></table><span about="#mwt3">
12290 </span><p about="#mwt3">b</p>
12294 Parsoid: Merge double tds (T52603)
12297 |{{echo|{{!}} foo}}
12303 </td></tr></tbody></table>
12306 <tr><td about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}} foo"}},"i":0}}]}'> foo</td></tr>
12311 Parsoid: Merge double tds in nested transclusion content (T52603)
12315 |{{echo|{{!}} foo}}
12323 </td></tr></tbody></table>
12326 <div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>"}},"i":0}},"\n{|\n|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}} foo"}},"i":1}},"\n|}\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"</div>"}},"i":2}}]}'>
12328 <tr><td data-mw='{"parts":["|"]}'> foo</td></tr>
12334 ### <includeonly> and <noinclude> in attributes
12337 0. includeonly around the entire attribute
12339 <span <includeonly>id="v1"</includeonly><noinclude>id="v2"</noinclude>>bar</span>
12341 <p><span id="v2">bar</span>
12346 1. includeonly in html attr key
12348 <span <noinclude>id</noinclude><includeonly>about</includeonly>="foo">bar</span>
12350 <p><span id="foo">bar</span>
12355 2. includeonly in html attr value
12357 <span id="<noinclude>v1</noinclude><includeonly>v2</includeonly>">bar</span>
12358 <span id=<noinclude>"v1"</noinclude><includeonly>"v2"</includeonly>>bar</span>
12360 <p><span id="v1">bar</span>
12361 <span id="v1">bar</span>
12366 3. includeonly in part of an attr value
12368 <span style="color:<noinclude>red</noinclude><includeonly>blue</includeonly>;">bar</span>
12370 <p><span style="color:red;">bar</span>
12375 4. includeonly in table attributes
12399 ### Preprocessor precedence tests
12400 ### See: https://www.mediawiki.org/wiki/Preprocessor_ABNF
12402 ##{{[[-{{{{{{[[Foo|bar}}]]}-}}}}}]]
12404 Preprocessor precedence 1: link is rightmost opening
12410 But close-brace is not a valid character in a link title:
12413 However, we can still tell this was handled as a link in the preprocessor:
12414 {{echo|[[Foo}}|bar]]|bat}}
12416 <p>{{<a href="/wiki/Foo" title="Foo">bar}}</a>
12417 </p><p>But close-brace is not a valid character in a link title:
12419 </p><p>However, we can still tell this was handled as a link in the preprocessor:
12423 <p>{{<a rel="mw:WikiLink" href="./Foo" title="Foo">bar}}</a></p>
12424 <p>But close-brace is not a valid character in a link title: {{[[Foo}}|bar]]</p>
12425 <p>However, we can still tell this was handled as a link in the preprocessor: <span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo}}|bar]]"},"2":{"wt":"bat"}},"i":0}}]}'>[[Foo}}|bar]]</span></p>
12429 Preprocessor precedence 2: template is rightmost opening
12438 <p>-<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo}-"}},"i":0}}]}'>foo}-</span>-</p>
12442 Preprocessor precedence 3: language converter is rightmost opening
12458 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</p>
12459 <p>{{<span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"echo|hi}}"}}'></span></p>
12460 <p>[[<span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw]]"}}'></span></p>
12464 Preprocessor precedence 4: left-most angle bracket
12475 Template:Precedence5
12481 Preprocessor precedence 5: tplarg takes precedence over template
12483 {{Precedence5|Bullet}}
12485 <ul><li>Bar</li></ul>
12488 <ul typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Precedence5","href":"./Template:Precedence5"},"params":{"1":{"wt":"Bullet"}},"i":0}}]}'><li>Bar</li></ul>
12492 Preprocessor precedence 6: broken link is rightmost opening
12498 {{echo|[[Foo|bar|bat=baz}}
12501 </p><p>{{echo|[[Foo|bar|bat=baz}}
12504 <p>{{echo|[[Foo}}</p>
12505 <p>{{echo|[[Foo|bar|bat=baz}}</p>
12508 # This next test exposes a difference between PHP and Parsoid:
12509 # Given [[Foo|{{echo|Bar]]x}}y]]z:
12510 # 1) Both PHP and Parsoid ignore the `]]` inside the `echo` in the
12511 # "preprocessor" stage. The `{{echo` extends until the `x}}`, and the
12512 # outer `[[Foo` extends until the `y]]`
12513 # 2a) But then the PHP preprocessor emits `[[Foo|Bar]]xy]]z` as an
12514 # intermediate result (after template expansion), and link processing
12515 # happens on this intermediate result, which moves the wikilink
12516 # boundary leftward to `[[Foo|Bar]]`
12517 # 2b) Parsoid works in a single step, so it's going to keep the
12518 # wikilink as extending to the `y]]`
12519 # 3a) Then PHP does linktrail processing which slurps up the trailing
12520 # `xy` inside the link.
12521 # 3b) Parsoid will do linktrail processing to slurp up the trailing
12522 # `z` inside the link.
12523 # This is "correct" behavior. Parsoid's basic worldview is that the
12524 # `]]` inside the template shouldn't be allowed to leak out to affect
12525 # the surrounding wikilink. PHP may match Parsoid (in the future)
12526 # if you use {{#balance}} (T114445).
12529 Preprocessor precedence 7: broken template is rightmost opening
12535 [[Foo|{{echo|Bar]]-x}}-y]]-z
12537 Careful: linktrails can move the end of the wikilink:
12538 [[Foo|{{echo|y']]a}}l]]l
12540 <p><a href="/wiki/Foo" title="Foo">{{echo|Bar</a>
12541 </p><p><a href="/wiki/Foo" title="Foo">Bar</a>-x-y]]-z
12542 </p><p>Careful: linktrails can move the end of the wikilink:
12543 <a href="/wiki/Foo" title="Foo">y'al</a>]]l
12546 <p>[[Foo|{{echo|Bar]]</p>
12547 <p><a rel="mw:WikiLink" href="./Foo" title="Foo"><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Bar]]-x"}},"i":0}}]}'>Bar]]-x</span>-y</a>-z</p>
12548 <p>Careful: linktrails can move the end of the wikilink:
12549 <a rel="mw:WikiLink" href="./Foo" title="Foo"><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"y']]a"}},"i":0}}]}'>y']]a</span>ll</a></p>
12553 Preprocessor precedence 8: broken language converter is rightmost opening
12564 Template:Preprocessor_precedence_9
12569 ;7: {{{{{{{4}}}}}}}
12573 Preprocessor precedence 9: groups of braces
12575 {{Preprocessor precedence 9|Four|Bullet|1|2}}
12581 <ul><li>Bar</li></ul>
12585 <dd>{Bullet}</dd></dl>
12588 <dl about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Preprocessor precedence 9","href":"./Template:Preprocessor_precedence_9"},"params":{"1":{"wt":"Four"},"2":{"wt":"Bullet"},"3":{"wt":"1"},"4":{"wt":"2"}},"i":0}}]}'>
12593 </dl><ul about="#mwt1">
12595 </ul><span about="#mwt1"> </span><dl about="#mwt1">
12604 Template:Preprocessor_precedence_10
12611 ;6: -{{{{{{4}}}}}}-
12612 ;7: -{{{{{{{5}}}}}}}-
12616 Preprocessor precedence 10: groups of braces with leading dash
12620 {{Preprocessor precedence 10|Three|raw2|Bullet|1|2}}
12626 <ul><li>Bar-</li></ul>
12633 <ul><li>Bar-</li></ul>
12640 <dl about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Preprocessor precedence 10","href":"./Template:Preprocessor_precedence_10"},"params":{"1":{"wt":"Three"},"2":{"wt":"raw2"},"3":{"wt":"Bullet"},"4":{"wt":"1"},"5":{"wt":"2"}},"i":0}}]}'>
12642 <dd><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw"}}'></span></dd>
12645 </dl><ul about="#mwt1">
12647 </ul><span about="#mwt1"> </span><dl about="#mwt1">
12651 <dd><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw2"}}'></span></dd>
12654 </dl><ul about="#mwt1">
12656 </ul><span about="#mwt1"> </span><dl about="#mwt1">
12660 <dd><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw2"}}'></span></dd>
12665 Preprocessor precedence 11: found during visual diff testing
12667 {{#tag:span|-{{#tag:span|-{{echo|x}}}}}}
12669 {{echo|-{{echo|-{{echo|x}}}}}}
12671 {{echo|-{{echo|x}}}}
12673 <p><span>-<span>-x</span></span>
12678 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"#tag:span","function":"tag"},"params":{"1":{"wt":"-{{#tag:span|-{{echo|x}}}}"}},"i":0}}]}'>-<span>-x</span></span></p>
12680 <p about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"-{{echo|-{{echo|x}}}}"}},"i":0}}]}'>--x</p>
12682 <p about="#mwt7" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"-{{echo|x}}"}},"i":0}}]}'>-x</p>
12686 Preprocessor precedence 12: broken language converter closed by brace.
12690 This form breaks the template, which is unfortunate:
12691 *{{echo|foo-{bar}bat}}
12693 But if the broken language converter markup is inside an extension
12694 tag, nothing bad happens:
12695 *<nowiki>foo-{bar}bat</nowiki>
12696 *{{echo|<nowiki>foo-{bar}bat</nowiki>}}
12697 *<pre>foo-{bar}bat</pre>
12698 *{{echo|<pre>foo-{bar}bat</pre>}}
12700 <tag>foo-{bar}bat</tag>
12701 {{echo|<tag>foo-{bar}bat</tag>}}
12704 <p>This form breaks the template, which is unfortunate:
12706 <ul><li>{{echo|foo-{bar}bat}}</li></ul>
12707 <p>But if the broken language converter markup is inside an extension
12708 tag, nothing bad happens:
12710 <ul><li>foo-{bar}bat</li>
12711 <li>foo-{bar}bat</li>
12712 <li><pre>foo-{bar}bat</pre></li>
12713 <li><pre>foo-{bar}bat</pre></li></ul>
12714 <pre>'foo-{bar}bat'
12718 <pre>'foo-{bar}bat'
12723 <p>This form breaks the template, which is unfortunate:</p>
12725 <li>{{echo|foo-{bar}bat}}</li>
12727 <p>But if the broken language converter markup is inside an extension tag, nothing bad happens:</p>
12729 <li><span typeof="mw:Nowiki">foo-{bar}bat</span></li>
12730 <li><span typeof="mw:Transclusion mw:Nowiki" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki>foo-{bar}bat</nowiki>"}},"i":0}}]}'>foo-{bar}bat</span></li>
12731 <li><pre typeof="mw:Extension/pre" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"foo-{bar}bat"}}'>foo-{bar}bat</pre></li>
12732 <li><pre typeof="mw:Extension/pre mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<pre>foo-{bar}bat</pre>"}},"i":0}}]}'>foo-{bar}bat</pre></li>
12734 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"foo-{bar}bat"}}'></pre> <pre typeof="mw:Extension/tag mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<tag>foo-{bar}bat</tag>"}},"i":0}}]}'></pre>
12738 Preprocessor precedence 13: broken language converter in external link
12742 *[http://example.com/-{foo Example in URL]
12743 *[http://example.com Example in -{link} description]
12744 *{{echo|[http://example.com/-{foo Breaks template, however]}}
12746 <ul><li><a rel="nofollow" class="external text" href="http://example.com/-{foo">Example in URL</a></li>
12747 <li><a rel="nofollow" class="external text" href="http://example.com">Example in -{link} description</a></li>
12748 <li>{{echo|<a rel="nofollow" class="external text" href="http://example.com/-{foo">Breaks template, however</a>}}</li></ul>
12751 <li><a rel="mw:ExtLink" class="external text" href="http://example.com/-{foo">Example in URL</a></li>
12752 <li><a rel="mw:ExtLink" class="external text" href="http://example.com">Example in -{link} description</a></li>
12753 <li>{{echo|<a rel="mw:ExtLink" class="external text" href="http://example.com/-{foo">Breaks template, however</a>}}</li>
12758 Preprocessor precedence 14: broken language converter in comment
12760 *<!--{{foo}}-->...should be ok
12761 *<!---{{foo}}-->...extra dashes
12762 *{{echo|foo<!-- -{bar} -->bat}}...should be ok
12764 <ul><li>...should be ok</li>
12765 <li>...extra dashes</li>
12766 <li>foobat...should be ok</li></ul>
12769 <li><!--{{foo}}-->...should be ok</li>
12770 <li><!---{{foo}}-->...extra dashes</li>
12771 <li><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo<!-- -{bar} -->bat"}},"i":0}}]}'>foo</span><span about="#mwt1"><!-- -{bar} --></span><span about="#mwt1">bat</span>...should be ok</li>
12776 Preprocessor precedence 15: broken brace markup in headings
12778 wgFragmentMode=[ 'html5', 'legacy' ]
12782 __NOTOC__ __NOEDITSECTION__
12791 ===5 foo{{{bar 5===
12796 <h3><span id="1_foo.5Bbar_1"></span><span class="mw-headline" id="1_foo[bar_1">1 foo[bar 1</span></h3>
12799 <h3><span id="2_foo.5B.5Bbar_2"></span><span class="mw-headline" id="2_foo[[bar_2">2 foo[[bar 2</span></h3>
12802 <h3><span id="3_foo.7Bbar_3"></span><span class="mw-headline" id="3_foo{bar_3">3 foo{bar 3</span></h3>
12805 <h3><span id="4_foo.7B.7Bbar_4"></span><span class="mw-headline" id="4_foo{{bar_4">4 foo{{bar 4</span></h3>
12808 <h3><span id="5_foo.7B.7B.7Bbar_5"></span><span class="mw-headline" id="5_foo{{{bar_5">5 foo{{{bar 5</span></h3>
12811 <h3><span id="6_foo-.7Bbar_6"></span><span class="mw-headline" id="6_foo-{bar_6">6 foo-{bar 6</span></h3>
12815 <meta property="mw:PageProp/notoc"/> <meta property="mw:PageProp/noeditsection"/>
12816 <h3 id="1_foo[bar_1"><span id="1_foo.5Bbar_1" typeof="mw:FallbackId"></span>1 foo[bar 1</h3>
12818 <h3 id="2_foo[[bar_2"><span id="2_foo.5B.5Bbar_2" typeof="mw:FallbackId"></span>2 foo[[bar 2</h3>
12820 <h3 id="3_foo{bar_3"><span id="3_foo.7Bbar_3" typeof="mw:FallbackId"></span>3 foo{bar 3</h3>
12822 <h3 id="4_foo{{bar_4"><span id="4_foo.7B.7Bbar_4" typeof="mw:FallbackId"></span>4 foo{{bar 4</h3>
12824 <h3 id="5_foo{{{bar_5"><span id="5_foo.7B.7B.7Bbar_5" typeof="mw:FallbackId"></span>5 foo{{{bar 5</h3>
12826 <h3 id="6_foo-{bar_6"><span id="6_foo-.7Bbar_6" typeof="mw:FallbackId"></span>6 foo-{bar 6</h3>
12831 Preprocessor precedence 16: matching closing braces to opening braces
12836 -{{{echo|foo}}bar}-
12841 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,14,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo\"}},\"i\":0}}]}'>foo</span>bar"}}'></span></p>
12845 Preprocessor precedence 17: template w/o target shouldn't prevent closing
12854 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi {{}}"}},"i":0}}]}'>hi {{}}</p>
12857 # Ensure we're using a language without variants for this test; even
12858 # if $wgUsePigLatinVariant is true. We've picked `de` arbitrarily.
12860 Preprocessor precedence 18: another rightmost wins scenario
12865 {{ -{{{{1|tplarg}}} }} }-
12867 <p>{{ -{tplarg }} }-
12870 <p>{{ -{<span about="#mwt1" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"1"},"params":{"1":{"wt":"tplarg"}},"i":0}}]}'>tplarg</span> }} }-</p>
12874 Preprocessor precedence 19: break syntax
12887 ### Token Stream Patcher tests
12889 ### These tests won't always pass wt2wt and other modes because
12890 ### on serialization, the table will be output on a new line.
12891 ### For now, we are blacklisting them, and using this to test selser.
12895 1. Table tag in SOL posn. should get reparsed correctly with valid TSR
12897 parsoid=wt2html,wt2wt
12899 {{echo|}}{| width = '100%'
12903 <span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":""}},"i":0}}]}'></span><table width="100%">
12904 <tbody><tr><td>foo</td></tr>
12908 ## We used to, but no longer wt2wt this test since the default serializer
12909 ## will normalize the include directives to serialize on their own line.
12910 ## Selser will take care of preserving formatting in scenarios where they
12911 ## intermingled with other wikitext.
12913 2. Table tag in SOL posn. should get reparsed correctly with valid TSR
12917 <includeonly>a</includeonly>{| {{{b}}}
12921 <meta typeof="mw:Includes/IncludeOnly" data-parsoid='{"src":"<includeonly>a</includeonly>"}' data-mw='{"src":"<includeonly>a</includeonly>"}'/><meta typeof="mw:Includes/IncludeOnly/End" data-parsoid='{"src":""}'/><table about="#mwt2" typeof="mw:ExpandedAttrs" data-parsoid='{"a":{"{{{b}}}":null},"sa":{"{{{b}}}":""}}' data-mw='{"attribs":[[{"txt":"{{{b}}}","html":"<span about=\"#mwt1\" typeof=\"mw:Param\" data-parsoid='{\"pi\":[[]],\"dsr\":[31,38,null,null]}' data-mw='{\"parts\":[{\"templatearg\":{\"target\":{\"wt\":\"b\"},\"params\":{},\"i\":0}}]}'>{{{b}}}</span>"},{"html":""}]]}'>
12922 <tbody><tr><td>c</td></tr>
12927 Table wikitext syntax outside wiki-tables
12931 ! not a table heading
12934 | class="foo bar" | baz
12942 ! not a table heading
12945 | class="foo bar" | baz
12954 ### Testing parsing of templates where a template arg
12955 ### has the same name as the template itself.
12961 {{{quote|{{{1}}}}}}
12965 Templates: Template Name/Arg clash: 1. Use of positional param
12974 Templates: Template Name/Arg clash: 2. Use of named param
12976 {{quote|quote=foo}}
12983 Templates: Template Name/Arg clash: 3. Use of named param with empty input
12992 ### Parsoid-centric tests to stress Parsoid's ability to RT them unchanged
12996 Templates: 1. Simple use
13005 Templates: 2. Inside a block tag
13007 <div>{{echo|Foo}}</div>
13008 <blockquote>{{echo|Foo}}</blockquote>
13011 <blockquote>Foo</blockquote>
13015 <blockquote><p>Foo</p></blockquote>
13019 Templates: P-wrapping: 1a. Templates on consecutive lines
13030 Templates: P-wrapping: 1b. Templates on consecutive lines
13044 Templates: P-wrapping: 1c. Templates on consecutive lines
13047 {{echo|bar}} <div>baz</div>
13056 bar </p><div>baz</div>
13060 Templates: P-wrapping: 1d. Template preceded by comment-only line
13070 <p about="#mwt223" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Bar"}},"i":0}}]}'>Bar</p>
13074 Templates: Scopes should not be expanded unnecessarily
13076 parsoid=wt2html,wt2wt
13078 {{echo|<div>a</div>}}b{{echo|
13084 <div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>a</div>"}},"i":0}}]}'>a</div><p>b</p><span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n<div>c</div>"}},"i":0}}]}'>
13085 </span><div about="#mwt2">c</div>
13089 Templates: Inline Text: 1. Multiple template uses
13091 {{echo|Foo}}bar{{echo|baz}}
13098 Templates: Inline Text: 2. Back-to-back template uses
13100 {{echo|Foo}}{{echo|bar}}
13107 Templates: Block Tags: 1. Multiple template uses
13109 {{echo|<div>Foo</div>}}<div>bar</div>{{echo|<div>baz</div>}}
13111 <div>Foo</div><div>bar</div><div>baz</div>
13116 Templates: Block Tags: 2. Back-to-back template uses
13118 {{echo|<div>Foo</div>}}{{echo|<div>bar</div>}}
13120 <div>Foo</div><div>bar</div>
13124 ## Parsoid drops empty elements in templates.
13126 Templates: Correctly encapsulate templates producing </p> tag without a corresponding <p> tag
13133 b</p><p class="mw-empty-elt"></p>
13135 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\nb</p>"}},"i":0}}]}'>a</p><span about="#mwt1">
13136 </span><p about="#mwt1">b</p>
13140 Templates: Links: 1. Simple example
13142 {{echo|[[Foo|bar]]}}
13144 <p><a href="/wiki/Foo" title="Foo">bar</a>
13149 Templates: Links: 2. Generation of link href
13151 [[{{echo|Foo}}|bar]]
13153 <p><a href="/wiki/Foo" title="Foo">bar</a>
13158 Templates: Links: 3. Generation of part of a link href
13160 [[Fo{{echo|o}}|bar]]
13162 [[Foo{{echo|bar}}]]
13164 [[Foo{{echo|bar}}baz]]
13166 [[Foo{{echo|bar}}|bar]]
13168 [[:Foo{{echo|bar}}]]
13170 [[:Foo{{echo|bar}}|bar]]
13172 <p><a href="/wiki/Foo" title="Foo">bar</a>
13173 </p><p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
13174 </p><p><a href="/index.php?title=Foobarbaz&action=edit&redlink=1" class="new" title="Foobarbaz (page does not exist)">Foobarbaz</a>
13175 </p><p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">bar</a>
13176 </p><p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
13177 </p><p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">bar</a>
13182 Templates: Links: 4. Multiple templates generating link href
13184 [[{{echo|F}}{{echo|o}}ob{{echo|ar}}]]
13186 <p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
13191 Templates: Links: 5. Generation of link text
13193 [[Foo|{{echo|bar}}]]
13195 <p><a href="/wiki/Foo" title="Foo">bar</a>
13200 Templates: Links: 5. Nested templates (only outermost template should be marked)
13202 {{echo|[[{{echo|Foo}}|bar]]}}
13204 <p><a href="/wiki/Foo" title="Foo">bar</a>
13209 Templates: HTML Tag: 1. Generation of HTML attr. key
13211 <div {{echo|style}}="color:red;">foo</div>
13213 <div style="color:red;">foo</div>
13218 Templates: HTML Tag: 2. Generation of HTML attr. value
13220 <div style={{echo|'color:red;'}}>foo</div>
13222 <div style="color:red;">foo</div>
13227 Templates: HTML Tag: 3. Generation of HTML attr key and value
13229 <div {{echo|style}}={{echo|'color:red;'}}>foo</div>
13231 <div style="color:red;">foo</div>
13236 Templates: HTML Tag: 4. Generation of starting piece of HTML attr value
13238 <div title="{{echo|This is a long title}} with just one piece templated">foo</div>
13240 <div title="This is a long title with just one piece templated">foo</div>
13245 Templates: HTML Tag: 5. Generation of middle piece of HTML attr value
13247 <div title="This is a long title with just {{echo|one piece}} templated">foo</div>
13249 <div title="This is a long title with just one piece templated">foo</div>
13254 Templates: HTML Tag: 6. Generation of end piece of HTML attr value
13256 <div title="This is a long title with just one piece {{echo|templated}}">foo</div>
13258 <div title="This is a long title with just one piece templated">foo</div>
13262 # SSS FIXME: While it is great we added support for all this,
13263 # do we want to make this part of the spec? Maybe we want to
13264 # deprecate this kind of usage in the future?
13266 Templates: HTML Tag: 7. Generation of partial attribute key string
13268 <div st{{echo|yle}}="color:red;">foo</div>
13270 <div style="color:red;">foo</div>
13275 Templates: HTML Tag: 8. Template-generated attribute (k=v)
13277 <div {{echo|1=id="v1"}}>bar</div>
13279 <div id="v1">bar</div>
13284 Templates: HTML Tag: 9. Multiple template-generated attributes
13286 <div {{echo|1=id="v1" title="foo"}}>bar</div>
13288 <div id="v1" title="foo">bar</div>
13293 Templates: Support for templates generating attributes and content
13295 {| {{mixed_attr_content_template}}
13300 <table style="color:red;" title="T48811">
13310 <table style="color:red;" title="T48811" about="#mwt1" typeof="mw:Transclusion mw:ExpandedAttrs" data-mw='{"parts":["{| ",{"template":{"target":{"wt":"mixed_attr_content_template","href":"./Template:Mixed_attr_content_template"},"params":{},"i":0}},"\n|-\n|bar\n|}"]}'>
13319 Template:attribute_from_template
13325 Table cell with attribute before expanded attribute
13328 | align="center" {{attribute_from_template}} |456
13332 <tbody><tr><td align="center" class="123" about="#mwt2" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"class","html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[20,47,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"attribute_from_template\",\"href\":\"./Template:Attribute_from_template\"},\"params\":{},\"i\":0}}]}'>class=\"123\"</span>"},{"html":""}]]}'>456</td></tr>
13337 1. Entities and nowikis inside templated attributes should be handled correctly
13339 <div {{echo|style{{=}}"background:#f9f9f9;"}}>foo</div>
13341 <div style="background:#f9f9f9;">foo</div>
13344 <div style="background:#f9f9f9;" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html"}' data-mw='{"attribs":[[{"txt":"style","html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[5,49,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"style{{=}}\\\"background:&amp;#35;f9f9f9;\\\"\"}},\"i\":0}}]}'>style</span><span typeof=\"mw:Nowiki\" about=\"#mwt1\" data-parsoid=\"{}\">=</span><span about=\"#mwt1\" data-parsoid=\"{}\">\"background:</span><span typeof=\"mw:Entity\" about=\"#mwt1\" data-parsoid='{\"src\":\"&amp;#35;\",\"srcContent\":\"#\"}'>#</span><span about=\"#mwt1\" data-parsoid=\"{}\">f9f9f9;\"</span>"},{"html":""}]]}'>foo</div>
13348 2. Entities and nowikis inside templated attributes should be handled correctly
13351 |{{table_attribs_3}}
13356 <td style="background:#f9f9f9;">Foo
13361 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td style="background:#f9f9f9;" typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}' data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_3","href":"./Template:Table_attribs_3"},"params":{},"i":0}}]}'>Foo</td></tr>
13366 3. Entities and nowikis inside templated attributes should be handled correctly inside templated tables
13369 |{{table_attribs_3}}
13374 <td style="background:#f9f9f9;">Foo
13378 <table about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[],[],[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"tbl-start","href":"./Template:Tbl-start"},"params":{},"i":0}},"\n|",{"template":{"target":{"wt":"table_attribs_3","href":"./Template:Table_attribs_3"},"params":{},"i":1}},"\n",{"template":{"target":{"wt":"tbl-end","href":"./Template:Tbl-end"},"params":{},"i":2}}]}'>
13379 <tbody><tr><td style="background:#f9f9f9;">Foo</td></tr>
13385 4. Entities and nowikis inside templated attributes should be handled correctly inside templated tables
13388 |{{table_attribs_6}} hi
13393 <td style="background: red;">hi
13398 <tbody><tr><td style="background: red;" typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}' data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_6","href":"./Template:Table_attribs_6"},"params":{},"i":0}}," hi"]}'> hi</td></tr>
13403 Templates: HTML Tables: 1. Generating start of a HTML table
13405 {{echo|<table><tr><td>foo</td>}}</tr></table>
13407 <table><tr><td>foo</td></tr></table>
13412 Templates: HTML Tables: 2a. Generating middle of a HTML table
13414 <table><tr>{{echo|<td>foo</td>}}</tr></table>
13416 <table><tr><td>foo</td></tr></table>
13421 Templates: HTML Tables: 2b. Generating middle of a HTML table
13423 <table>{{echo|<tr><td>foo</td></tr>}}</table>
13425 <table><tr><td>foo</td></tr></table>
13430 Templates: HTML Tables: 3. Generating end of a HTML table
13432 <table><tr>{{echo|<td>foo</td></tr></table>}}
13434 <table><tr><td>foo</td></tr></table>
13439 Templates: HTML Tables: 4a. Generating a single tag of a HTML table
13441 {{echo|<table>}}<tr><td>foo</td></tr></table>
13443 <table><tr><td>foo</td></tr></table>
13448 Templates: HTML Tables: 4b. Generating a single tag of a HTML table
13450 <table>{{echo|<tr>}}<td>foo</td></tr></table>
13452 <table><tr><td>foo</td></tr></table>
13457 Templates: HTML Tables: 4c. Generating a single tag of a HTML table
13459 <table><tr>{{echo|<td>}}foo</td></tr></table>
13461 <table><tr><td>foo</td></tr></table>
13466 Templates: HTML Tables: 4d. Generating a single tag of a HTML table
13468 <table><tr><td>foo{{echo|</td>}}</tr></table>
13470 <table><tr><td>foo</td></tr></table>
13475 Templates: HTML Tables: 4e. Generating a single tag of a HTML table
13477 <table><tr><td>foo</td>{{echo|</tr>}}</table>
13479 <table><tr><td>foo</td></tr></table>
13484 Templates: HTML Tables: 4f. Generating a single tag of a HTML table
13486 <table><tr><td>foo</td></tr>{{echo|</table>}}
13488 <table><tr><td>foo</td></tr></table>
13493 Templates: HTML Tables: 5. Proper fostering of categories from inside
13495 parsoid=wt2html,wt2wt
13497 <table>[[Category:foo1]]<tr><td>foo</td></tr></table>
13498 <!--Two categories (T52330)-->
13499 <table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>
13501 <table><tbody><tr><td>foo</td></tr></tbody></table>
13502 <table><tbody><tr><td>foo</td></tr></tbody></table>
13504 <link rel="mw:PageProp/Category" href="./Category:Foo1"><table><tbody><tr><td>foo</td></tr></tbody></table>
13505 <!--Two categories (T52330)-->
13506 <link rel="mw:PageProp/Category" href="./Category:Bar1"><link rel="mw:PageProp/Category" href="./Category:Bar2"><table><tbody><tr><td>foo</td></tr></tbody></table>
13509 ## Remex doesn't account for fostered content.
13511 Templates: Wiki Tables: 1a. Fostering of entire template content
13519 <tr><td></td></tr></table>
13524 <table><tbody><tr><td></td></tr></tbody></table>
13526 <p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE","pi":[[{"k":"1"}]]}' data-mw='{"parts":["{|\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a"}},"i":0}},"\n|}"]}'>a</p><table about="#mwt2">
13532 Templates: Wiki Tables: 1b. Fostering of entire template content
13545 <tr><td></td></tr></table>
13553 <tbody><tr><td></td></tr></tbody></table>
13555 <div about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"stx":"html","fostered":true,"autoInsertedEnd":true,"firstWikitextNode":"TABLE","pi":[[{"k":"1"}],[{"k":"1"}]]}' data-mw='{"parts":["{|\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>"}},"i":0}},"\nfoo\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"</div>"}},"i":1}},"\n|}"]}'>
13557 </div><table about="#mwt3">
13562 ## Remex doesn't account for fostered content.
13564 Templates: Wiki Tables: 2. Fostering of partial template content
13574 <tr><td></td></tr></table>
13579 <div>b</div><table>
13580 <tbody><tr><td></td></tr></tbody></table>
13582 <p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE","pi":[[{"k":"1"}]]}' data-mw='{"parts":["{|\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n<div>b</div>"}},"i":0}},"\n|}"]}'>a</p><div about="#mwt2">b</div><table about="#mwt2">
13589 Templates: Wiki Tables: 3. td-content via multiple templates
13592 {{echo|{{pipe}}a}}{{echo|b}}
13603 Templates: Wiki Tables: 4. Templated tags, no content
13609 <tr><td></td></tr></table>
13614 Templates: Wiki Tables: 5. Templated tags, regular td-tags
13628 Templates: Wiki Tables: 6. Templated tags, templated td-tags
13641 ## This test case is very specific to Parsoid's internals
13642 ## and is hence only tested for Parsoid's code. Parsoid uses
13643 ## a <meta> marker tag for <ref> tags and they are expanded
13644 ## much later. We are verifying that this <meta> tag usage
13645 ## doesn't prevent foster parenting.
13647 Templates: Wiki Tables: 7. Fosterable <ref>s should get fostered
13649 {{PartialTable}}<ref>foo</ref>
13654 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"PartialTable","href":"./Template:PartialTable"},"params":{},"i":0}},"<ref>foo</ref>\n|}"]}'><sup about="#mwt3" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{},"body":{"id":"mw-reference-text-cite_note-1"}}'><a href="./Parser_test#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p><table about="#mwt2">
13658 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Parser_test#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
13662 Templates: Wiki Tables: 8. Fosterable meta-tags should get fostered
13672 <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n{{{!}}\n{{!}}-"}},"i":0}},"\n<onlyinclude>\n|foo\n</onlyinclude>\n{{!}}}"]}'>
13673 </span><meta typeof="mw:Includes/OnlyInclude" about="#mwt1"/><table about="#mwt1">
13677 <meta typeof="mw:Includes/OnlyInclude/End"/></td></tr>
13682 Templates: Lists: Multi-line list-items via templates
13684 *{{echo|a {{nonexistent|
13686 *{{echo|b {{nonexistent|
13689 <ul><li>a <a href="/index.php?title=Template:Nonexistent&action=edit&redlink=1" class="new" title="Template:Nonexistent (page does not exist)">Template:Nonexistent</a></li>
13690 <li>b <a href="/index.php?title=Template:Nonexistent&action=edit&redlink=1" class="new" title="Template:Nonexistent (page does not exist)">Template:Nonexistent</a></li></ul>
13695 Templates: Ugly nesting: 1. Quotes opened/closed across templates (echo)
13697 {{echo|''a}}{{echo|b''c''d}}{{echo|''e}}
13699 <p><i>ab</i>c<i>d</i>e
13704 Templates: Ugly nesting: 2. Quotes opened/closed across templates (echo_with_span)
13705 (PHP parser generates misnested html)
13707 {{echo_with_span|''a}}{{echo_with_span|b''c''d}}{{echo_with_span|''e}}
13709 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_span","href":"./Template:Echo_with_span"},"params":{"1":{"wt":"''a"}},"i":0}}]}"><i>a</i></span><i about="#mwt2" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_span","href":"./Template:Echo_with_span"},"params":{"1":{"wt":"b''c''d"}},"i":0}},{"template":{"target":{"wt":"echo_with_span","href":"./Template:Echo_with_span"},"params":{"1":{"wt":"''e"}},"i":1}}]}"><span>b</span></i><span about="#mwt2">c</span><i about="#mwt2">d<span></span></i><span about="#mwt2">e</span></p>
13713 Templates: Ugly nesting: 3. Quotes opened/closed across templates (echo_with_div)
13714 (PHP parser generates misnested html; Parsoid html2wt mode adds newlines between {{echo}}s)
13716 parsoid=wt2html,wt2wt
13718 {{echo_with_div|''a}}{{echo_with_div|b''c''d}}{{echo_with_div|''e}}
13720 <div><i>a</i></div><div><i>b</i>c<i>d</i></div><div>e</div>
13722 <div about="#mwt1" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_div","href":"./Template:Echo_with_div"},"params":{"1":{"wt":"''a"}},"i":0}}]}"><i>a</i></div>
13723 <div about="#mwt2" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_div","href":"./Template:Echo_with_div"},"params":{"1":{"wt":"b''c''d"}},"i":0}}]}"><i>b</i>c<i>d</i></div>
13724 <div about="#mwt3" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo_with_div","href":"./Template:Echo_with_div"},"params":{"1":{"wt":"''e"}},"i":0}}]}">e</div>
13728 Templates: Ugly nesting: 4. Divs opened/closed across templates
13730 a<div>b{{echo|c</div>d}}e
13735 <p>a</p><div>bc</div><p>de
13740 Templates: Ugly templates: 3. newline-only template parameter
13749 # This looks like a bug: a single newline triggers p/br for some reason.
13751 Templates: Ugly templates: 4. newline-only template parameter inconsistency
13760 # T66017 -- ugly wikitext with fostered content generates two template ranges that
13761 # have a true overlap (T1-start - T2-start - T1-end - T2-end).
13763 Templates: Ugly templates: 5. Template encapsulation test: Non-trivial overlap of template ranges is properly handled
13769 <div about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}],[{"k":"1"}],[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<table>"}},"i":0}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>foo"}},"i":1}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"</table>"}},"i":2}}]}'>foo</div><span about="#mwt1">
13770 </span><table about="#mwt1">
13774 # T66017 -- ugly wikitext with fostered content generates two template ranges
13775 # that are "identical" and generate nesting cycles in the algorithm
13777 Templates: Ugly templates: 6. Template encapsulation test: Cyclical nesting of template ranges is properly handled
13779 {{echo|<table><tr><td><table>}}
13783 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<table><tr><td><table>"}},"i":0}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>"}},"i":1}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"</div>"}},"i":2}}]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}],[{"k":"1"}],[{"k":"1"}]]}'><tbody><tr data-parsoid='{"stx":"html"}'><td data-parsoid='{"stx":"html"}'><div data-parsoid='{"stx":"html"}'>
13784 </div><table about="#mwt1" data-parsoid='{"stx":"html"}'>
13785 </table></td></tr></tbody></table>
13789 Templates: Parameters substituted at the top-level
13791 {{{foo|''who'' {{echo|me}}? '''never!'''}}}
13795 <p><i>who</i> me? <b>never!</b>
13799 <p about="#mwt2" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"foo"},"params":{"1":{"wt":"''who'' {{echo|me}}? '''never!'''"}},"i":0}}]}'><i>who</i> me? <b>never!</b></p>
13801 <p about="#mwt3" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"foo"},"params":{"1":{"wt":"bar"},"2":{"wt":"baz"}},"i":0}}]}'>bar</p>
13805 Templates: Param with empty arg in the final position
13809 <span about="#mwt1" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"hi"},"params":{"1":{"wt":""}},"i":0}}]}'></span>
13813 Parser Functions: 1. Simple example
13822 Parser Functions: 2. Nested use (only outermost should be marked up)
13830 ## Note that the templates inside the references are not wrapped
13832 Template nested in extension tag in template
13834 title=[[Main Page]]
13837 {{echo|hi<ref>[[ho|{{echo|hi}}]]</ref>}}
13838 {{echo|hi<ref>[http://test.com?q={{echo|ho}}]</ref>}}
13839 {{echo|hi<ref>-{ho|{{echo|hi}}}-</ref>}}
13842 <p><span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi<ref>[[ho|{{echo|hi}}]]</ref>"}},"i":0}}]}'>hi</span><sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{},"body":{"id":"mw-reference-text-cite_note-1"}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup>
13843 <span about="#mwt8" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi<ref>[http://test.com?q={{echo|ho}}]</ref>"}},"i":0}}]}'>hi</span><sup about="#mwt8" class="mw-ref" id="cite_ref-2" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{},"body":{"id":"mw-reference-text-cite_note-2"}}'><a href="./Main_Page#cite_note-2" style="counter-reset: mw-Ref 2;"><span class="mw-reflink-text">[2]</span></a></sup>
13844 <span about="#mwt13" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi<ref>-{ho|{{echo|hi}}}-</ref>"}},"i":0}}]}'>hi</span><sup about="#mwt13" class="mw-ref" id="cite_ref-3" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","attrs":{},"body":{"id":"mw-reference-text-cite_note-3"}}'><a href="./Main_Page#cite_note-3" style="counter-reset: mw-Ref 3;"><span class="mw-reflink-text">[3]</span></a></sup></p>
13845 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt17" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text"><a rel="mw:WikiLink" href="./Ho" title="Ho">hi</a></span></li><li about="#cite_note-2" id="cite_note-2"><a href="./Main_Page#cite_ref-2" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-2" class="mw-reference-text"><a rel="mw:ExtLink" class="external autonumber" href="http://test.com?q=ho"></a></span></li><li about="#cite_note-3" id="cite_note-3"><a href="./Main_Page#cite_ref-3" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-3" class="mw-reference-text"><span typeof="mw:LanguageVariant" data-mw-variant='{"filter":{"l":["ho"],"t":"hi"}}'></span></span></li></ol>
13849 ### Pre-save transform tests
13853 pre-save transform: subst:
13859 This is a test template
13863 pre-save transform: normal template
13873 pre-save transform: nonexistent template
13877 {{thistemplatedoesnotexist}}
13879 {{thistemplatedoesnotexist}}
13883 pre-save transform: subst magic variables
13892 # This is T2089, which I fixed. -- wtm
13894 pre-save transform: subst: templates with parameters
13898 {{subst:paramtest|param="something else"}}
13900 This is a test template with parameter "something else"
13904 Template:nowikitest
13906 <nowiki>'''not wiki'''</nowiki>
13910 pre-save transform: nowiki in subst (T3188)
13914 {{subst:nowikitest}}
13916 <nowiki>'''not wiki'''</nowiki>
13920 Template:commenttest
13922 This template has <!-- a comment --> in it.
13926 pre-save transform: comment in subst (T3936)
13930 {{subst:commenttest}}
13932 This template has <!-- a comment --> in it.
13936 pre-save transform: unclosed tag
13940 <nowiki>'''not wiki'''
13942 <nowiki>'''not wiki'''
13946 pre-save transform: mixed tag case
13950 <NOwiki>'''not wiki'''</noWIKI>
13952 <NOwiki>'''not wiki'''</noWIKI>
13956 pre-save transform: unclosed comment in <nowiki>
13960 wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
13962 wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
13965 # Leading @ in this template definition works around a limitation
13966 # in parsoid's parserTests which otherwise strips the <span> from the
13967 # result (confusing it for a template wrapper)
13971 @<span onmouseover="alert('crap')">Oh no</span>
13975 (confirming safety of fix for subst T3936)
13977 {{Template:dangerous}}
13979 <p>@<span>Oh no</span>
13984 pre-save transform: comment containing gallery (T7024)
13988 <!-- <gallery>data</gallery> -->
13990 <!-- <gallery>data</gallery> -->
13994 pre-save transform: comment containing extension
13998 <!-- <tag>data</tag> -->
14000 <!-- <tag>data</tag> -->
14004 pre-save transform: comment containing nowiki
14008 <!-- <nowiki>data</nowiki> -->
14010 <!-- <nowiki>data</nowiki> -->
14014 pre-save transform: <noinclude> in subst (T5298)
14024 pre-save transform: <onlyinclude> in subst (T5298)
14028 {{subst:Includes2}}
14036 {{<includeonly>subst:</includeonly>Includes}}
14040 Template:SafeSubstTest
14042 {{<includeonly>safesubst:</includeonly>Includes}}
14046 T24297: safesubst: works during PST
14050 {{subst:SafeSubstTest}}{{safesubst:SubstTest}}
14056 T24297: safesubst: works during normal parse
14065 subst: does not work during normal parse
14069 <p>{{subst:Includes}}
14074 pre-save transform: context links ("pipe trick")
14078 [[Article (context)|]]
14081 [[Bar:Article (context)|]]
14082 [[:Bar:Article (context)|]]
14084 [[|Article (context)]]
14088 [[Article (context)|Article]]
14089 [[Bar:Article|Article]]
14090 [[:Bar:Article|Article]]
14091 [[Bar:Article (context)|Article]]
14092 [[:Bar:Article (context)|Article]]
14094 [[Article (context)]]
14095 [[Bar:X (Y) Z|X (Y) Z]]
14096 [[:Bar:X (Y) Z|X (Y) Z]]
14100 pre-save transform: context links ("pipe trick") with interwiki prefix
14104 [[interwiki:Article|]]
14105 [[:interwiki:Article|]]
14106 [[interwiki:Bar:Article|]]
14107 [[:interwiki:Bar:Article|]]
14109 [[interwiki:Article|Article]]
14110 [[:interwiki:Article|Article]]
14111 [[interwiki:Bar:Article|Bar:Article]]
14112 [[:interwiki:Bar:Article|Bar:Article]]
14116 pre-save transform: context links ("pipe trick") with parens in title
14118 pst title=[[Somearticle (context)]]
14122 [[Article (context)|Article]]
14126 pre-save transform: context links ("pipe trick") with comma in title
14128 pst title=[[Someplace, Somewhere]]
14131 [[Otherplace, Elsewhere|]]
14132 [[Otherplace, Elsewhere, Anywhere|]]
14134 [[Otherplace, Somewhere|Otherplace]]
14135 [[Otherplace, Elsewhere|Otherplace]]
14136 [[Otherplace, Elsewhere, Anywhere|Otherplace]]
14140 pre-save transform: context links ("pipe trick") with parens and comma
14142 pst title=[[Someplace (IGNORED), Somewhere]]
14145 [[Otherplace (place), Elsewhere|]]
14147 [[Otherplace, Somewhere|Otherplace]]
14148 [[Otherplace (place), Elsewhere|Otherplace]]
14152 pre-save transform: context links ("pipe trick") with comma and parens
14154 pst title=[[Who, me? (context)]]
14157 [[Me, Myself, and I (1937 song)|]]
14159 [[Yes, you. (context)|Yes, you.]]
14160 [[Me, Myself, and I (1937 song)|Me, Myself, and I]]
14164 pre-save transform: context links ("pipe trick") with namespace
14166 pst title=[[Ns:Somearticle]]
14170 [[Ns:Article|Article]]
14174 pre-save transform: context links ("pipe trick") with namespace and parens
14176 pst title=[[Ns:Somearticle (context)]]
14180 [[Ns:Article (context)|Article]]
14184 pre-save transform: context links ("pipe trick") with namespace and comma
14186 pst title=[[Ns:Somearticle, Context, Whatever]]
14190 [[Ns:Article, Context, Whatever|Article]]
14194 pre-save transform: context links ("pipe trick") with namespace, comma and parens
14196 pst title=[[Ns:Somearticle, Context (context)]]
14200 [[Ns:Article (context)|Article]]
14204 pre-save transform: context links ("pipe trick") with namespace, parens and comma
14206 pst title=[[Ns:Somearticle (IGNORED), Context]]
14210 [[Ns:Article, Context|Article]]
14214 pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, T32149)
14218 [[Article(context)|]]
14219 [[Bar:Article(context)|]]
14220 [[:Bar:Article(context)|]]
14221 [[|Article(context)]]
14225 [[Article(context)|Article]]
14226 [[Bar:Article(context)|Article]]
14227 [[:Bar:Article(context)|Article]]
14228 [[Article(context)]]
14229 [[Bar:X(Y)Z|X(Y)Z]]
14230 [[:Bar:X(Y)Z|X(Y)Z]]
14234 pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, T32149)
14238 [[Article (context)|]]
14239 [[Bar:Article (context)|]]
14240 [[:Bar:Article (context)|]]
14241 [[|Article (context)]]
14245 [[Article (context)|Article]]
14246 [[Bar:Article (context)|Article]]
14247 [[:Bar:Article (context)|Article]]
14248 [[Article (context)]]
14249 [[Bar:X (Y) Z|X (Y) Z]]
14250 [[:Bar:X (Y) Z|X (Y) Z]]
14254 pre-save transform: context links ("pipe trick") with parens and no space (Korean style, T32149)
14258 [[Article(context)|]]
14259 [[Bar:Article(context)|]]
14260 [[:Bar:Article(context)|]]
14261 [[|Article(context)]]
14265 [[Article(context)|Article]]
14266 [[Bar:Article(context)|Article]]
14267 [[:Bar:Article(context)|Article]]
14268 [[Article(context)]]
14269 [[Bar:X(Y)Z|X(Y)Z]]
14270 [[:Bar:X(Y)Z|X(Y)Z]]
14274 pre-save transform: context links ("pipe trick") with commas (T23660)
14278 [[Article (context), context|]]
14279 [[Article (context),context|]]
14280 [[Bar:Article (context), context|]]
14281 [[Bar:Article (context),context|]]
14282 [[:Bar:Article (context), context|]]
14283 [[:Bar:Article (context),context|]]
14285 [[Article (context), context|Article]]
14286 [[Article (context),context|Article]]
14287 [[Bar:Article (context), context|Article]]
14288 [[Bar:Article (context),context|Article]]
14289 [[:Bar:Article (context), context|Article]]
14290 [[:Bar:Article (context),context|Article]]
14294 Parsoid: backwards pipe trick
14301 <p>[[|<b>bar</b>]]</p>
14305 pre-save transform: trim trailing empty lines
14309 Empty lines are trimmed
14315 Empty lines are trimmed
14319 pre-save transform: Signature expansion
14326 * <noinclude>~~~</noinclude>
14327 * <includeonly>~~~</includeonly>
14328 * <onlyinclude>~~~</onlyinclude>
14330 * [[Special:Contributions/127.0.0.1|127.0.0.1]]
14331 * [[Special:Contributions/127.0.0.1|127.0.0.1]] 00:02, 1 January 1970 (UTC)
14332 * 00:02, 1 January 1970 (UTC)
14333 * <noinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</noinclude>
14334 * <includeonly>[[Special:Contributions/127.0.0.1|127.0.0.1]]</includeonly>
14335 * <onlyinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</onlyinclude>
14340 ParserOutput flags from signature expansion (T84843)
14347 [[Special:Contributions/127.0.0.1|127.0.0.1]] 00:02, 1 January 1970 (UTC)
14348 flags=user-signature
14353 pre-save transform: Signature expansion in nowiki tags (T2093)
14359 <nowiki>~~~~</nowiki>
14361 <includeonly><nowiki>~~~~</nowiki></includeonly>
14363 <noinclude><nowiki>~~~~</nowiki></noinclude>
14365 <onlyinclude><nowiki>~~~~</nowiki></onlyinclude>
14367 {{subst:Foo}} shall be converted to FOO
14369 As well as inside noinclude/onlyinclude
14370 <noinclude>{{subst:Foo}}</noinclude>
14371 <onlyinclude>{{subst:Foo}}</onlyinclude>
14373 But not inside includeonly
14374 <includeonly>{{subst:Foo}}</includeonly>
14378 <nowiki>~~~~</nowiki>
14380 <includeonly><nowiki>~~~~</nowiki></includeonly>
14382 <noinclude><nowiki>~~~~</nowiki></noinclude>
14384 <onlyinclude><nowiki>~~~~</nowiki></onlyinclude>
14386 FOO shall be converted to FOO
14388 As well as inside noinclude/onlyinclude
14389 <noinclude>FOO</noinclude>
14390 <onlyinclude>FOO</onlyinclude>
14392 But not inside includeonly
14393 <includeonly>{{subst:Foo}}</includeonly>
14397 Parsoid: Recognize nowiki with trailing space in tags
14401 <nowiki ><div>[[foo]]</nowiki >
14409 <p><div>[[foo]]
14410 </p><p>a<nowiki / >b
14412 </p><p>e<nowiki/ >f
14415 <p><span typeof="mw:Nowiki"><div>[[foo]]</span></p>
14417 <p>a<nowiki / >b</p>
14419 <p>c<span typeof="mw:Nowiki"></span>d</p>
14421 <p>e<nowiki/ >f</p>
14425 Parsoid: Recognize nowiki with odd capitalization
14429 <noWikI ><div>[[foo]]</Nowiki >
14431 <p><div>[[foo]]
14434 <p><span typeof="mw:Nowiki"><div>[[foo]]</span></p>
14439 Parsoid: Escape nowiki with trailing space in tags
14443 <p><nowiki > foo </nowiki ></p>
14444 <p>a<nowiki />b</p>
14445 <p>c<nowiki/ >d</p>
14447 <nowiki > foo </nowiki >
14455 Parsoid: Escape weird noWikI capitalizations
14459 <p><noWikI > foo </NoWikI ></p>
14461 <noWikI > foo </NoWikI >
14465 ### Message transform tests
14468 message transform: magic variables
14478 message transform: should not transform wiki markup
14488 message transform: <noinclude> in transcluded template (T6926)
14498 message transform: <onlyinclude> in transcluded template (T6926)
14508 {{#special:}} page name, known
14512 {{#special:Recentchanges}}
14514 Special:RecentChanges
14518 {{#special:}} page name with subpage, known
14522 {{#special:Recentchanges/param}}
14524 Special:RecentChanges/param
14528 {{#special:}} page name, unknown
14532 {{#special:foobar nonexistent}}
14534 Special:Foobar nonexistent
14538 {{#speciale:}} page name, known
14542 {{#speciale:Recentchanges}}
14544 Special:RecentChanges
14548 {{#speciale:}} page name with subpage, known
14552 {{#speciale:Recentchanges/param}}
14554 Special:RecentChanges/param
14558 {{#speciale:}} page name, unknown
14562 {{#speciale:foobar nonexistent}}
14564 Special:Foobar_nonexistent
14570 ### For Parsoid-specific tests, see
14571 #### https://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images
14576 parsoid=wt2html,wt2wt,html2html
14578 [[Image:foobar.jpg]]
14580 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14583 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
14587 Serialize simple image with span wrapper
14591 <p><span class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
14593 [[File:Foobar.jpg]]
14597 Simple image (using File: namespace, now canonical)
14599 [[File:Foobar.jpg]]
14601 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14604 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
14608 Right-aligned image
14610 [[File:Foobar.jpg|right]]
14612 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14615 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
14621 [[File:Foobar.jpg|right|Caption text]]
14623 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14626 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
14630 Image with caption, T55312 #1
14632 [[File:Foobar.jpg|right|Caption page stuff]]
14634 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page stuff"><img alt="Caption page stuff" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14637 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page stuff</figcaption></figure>
14641 Image with caption, T55312 #2
14643 [[File:Foobar.jpg|right|Caption page=]]
14645 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page="><img alt="Caption page=" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14648 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page=</figcaption></figure>
14652 Image with caption, T55312 #3
14654 [[File:Foobar.jpg|right|Caption page=stuff]]
14656 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption page=stuff"><img alt="Caption page=stuff" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14659 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption page=stuff</figcaption></figure>
14663 Image caption with pipe entity
14665 [[File:Foobar.jpg|thumb|one | two]]
14666 [[File:Foobar.jpg|thumb|one ''two'' | three]]
14668 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>one | two</div></div></div>
14669 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>one <i>two</i> | three</div></div></div>
14672 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>one <span typeof="mw:Entity">|</span> two</figcaption></figure>
14673 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>one <i>two</i> <span typeof="mw:Entity">|</span> three</figcaption></figure>
14677 Allow empty links in image captions (T62753)
14681 [[File:Foobar.jpg|thumb|Caption [[Link1]]
14686 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Caption <a href="/index.php?title=Link1&action=edit&redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&action=edit&redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></div></div></div>
14689 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption [[Link1]]\n[[]]\n[[Link2]]\n"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption <a rel="mw:WikiLink" href="./Link1" title="Link1" data-parsoid='{"stx":"simple","a":{"href":"./Link1"},"sa":{"href":"Link1"}}'>Link1</a>
14691 <a rel="mw:WikiLink" href="./Link2" title="Link2" data-parsoid='{"stx":"simple","a":{"href":"./Link2"},"sa":{"href":"Link2"}}'>Link2</a>
14692 </figcaption></figure>
14696 Titles in unlinked images (T23454)
14698 [[File:Foobar.jpg|link=|stuff]]
14700 <p><img alt="stuff" src="http://example.com/images/3/3a/Foobar.jpg" title="stuff" width="1941" height="220" />
14703 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"stuff"}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></figure-inline></p>
14707 Link with empty target
14716 Image with link trail
14718 Linktrails should not work for images: [[File:Foobar.jpg]]s
14720 <p>Linktrails should not work for images: <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>s
14723 <p>Linktrails should not work for images: <figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline>s</p>
14727 Image with empty attribute
14729 parsoid=wt2html,wt2wt,html2html
14731 [[File:Foobar.jpg|right||Caption text]]
14733 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14736 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
14740 1. Block image with individual attributes from templates
14742 [[File:Foobar.jpg|thumb|{{echo|137px}}|This is a caption]]
14744 <div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
14747 <figure typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"{{echo|137px}}"},{"ck":"caption","ak":"This is a caption"}]}' data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["width",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[24,38,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"137px\"}},\"i\":0}}]}'>137px</span>"}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="16" width="137" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"16","width":"137"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>This is a caption</figcaption></figure>
14751 2. Block Image with individual attributes from templates
14753 [[File:Foobar.jpg|{{echo|thumb}}|{{echo|137px}}|This is a caption]]
14755 <div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
14758 <figure typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt3" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"{{echo|thumb}}"},{"ck":"width","ak":"{{echo|137px}}"},{"ck":"caption","ak":"This is a caption"}]}' data-mw='{"attribs":[["thumbnail",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[18,32,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"thumb\"}},\"i\":0}}]}'>thumb</span>"}],["width",{"html":"<span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[33,47,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"137px\"}},\"i\":0}}]}'>137px</span>"}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="16" width="137" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"16","width":"137"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>This is a caption</figcaption></figure>
14762 3. Inline image with individual attributes from templates
14764 [[File:Foobar.jpg|{{echo|50px}}]]
14766 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
14769 <p><figure-inline typeof="mw:Image mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"width","ak":"{{echo|50px}}"}]}' data-mw='{"attribs":[["width",{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[18,31,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"50px\"}},\"i\":0}}]}'>50px</span>"}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
14772 ## Parsoid does not provide editing support for images where templates produce multiple image attributes.
14773 ## To signal this, we add a 'mw:Placeholder' type to such images. This could change in the future.
14775 Image with multiple attributes from the same template
14777 [[File:Foobar.jpg|{{image_attribs}}]]
14779 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14782 <figure class="mw-default-size mw-halign-right" typeof="mw:Image mw:Placeholder"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption text</figcaption></figure>
14786 Image with link tails
14790 123[[File:Foobar.jpg]]456
14791 123[[File:Foobar.jpg|right]]456
14792 123[[File:Foobar.jpg|thumb]]456
14794 <p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456
14796 123<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>456
14797 123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>456
14800 <p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456
14802 123</p><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div><p>456
14803 123</p><div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div><p>456
14806 <p>123<figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline>456</p>
14807 <p>123</p><figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure><p>456
14808 123</p><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure><p>456</p>
14812 Image with multiple captions -- only last one is accepted
14814 [[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]]
14816 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption3 - accepted"><img alt="Caption3 - accepted" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
14819 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Caption3 - accepted</figcaption></figure>
14823 Image with multiple widths -- use last
14825 [[File:Foobar.jpg|200px|300px|caption]]
14827 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a>
14830 <p><figure-inline typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure-inline></p>
14834 Image with multiple alignments -- use first (T50664)
14838 [[File:Foobar.jpg|thumb|left|right|center|caption]]
14840 [[File:Foobar.jpg|middle|text-top|caption]]
14842 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
14843 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" style="vertical-align: middle" /></a>
14846 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
14847 <p><figure-inline class="mw-default-size mw-valign-middle" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
14851 Image with width attribute at different positions
14853 [[File:Foobar.jpg|200px|right|Caption]]
14854 [[File:Foobar.jpg|right|200px|Caption]]
14855 [[File:Foobar.jpg|right|Caption|200px]]
14857 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
14858 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
14859 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
14862 <figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>Caption</figcaption></figure>
14863 <figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>Caption</figcaption></figure>
14864 <figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>Caption</figcaption></figure>
14867 # a sad bit of backward-compatibility
14869 Image with size specified with pxpx (T15500, T53628)
14871 parsoid=wt2html,wt2wt,html2html
14873 [[File:Foobar.jpg|20pxpx]]
14874 [[File:Foobar.jpg|200x20pxpx]]
14876 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
14877 <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" width="177" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/265px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/353px-Foobar.jpg 2x" /></a>
14880 <p><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></figure-inline> <figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/177px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="177"/></a></figure-inline></p>
14884 Image with link parameter, wiki target
14886 [[File:Foobar.jpg|link=Main Page]]
14888 <p><a href="/wiki/Main_Page" title="Main Page"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14891 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
14894 # parsoid T51293 (part 1)
14896 Image with link parameter, URL target
14898 [[File:Foobar.jpg|link=http://example.com/]]
14900 <p><a href="http://example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14903 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
14906 # parsoid T51293 (part 2)
14908 Image with link parameter, protocol-less URL target
14910 [[File:Foobar.jpg|link=//example.com/]]
14912 <p><a href="//example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14915 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="//example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
14919 Escaping non-block captions (T107435)
14922 "modes": ["wt2wt"],
14924 ["[typeof~='mw:Image']", "attr", "data-mw", "{\"caption\": \"|\"}"]
14928 [[Image:Foobar.jpg|caption]]
14930 [[Image:Foobar.jpg|<nowiki>|</nowiki>]]
14933 # wgExternalLinkTarget not supported by Parsoid
14935 Image with link parameter, wgExternalLinkTarget
14937 [[Image:foobar.jpg|link=http://example.com/]]
14939 wgExternalLinkTarget='foobar'
14941 <p><a href="http://example.com/" target="foobar" rel="nofollow noreferrer noopener"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14946 Image with link parameter, wgNoFollowLinks set to false
14948 [[Image:foobar.jpg|link=http://example.com/]]
14950 wgNoFollowLinks=false
14952 <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14957 Image with link parameter, wgNoFollowDomainExceptions
14959 [[Image:foobar.jpg|link=http://example.com/]]
14961 wgNoFollowDomainExceptions='example.com'
14963 <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14967 # wgExternalLinkTarget not supported by Parsoid
14969 Image with link parameter, wgExternalLinkTarget, unnamed parameter
14971 [[Image:foobar.jpg|link=http://example.com/|Title]]
14973 wgExternalLinkTarget='foobar'
14975 <p><a href="http://example.com/" title="Title" target="foobar" rel="nofollow noreferrer noopener"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14980 Image with empty link parameter
14982 [[File:Foobar.jpg|link=]]
14984 <p><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" />
14987 <p><figure-inline class="mw-default-size" typeof="mw:Image"><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></figure-inline></p>
14991 Image with link parameter (wiki target) and unnamed parameter
14993 [[File:Foobar.jpg|link=Main_Page|Title]]
14995 <p><a href="/wiki/Main_Page" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
14998 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15002 Image with link parameter (URL target) and unnamed parameter
15004 [[File:Foobar.jpg|link=http://example.com/|Title]]
15006 <p><a href="http://example.com/" title="Title" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15009 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15013 Thumbnail image with link parameter
15016 parsoid=wt2html,wt2wt,html2html
15018 [[File:Foobar.jpg|thumb|link=http://example.com/|Title]]
15020 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="http://example.com/"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
15023 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Title</figcaption></figure>
15027 Manually-specified thumbnail image
15031 [[File:Foobar.jpg|thumbnail=Thumb.png|Title]]
15033 <div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
15036 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
15040 Manually-specified thumbnail image with explicit link to wiki page
15043 parsoid=wt2html,wt2wt,html2html
15045 [[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|Title]]
15047 <div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
15050 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
15054 Manually-specified thumbnail image with explicit link to url
15057 parsoid=wt2html,wt2wt,html2html
15059 [[File:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]]
15061 <div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="http://example.com"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
15064 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="http://example.com"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
15068 Manually-specified thumbnail image with explicit no link
15071 parsoid=wt2html,wt2wt,html2html
15073 [[File:Foobar.jpg|thumb=Thumb.png|link=|Title]]
15075 <div class="thumb tright"><div class="thumbinner" style="width:137px;"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
15078 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></span><figcaption>Title</figcaption></figure>
15082 Manually-specified thumbnail image with explicit link and alt text
15085 parsoid=wt2html,wt2wt,html2html
15087 [[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|alt=alttext|Title]]
15089 <div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="alttext" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
15092 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="./Main_Page"><img alt="alttext" resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
15096 Image with frame and link
15098 parsoid=wt2html,wt2wt,html2html
15100 [[File:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
15102 <div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
15105 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></figcaption></figure>
15109 Image with frame and link and explicit alt
15111 parsoid=wt2html,wt2wt,html2html
15113 [[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]|alt=Altitude]]
15115 <div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
15118 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img alt="Altitude" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></figcaption></figure>
15122 Image with wiki markup in implicit alt
15124 [[Image:Foobar.jpg|testing '''bold''' in alt]]
15126 [[Image:Foobar.jpg|alt=testing '''bold''' in alt]]
15128 <p><a href="/wiki/File:Foobar.jpg" class="image" title="testing bold in alt"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15129 </p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15132 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"testing '''bold''' in alt"}]}' data-mw='{"caption":"testing <b data-parsoid='{\"dsr\":[27,37,3,3]}'>bold</b> in alt"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a></figure-inline></p>
15134 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"alt","ak":"alt=testing '''bold''' in alt"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img alt="testing bold in alt" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"testing bold in alt","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=testing '''bold''' in alt","resource":"Image:Foobar.jpg"}}'/></a></figure-inline></p>
15138 Alt image option should handle most kinds of wikitext without barfing
15140 [[Image:Foobar.jpg|thumb|This is the image caption|alt=This is a [[link]] and a {{echo|''bold template''}}.]]
15142 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a link and a bold template." src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is the image caption</div></div></div>
15145 <figure class="mw-default-size" typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"This is the image caption"},{"ck":"alt","ak":"alt=This is a [[link]] and a {{echo|''bold template''}}."}]}' data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["alt",{"html":"alt=This is a <a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link\"},\"sa\":{\"href\":\"link\"},\"dsr\":[65,73,2,2]}'>link</a> and a <i about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[80,106,null,null],\"pi\":[[{\"k\":\"1\"}]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&apos;&apos;bold template&apos;&apos;\"}},\"i\":0}}]}'>bold template</i>."}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img alt="This is a link and a bold template." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"alt":"This is a link and a bold template.","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=This is a [[link]] and a {{echo|''bold template''}}.","resource":"Image:Foobar.jpg"}}'/></a><figcaption>This is the image caption</figcaption></figure>
15149 Ampersand in alt attribute (T206940)
15152 "nativeGallery": true
15155 [[File:Foobar.jpg|alt=&amp;]]
15157 <!-- consistency with gallery extension -->
15159 File:Foobar.jpg|alt=&amp;
15162 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15164 <ul class="gallery mw-gallery-traditional">
15165 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15166 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15167 <div class="gallerytext">
15172 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="&amp;" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15174 <!-- consistency with gallery extension -->
15175 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
15176 <li class="gallerybox">
15177 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="&amp;" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15178 <div class="gallerytext"></div>
15184 Italics markup in alt attribute (T206940)
15186 [[File:Foobar.jpg|alt=''x''|caption]]
15188 <!-- consistency with gallery extension -->
15190 File:Foobar.jpg|alt=''x''|caption
15193 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="x" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15195 <ul class="gallery mw-gallery-traditional">
15196 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15197 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="x" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15198 <div class="gallerytext">
15205 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"alt","ak":"alt=''x''"},{"ck":"caption","ak":"caption"}]}' data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img alt="x" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"x","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=''x''","resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15207 <!-- consistency with gallery extension -->
15208 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|alt=''x''|caption\n"}}'>
15209 <li class="gallerybox">
15210 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="x" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15211 <div class="gallerytext">caption</div>
15217 Nowiki markup in alt attribute (T206940)
15219 [[File:Foobar.jpg|alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>|caption]]
15221 <!-- consistency with gallery extension -->
15223 File:Foobar.jpg|alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>|caption
15226 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="''x''" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15228 <ul class="gallery mw-gallery-traditional">
15229 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15230 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="''x''" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15231 <div class="gallerytext">
15238 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"alt","ak":"alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>"},{"ck":"caption","ak":"caption"}],"dsr":[0,71,null,null]}' data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img alt="''x''" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"''x''","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>","resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15240 <!-- consistency with gallery extension -->
15241 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>|caption\n"}}'>
15242 <li class="gallerybox">
15243 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="''x''" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15244 <div class="gallerytext">caption</div>
15250 Nowiki markup in alt attribute (edited html, no data-parsoid) (T206940)
15253 "nativeGallery": true
15256 [[File:Foobar.jpg|alt=<nowiki>''x''</nowiki>|caption]]
15258 <!-- consistency with gallery extension -->
15260 File:Foobar.jpg|alt=<nowiki>''x''</nowiki>|caption
15263 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="''x''" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15265 <ul class="gallery mw-gallery-traditional">
15266 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15267 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="''x''" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15268 <div class="gallerytext">
15275 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img alt="''x''" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15277 <!-- consistency with gallery extension -->
15278 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
15279 <li class="gallerybox">
15280 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="''x''" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15281 <div class="gallerytext">caption</div>
15287 Ampersand in link attribute (T206940)
15289 [[File:Foobar.jpg|link=Foo & bar]]
15291 <!-- consistency with gallery extension -->
15293 File:Foobar.jpg|link=Foo & bar
15296 <p><a href="/wiki/Foo_%26_bar" title="Foo & bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15298 <ul class="gallery mw-gallery-traditional">
15299 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15300 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15301 <div class="gallerytext">
15306 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=Foo &amp; bar"}]}'><a href="./Foo_&_bar" data-parsoid='{"a":{"href":"./Foo_&_bar"},"sa":{"href":"link=Foo &amp; bar"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15308 <!-- consistency with gallery extension -->
15309 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|link=Foo &amp; bar\n"}}'>
15310 <li class="gallerybox">
15311 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo_&_bar"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15312 <div class="gallerytext"></div>
15318 Ampersand in link attribute (edited html, no data-parsoid) (T206940)
15321 "nativeGallery": true
15324 [[File:Foobar.jpg|link=Foo_&_bar]]
15326 <!-- consistency with gallery extension -->
15328 File:Foobar.jpg|link=Foo_&_bar
15331 <p><a href="/wiki/Foo_%26_bar" title="Foo & bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15333 <ul class="gallery mw-gallery-traditional">
15334 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15335 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15336 <div class="gallerytext">
15341 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./Foo_&_bar"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15343 <!-- consistency with gallery extension -->
15344 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
15345 <li class="gallerybox">
15346 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo_&_bar"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15347 <div class="gallerytext"></div>
15353 Italics markup in link attribute (T206940)
15357 <!-- Note that "italics" are stripped, even though this is a valid page title -->
15358 [[File:Foobar.jpg|link=Foo''s bar''s|caption1]]
15360 [[File:Foobar.jpg|link=''Main Page''|caption2]]
15362 <!-- consistency with gallery extension -->
15364 File:Foobar.jpg|link=Foo''s bar''s|caption1
15365 File:Foobar.jpg|link=''Main Page''|caption2
15368 <p><a href="/wiki/Foo%27%27s_bar%27%27s" title="Foo''s bar''s">Foo''s bar''s</a>
15369 </p><p><a href="/wiki/Foos_bars" title="caption1"><img alt="caption1" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15370 </p><p><a href="/wiki/Main_Page" title="caption2"><img alt="caption2" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15372 <ul class="gallery mw-gallery-traditional">
15373 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15374 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foos_bars"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15375 <div class="gallerytext">
15380 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15381 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15382 <div class="gallerytext">
15389 <p><a rel="mw:WikiLink" href="./Foo''s_bar''s" title="Foo''s bar''s">Foo''s bar''s</a></p>
15391 <!-- Note that "italics" are stripped, even though this is a valid page title -->
15392 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=Foo''s bar''s"},{"ck":"caption","ak":"caption1"}]}' data-mw='{"caption":"caption1"}'><a href="./Foos_bars" data-parsoid='{"a":{"href":"./Foos_bars"},"sa":{"href":"link=Foo''s bar''s"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15394 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=''Main Page''"},{"ck":"caption","ak":"caption2"}]}' data-mw='{"caption":"caption2"}'><a href="./Main_Page" data-parsoid='{"a":{"href":"./Main_Page"},"sa":{"href":"link=''Main Page''"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15396 <!-- consistency with gallery extension -->
15397 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|link=Foo''s bar''s|caption1\nFile:Foobar.jpg|link=''Main Page''|caption2\n"}}'>
15398 <li class="gallerybox">
15399 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foos_bars"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15400 <div class="gallerytext">caption1</div>
15402 <li class="gallerybox">
15403 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15404 <div class="gallerytext">caption2</div>
15410 Nowiki markup in link attribute (T206940)
15412 [[File:Foobar.jpg|link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s|caption]]
15414 <!-- consistency with gallery extension -->
15416 File:Foobar.jpg|link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s|caption
15419 <p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15421 <ul class="gallery mw-gallery-traditional">
15422 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15423 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo%27%27s_bar%27%27s"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15424 <div class="gallerytext">
15431 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s"},{"ck":"caption","ak":"caption"}]}' data-mw='{"caption":"caption"}'><a href="./Foo''s_bar''s" data-parsoid='{"a":{"href":"./Foo''s_bar''s"},"sa":{"href":"link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15433 <!-- consistency with gallery extension -->
15434 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s|caption\n"}}'>
15435 <li class="gallerybox">
15436 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo''s_bar''s"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15437 <div class="gallerytext">caption</div>
15443 Nowiki markup in link attribute (edited html, no data-parsoid) (T206940)
15446 "nativeGallery": true
15449 [[File:Foobar.jpg|link=Foo<nowiki>''s_bar''</nowiki>s|caption]]
15451 <!-- consistency with gallery extension -->
15453 File:Foobar.jpg|link=Foo<nowiki>''s_bar''</nowiki>s|caption
15456 <p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15458 <ul class="gallery mw-gallery-traditional">
15459 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
15460 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Foo%27%27s_bar%27%27s"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
15461 <div class="gallerytext">
15468 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./Foo''s_bar''s"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15470 <!-- consistency with gallery extension -->
15471 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
15472 <li class="gallerybox">
15473 <div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo''s_bar''s"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div>
15474 <div class="gallerytext">caption</div>
15480 Image with table with attributes in caption
15482 parsoid=wt2html,html2html
15484 [[File:Foobar.jpg|thumb|
15491 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"\n{| class=\"123\" |\n|- class=\"456\" |\n| ha\n|}\n"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>
15492 <table class="123">
15493 <tbody><tr class="456" data-parsoid='{"startTagSrc":"|-"}'>
15496 </figcaption></figure>
15500 Image with table with rows from templates in caption
15502 [[File:Foobar.jpg|thumb|
15508 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"\n{|\n{{echo|{{!}} hi}}\n|}\n"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>
15510 <tbody about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}} hi"}},"i":0}},"\n"]}'><tr><td> hi</td></tr>
15512 </figcaption></figure>
15516 Image with nested tables in caption
15518 [[File:Foobar.jpg|thumb|Foo<br />
15527 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Foo<br/>\n{|\n|\n{|\n|z\n|}\n|}\n"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption data-parsoid='{"dsr":[null,50,null,null]}'>Foo<br data-parsoid='{"stx":"html","selfClose":true}'/>
15531 <tbody><tr><td>z</td></tr>
15532 </tbody></table></td></tr>
15534 </figcaption></figure>
15538 Image with heading and horizontal rule in caption
15540 [[File:Foobar.jpg|thumb|
15546 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><h3><span class="mw-headline" id="Testing">Testing</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Testing">edit</a><span class="mw-editsection-bracket">]</span></span></h3> 123 <hr /></div></div></div>
15549 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"\n=== Testing ===\n123\n--------------\n"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>
15550 <h3 id="Testing">Testing</h3>
15552 <hr data-parsoid='{"extra_dashes":10}'/>
15553 </figcaption></figure>
15556 ###################
15557 # Conflicting image format options.
15558 # First option specified should 'win'.
15559 # All three cases in each test should be identical.
15562 Image with 'frameless' first.
15564 parsoid=wt2html,wt2wt,html2html
15566 [[File:Foobar.jpg|frameless|caption]]
15568 [[File:Foobar.jpg|frameless|frame|caption]]
15570 [[File:Foobar.jpg|frameless|thumb|caption]]
15572 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
15573 </p><p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
15574 </p><p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
15577 <p><figure-inline class="mw-default-size" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure-inline></p>
15578 <p><figure-inline class="mw-default-size" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure-inline></p>
15579 <p><figure-inline class="mw-default-size" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure-inline></p>
15583 Image with 'frame' first.
15585 parsoid=wt2html,wt2wt,html2html
15587 [[File:Foobar.jpg|frame|caption]]
15588 [[File:Foobar.jpg|frame|frameless|caption]]
15589 [[File:Foobar.jpg|frame|thumb|caption]]
15591 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
15592 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
15593 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">caption</div></div></div>
15596 <figure class="mw-default-size" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
15597 <figure class="mw-default-size" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
15598 <figure class="mw-default-size" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
15602 Image with 'thumb' first.
15604 parsoid=wt2html,wt2wt,html2html
15606 [[File:Foobar.jpg|thumb|caption]]
15607 [[File:Foobar.jpg|thumb|frameless|caption]]
15608 [[File:Foobar.jpg|thumb|frame|caption]]
15610 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
15611 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
15612 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
15615 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
15616 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
15617 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
15620 ###################
15622 # See https://www.mediawiki.org/wiki/Help:Images#Size_and_frame
15623 # and https://phabricator.wikimedia.org/T64258
15624 # Foobar has actual size of 1941x220
15625 # 1. Thumbs & frameless always reduce, can't be enlarged unless it's
15626 # a scalable format.
15627 # 2. Framed images always ignore size options; always render at default size.
15628 # 3. "Unspecified format" and border are the only types which can be
15632 Image: unspecified format and border enlarge
15634 parsoid=wt2html,wt2wt,html2html
15636 [[File:Foobar.jpg|2000px]]
15638 [[File:Foobar.jpg|border|2000px]]
15640 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="2000" height="227" /></a>
15641 </p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="2000" height="227" class="thumbborder" /></a>
15644 <p><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></figure-inline></p>
15645 <p><figure-inline class="mw-image-border" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></figure-inline></p>
15649 Image: "unspecified format" and border reduce
15651 parsoid=wt2html,wt2wt,html2html
15653 [[File:Foobar.jpg|1000px]]
15655 [[File:Foobar.jpg|border|1000px]]
15657 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" width="1000" height="113" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
15658 </p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" width="1000" height="113" class="thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/1500px-Foobar.jpg 1.5x, http://example.com/images/3/3a/Foobar.jpg 2x" /></a>
15661 <p><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="113" width="1000"/></a></figure-inline></p>
15662 <p><figure-inline class="mw-image-border" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1000px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="113" width="1000"/></a></figure-inline></p>
15666 Image: thumbs reduce
15668 parsoid=wt2html,wt2wt,html2html
15670 [[File:Foobar.jpg|thumb|50px]]
15672 <div class="thumb tright"><div class="thumbinner" style="width:52px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
15675 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure>
15679 Image: bitmap thumbs can't be enlarged past original size, but vector can.
15681 parsoid=wt2html,wt2wt,html2html
15683 [[File:Foobar.jpg|thumb|2000px]]
15685 [[File:Foobar.svg|thumb|2000px]]
15687 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
15688 <div class="thumb tright"><div class="thumbinner" style="width:2002px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div></div></div></div>
15691 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
15692 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></figure>
15696 Image: frameless can reduce in size
15698 parsoid=wt2html,wt2wt,html2html
15700 [[File:Foobar.jpg|frameless|50px]]
15702 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>
15705 <p><figure-inline typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure-inline></p>
15709 Image: bitmap frameless can't be enlarged past original size, but vector can
15711 parsoid=wt2html,wt2wt,html2html
15713 [[File:Foobar.jpg|frameless|2000px]]
15715 [[File:Foobar.svg|frameless|2000px]]
15717 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15718 </p><p><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>
15721 <p><figure-inline typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
15722 <p><figure-inline typeof="mw:Image/Frameless"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></figure-inline></p>
15726 Image: framed images are always unscaled.
15728 parsoid=wt2html,wt2wt,html2html
15730 [[File:Foobar.jpg|frame]]
15732 [[File:Foobar.jpg|frame|50px]]
15734 [[File:Foobar.jpg|frame|50x50px]]
15736 [[File:Foobar.jpg|frame|2000px]]
15738 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
15739 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
15740 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
15741 <div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption"></div></div></div>
15744 <figure class="mw-default-size" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
15745 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
15746 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
15747 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
15750 ###################
15753 Link to image page- image page normally doesn't exists, hence edit link
15754 Add test with existing image page
15755 #<p><a href="/wiki/File:Test" title="Image:Test">Image:test</a>
15759 <p><a href="/index.php?title=File:Test&action=edit&redlink=1" class="new" title="File:Test (page does not exist)">Image:test</a>
15764 T20784 Link to non-existent image page with caption should use caption as link text
15766 [[:Image:test|caption]]
15768 <p><a href="/index.php?title=File:Test&action=edit&redlink=1" class="new" title="File:Test (page does not exist)">caption</a>
15773 Frameless image caption with a free URL
15775 [[File:Foobar.jpg|http://example.com]]
15777 <p><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15780 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"http://example.com"}]}' data-mw='{"caption":"<a rel=\"mw:ExtLink\" href=\"http://example.com\" data-parsoid='{\"stx\":\"url\",\"dsr\":[18,36,0,0]}'>http://example.com</a>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15784 Thumbnail image caption with a free URL
15788 [[File:Foobar.jpg|thumb|http://example.com]]
15790 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
15793 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
15797 Thumbnail image caption with a free URL and explicit alt
15800 parsoid=wt2html,wt2wt,html2html
15802 [[File:Foobar.jpg|thumb|http://example.com|alt=Alteration]]
15804 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
15807 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img alt="Alteration" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
15811 SVG thumbnails with no language set
15814 [[File:Foobar.svg|thumb|caption]]
15816 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
15819 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
15823 SVG thumbnails with language de
15825 parsoid=wt2html,wt2wt,html2html
15827 [[File:Foobar.svg|thumb|caption|lang=de]]
15829 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
15832 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" lang="de" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
15836 SVG thumbnails with invalid language code
15838 parsoid=wt2html,wt2wt,html2html
15840 [[File:Foobar.svg|thumb|caption|lang=invalid:language:code]]
15842 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>lang=invalid:language:code</div></div></div>
15845 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>lang=invalid:language:code</figcaption></figure>
15849 SVG thumbnails in page language
15852 wgMediaInTargetLanguage = true
15854 [[File:Foobar.svg]] [[File:Foobar.svg|lang=en]]
15856 <p><a href="/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a> <a href="/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Foobar.svg&lang=en" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a>
15861 SVG thumbnails in page language not present in the file
15864 wgMediaInTargetLanguage = true
15866 [[File:Foobar.svg]] [[File:Foobar.svg|lang=ru]]
15868 <p><a href="/wiki/Datei:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/480px-Foobar.svg.png 2x" /></a> <a href="/index.php?title=Datei:Foobar.svg&lang=ru" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/langru-240px-Foobar.svg.png" width="240" height="180" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langru-360px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langru-480px-Foobar.svg.png 2x" /></a>
15873 T3887: A ISBN with a thumbnail
15875 [[File:Foobar.jpg|thumb|ISBN 1235467890]]
15877 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
15880 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/1235467890" rel="mw:WikiLink">ISBN 1235467890</a></figcaption></figure>
15884 T3887: A RFC with a thumbnail
15886 [[File:Foobar.jpg|thumb|This is RFC 12354]]
15888 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
15891 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is <a href="https://tools.ietf.org/html/rfc12354" rel="mw:ExtLink" class="external mw-magiclink">RFC 12354</a></figcaption></figure>
15895 T3887: A mailto link with a thumbnail
15897 [[File:Foobar.jpg|thumb|Please mailto:nobody@example.com]]
15899 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
15902 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Please <a rel="mw:ExtLink" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>
15905 # Pending resolution to T2368
15907 T2648: Frameless image caption with a link
15909 [[File:Foobar.jpg|text with a [[link]] in it]]
15911 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15914 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[link]] in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link\"},\"sa\":{\"href\":\"link\"},\"dsr\":[30,38,2,2]}'>link</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15918 T2648: Frameless image caption with a link (suffix)
15920 [[File:Foobar.jpg|text with a [[link]]foo in it]]
15922 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15925 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[link]]foo in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Link\"},\"sa\":{\"href\":\"link\"},\"dsr\":[30,41,2,5],\"tail\":\"foo\"}'>linkfoo</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15929 T2648: Frameless image caption with an interwiki link
15931 [[File:Foobar.jpg|text with a [[MeatBall:Link]] in it]]
15933 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15936 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[MeatBall:Link]] in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink/Interwiki\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"http://www.usemod.com/cgi-bin/mb.pl?Link\"},\"sa\":{\"href\":\"MeatBall:Link\"},\"isIW\":true,\"dsr\":[30,47,2,2]}'>MeatBall:Link</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15940 T2648: Frameless image caption with a piped interwiki link
15942 [[File:Foobar.jpg|text with a [[MeatBall:Link|link]] in it]]
15944 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15947 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"text with a [[MeatBall:Link|link]] in it"}]}' data-mw='{"caption":"text with a <a rel=\"mw:WikiLink/Interwiki\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"http://www.usemod.com/cgi-bin/mb.pl?Link\"},\"sa\":{\"href\":\"MeatBall:Link\"},\"isIW\":true,\"dsr\":[30,52,16,2]}'>link</a> in it"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15951 T107474: Frameless image caption with <nowiki>
15953 [[File:Foobar.jpg|<nowiki>text with a [[MeatBall:Link|link]] in it</nowiki>]]
15955 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"<nowiki>text with a [[MeatBall:Link|link]] in it</nowiki>"}]}' data-mw='{"caption":"<span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[18,75,8,9]}'>text with a [[MeatBall:Link|link]] in it</span>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15959 Escape HTML special chars in image alt text
15961 [[File:Foobar.jpg|& < > "]]
15963 <p><a href="/wiki/File:Foobar.jpg" class="image" title="& < > ""><img alt="& < > "" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15966 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"& < > \""}]}' data-mw='{"caption":"&amp; &lt; > \""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15970 Escape HTML special chars in image alt text with LanguageConverter
15974 [[File:Foobar.jpg|& < > "]]
15976 <p><a href="/wiki/File:Foobar.jpg" class="image" title="& < > ""><img alt="& < > "" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
15979 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"& < > \""}]}' data-mw='{"caption":"&amp; &lt; > \""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
15983 Entities in file name and attributes
15985 [[File:7%25 solution.gif|manualthumb=7%25 solution.gif|link=7%25 solution|[[7%25 solution]]]]
15987 <p><a href="/index.php?title=Special:Upload&wpDestFile=7%25_solution.gif" class="new" title="File:7% solution.gif">7% solution</a>
15990 <p><figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"manualthumb=7%25 solution.gif"},{"ck":"link","ak":"link=7%25 solution"},{"ck":"caption","ak":"[[7%25 solution]]"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"<a rel=\"mw:WikiLink\" href=\"./7%25_solution\" title=\"7% solution\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./7%25_solution\"},\"sa\":{\"href\":\"7%25 solution\"},\"dsr\":[74,91,2,2]}'>7% solution</a>"}'><a href="./7%25_solution" data-parsoid='{"a":{"href":"./7%25_solution"},"sa":{"href":"link=7%25 solution"}}'><img resource="./File:7%25_solution.gif" src="./Special:FilePath/7%25_solution.gif" height="220" width="220" data-parsoid='{"a":{"resource":"./File:7%25_solution.gif","height":"220","width":"220"},"sa":{"resource":"File:7%25 solution.gif"}}'/></a></figure-inline></p>
15994 T2499: Alt text should have Ӓ, not &1234;
15996 [[File:Foobar.jpg|♀]]
15998 <p><a href="/wiki/File:Foobar.jpg" class="image" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
16001 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"&#9792;"}]}' data-mw='{"caption":"<span typeof=\"mw:Entity\" data-parsoid='{\"src\":\"&amp;#9792;\",\"srcContent\":\"♀\",\"dsr\":[18,25,null,null]}'>♀</span>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16005 Broken image caption with link
16007 parsoid=wt2html,wt2wt,html2html
16009 [[Image:Foobar.jpg|thumb|This is a broken caption. But [[Main Page|this]] is just an ordinary link.
16011 <p>[[Image:Foobar.jpg|thumb|This is a broken caption. But <a href="/wiki/Main_Page" title="Main Page">this</a> is just an ordinary link.
16014 <p>[[Image:Foobar.jpg|thumb|This is a broken caption. But <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">this</a> is just an ordinary link.</p>
16018 Image caption containing another image
16020 [[File:Foobar.jpg|thumb|This is a caption with another [[File:Thumb.png|image]] inside it!]]
16022 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption with another <a href="/wiki/File:Thumb.png" class="image" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" /></a> inside it!</div></div></div>
16025 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is a caption with another <figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"image"}'><a href="./File:Thumb.png"><img resource="./File:Thumb.png" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a></figure-inline> inside it!</figcaption></figure>
16029 Image: caption containing a newline
16031 [[File:Foobar.jpg|This
16034 <p><a href="/wiki/File:Foobar.jpg" class="image" title="This *is some text"><img alt="This *is some text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
16037 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"This\n*is some text"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
16041 Image: caption containing leading space
16042 (The leading space should not trigger nowiki escaping in wt2wt mode)
16044 [[File:Foobar.jpg|thumb| bar]]
16046 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>bar</div></div></div>
16049 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption> bar</figcaption></figure>
16052 # html/php output not have newlines after table, td, th, etc. because
16053 # Linker::makeThumbLink2() replaces the newlines with spaces since
16054 # the table is inside a caption.
16055 # FIXME: Verify if that circa 2004 fix is still required.
16057 Image: caption containing a table
16059 parsoid=wt2html,wt2wt,html2html
16061 [[Image:Foobar.jpg|thumb|200px|This is an example image thumbnail caption with a table
16067 and some more text.]]
16069 <div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is an example image thumbnail caption with a table <table> <tr> <th>Foo</th> <th>Bar </th></tr> <tr> <td>Foo1</td> <td>Bar1 </td></tr></table> and some more text.</div></div></div>
16072 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This is an example image thumbnail caption with a table
16075 <tr><th>Foo</th><th>Bar</th></tr>
16078 <td>Bar1</td></tr></tbody></table>and some more text.</figcaption></figure>
16082 T5090: External links other than http: in image captions
16084 [[File:Foobar.jpg|thumb|200x200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]]
16086 <div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
16089 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This caption has <a rel="mw:ExtLink" class="external text" href="irc://example.net">irc</a> and <a rel="mw:ExtLink" class="external text" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>
16095 parsoid=wt2html,wt2wt,html2html
16097 [[Image:foobar.jpg|a|class=b]]
16099 <p><a href="/wiki/File:Foobar.jpg" class="image" title="a"><img alt="a" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="b" /></a>
16102 <p><figure-inline class="mw-default-size b" typeof="mw:Image" data-mw='{"caption":"a"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
16106 Localized image handling (1).
16108 parsoid=wt2html,wt2wt,html2html
16111 [[Archivo:Foobar.jpg|izquierda|enlace=foo|caption]]
16113 <div class="floatleft"><a href="/wiki/Foo" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
16116 <figure class="mw-default-size mw-halign-left" typeof="mw:Image"><a href="./Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
16120 Localized image handling (2).
16123 parsoid=wt2html,wt2wt,html2html
16126 [[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]]
16128 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"></a></div>caption</div></div></div>
16131 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
16135 Localized image handling (3).
16140 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure>
16142 [[File:Foobar.jpg|بندانگشتی]]
16146 "border", "frameless" and "class" attributes on an image.
16149 parsoid=wt2html,wt2wt,html2html
16151 [[File:Foobar.jpg|frameless|border|class=extra|caption]]
16153 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="extra thumbborder" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
16156 <p><figure-inline class="mw-default-size mw-image-border extra" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a></figure-inline></p>
16159 # Note that 'right' is the default alignment, despite the misspelled 'righ' below
16161 Invalid image attributes (T64500)
16164 parsoid=wt2html,wt2wt,html2html
16166 [[File:Foobar.jpg|thumb|float|left|caption]]
16168 [[File:Foobar.jpg|thumb|righ|caption]]
16170 [[File:Foobar.jpg|bogus1|thumb|bogus2|left|bogus3|caption]]
16172 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
16173 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
16174 <div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
16177 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
16178 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
16179 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
16185 #REDIRECT [[File:Barfoo.jpg]]
16188 # FIXME: Parsoid should run this test -- but we'd need to teach the
16189 # mockAPI about the redirected Barfoo.jpg image.
16193 [[Image:Barfoo.jpg]]
16195 <p><a href="/wiki/File:Barfoo.jpg" class="mw-redirect" title="File:Barfoo.jpg">File:Barfoo.jpg</a>
16200 Missing image with uploads disabled
16204 [[File:Foobaz.jpg]]
16206 <p><a href="/wiki/File:Foobaz.jpg" title="File:Foobaz.jpg">File:Foobaz.jpg</a>
16209 <p><figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Foobaz.jpg"><img resource="./File:Foobaz.jpg" src="./Special:FilePath/Foobaz.jpg" height="220" width="220"/></a></figure-inline></p>
16212 # Parsoid-specific testing for images
16213 # https://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images
16214 # Currently imperfect due to a flaw in the Parsoid testrunner
16216 # THESE TESTS SHOULD BE MOVED UP and merged with the php-specific
16220 Parsoid-specific image handling - simple image with size and middle alignment
16222 [[File:Foobar.jpg|middle|50px]]
16224 <p><figure-inline class="mw-valign-middle" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure-inline></p>
16228 Parsoid-specific image handling - simple image with size, middle alignment, non-standard namespace alias
16230 parsoid=wt2wt,wt2html,html2html
16232 [[Image:Foobar.jpg|middle|50px]]
16234 <p><figure-inline class="mw-valign-middle" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure-inline></p>
16238 Parsoid-specific image handling - simple image with size and middle alignment (existing content)
16240 [[File:Foobar.jpg|50px|middle]]
16242 <p><figure-inline class="mw-valign-middle" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"50px"},{"ck":"middle","ak":"middle"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16246 Parsoid-specific image handling - simple image with size and middle alignment and non-standard namespace name
16248 parsoid=wt2html,wt2wt,html2html
16250 [[Image:Foobar.jpg|50px|middle]]
16252 <p><figure-inline class="mw-valign-middle" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a></figure-inline></p>
16256 Parsoid-specific image handling - simple image with both sizes, a baseline alignment, and a caption
16258 [[File:Foobar.jpg|500x10px|baseline|caption]]
16260 <p><figure-inline class="mw-valign-baseline" typeof="mw:Image" data-mw='{"caption":"caption"}' data-parsoid='{"optList":[{"ck":"width","ak":"500x10px"},{"ck":"baseline","ak":"baseline"},{"ck":"caption","ak":"caption"}],"size":"500x10"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/89px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="10" width="89" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"10","width":"89"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16264 Parsoid-specific image handling - simple image with border and size spec
16266 [[File:Foobar.jpg|50px|border|caption]]
16268 <p><figure-inline class="mw-image-border" typeof="mw:Image" data-mw='{"caption":"caption"}' data-parsoid='{"optList":[{"ck":"width","ak":"50px"},{"ck":"border","ak":"border"},{"ck":"caption","ak":"caption"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16272 Parsoid-specific image handling - thumbnail with halign, valign, and caption
16274 parsoid=wt2html,html2html
16276 [[File:Foobar.jpg|left|baseline|thumb|caption content]]
16278 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption content</figcaption></figure>
16282 Parsoid-specific image handling - thumbnail with halign, valign, and caption (existing content)
16284 parsoid=wt2html,html2html
16286 [[File:Foobar.jpg|thumb|left|baseline|caption content]]
16288 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"left","ak":"left"},{"ck":"baseline","ak":"baseline"},{"ck":"caption","ak":"caption content"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>caption content</figcaption></figure>
16292 Parsoid-specific image handling - thumbnail with specific size, halign, valign, and caption
16294 parsoid=wt2html,html2html
16296 [[Image:Foobar.jpg|right|middle|thumb|50x50px|caption]]
16298 <figure class="mw-halign-right" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50"/></a><figcaption>caption</figcaption></figure>
16302 Parsoid-specific image handling - thumbnail with specific size, halign, valign, and caption (existing content)
16304 parsoid=wt2html,html2html
16306 [[File:Foobar.jpg|thumb|50x50px|right|middle|caption]]
16308 <figure class="mw-halign-right" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"50x50px"},{"ck":"right","ak":"right"},{"ck":"middle","ak":"middle"},{"ck":"caption","ak":"caption"}],"size":"50x50"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="6" width="50" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"6","width":"50"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>caption</figcaption></figure>
16312 Parsoid-specific image handling - framed image with specific size and caption (size is ignored)
16314 parsoid=wt2html,wt2wt,html2html
16316 [[File:Foobar.jpg|frame|500x50px|caption]]
16318 <figure typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
16322 Parsoid-specific image handling - framed image with specific size, halign, valign, and caption (size is ignored)
16324 parsoid=wt2html,html2html
16326 [[File:Foobar.jpg|left|baseline|frame|500x50px|caption]]
16328 <figure class="mw-halign-left" typeof="mw:Image/Frame"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>caption</figcaption></figure>
16332 Parsoid-specific image handling - frameless image with specific size, border, and caption
16334 [[File:Foobar.jpg|frameless|442x50px|border|caption]]
16336 <p><figure-inline class="mw-image-border" typeof="mw:Image/Frameless" data-mw='{"caption":"caption"}' data-parsoid='{"optList":[{"ck":"frameless","ak":"frameless"},{"ck":"width","ak":"442x50px"},{"ck":"border","ak":"border"},{"ck":"caption","ak":"caption"}],"size":"442x50"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="50" width="442" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"50","width":"442"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16340 Parsoid-specific image handling - simple image with a formatted caption
16342 [[File:Foobar.jpg|<table><tr><td>a</td><td>b</td></tr><tr><td>c</td></tr></table>]]
16344 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"<table><tr><td>a</td><td>b</td></tr><tr><td>c</td></tr></table>"}]}' data-mw='{"caption":"<table data-parsoid='{\"stx\":\"html\",\"dsr\":[18,81,7,8]}'><tbody data-parsoid='{\"dsr\":[25,73,0,0]}'><tr data-parsoid='{\"stx\":\"html\",\"dsr\":[25,54,4,5]}'><td data-parsoid='{\"stx\":\"html\",\"dsr\":[29,39,4,5]}'>a</td><td data-parsoid='{\"stx\":\"html\",\"dsr\":[39,49,4,5]}'>b</td></tr><tr data-parsoid='{\"stx\":\"html\",\"dsr\":[54,73,4,5]}'><td data-parsoid='{\"stx\":\"html\",\"dsr\":[58,68,4,5]}'>c</td></tr></tbody></table>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16348 Parsoid-specific image handling - caption with a template in it
16350 [[File:Foobar.jpg|thumb|200x23px|This caption has a {{echo|transclusion}} in it.]]
16352 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"></a><figcaption>This caption has a <span about="#mwt1" typeof="mw:Transclusion" data-mw="{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}">transclusion</span> in it.</figcaption></figure>
16356 Parsoid-specific image handling - caption with unbalanced tags in it
16358 parsoid=wt2html,wt2wt,html2html
16361 [[File:Foobar.jpg|thumb|200x200px|This caption has a <center>unbalanced tag in it.]]
16365 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This caption has a <center>unbalanced tag in it.</center></figcaption></figure>
16370 Parsoid-specific image handling - empty caption (1)
16372 parsoid=wt2html,wt2wt
16374 [[File:Foobar.jpg|thumb|]]
16376 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption></figcaption></figure>
16379 # empty captions don't get serialized unless we're in the "round trip" case
16381 Parsoid-specific image handling - empty caption (2)
16385 <figure class="mw-default-size" typeof="mw:Image/Thumb">
16386 <a href="./File:Foobar.jpg">
16387 <img resource="./File:Foobar.jpg"
16388 src="//example.com/images/3/3a/Foobar.jpg"
16389 data-file-width="1941" data-file-height="220" data-file-type="bitmap"
16390 height="25" width="220"/>
16392 <figcaption></figcaption>
16395 [[File:Foobar.jpg|thumb]]
16399 Parsoid-specific image handling - whitespace caption
16401 [[File:Foobar.jpg|thumb| ]]
16403 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption> </figcaption></figure>
16407 Parsoid-specific image handling - lang option
16410 [[File:Foobar.svg|lang=de|caption]]
16414 <figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/f/ff/Foobar.svg" lang="de" data-file-width="240" data-file-height="180" data-file-type="drawing" height="180" width="240"/></a></figure-inline>
16418 ## Edge case bugs in Parsoid from T93580
16420 T93580: 1. Templated <ref> inside block images
16422 [[File:Foobar.jpg|thumb|Caption with templated ref: {{echo|<ref>foo</ref>}}]]
16426 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption with templated ref: {{echo|<ref>foo</ref>}}"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption with templated ref: <sup about="#mwt5" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<ref>foo</ref>"}},"i":0}}]}'><a href="./Parser_test#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></figcaption></figure>
16428 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Parser_test#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
16432 T93580: 2. <ref> inside inline images
16434 [[File:Foobar.jpg|Undisplayed caption in inline image with ref: <ref>foo</ref>]]
16438 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: <ref>foo</ref>"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: <sup about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid='{\"dsr\":[64,78,5,6]}' data-mw='{\"name\":\"ref\",\"attrs\":{},\"body\":{\"id\":\"mw-reference-text-cite_note-1\"}}'><a href=\"./Parser_test#cite_note-1\" style=\"counter-reset: mw-Ref 1;\" data-parsoid=\"{}\"><span class=\"mw-reflink-text\" data-parsoid=\"{}\">[1]</span></a></sup>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16440 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Parser_test#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
16444 T93580: 3. Templated <ref> inside inline images
16446 [[File:Foobar.jpg|Undisplayed caption in inline image with ref: {{echo|<ref>{{echo|foo}}</ref>}}]]
16450 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: {{echo|<ref>{{echo|foo}}</ref>}}"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: <sup about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Transclusion mw:Extension/ref\" data-parsoid='{\"dsr\":[64,96,null,null],\"pi\":[[{\"k\":\"1\"}]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&lt;ref>{{echo|foo}}&lt;/ref>\"}},\"i\":0}}]}'><a href=\"./Parser_test#cite_note-1\" style=\"counter-reset: mw-Ref 1;\" data-parsoid=\"{}\"><span class=\"mw-reflink-text\" data-parsoid=\"{}\">[1]</span></a></sup>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
16452 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Parser_test#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
16459 Subpage test/subpage
16467 subpage title=[[Subpage test]]
16471 <p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a>
16476 Subpage noslash link
16478 subpage title=[[Subpage test]]
16482 <p><a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">subpage</a>
16487 Subpage test/1/2/subpage
16493 Relative subpage noslash link
16495 parsoid=wt2wt,wt2html,html2html
16496 subpage title=[[Subpage test/1/2/3/4]]
16502 <p><a href="/wiki/Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">subpage</a>
16503 </p><p><a href="/wiki/Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">Subpage test/1/2/subpage</a>
16506 <p><a rel="mw:WikiLink" href="./Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">subpage</a></p>
16507 <p><a rel="mw:WikiLink" href="./Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">Subpage_test/1/2/subpage</a></p>
16511 Parsoid: dot-slash prefixed wikilinks
16521 </p><p>[[././baz/]]
16526 </p><p>[[././baz/]]
16531 Render invalid page names as plain text (T53090)
16543 [[foo[http://example.com]xyz]]
16545 [[{{echo|./../foo}}|bar]]
16546 [[{{echo|foo/.}}|bar]]
16547 [[{{echo|foo/..}}|bar]]
16548 [[{{echo|foo~~~~bar}}]]
16549 [[{{echo|foo>bar}}]]
16550 [[{{echo|foo././bar}}]]
16551 [[{{echo|foo{bar}}]]
16552 [[{{echo|foo}bar}}]]
16553 [[{{echo|foo[bar}}]]
16554 [[{{echo|foo]bar}}]]
16555 [[{{echo|foo<bar}}]]
16557 <p>[[./../foo|bar]]
16567 [[foo<a rel="nofollow" class="external autonumber" href="http://example.com">[1]</a>xyz]]
16568 </p><p>[[./../foo|bar]]
16581 <p>[[./../foo|bar]]
16591 [[foo<a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a>xyz]]</p>
16593 <p>[[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"./../foo"}},"i":0}}]}'>./../foo</span>|bar]]
16594 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo/."}},"i":0}}]}'>foo/.</span>|bar]]
16595 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo/.."}},"i":0}}]}'>foo/..</span>|bar]]
16596 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo~~~~bar"}},"i":0}}]}'>foo~~~~bar</span>]]
16597 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo>bar"}},"i":0}}]}'>foo>bar</span>]]
16598 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo././bar"}},"i":0}}]}'>foo././bar</span>]]
16599 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo{bar"}},"i":0}}]}'>foo{bar</span>]]
16600 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo}bar"}},"i":0}}]}'>foo}bar</span>]]
16601 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo[bar"}},"i":0}}]}'>foo[bar</span>]]
16602 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo]bar"}},"i":0}}]}'>foo]bar</span>]]
16603 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo<bar"}},"i":0}}]}'>foo<bar</span>]]</p>
16611 <p><a href="/index.php?title=/subpage&action=edit&redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a>
16616 T2561: {{/Subpage}}
16618 subpage title=[[Page]]
16622 <p><a href="/index.php?title=Page/Subpage&action=edit&redlink=1" class="new" title="Page/Subpage (page does not exist)">Page/Subpage</a>
16630 Category:MediaWiki User's Guide
16638 [[:Category:MediaWiki User's Guide]]
16640 <p><a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">Category:MediaWiki User's Guide</a>
16649 [[Category:MediaWiki User's Guide]]
16651 cat=MediaWiki_User's_Guide sort=
16653 <link rel="mw:PageProp/Category" href="./Category:MediaWiki_User's_Guide" data-parsoid='{"stx":"simple","a":{"href":"./Category:MediaWiki_User's_Guide"},"sa":{"href":"Category:MediaWiki User's Guide"}}'/>
16657 PAGESINCATEGORY invalid title fatal (r33546 fix)
16659 {{PAGESINCATEGORY:<bogus>}}
16666 Category with different sort key
16670 [[Category:MediaWiki User's Guide|Foo]]
16672 cat=MediaWiki_User's_Guide sort=Foo
16674 <link rel="mw:PageProp/Category" href="./Category:MediaWiki_User's_Guide#Foo" data-parsoid='{"stx":"piped","a":{"href":"./Category:MediaWiki_User's_Guide"},"sa":{"href":"Category:MediaWiki User's Guide"}}'/>
16678 Category with identical sort key
16682 [[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
16684 cat=MediaWiki_User's_Guide sort=MediaWiki User's Guide
16686 <link rel="mw:PageProp/Category" href="./Category:MediaWiki_User's_Guide#MediaWiki%20User's%20Guide" data-parsoid='{"stx":"piped","a":{"href":"./Category:MediaWiki_User's_Guide"},"sa":{"href":"Category:MediaWiki User's Guide"}}'/>
16690 Category with empty sort key
16695 [[Category:MediaWiki User's Guide|]]
16697 [[Category:MediaWiki User's Guide|MediaWiki User's Guide]]
16701 Category with empty sort key and parentheses
16706 [[Category:Foo (bar)|]]
16708 [[Category:Foo (bar)|Foo]]
16712 Category with link tail
16717 123[[Category:Foo]]456
16719 123[[Category:Foo]]456
16723 Category with template
16728 [[Category:{{echo|Foo}}]]
16730 [[Category:{{echo|Foo}}]]
16734 Category with template in sort key
16739 [[Category:Foo|{{echo|Bar}}]]
16741 [[Category:Foo|{{echo|Bar}}]]
16745 Category with template in sort key and title
16750 [[Category:{{echo|Foo}}|{{echo|Bar}}]]
16752 [[Category:{{echo|Foo}}|{{echo|Bar}}]]
16755 ## We used to, but no longer wt2wt this test since the default serializer
16756 ## will normalize all categories to serialize on their own line.
16757 ## This wikitext usage is going to be fairly uncommon in production and
16758 ## selser will take care of preserving formatting in those scenarios.
16760 Category / paragraph interactions
16764 Foo [[Category:Baz]] Bar
16766 Foo [[Category:Baz]]
16774 [[Category:Baz]] Bar
16787 {{echo|[[Category:Baz]]}}
16800 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
16801 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
16802 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
16803 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
16804 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
16805 <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Baz]]"}},"i":0}}]}'/>
16806 <link rel="mw:PageProp/Category" href="./Category:Baz"/>
16809 ## We used to, but no longer wt2wt this test since the default serializer
16810 ## will normalize all categories to serialize on their own line.
16811 ## This wikitext usage is going to be fairly uncommon in production and
16812 ## selser will take care of preserving formatting in those scenarios.
16814 ## The whitespace on the empty line is part of the test. Please do not delete
16816 1. Categories and newlines: All preceding newlines should be suppressed (courtesy T2087)
16822 [[Category:Foo]] and this should be part of same paragraph (not an indent-pre)
16824 {{echo|[[Category:Foo]] and so should this!}}
16826 <p>This and this should be part of same paragraph (not an indent-pre) and so should this!
16831 <link rel="mw:PageProp/Category" href="./Category:Foo"/> and this should be part of same paragraph (not an indent-pre)
16833 <link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]] and so should this!"}},"i":0}}]}'/><span about="#mwt1"> and so should this!</span></p>
16836 ## Parsoid will not try to wt2wt this while preserving newlines because
16837 ## it suppresses excess newlines within list items -- and we don't want to
16838 ## introduce a special case just for categories, which is, in reality somewhat
16839 ## odd behavior -- categories are unlikely to be used in list items like this
16840 ## in top-level pages and are only likely to show up in template-generated
16841 ## list items where this RT-ing is a non-issue.
16843 ## The whitespace on the empty line is part of the test. Please do not delete
16845 2. Categories and newlines: All preceding newlines should be suppressed (courtesy T2087)
16851 [[Category:Foo]] and this should be part of the same list item
16854 {{echo|[[Category:Foo]] and this should be part of the same list item}}
16856 <ul><li>This and this should be part of the same list item</li>
16857 <li>So should this and this should be part of the same list item</li></ul>
16860 <li>This <link rel="mw:PageProp/Category" href="./Category:Foo"/> and this should be part of the same list item</li>
16861 <li>So should this <link rel="mw:PageProp/Category" href="./Category:Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]] and this should be part of the same list item"}},"i":0}}]}'/><span> and this should be part of the same list item</span></li>
16865 ## Newlines and categories that follow the last item of a list
16866 ## are treated differently because this (list followed by categories)
16867 ## is an extremely common pattern on wikis.
16869 3. Categories and newlines: newline suppression for last list item should RT properly
16890 <link rel="mw:PageProp/Category" href="./Category:Foo"/>
16892 <link rel="mw:PageProp/Category" href="./Category:Bar"/>
16893 <link rel="mw:PageProp/Category" href="./Category:Baz"/>
16895 <dl><dd>c</dd></dl>
16897 <link rel="mw:PageProp/Category" href="./Category:C"/>
16899 <dl><dt>d</dt></dl>
16901 <link rel="mw:PageProp/Category" href="./Category:D"/>
16905 4. Categories and newlines: newline suppression for last list item should RT properly
16913 <ul><li><ul><li><ul><li>b</li></ul></li></ul></li></ul></li></ul>
16915 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/>
16918 ## only wt2html for this to make sure the algo only applies to the rightmost path
16920 5. Categories and newlines: migrateTrailingCategories dom pass should only run on the rightmost path of nested lists
16933 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/></li></ul></li>
16935 <ul><li>d</li></ul></li></ul>
16936 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/>
16939 ## We used to, but no longer wt2wt this test since the default serializer
16940 ## will normalize all categories to serialize on their own line.
16941 ## This wikitext usage is going to be fairly uncommon in production and
16942 ## selser will take care of preserving formatting in those scenarios.
16944 6. Categories and newlines: migrateTrailingCategories dom pass should not migrate categories not preceded by newlines
16948 *a [[Category:Foo]]
16950 <ul><li>a<link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/></li></ul>
16953 # This test also demonstrates because of newline+category tunneling
16954 # through the list hander, template wrapping doesn't expand to the
16955 # containing list when the list item swallows the category.
16957 7. Categories and newlines: migrateTrailingCategories dom pass should leave template content alone
16962 <ul><li><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n[[Category:Foo]]"}},"i":0}}]}'>a
16963 </span><link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"}}'/></li></ul>
16967 8. Categories and newlines: migrateTrailingCategories dom pass should not get tripped by intervening templates
16971 {{echo|[[Category:Foo]]
16975 <ul><li>a</li></ul>
16977 <link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"simple","a":{"href":"./Category:Foo"},"sa":{"href":"Category:Foo"},"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]]\n[[Category:Bar]]"}},"i":0}}]}'/><span about="#mwt1">
16978 </span><link rel="mw:PageProp/Category" href="./Category:Bar" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Category:Bar"},"sa":{"href":"Category:Bar"}}'/>
16979 <link rel="mw:PageProp/Category" href="./Category:Baz" data-parsoid='{"stx":"simple","a":{"href":"./Category:Baz"},"sa":{"href":"Category:Baz"}}'/>
16983 Categories and newlines: migrateTrailingCategories dom pass should not get tripped by comments and whitespace
16987 [[Category:Bar]]<!--boo1--> <!--boo2-->
16988 [[Category:Baz]]<!--boo3--> <!--boo4-->
16990 <ul><li>a</li></ul>
16992 <link rel="mw:PageProp/Category" href="./Category:Bar"/><!--boo1--> <!--boo2-->
16993 <link rel="mw:PageProp/Category" href="./Category:Baz"/><!--boo3--> <!--boo4-->
16997 Categories and newlines: should behave properly with linkprefix (T87753)
17012 <link rel="mw:PageProp/Category" href="./تصنيف:Foo"/>
17013 <link rel="mw:PageProp/Category" href="./تصنيف:Bar"/>
17017 No regressions on internal links following category (T174639)
17019 parsoid=wt2html,html2html
17021 [[Category:Foo]]<div>a
17026 <a href="/wiki/Foo" title="Foo">Foo</a></div>
17029 <link rel="mw:PageProp/Category" href="./Category:Foo"/><div>a
17031 <a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></div>
17034 # Note that Parsoid differs slightly from PHP due to T175421
17036 11. Special case where only newlines separate links (T175416)
17038 parsoid=wt2html,html2html
17042 [[Foo]][[es:Alimento]]
17047 <a href="/wiki/Foo" title="Foo">Foo</a>
17048 </p><p><a href="/wiki/Foo" title="Foo">Foo</a>
17051 <link rel="mw:PageProp/Category" href="./Category:Foo"/>
17053 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></p><link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Alimento"/>
17055 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></p>
17059 Category links with multiple namespaces
17061 [[Category:Project:Foo]]
17063 <link rel="mw:PageProp/Category" href="./Category:Project:Foo" />
17067 Parsoid: Serialize link to category page with colon escape
17071 [[:Category:Foo|Bar]]
17073 <p><a href="/index.php?title=Category:Foo&action=edit&redlink=1" class="new" title="Category:Foo (page does not exist)">Category:Foo</a>
17074 <a href="/index.php?title=Category:Foo&action=edit&redlink=1" class="new" title="Category:Foo (page does not exist)">Bar</a>
17078 <a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Category:Foo</a>
17079 <a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Bar</a>
17083 # We used to, but no longer wt2wt this test since the default serializer
17084 # will normalize all categories to serialize on their own line.
17085 # This wikitext usage is going to be fairly uncommon in production and
17086 # selser will take care of preventing whitespace insertion if this
17087 # occurs in an article.
17089 # html2html disabled for the same reason (whitespace insertion between
17092 # html2wt disabled because it localizes the "Category" namespace.
17094 Link prefix/suffixes aren't applied to category links
17104 <p>x<link rel="mw:PageProp/Category" href="./Flokkur:Foo" data-parsoid=""/>y</p>
17108 Link prefix/suffixes aren't applied to language links
17118 <p>x<link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Foo" data-parsoid=""/>y</p>
17122 Parsoid: Serialize link to file page with colon escape
17126 [[:File:Foo.png|Bar]]
17128 <p><a href="/index.php?title=File:Foo.png&action=edit&redlink=1" class="new" title="File:Foo.png (page does not exist)">File:Foo.png</a>
17129 <a href="/index.php?title=File:Foo.png&action=edit&redlink=1" class="new" title="File:Foo.png (page does not exist)">Bar</a>
17133 <a rel="mw:WikiLink" href="./File:Foo.png" title="File:Foo.png">File:Foo.png</a>
17134 <a rel="mw:WikiLink" href="./File:Foo.png" title="File:Foo.png">Bar</a>
17139 Parsoid: Serialize a genuine category link without colon escape
17142 [[Category:Foo|Bar]]
17145 <link rel="mw:PageProp/Category" href="./Category:Foo">
17146 <link rel="mw:PageProp/Category" href="./Category:Foo#Bar">
17150 Normalize hrefs properly before testing for invalid link targets (T72894)
17154 <link rel="mw:PageProp/Category" href="./Category:Toxine_bactérienne"/>
17156 [[Category:Toxine bactérienne]]
17160 Parsoid: Defaultsort
17162 {{DEFAULTSORT:Foo}}
17164 <meta property="mw:PageProp/categorydefaultsort" content="Foo"/>
17167 # NOTE: mw:ExpandedAttrs is not the best typeof here. mw:Transclusion is better.
17168 # But, this is a limitation of our representation and is documented in
17169 # TemplateHandler.js in processSpecialMagicWord
17171 Parsoid: Defaultsort (template-generated)
17173 {{{{echo|DEFAULTSORT}}:Foo}}
17175 <meta property="mw:PageProp/categorydefaultsort" content="Foo" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"src":"{{{{echo|DEFAULTSORT}}:Foo}}","dsr":[0,26,null,null]}' data-mw='{"attribs":[[{"txt":"content"},{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,22,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"DEFAULTSORT\"}},\"i\":0}}]}'>DEFAULTSORT</span>:Foo"}]]}'/>
17179 ### Inter-language links
17182 Interlanguage links
17190 es:Alimento fr:Nourriture zh:食品
17192 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Alimento"/>
17193 <link rel="mw:PageProp/Language" href="http://fr.wikipedia.org/wiki/Nourriture"/>
17194 <link rel="mw:PageProp/Language" href="http://zh.wikipedia.org/wiki/食品"/>
17198 Duplicate interlanguage links (T26502)
17209 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/1"/>
17210 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/2"/>
17211 <link rel="mw:PageProp/Language" href="http://fr.wikipedia.org/wiki/1"/>
17212 <link rel="mw:PageProp/Language" href="http://fr.wikipedia.org/wiki/2"/>
17219 Basic section headings
17226 ===Smaller headline===
17229 <h2><span class="mw-headline" id="Headline_1">Headline 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Headline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17232 <h2><span class="mw-headline" id="Headline_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17235 <h3><span class="mw-headline" id="Smaller_headline">Smaller headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Smaller headline">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17241 Section headings with TOC
17244 ===Subheadline 1===
17245 =====Skipping a level=====
17246 ======Skipping a level======
17250 ===Another headline===
17252 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17254 <li class="toclevel-1 tocsection-1"><a href="#Headline_1"><span class="tocnumber">1</span> <span class="toctext">Headline 1</span></a>
17256 <li class="toclevel-2 tocsection-2"><a href="#Subheadline_1"><span class="tocnumber">1.1</span> <span class="toctext">Subheadline 1</span></a>
17258 <li class="toclevel-3 tocsection-3"><a href="#Skipping_a_level"><span class="tocnumber">1.1.1</span> <span class="toctext">Skipping a level</span></a>
17260 <li class="toclevel-4 tocsection-4"><a href="#Skipping_a_level_2"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Skipping a level</span></a></li>
17267 <li class="toclevel-1 tocsection-5"><a href="#Headline_2"><span class="tocnumber">2</span> <span class="toctext">Headline 2</span></a>
17269 <li class="toclevel-2 tocsection-6"><a href="#Another_headline"><span class="tocnumber">2.1</span> <span class="toctext">Another headline</span></a></li>
17275 <h2><span class="mw-headline" id="Headline_1">Headline 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Headline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17276 <h3><span class="mw-headline" id="Subheadline_1">Subheadline 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Subheadline 1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17277 <h5><span class="mw-headline" id="Skipping_a_level">Skipping a level</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Skipping a level">edit</a><span class="mw-editsection-bracket">]</span></span></h5>
17278 <h6><span class="mw-headline" id="Skipping_a_level_2">Skipping a level</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Skipping a level">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
17279 <h2><span class="mw-headline" id="Headline_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17282 <h3><span class="mw-headline" id="Another_headline">Another headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: Another headline">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17287 TOC anchors don't collide
17295 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17297 <li class="toclevel-1 tocsection-1"><a href="#Headline_2"><span class="tocnumber">1</span> <span class="toctext">Headline 2</span></a></li>
17298 <li class="toclevel-1 tocsection-2"><a href="#Headline"><span class="tocnumber">2</span> <span class="toctext">Headline</span></a></li>
17299 <li class="toclevel-1 tocsection-3"><a href="#Headline_2_2"><span class="tocnumber">3</span> <span class="toctext">Headline 2</span></a></li>
17300 <li class="toclevel-1 tocsection-4"><a href="#Headline_3"><span class="tocnumber">4</span> <span class="toctext">Headline</span></a></li>
17304 <h2><span class="mw-headline" id="Headline_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17305 <h2><span class="mw-headline" id="Headline">Headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Headline">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17306 <h2><span class="mw-headline" id="Headline_2_2">Headline 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Headline 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17307 <h2><span class="mw-headline" id="Headline_3">Headline</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Headline">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17311 # perl -e 'print "="x$_," Level $_ heading","="x$_,"\n" for 1..10'
17312 # Parsoid html2wt direction adds <nowiki> for level 7 and up.
17314 Handling of sections up to level 6 and beyond
17319 ==Level 2 Heading==
17320 ===Level 3 Heading===
17321 ====Level 4 Heading====
17322 =====Level 5 Heading=====
17323 ======Level 6 Heading======
17324 =======Level 7 Heading=======
17325 ========Level 8 Heading========
17326 =========Level 9 Heading=========
17327 ==========Level 10 Heading==========
17329 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17331 <li class="toclevel-1 tocsection-1"><a href="#Level_1_Heading"><span class="tocnumber">1</span> <span class="toctext">Level 1 Heading</span></a>
17333 <li class="toclevel-2 tocsection-2"><a href="#Level_2_Heading"><span class="tocnumber">1.1</span> <span class="toctext">Level 2 Heading</span></a>
17335 <li class="toclevel-3 tocsection-3"><a href="#Level_3_Heading"><span class="tocnumber">1.1.1</span> <span class="toctext">Level 3 Heading</span></a>
17337 <li class="toclevel-4 tocsection-4"><a href="#Level_4_Heading"><span class="tocnumber">1.1.1.1</span> <span class="toctext">Level 4 Heading</span></a>
17339 <li class="toclevel-5 tocsection-5"><a href="#Level_5_Heading"><span class="tocnumber">1.1.1.1.1</span> <span class="toctext">Level 5 Heading</span></a>
17341 <li class="toclevel-6 tocsection-6"><a href="#Level_6_Heading"><span class="tocnumber">1.1.1.1.1.1</span> <span class="toctext">Level 6 Heading</span></a></li>
17342 <li class="toclevel-6 tocsection-7"><a href="#.3DLevel_7_Heading.3D"><span class="tocnumber">1.1.1.1.1.2</span> <span class="toctext">=Level 7 Heading=</span></a></li>
17343 <li class="toclevel-6 tocsection-8"><a href="#.3D.3DLevel_8_Heading.3D.3D"><span class="tocnumber">1.1.1.1.1.3</span> <span class="toctext">==Level 8 Heading==</span></a></li>
17344 <li class="toclevel-6 tocsection-9"><a href="#.3D.3D.3DLevel_9_Heading.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.4</span> <span class="toctext">===Level 9 Heading===</span></a></li>
17345 <li class="toclevel-6 tocsection-10"><a href="#.3D.3D.3D.3DLevel_10_Heading.3D.3D.3D.3D"><span class="tocnumber">1.1.1.1.1.5</span> <span class="toctext">====Level 10 Heading====</span></a></li>
17359 <h1><span class="mw-headline" id="Level_1_Heading">Level 1 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Level 1 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
17360 <h2><span class="mw-headline" id="Level_2_Heading">Level 2 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Level 2 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17361 <h3><span class="mw-headline" id="Level_3_Heading">Level 3 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Level 3 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17362 <h4><span class="mw-headline" id="Level_4_Heading">Level 4 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Level 4 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
17363 <h5><span class="mw-headline" id="Level_5_Heading">Level 5 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: Level 5 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h5>
17364 <h6><span class="mw-headline" id="Level_6_Heading">Level 6 Heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: Level 6 Heading">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
17365 <h6><span class="mw-headline" id=".3DLevel_7_Heading.3D">=Level 7 Heading=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=7" title="Edit section: =Level 7 Heading=">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
17366 <h6><span class="mw-headline" id=".3D.3DLevel_8_Heading.3D.3D">==Level 8 Heading==</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=8" title="Edit section: ==Level 8 Heading==">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
17367 <h6><span class="mw-headline" id=".3D.3D.3DLevel_9_Heading.3D.3D.3D">===Level 9 Heading===</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=9" title="Edit section: ===Level 9 Heading===">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
17368 <h6><span class="mw-headline" id=".3D.3D.3D.3DLevel_10_Heading.3D.3D.3D.3D">====Level 10 Heading====</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=10" title="Edit section: ====Level 10 Heading====">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
17371 <h1 id="Level_1_Heading" data-parsoid='{}'>Level 1 Heading</h1>
17372 <h2 id="Level_2_Heading" data-parsoid='{}'>Level 2 Heading</h2>
17373 <h3 id="Level_3_Heading" data-parsoid='{}'>Level 3 Heading</h3>
17374 <h4 id="Level_4_Heading" data-parsoid='{}'>Level 4 Heading</h4>
17375 <h5 id="Level_5_Heading" data-parsoid='{}'>Level 5 Heading</h5>
17376 <h6 id="Level_6_Heading" data-parsoid='{}'>Level 6 Heading</h6>
17377 <h6 id="=Level_7_Heading=" data-parsoid='{}'><span id=".3DLevel_7_Heading.3D" typeof="mw:FallbackId"></span>=Level 7 Heading=</h6>
17378 <h6 id="==Level_8_Heading==" data-parsoid='{}'><span id=".3D.3DLevel_8_Heading.3D.3D" typeof="mw:FallbackId"></span>==Level 8 Heading==</h6>
17379 <h6 id="===Level_9_Heading===" data-parsoid='{}'><span id=".3D.3D.3DLevel_9_Heading.3D.3D.3D" typeof="mw:FallbackId"></span>===Level 9 Heading===</h6>
17380 <h6 id="====Level_10_Heading====" data-parsoid='{}'><span id=".3D.3D.3D.3DLevel_10_Heading.3D.3D.3D.3D" typeof="mw:FallbackId"></span>====Level 10 Heading====</h6>
17384 TOC regression (T11764)
17388 ====title 1.1.1====
17393 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17395 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
17397 <li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a>
17399 <li class="toclevel-3 tocsection-3"><a href="#title_1.1.1"><span class="tocnumber">1.1.1</span> <span class="toctext">title 1.1.1</span></a></li>
17402 <li class="toclevel-2 tocsection-4"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
17405 <li class="toclevel-1 tocsection-5"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
17407 <li class="toclevel-2 tocsection-6"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
17413 <h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17414 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17415 <h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: title 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
17416 <h3><span class="mw-headline" id="title_1.2">title 1.2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: title 1.2">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17417 <h2><span class="mw-headline" id="title_2">title 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: title 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17418 <h3><span class="mw-headline" id="title_2.1">title 2.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: title 2.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17423 TOC for heading containing <span id="..."></span> (T96153)
17426 ==<span id="old-anchor"></span>New title==
17428 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17430 <li class="toclevel-1 tocsection-1"><a href="#New_title"><span class="tocnumber">1</span> <span class="toctext">New title</span></a></li>
17434 <h2><span class="mw-headline" id="New_title"><span id="old-anchor"></span>New title</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: New title">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17439 TOC with wgMaxTocLevel=3 (T8204)
17445 ====title 1.1.1====
17450 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17452 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
17454 <li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
17455 <li class="toclevel-2 tocsection-4"><a href="#title_1.2"><span class="tocnumber">1.2</span> <span class="toctext">title 1.2</span></a></li>
17458 <li class="toclevel-1 tocsection-5"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a>
17460 <li class="toclevel-2 tocsection-6"><a href="#title_2.1"><span class="tocnumber">2.1</span> <span class="toctext">title 2.1</span></a></li>
17466 <h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17467 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17468 <h4><span class="mw-headline" id="title_1.1.1">title 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: title 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
17469 <h3><span class="mw-headline" id="title_1.2">title 1.2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: title 1.2">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17470 <h2><span class="mw-headline" id="title_2">title 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: title 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17471 <h3><span class="mw-headline" id="title_2.1">title 2.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: title 2.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17476 TOC with wgMaxTocLevel=3 and two level four headings (T8204)
17482 ====Section 1.1.1====
17483 ====Section 1.1.1.1====
17486 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17488 <li class="toclevel-1 tocsection-1"><a href="#Section_1"><span class="tocnumber">1</span> <span class="toctext">Section 1</span></a>
17490 <li class="toclevel-2 tocsection-2"><a href="#Section_1.1"><span class="tocnumber">1.1</span> <span class="toctext">Section 1.1</span></a></li>
17493 <li class="toclevel-1 tocsection-5"><a href="#Section_2"><span class="tocnumber">2</span> <span class="toctext">Section 2</span></a></li>
17497 <h2><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17498 <h3><span class="mw-headline" id="Section_1.1">Section 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Section 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17499 <h4><span class="mw-headline" id="Section_1.1.1">Section 1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Section 1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
17500 <h4><span class="mw-headline" id="Section_1.1.1.1">Section 1.1.1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Section 1.1.1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
17501 <h2><span class="mw-headline" id="Section_2">Section 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: Section 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17507 Resolving duplicate section names
17512 <h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17513 <h2><span class="mw-headline" id="Foo_bar_2">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17518 Resolving duplicate section names with differing case (T12721)
17523 <h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17524 <h2><span class="mw-headline" id="Foo_Bar_2">Foo Bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17536 Template with sections, __NOTOC__
17543 <h2><span class="mw-headline" id="Section_0">Section 0</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 0">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17544 <h3><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Sections&action=edit&section=T-1" title="Template:Sections">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17545 <h2><span class="mw-headline" id="Section_2">Section 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Template:Sections&action=edit&section=T-2" title="Template:Sections">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17546 <h2><span class="mw-headline" id="Section_4">Section 4</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Section 4">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17551 __NOEDITSECTION__ keyword
17557 <h2><span class="mw-headline" id="Section_1">Section 1</span></h2>
17558 <h2><span class="mw-headline" id="Section_2">Section 2</span></h2>
17563 Link inside a section heading
17565 ==Section with a [[Main Page|link]] in it==
17567 <h2><span class="mw-headline" id="Section_with_a_link_in_it">Section with a <a href="/wiki/Main_Page" title="Main Page">link</a> in it</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section with a link in it">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17572 TOC regression (T14077)
17579 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17581 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
17583 <li class="toclevel-2 tocsection-2"><a href="#title_1.1"><span class="tocnumber">1.1</span> <span class="toctext">title 1.1</span></a></li>
17586 <li class="toclevel-1 tocsection-3"><a href="#title_2"><span class="tocnumber">2</span> <span class="toctext">title 2</span></a></li>
17590 <h2><span class="mw-headline" id="title_1">title 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: title 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17591 <h3><span class="mw-headline" id="title_1.1">title 1.1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: title 1.1">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
17592 <h2><span class="mw-headline" id="title_2">title 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: title 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17597 T3219 URL next to image (good)
17599 http://example.com [[File:Foobar.jpg]]
17601 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
17604 <p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a> <figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
17607 # Parsoid doesn't wt2wt this cleanly because it adds <nowiki>s.
17609 Short headings with trailing space should match behavior of Parser::doHeadings (T21910)
17611 parsoid=wt2html,html2html
17614 The line above must have a trailing space!
17617 But just in case it doesn't...
17619 <h1><span class="mw-headline" id=".3D">=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: =">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
17620 <p>The line above must have a trailing space!
17622 <h1><span class="mw-headline" id=".3D_2">=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: =">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
17623 <p>But just in case it doesn't...
17626 <h1 id="="><span id=".3D" typeof="mw:FallbackId"></span>=</h1>
17627 <p>The line above must have a trailing space!</p>
17628 <h1 id="=_2"><span id=".3D_2" typeof="mw:FallbackId"></span>=</h1> <!--
17630 <p>But just in case it doesn't...</p>
17634 Header with special characters (T27462)
17636 The tooltips shall not show entities to the user (ie. be double escaped)
17653 <p>The tooltips shall not show entities to the user (ie. be double escaped)
17655 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17657 <li class="toclevel-1 tocsection-1"><a href="#text_.3E_text"><span class="tocnumber">1</span> <span class="toctext">text > text</span></a></li>
17658 <li class="toclevel-1 tocsection-2"><a href="#text_.3C_text"><span class="tocnumber">2</span> <span class="toctext">text < text</span></a></li>
17659 <li class="toclevel-1 tocsection-3"><a href="#text_.26_text"><span class="tocnumber">3</span> <span class="toctext">text & text</span></a></li>
17660 <li class="toclevel-1 tocsection-4"><a href="#text_.27_text"><span class="tocnumber">4</span> <span class="toctext">text ' text</span></a></li>
17661 <li class="toclevel-1 tocsection-5"><a href="#text_.22_text"><span class="tocnumber">5</span> <span class="toctext">text " text</span></a></li>
17665 <h2><span class="mw-headline" id="text_.3E_text">text > text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: text > text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17668 <h2><span class="mw-headline" id="text_.3C_text">text < text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: text < text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17671 <h2><span class="mw-headline" id="text_.26_text">text & text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: text & text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17674 <h2><span class="mw-headline" id="text_.27_text">text ' text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: text ' text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17677 <h2><span class="mw-headline" id="text_.22_text">text " text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: text " text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17681 <p>The tooltips shall not show entities to the user (ie. be double escaped)</p>
17683 <h2 id="text_>_text"><span id="text_.3E_text" typeof="mw:FallbackId"></span>text > text</h2>
17686 <h2 id="text_<_text"><span id="text_.3C_text" typeof="mw:FallbackId"></span>text < text</h2>
17689 <h2 id="text_&_text"><span id="text_.26_text" typeof="mw:FallbackId"></span>text & text</h2>
17692 <h2 id="text_'_text"><span id="text_.27_text" typeof="mw:FallbackId"></span>text ' text</h2>
17695 <h2 id='text_"_text'><span id="text_.22_text" typeof="mw:FallbackId"></span>text " text</h2>
17700 Header with space, plus and underscore as entity
17702 Id should not contain + for spaces
17704 ==Space between Text==
17707 ==Space-Entity between Text==
17710 ==Plus+between+Text==
17713 ==Plus-Entity+between+Text==
17716 ==Underscore_between_Text==
17719 ==Underscore-Entity_between_Text==
17722 [[#Space between Text]]
17723 [[#Space-Entity between Text]]
17724 [[#Plus+between+Text]]
17725 [[#Plus-Entity+between+Text]]
17726 [[#Underscore_between_Text]]
17727 [[#Underscore-Entity_between_Text]]
17729 <p>Id should not contain + for spaces
17731 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17733 <li class="toclevel-1 tocsection-1"><a href="#Space_between_Text"><span class="tocnumber">1</span> <span class="toctext">Space between Text</span></a></li>
17734 <li class="toclevel-1 tocsection-2"><a href="#Space-Entity_between_Text"><span class="tocnumber">2</span> <span class="toctext">Space-Entity between Text</span></a></li>
17735 <li class="toclevel-1 tocsection-3"><a href="#Plus.2Bbetween.2BText"><span class="tocnumber">3</span> <span class="toctext">Plus+between+Text</span></a></li>
17736 <li class="toclevel-1 tocsection-4"><a href="#Plus-Entity.2Bbetween.2BText"><span class="tocnumber">4</span> <span class="toctext">Plus-Entity+between+Text</span></a></li>
17737 <li class="toclevel-1 tocsection-5"><a href="#Underscore_between_Text"><span class="tocnumber">5</span> <span class="toctext">Underscore_between_Text</span></a></li>
17738 <li class="toclevel-1 tocsection-6"><a href="#Underscore-Entity_between_Text"><span class="tocnumber">6</span> <span class="toctext">Underscore-Entity_between_Text</span></a></li>
17742 <h2><span class="mw-headline" id="Space_between_Text">Space between Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Space between Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17745 <h2><span class="mw-headline" id="Space-Entity_between_Text">Space-Entity between Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Space-Entity between Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17748 <h2><span class="mw-headline" id="Plus.2Bbetween.2BText">Plus+between+Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Plus+between+Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17751 <h2><span class="mw-headline" id="Plus-Entity.2Bbetween.2BText">Plus-Entity+between+Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Plus-Entity+between+Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17754 <h2><span class="mw-headline" id="Underscore_between_Text">Underscore_between_Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: Underscore between Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17757 <h2><span class="mw-headline" id="Underscore-Entity_between_Text">Underscore-Entity_between_Text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: Underscore-Entity_between_Text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17759 </p><p><a href="#Space_between_Text">#Space between Text</a>
17760 <a href="#Space-Entity_between_Text">#Space-Entity between Text</a>
17761 <a href="#Plus.2Bbetween.2BText">#Plus+between+Text</a>
17762 <a href="#Plus-Entity.2Bbetween.2BText">#Plus-Entity+between+Text</a>
17763 <a href="#Underscore_between_Text">#Underscore_between_Text</a>
17764 <a href="#Underscore-Entity_between_Text">#Underscore-Entity_between_Text</a>
17767 <p>Id should not contain + for spaces</p>
17769 <h2 id="Space_between_Text">Space between Text</h2>
17772 <h2 id="Space-Entity_between_Text">Space-Entity<span typeof="mw:Entity" data-parsoid='{"src":"&#32;","srcContent":" "}'> </span>between<span typeof="mw:Entity" data-parsoid='{"src":"&#32;","srcContent":" "}'> </span>Text</h2>
17775 <h2 id="Plus+between+Text"><span id="Plus.2Bbetween.2BText" typeof="mw:FallbackId"></span>Plus+between+Text</h2>
17778 <h2 id="Plus-Entity+between+Text"><span id="Plus-Entity.2Bbetween.2BText" typeof="mw:FallbackId"></span>Plus-Entity<span typeof="mw:Entity" data-parsoid='{"src":"&#43;","srcContent":"+"}'>+</span>between<span typeof="mw:Entity" data-parsoid='{"src":"&#43;","srcContent":"+"}'>+</span>Text</h2>
17781 <h2 id="Underscore_between_Text">Underscore_between_Text</h2>
17784 <h2 id="Underscore-Entity_between_Text">Underscore-Entity<span typeof="mw:Entity" data-parsoid='{"src":"&#95;","srcContent":"_"}'>_</span>between<span typeof="mw:Entity" data-parsoid='{"src":"&#95;","srcContent":"_"}'>_</span>Text</h2>
17787 <p><a rel="mw:WikiLink" href="./Parser_test#Space_between_Text" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Space_between_Text"},"sa":{"href":"#Space between Text"}}'>#Space between Text</a>
17788 <a rel="mw:WikiLink" href="./Parser_test#Space-Entity_between_Text" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Space-Entity_between_Text"},"sa":{"href":"#Space-Entity&#32;between&#32;Text"}}'>#Space-Entity between Text</a>
17789 <a rel="mw:WikiLink" href="./Parser_test#Plus+between+Text" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Plus+between+Text"},"sa":{"href":"#Plus+between+Text"}}'>#Plus+between+Text</a>
17790 <a rel="mw:WikiLink" href="./Parser_test#Plus-Entity+between+Text" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Plus-Entity+between+Text"},"sa":{"href":"#Plus-Entity&#43;between&#43;Text"}}'>#Plus-Entity+between+Text</a>
17791 <a rel="mw:WikiLink" href="./Parser_test#Underscore_between_Text" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Underscore_between_Text"},"sa":{"href":"#Underscore_between_Text"}}'>#Underscore_between_Text</a>
17792 <a rel="mw:WikiLink" href="./Parser_test#Underscore-Entity_between_Text" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Underscore-Entity_between_Text"},"sa":{"href":"#Underscore-Entity&#95;between&#95;Text"}}'>#Underscore-Entity_between_Text</a></p>
17795 # Parsoid html2wt disabled because it adds padding spaces around =
17797 Headers with excess '=' characters
17798 (Are similar tests necessary beyond the 1st level?)
17800 parsoid=wt2html,wt2wt,html2html
17804 =''italic'' heading==
17805 ==''italic'' heading=
17807 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17809 <li class="toclevel-1 tocsection-1"><a href="#foo.3D"><span class="tocnumber">1</span> <span class="toctext">foo=</span></a></li>
17810 <li class="toclevel-1 tocsection-2"><a href="#.3Dfoo"><span class="tocnumber">2</span> <span class="toctext">=foo</span></a></li>
17811 <li class="toclevel-1 tocsection-3"><a href="#italic_heading.3D"><span class="tocnumber">3</span> <span class="toctext"><i>italic</i> heading=</span></a></li>
17812 <li class="toclevel-1 tocsection-4"><a href="#.3Ditalic_heading"><span class="tocnumber">4</span> <span class="toctext">=<i>italic</i> heading</span></a></li>
17816 <h1><span class="mw-headline" id="foo.3D">foo=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: foo=">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
17817 <h1><span class="mw-headline" id=".3Dfoo">=foo</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: =foo">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
17818 <h1><span class="mw-headline" id="italic_heading.3D"><i>italic</i> heading=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: italic heading=">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
17819 <h1><span class="mw-headline" id=".3Ditalic_heading">=<i>italic</i> heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: =italic heading">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
17822 <h1 id="foo="><span id="foo.3D" typeof="mw:FallbackId"></span>foo=</h1>
17823 <h1 id="=foo"><span id=".3Dfoo" typeof="mw:FallbackId"></span>=foo</h1>
17824 <h1 id="italic_heading="><span id="italic_heading.3D" typeof="mw:FallbackId"></span><i>italic</i> heading=</h1>
17825 <h1 id="=italic_heading"><span id=".3Ditalic_heading" typeof="mw:FallbackId"></span>=<i>italic</i> heading</h1>
17829 HTML headers vs TOC (T25393)
17830 (__NOEDITSECTION__ for clearer output, doesn't matter here)
17842 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
17844 <li class="toclevel-1"><a href="#Header_1"><span class="tocnumber">1</span> <span class="toctext">Header 1</span></a>
17846 <li class="toclevel-2 tocsection-1"><a href="#Header_1.1"><span class="tocnumber">1.1</span> <span class="toctext">Header 1.1</span></a></li>
17847 <li class="toclevel-2 tocsection-2"><a href="#Header_1.2"><span class="tocnumber">1.2</span> <span class="toctext">Header 1.2</span></a></li>
17850 <li class="toclevel-1"><a href="#Header_2"><span class="tocnumber">2</span> <span class="toctext">Header 2</span></a>
17852 <li class="toclevel-2 tocsection-3"><a href="#Header_2.1"><span class="tocnumber">2.1</span> <span class="toctext">Header 2.1</span></a></li>
17853 <li class="toclevel-2 tocsection-4"><a href="#Header_2.2"><span class="tocnumber">2.2</span> <span class="toctext">Header 2.2</span></a></li>
17859 <h1><span class="mw-headline" id="Header_1">Header 1</span></h1>
17860 <h2><span class="mw-headline" id="Header_1.1">Header 1.1</span></h2>
17861 <h2><span class="mw-headline" id="Header_1.2">Header 1.2</span></h2>
17862 <h1><span class="mw-headline" id="Header_2">Header 2
17864 <h2><span class="mw-headline" id="Header_2.1">Header 2.1</span></h2>
17865 <h2><span class="mw-headline" id="Header_2.2">Header 2.2</span></h2>
17868 <h1 id="Header_1" data-parsoid='{"stx":"html"}'>Header 1</h1>
17869 <h2 id="Header_1.1" data-parsoid='{}'>Header 1.1</h2>
17870 <h2 id="Header_1.2" data-parsoid='{}'>Header 1.2</h2>
17872 <h1 id="Header_2" data-parsoid='{"stx":"html"}'>Header 2
17874 <h2 id="Header_2.1" data-parsoid='{}'>Header 2.1</h2>
17875 <h2 id="Header_2.2" data-parsoid='{}'>Header 2.2</h2>
17876 <meta property="mw:PageProp/noeditsection"/>
17880 Single-line or multiline-comments can follow headings
17882 parsoid=wt2html,wt2wt
17890 <h2><span class="mw-headline" id="foo">foo</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: foo">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17891 <h2><span class="mw-headline" id="bar">bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17892 <h2><span class="mw-headline" id="baz">baz</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: baz">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
17895 <h2 id="foo">foo</h2><!---->
17896 <h2 id="bar">bar</h2><!--c1-->
17897 <h2 id="baz">baz</h2><!--
17903 T3219 URL next to image (broken)
17905 http://example.com[[File:Foobar.jpg]]
17907 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
17910 <p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
17914 T3186 news: in the middle of text
17916 http://en.wikinews.org/wiki/Wikinews:Workplace
17918 <p><a rel="nofollow" class="external free" href="http://en.wikinews.org/wiki/Wikinews:Workplace">http://en.wikinews.org/wiki/Wikinews:Workplace</a>
17924 Namespaced link must have a title
17933 Namespaced link must have a title (bad fragment version)
17935 [[Project:#fragment]]
17937 <p>[[Project:#fragment]]
17943 ### HTML tags and HTML attributes
17947 div with no attributes
17949 <div>HTML rocks</div>
17951 <div>HTML rocks</div>
17956 div with double-quoted attribute
17958 <div id="rock">HTML rocks</div>
17960 <div id="rock">HTML rocks</div>
17965 div with single-quoted attribute
17967 <div id='rock'>HTML rocks</div>
17969 <div id="rock">HTML rocks</div>
17974 div with unquoted attribute
17976 <div id=rock>HTML rocks</div>
17978 <div id="rock">HTML rocks</div>
17983 div with illegal double attributes
17985 <div id="a" id="b">HTML rocks</div>
17987 <div id="b">HTML rocks</div>
17992 div with empty attribute value, space before equals
17994 parsoid=wt2html,html2html
17996 <div class =>HTML rocks</div>
17998 <div class="">HTML rocks</div>
18001 <div class="" data-parsoid='{"stx":"html"}'>HTML rocks</div>
18005 div with multiple empty attribute values
18007 wgFragmentMode=[ 'html5', 'legacy' ]
18009 parsoid=wt2html,html2html
18011 <div id= title=>HTML rocks</div>
18013 <div id="title=">HTML rocks</div>
18016 <div id="title=" data-parsoid='{"stx":"html"}'>HTML rocks</div>
18019 # FIXME Parsoid doesn't actually match PHP here.
18020 # Probably we should use the synthetic <foo /> or <indicator>
18021 # extensions for this test, which are enabled when running parser tests.
18023 Extension tag in attribute value
18025 <span title="<translate>123</translate>">ok</span>
18026 !! html/php+disabled
18027 <p><span title="<translate>123</translate>">ok</span>
18030 <p><span title="123" about="#mwt4" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"title":"123"},"sa":{"title":"<translate>123</translate>"}}' data-mw='{"attribs":[[{"txt":"title"},{"html":"<translate typeof=\"mw:Extension/translate\" about=\"#mwt3\" data-parsoid='{\"dsr\":[13,39,2,2]}' data-mw='{\"name\":\"translate\",\"attrs\":{},\"body\":{\"extsrc\":\"123\"}}'>123</translate>"}]]}'>ok</span></p>
18034 table with multiple empty attribute values
18036 parsoid=wt2html,html2html
18042 <table title="id=">
18048 <table title="id=">
18049 <tbody><tr><td>hi</td></tr>
18054 div with braces in attribute value
18056 <div title="{}">Foo</div>
18058 <div title="{}">Foo</div>
18061 <div title="{}">Foo</div>
18065 div with empty attribute value, no space before equals
18067 parsoid=wt2html,html2html
18069 <div class=>HTML rocks</div>
18071 <div class="">HTML rocks</div>
18074 <div class="">HTML rocks</div>
18078 HTML multiple attributes correction
18080 <p class="error" class="awesome">Awesome!</p>
18082 <p class="awesome">Awesome!</p>
18087 Table multiple attributes correction
18090 !+ class="error" class="awesome"|status
18095 <th class="awesome">status
18103 <DIV ID="x">HTML ROCKS</DIV>
18105 <div id="x">HTML ROCKS</div>
18110 Non-ASCII pseudo-tags are rendered as text
18119 Pseudo-tag with URL 'name' renders as url link
18121 <http://example.com/>
18123 <p><<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>>
18128 text with amp in the middle of nowhere
18132 <p>Remember AT&T?
18137 text with character entity: eacute
18139 I always thought é was a cute letter.
18141 <p>I always thought é was a cute letter.
18146 text with entity-escaped character entity-like string: eacute
18148 I always thought &eacute; was a cute letter.
18150 <p>I always thought &eacute; was a cute letter.
18155 text with undefined character entity: xacute
18157 I always thought &xacute; was a cute letter.
18159 <p>I always thought &xacute; was a cute letter.
18166 <data value="5">five</data>
18167 <time datetime="2000-01-01T00:00Z">The new millenium started</time>
18168 <mark>This highlighted text</mark>
18170 <p><data value="5">five</data>
18171 <time datetime="2000-01-01T00:00Z">The new millenium started</time>
18172 <mark>This highlighted text</mark>
18177 HTML tag with leading space is parsed as text
18181 <p>< div>foo< /div>
18185 ## Don't expect Parsoid and PHP to match, since PHP isn't exactly following
18186 ## the HTML5 parsing spec.
18188 Element with broken attribute syntax
18192 <div style=" style="123">hi</div>
18195 <div style="123">hi</div>
18199 <div style=" style=" data-parsoid='{"stx":"html","a":{"123\"":null},"sa":{"123\"":""}}'>hi</div>
18200 <div data-parsoid='{"stx":"html","a":{"=":null},"sa":{"=":""}}'>ho</div>
18204 ### Nesting tests (see T43545, T52604, T53081)
18207 # This test case is fixed in Parsoid by domino 1.0.12. (T52604)
18208 # Note that html2wt is considerably more difficult if we use <b> in
18209 # the test case, instead of <small>
18211 Ensure that HTML adoption agency algorithm is properly implemented.
18213 <small>X<small>Y</small>Z</small>
18215 <p><small>X<small>Y</small>Z</small>
18219 # This was T43545 in the PHP parser.
18223 <kbd>X<kbd>Y</kbd>Z</kbd>
18225 <p><kbd>X<kbd>Y</kbd>Z</kbd>
18229 # The following cases were T53081 in the PHP parser.
18230 # Note that there are some other nestable tags (b, i, etc) which are
18231 # not covered; see T53081 for discussion.
18236 <em>X<em>Y</em>Z</em>
18238 <p><em>X<em>Y</em>Z</em>
18243 Nesting of <strong>
18245 <strong>X<strong>Y</strong>Z</strong>
18247 <p><strong>X<strong>Y</strong>Z</strong>
18256 <p><q>X<q>Y</q>Z</q>
18263 <ruby>X<ruby>Y</ruby>Z</ruby>
18265 <p><ruby>X<ruby>Y</ruby>Z</ruby>
18272 <bdo>X<bdo>Y</bdo>Z</bdo>
18274 <p><bdo>X<bdo>Y</bdo>Z</bdo>
18286 [[Media:Foobar.jpg]]
18287 [[Media:Video.ogv]]
18288 [[:Media:Video.ogv]]
18290 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Media:Foobar.jpg</a>
18291 <a href="http://example.com/images/0/00/Video.ogv" class="internal" title="Video.ogv">Media:Video.ogv</a>
18292 <a href="http://example.com/images/0/00/Video.ogv" class="internal" title="Video.ogv">Media:Video.ogv</a>
18295 <p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" resource="./Media:Foobar.jpg" title="Foobar.jpg">Media:Foobar.jpg</a>
18296 <a rel="mw:MediaLink" href="//example.com/images/0/00/Video.ogv" resource="./Media:Video.ogv" title="Video.ogv">Media:Video.ogv</a>
18297 <a rel="mw:MediaLink" href="//example.com/images/0/00/Video.ogv" resource="./Media:Video.ogv" title="Video.ogv" data-parsoid='{"a":{"resource":"./Media:Video.ogv"},"sa":{"resource":":Media:Video.ogv"}}'>Media:Video.ogv</a></p>
18301 Media link with text
18303 [[Media:Foobar.jpg|A neat file to look at]]
18305 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">A neat file to look at</a>
18308 <p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" resource="./Media:Foobar.jpg" title="Foobar.jpg">A neat file to look at</a></p>
18312 Localized media link
18316 [[Miðill:Foobar.jpg]]
18318 [[Miðill:Foobar.jpg|Icelandic]]
18320 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Miðill:Foobar.jpg</a>
18321 </p><p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Icelandic</a>
18324 <p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" resource="./Miðill:Foobar.jpg" title="Foobar.jpg">Miðill:Foobar.jpg</a></p>
18325 <p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" resource="./Miðill:Foobar.jpg" title="Foobar.jpg">Icelandic</a></p>
18328 # FIXME: this is still bad HTML tag nesting
18329 # FIXME: doBlockLevels won't wrap this in a paragraph because it contains a div
18330 # Parsoid & Remex fix the p-wrapping since they operate on the DOM.
18332 Media link with nasty text
18334 parsoid=wt2html,html2html
18336 [[Media:Foobar.jpg|Safe Link<div style=display:none>" onmouseover="alert(document.cookie)" onfoo="</div>]]
18338 <a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link<div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div></a>
18341 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link</a></p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg"><div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div></a>
18343 <p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" resource="./Media:Foobar.jpg" title="Foobar.jpg">Safe Link</a></p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" resource="./Media:Foobar.jpg" title="Foobar.jpg"><div style="display:none" data-parsoid='{"stx":"html"}'>" onmouseover="alert(document.cookie)" onfoo="</div></a>
18347 Media link from missing resource (parsoid-only)
18351 <a rel="mw:MediaLink" href="http://example.com/images/3/3a/Foobar.jpg">Bat!</a>
18353 [[Media:Foobar.jpg|Bat!]]
18357 Media link from missing resource, localized (parsoid-only)
18362 <a rel="mw:MediaLink" href="http://example.com/images/3/3a/Foobar.jpg">Bat!</a>
18364 [[Miðill:Foobar.jpg|Bat!]]
18367 # This is a sanity test to ensure we don't crash or choke when given
18368 # old cached 1.7.0 HTML for media links; we don't require that the
18369 # result be "valid" because wt2wt was completely broken in 1.7.0
18371 Media link from old 1.7.0 DOM spec (crash test, parsoid-only) T198511
18375 <p>This is what Parsoid would emit (and we still handle this HTML fine):</p>
18376 <p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg">A neat file to look at</a></p>
18377 <p>But VisualEditor would mangle the rel attribute, and give us back this:</p>
18378 <p><a rel="mw:ExtLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg">A neat file to look at</a></p>
18379 <p>But at least we don't crash when trying to handle the mangled HTML!</p>
18381 This is what Parsoid would emit (and we still handle this HTML fine):
18383 [[Media:Foobar.jpg|A neat file to look at]]
18385 But VisualEditor would mangle the rel attribute, and give us back this:
18387 [//example.com/images/3/3a/Foobar.jpg A neat file to look at]
18389 But at least we don't crash when trying to handle the mangled HTML!
18393 Media link to nonexistent file (T3702)
18395 [[Media:No such.jpg]]
18396 [[Media:No_such file.jpg]]
18398 <p><a href="/index.php?title=Special:Upload&wpDestFile=No_such.jpg" class="new" title="No such.jpg">Media:No such.jpg</a>
18399 <a href="/index.php?title=Special:Upload&wpDestFile=No_such_file.jpg" class="new" title="No such file.jpg">Media:No_such file.jpg</a>
18402 <p><a rel="mw:MediaLink" href="./Special:FilePath/No_such.jpg" resource="./Media:No_such.jpg" title="No such.jpg" typeof="mw:Error" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}' data-parsoid='{"a":{"resource":"./Media:No_such.jpg"},"sa":{"resource":"Media:No such.jpg"}}'>Media:No such.jpg</a>
18403 <a rel="mw:MediaLink" href="./Special:FilePath/No_such_file.jpg" resource="./Media:No_such_file.jpg" title="No such file.jpg" typeof="mw:Error" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}' data-parsoid='{"a":{"resource":"./Media:No_such_file.jpg"},"sa":{"resource":"Media:No_such file.jpg"}}'>Media:No_such file.jpg</a></p>
18407 Image link to nonexistent file (T3850 - good)
18409 [[File:No_such.jpg]]
18411 <p><a href="/index.php?title=Special:Upload&wpDestFile=No_such.jpg" class="new" title="File:No such.jpg">File:No such.jpg</a>
18414 <p><figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:No_such.jpg"><img resource="./File:No_such.jpg" src="./Special:FilePath/No_such.jpg" height="220" width="220"/></a></figure-inline></p>
18418 :Image link to nonexistent file (T3850 - bad)
18420 [[:Image:No such.jpg]]
18422 <p><a href="/index.php?title=File:No_such.jpg&action=edit&redlink=1" class="new" title="File:No such.jpg (page does not exist)">Image:No such.jpg</a>
18425 <p><a rel="mw:WikiLink" href="./File:No_such.jpg" title="File:No such.jpg">Image:No such.jpg</a></p>
18429 Character reference normalization in link text (T3938)
18431 [[Main Page|this&that]]
18433 <p><a href="/wiki/Main_Page" title="Main Page">this&that</a>
18440 Test for unicode normalization
18442 The page's name is U+05d0 U+05b7, with non-canonical form U+FB2E
18446 (T21451) Links should refer to the normalized form.
18454 <p><a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
18455 <a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
18456 <a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
18457 <a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
18458 <a href="/wiki/%D7%90%D6%B7" title="אַ">אַ</a>
18463 Empty attribute crash test (T4067)
18465 <font color="">foo</font>
18467 <p><font color="">foo</font>
18472 Empty attribute crash test single-quotes (T4067)
18474 <font color=''>foo</font>
18476 <p><font color="">foo</font>
18481 Attribute test: equals, then nothing
18483 parsoid=wt2html,html2html
18485 <font color=>foo</font>
18487 <p><font color="">foo</font>
18490 <p><font color="" data-parsoid='{"stx":"html"}'>foo</font></p>
18494 Attribute test: unquoted value
18496 parsoid=wt2html,html2html
18498 <font color=x>foo</font>
18500 <p><font color="x">foo</font>
18503 <p><font color="x" data-parsoid='{"stx":"html"}'>foo</font></p>
18507 Attribute test: unquoted but illegal value (hash)
18509 <font color=#x>foo</font>
18511 <p><font color="#x">foo</font>
18515 # Parsoid does not serialize to empty attribute syntax,
18516 # so wt2wt and html2wt cases are skipped
18518 Attribute test: no value (T54330)
18520 parsoid=wt2html,html2html
18522 <font color>foo</font>
18524 <p><font color="">foo</font>
18527 <p><font color="">foo</font></p>
18531 T4095: link with three closing brackets
18535 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>]
18538 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a>]</p>
18542 T4095: link with pipe and three closing brackets
18544 [[Main Page|link]]]
18546 <p><a href="/wiki/Main_Page" title="Main Page">link</a>]
18549 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">link</a>]</p>
18553 T4095: link with pipe and three closing brackets, version 2
18555 [[Main Page|[http://example.com/]]]
18557 <p><a href="/wiki/Main_Page" title="Main Page">[http://example.com/]</a>
18560 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">[http://example.com/]</a></p>
18569 Template:Dangerous attribute
18571 " onmouseover="alert(document.cookie)
18575 Template:Dangerous style attribute
18577 border-size: expression(alert(document.cookie))
18583 <div style="float: right; {{{1}}}">Magic div</div>
18587 T4304: HTML attribute safety (safe template; regression T4309)
18589 <div title="{{test}}"></div>
18591 <div title="This is a test template"></div>
18594 <div title="This is a test template" about="#mwt2" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"title":"This is a test template"},"sa":{"title":"{{test}}"}}' data-mw='{"attribs":[[{"txt":"title"},{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[12,20,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"test\",\"href\":\"./Template:Test\"},\"params\":{},\"i\":0}}]}'>This is a test template</span>"}]]}'></div>
18597 # Parsoid has enough context to handle this case
18599 T4304: HTML attribute safety (dangerous template; 2309)
18601 <div title="{{dangerous attribute}}"></div>
18603 <div title=""></div>
18606 <div title='" onmouseover="alert(document.cookie)' about="#mwt2" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"title":"\" onmouseover=\"alert(document.cookie)"},"sa":{"title":"{{dangerous attribute}}"}}' data-mw='{"attribs":[[{"txt":"title"},{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[12,35,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"dangerous attribute\",\"href\":\"./Template:Dangerous_attribute\"},\"params\":{},\"i\":0}}]}'>\" onmouseover=\"alert(document.cookie)</span>"}]]}'></div>
18610 T4304: HTML attribute safety (dangerous style template; 2309)
18612 <div style="{{dangerous style attribute}}"></div>
18614 <div style="/* insecure input */"></div>
18617 <div style="/* insecure input */" about="#mwt2" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"{{dangerous style attribute}}"}}' data-mw='{"attribs":[[{"txt":"style"},{"html":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[12,41,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"dangerous style attribute\",\"href\":\"./Template:Dangerous_style_attribute\"},\"params\":{},\"i\":0}}]}'>border-size: expression(alert(document.cookie))</span>"}]]}'></div>
18621 T4304: HTML attribute safety (safe parameter; 2309)
18623 {{div style|width: 200px}}
18625 <div style="float: right; width: 200px">Magic div</div>
18628 <div style="float: right; width: 200px" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","a":{"style":"float: right; width: 200px"},"sa":{"style":"float: right; {{{1}}}"},"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"div style","href":"./Template:Div_style"},"params":{"1":{"wt":"width: 200px"}},"i":0}}]}'>Magic div</div>
18632 T4304: HTML attribute safety (unsafe parameter; 2309)
18634 {{div style|width: expression(alert(document.cookie))}}
18636 <div style="/* insecure input */">Magic div</div>
18639 <div style="/* insecure input */" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"float: right; {{{1}}}"},"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"div style","href":"./Template:Div_style"},"params":{"1":{"wt":"width: expression(alert(document.cookie))"}},"i":0}}]}'>Magic div</div>
18642 ## Parsoid output here differs; needs investigation.
18644 T4304: HTML attribute safety (unsafe breakout parameter; 2309)
18646 {{div style|"><script>alert(document.cookie)</script>}}
18648 <div style="float: right;"><script>alert(document.cookie)</script>">Magic div</div>
18652 ## Parsoid output here differs; needs investigation.
18654 T4304: HTML attribute safety (unsafe breakout parameter 2; 2309)
18656 {{div style|" ><script>alert(document.cookie)</script>}}
18658 <div style="float: right;"><script>alert(document.cookie)</script>">Magic div</div>
18663 T4304: HTML attribute safety (link)
18665 <div title="[[Main Page]]"></div>
18667 <div title="[[Main Page]]"></div>
18670 <div title="[[Main Page]]"></div>
18674 T4304: HTML attribute safety (italics)
18676 <div title="''foobar''"></div>
18678 <div title="''foobar''"></div>
18683 T4304: HTML attribute safety (bold)
18685 <div title="'''foobar'''"></div>
18687 <div title="'''foobar'''"></div>
18692 T4304: HTML attribute safety (ISBN)
18694 <div title="ISBN 1234567890"></div>
18696 <div title="ISBN 1234567890"></div>
18701 T4304: HTML attribute safety (RFC)
18703 <div title="RFC 1234"></div>
18705 <div title="RFC 1234"></div>
18710 T4304: HTML attribute safety (PMID)
18712 <div title="PMID 1234567890"></div>
18714 <div title="PMID 1234567890"></div>
18719 T4304: HTML attribute safety (web link)
18721 <div title="http://example.com/"></div>
18723 <div title="http://example.com/"></div>
18728 T4304: HTML attribute safety (named web link)
18730 <div title="[http://example.com/ link]"></div>
18732 <div title="[http://example.com/ link]"></div>
18735 <div title="[http://example.com/ link]"></div>
18739 T5244: HTML attribute safety (extension; safe)
18741 <div style="<nowiki>background:blue</nowiki>"></div>
18743 <div style="background:blue"></div>
18746 <div style="background:blue" data-parsoid='{"stx":"html","a":{"style":"background:blue"},"sa":{"style":"<nowiki>background:blue</nowiki>"}}'></div>
18750 T5244: HTML attribute safety (extension; unsafe)
18752 <div style="<nowiki>border-left:expression(alert(document.cookie))</nowiki>"></div>
18754 <div style="/* insecure input */"></div>
18757 <div style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"<nowiki>border-left:expression(alert(document.cookie))</nowiki>"}}'></div>
18760 # More MSIE fun discovered by Tom Gilder
18763 MSIE CSS safety test: spurious slash
18765 <div style="background-image:u\rl(javascript:alert('boo'))">evil</div>
18767 <div style="/* insecure input */">evil</div>
18770 <div style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"background-image:u\\rl(javascript:alert('boo'))"}}'>evil</div>
18774 MSIE CSS safety test: hex code
18776 <div style="background-image:u\72l(javascript:alert('boo'))">evil</div>
18778 <div style="/* insecure input */">evil</div>
18781 <div style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"background-image:u\\72l(javascript:alert('boo'))"}}'>evil</div>
18785 MSIE CSS safety test: comment in url
18787 <div style="background-image:u/**/rl(javascript:alert('boo'))">evil</div>
18789 <div style="background-image:u rl(javascript:alert('boo'))">evil</div>
18792 <div style="background-image:u rl(javascript:alert('boo'))" data-parsoid='{"stx":"html","a":{"style":"background-image:u rl(javascript:alert('boo'))"},"sa":{"style":"background-image:u/**/rl(javascript:alert('boo'))"}}'>evil</div>
18796 MSIE CSS safety test: comment in expression
18798 <div style="background-image:expres/**/sion(alert('boo4'))">evil4</div>
18800 <div style="background-image:expres sion(alert('boo4'))">evil4</div>
18803 <div style="background-image:expres sion(alert('boo4'))" data-parsoid='{"stx":"html","a":{"style":"background-image:expres sion(alert('boo4'))"},"sa":{"style":"background-image:expres/**/sion(alert('boo4'))"}}'>evil4</div>
18807 CSS safety test (all browsers): vertical tab (T57332 / CVE-2013-4567)
18809 <p style="font-size: 100px; background-image:url\b(https://www.google.com/images/srpr/logo6w.png)">A</p>
18811 <p style="/* invalid control char */">A</p>
18814 <p style="/* invalid control char */" data-parsoid='{"stx":"html","a":{"style":"/* invalid control char */"},"sa":{"style":"font-size: 100px; background-image:url\\b(https://www.google.com/images/srpr/logo6w.png)"}}'>A</p>
18818 MSIE 6 CSS safety test: Fullwidth (T57332)
18820 <p style="font-size: 100px; color: expression((title='XSSed'),'red')">A</p>
18821 <div style="top:EXPRESSION(alert())">B</div>
18823 <p style="/* insecure input */">A</p>
18824 <div style="/* insecure input */">B</div>
18827 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expression((title='XSSed'),'red')"}}'>A</p>
18828 <div style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"top:EXPRESSION(alert())"}}'>B</div>
18832 MSIE 6 CSS safety test: IPA extensions (T57332)
18834 <div style="background-image:uʀʟ(javascript:alert())">A</div>
18835 <p style="font-size: 100px; color: expʀessɪoɴ((title='XSSed'),'red')">B</p>
18837 <div style="/* insecure input */">A</div>
18838 <p style="/* insecure input */">B</p>
18841 <div style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"background-image:uʀʟ(javascript:alert())"}}'>A</div>
18842 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expʀessɪoɴ((title='XSSed'),'red')"}}'>B</p>
18846 MSIE 6 CSS safety test: sup/sub script (T57332)
18848 <div style="background-image:url⁽javascript:alert())">A</div>
18849 <div style="background-image:url₍javascript:alert())">B</div>
18850 <p style="font-size: 100px; color: expressioⁿ((title='XSSed'),'red')">C</p>
18852 <div style="/* insecure input */">A</div>
18853 <div style="/* insecure input */">B</div>
18854 <p style="/* insecure input */">C</p>
18857 <div style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"background-image:url⁽javascript:alert())"}}'>A</div>
18858 <div style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"background-image:url₍javascript:alert())"}}'>B</div>
18859 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expressioⁿ((title='XSSed'),'red')"}}'>C</p>
18865 parsoid=wt2html,html2html
18868 title="data:text/html,<img src=1 onerror=alert(1)>"
18869 style="-o-link:attr(title);-o-link-source:current">X</div>
18871 <div title="data:text/html,<img src=1 onerror=alert(1)>" style="/* insecure input */">X</div>
18874 <div title="data:text/html,<img src=1 onerror=alert(1)>" style="/* insecure input */" data-parsoid='{"stx":"html","a":{"title":"data:text/html,<img src=1 onerror=alert(1)>","style":"/* insecure input */"},"sa":{"title":"&#100;&#97;&#116;&#97;&#58;&#116;&#101;&#120;&#116;&#47;&#104;&#116;&#109;&#108;&#44;&#60;&#105;&#109;&#103;&#32;&#115;&#114;&#99;&#61;&#49;&#32;&#111;&#110;&#101;&#114;&#114;&#111;&#114;&#61;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;&#62;","style":"-o-link:attr(title);-o-link-source:current"}}'>X</div>
18878 MSIE 6 CSS safety test: Repetition markers (T57332)
18880 <p style="font-size: 100px; color: expres〱ion((title='XSSed'),'red')">A</p>
18881 <p style="font-size: 100px; color: expresゝion((title='XSSed'),'red')">B</p>
18882 <p style="font-size: 100px; color: expresーion((title='XSSed'),'red')">C</p>
18883 <p style="font-size: 100px; color: expresヽion((title='XSSed'),'red')">D</p>
18884 <p style="font-size: 100px; color: expresﹽion((title='XSSed'),'red')">E</p>
18885 <p style="font-size: 100px; color: expresﹼion((title='XSSed'),'red')">F</p>
18886 <p style="font-size: 100px; color: expresーion((title='XSSed'),'red')">G</p>
18888 <p style="/* insecure input */">A</p>
18889 <p style="/* insecure input */">B</p>
18890 <p style="/* insecure input */">C</p>
18891 <p style="/* insecure input */">D</p>
18892 <p style="/* insecure input */">E</p>
18893 <p style="/* insecure input */">F</p>
18894 <p style="/* insecure input */">G</p>
18897 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expres〱ion((title='XSSed'),'red')"}}'>A</p>
18898 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expresゝion((title='XSSed'),'red')"}}'>B</p>
18899 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expresーion((title='XSSed'),'red')"}}'>C</p>
18900 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expresヽion((title='XSSed'),'red')"}}'>D</p>
18901 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expresﹽion((title='XSSed'),'red')"}}'>E</p>
18902 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expresﹼion((title='XSSed'),'red')"}}'>F</p>
18903 <p style="/* insecure input */" data-parsoid='{"stx":"html","a":{"style":"/* insecure input */"},"sa":{"style":"font-size: 100px; color: expresーion((title='XSSed'),'red')"}}'>G</p>
18907 Table attribute legitimate extension
18910 !+ style="<nowiki>color:blue</nowiki>"|status
18915 <th style="color:blue">status
18921 Table attribute safety
18924 !+ style="<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>"|status
18929 <th style="/* insecure input */">status
18935 CSS line continuation 1
18937 <div style="background-image: u\ rl(test.jpg);"></div>
18939 <div style="/* insecure input */"></div>
18944 CSS line continuation 2
18946 <div style="background-image: u\ rl(test.jpg); "></div>
18948 <div style="/* invalid control char */"></div>
18959 Expansion of multi-line templates in attribute values (T8255)
18961 <div style="background: {{identity|#00FF00}}">-</div>
18963 <div style="background: #00FF00">-</div>
18968 Expansion of multi-line templates in attribute values (T8255 sanity check)
18970 <div style="background:
18973 <div style="background: #00FF00">-</div>
18976 <div style="background:
18981 Expansion of multi-line templates in attribute values (T8255 sanity check 2)
18983 <div style="background: #00FF00">-</div>
18985 <div style="background: #00FF00">-</div>
18990 Tags which are hidden from tidiers cannot pass through the Sanitizer
18992 <mw:toc><script>alert();</script></mw:toc>
18994 <p><mw:toc><script>alert();</script></mw:toc>
18999 ### Parser hooks (see tests/parser/ParserTestParserHook.php for the <tag> extension)
19003 Parser hook: empty input
19014 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
19017 ## Don't expect parsoid to rt this form.
19019 Parser hook: empty input using terminated empty elements
19021 parsoid=wt2html,html2html
19032 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{}}' data-parsoid='{}' about="#mwt2"></pre>
19036 Parser hook: empty input using terminated empty elements (space before)
19047 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{}}' data-parsoid='{}' about="#mwt2"></pre>
19051 Parser hook: basic input
19062 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"input"}}' data-parsoid='{}' about="#mwt2"></pre>
19065 ## Don't expect parsoid to rt this form.
19067 Parser hook: case insensitive
19069 parsoid=wt2html,html2html
19080 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"input"}}' data-parsoid='{}' about="#mwt2"></pre>
19083 ## Don't expect parsoid to rt this form.
19085 Parser hook: case insensitive, redux
19087 parsoid=wt2html,html2html
19098 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"input"}}' data-parsoid='{}' about="#mwt2"></pre>
19102 Parser hook: nested tags
19106 <tag><tag></tag></tag>
19118 </tag></pre><p></tag>
19121 <pre typeof="mw:Extension/tag" about="#mwt2" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"<tag>"}}'></pre><p></tag></p>
19125 Parser hook: basic arguments
19127 <tag width="200" height="100" depth="50" square=""></tag>
19140 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"width":"200","height":"100","depth":"50","square":""},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
19143 ## Don't expect parsoid to rt this form.
19145 Parser hook: basic arguments, variations
19147 parsoid=wt2html,html2html
19149 <tag width=200 height = "100" depth = '50' square></tag>
19162 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"width":"200","height":"100","depth":"50","square":""},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
19166 Parser hook: argument containing a forward slash (T7344)
19168 <tag filename="/tmp/bla"></tag>
19173 'filename' => '/tmp/bla',
19178 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"filename":"/tmp/bla"},"body":{"extsrc":""}}' data-parsoid='{}' about="#mwt2"></pre>
19181 ## Don't expect parsoid to rt this form.
19183 Parser hook: empty input using terminated empty elements (T4374)
19185 parsoid=wt2html,html2html
19197 <pre typeof="mw:Extension/tag" about="#mwt2" data-mw='{"name":"tag","attrs":{"foo":"bar"}}'></pre><p>text</p>
19200 ## </tag> should be output literally since there is no matching tag that begins it
19201 ## Don't expect parsoid to rt this form.
19203 Parser hook: basic arguments using terminated empty elements (T4374)
19207 <tag width=200 height = "100" depth = '50' square/>
19224 <pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{"width":"200","height":"100","depth":"50","square":""}}' about="#mwt2"></pre><p>other stuff
19228 ## Don't expect parsoid to rt this form.
19230 Parser hook: Don't allow unclosed extension tags
19236 this is a '''test'''
19238 <p>test <tag>123
19239 </p><p>this is a <b>test</b>
19242 <p>test <tag>123</p>
19244 <p>this is a <b>test</b></p>
19248 Parser hook: horizontal rule inside extension tag that outputs <pre>
19269 ### (see tests/parser/ParserTestParserHook.php for the <statictag> extension)
19273 Parser hook: static parser hook not inside a comment
19275 <statictag>hello, world</statictag>
19277 <statictag action="flush" />
19283 <p><span typeof="mw:Extension/statictag" data-mw='{"name":"statictag","attrs":{},"body":{"extsrc":"hello, world"}}' about="#mwt2"></span></p>
19284 <p><span typeof="mw:Extension/statictag" data-mw='{"name":"statictag","attrs":{"action":"flush"}}' about="#mwt4">hello, world</span></p>
19288 Parser hook: static parser hook inside a comment
19290 <!-- <statictag>hello, world</statictag> -->
19291 <statictag action="flush" />
19296 <!-- <statictag>hello, world</statictag> -->
19297 <p><span typeof='mw:Extension/statictag' data-mw='{"name":"statictag","attrs":{"action":"flush"}}' data-parsoid='{}' about='#mwt2'></span></p>
19300 # Nested template calls; this case was broken by Parser.php rev 1.506,
19304 Template:One-parameter
19306 (My parameter is: {{{1}}})
19310 Template:Map-one-parameter
19312 {{{{{1}}}|{{{2}}}}}
19316 Nested template calls
19318 {{Map-one-parameter|One-parameter|param}}
19320 <p>(My parameter is: param)
19330 Sanitizer: Closing of open tags
19332 <s></s><table></table>
19334 <p><s></s></p><table></table>
19336 <p><s data-parsoid='{"stx":"html"}'></s></p><table data-parsoid='{"stx":"html"}'></table>
19340 Sanitizer: Closing of open but not closed tags
19349 Sanitizer: Closing of closed but not open tags
19355 <p class="mw-empty-elt">
19360 Sanitizer: Closing of closed but not open table tags
19364 Table not started</td></tr></table>
19366 <p>Table not started
19371 Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id=""
19373 title=[[Main Page]]
19375 wgFragmentMode=[ 'html5', 'legacy' ]
19377 <span id="æ: v">byte</span>[[#æ: v|backlink]]
19379 <p><span id="æ:_v">byte</span><a href="#æ:_v">backlink</a>
19382 <p><span id="æ:_v" data-parsoid='{"stx":"html","a":{"id":"æ:_v"},"sa":{"id":"æ: v"}}'>byte</span><a rel="mw:WikiLink" href="./Main_Page#æ:_v" data-parsoid='{"stx":"piped","a":{"href":"./Main_Page#æ:_v"},"sa":{"href":"#æ: v"}}'>backlink</a></p>
19386 Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id="" (legacy)
19388 wgFragmentMode=[ 'legacy' ]
19390 <span id="æ: v">byte</span>[[#æ: v|backlink]]
19392 <p><span id=".C3.A6:_v">byte</span><a href="#.C3.A6:_v">backlink</a>
19396 # In HTML5, the restrictions are that id must contain at least one character,
19397 # and must not contain any space characters.
19399 Sanitizer: Validating the contents of the id attribute (T6515)
19403 <br id="" /><br id="a space" />
19408 # In HTML5, id must be unique amongst all the ids in the element's home subtree.
19410 Sanitizer: Validating id attribute uniqueness (T6515, T8301)
19414 <br id="foo" /><br id="foo" />
19416 Something need to be done. foo-2 ?
19420 Sanitizer: Validating that <meta> and <link> work, but only for Microdata
19423 <meta itemprop="hello" content="world">
19424 <meta http-equiv="refresh" content="5">
19425 <meta itemprop="hello" http-equiv="refresh" content="5">
19426 <link itemprop="hello" href="{{SERVER}}">
19427 <link rel="stylesheet" href="{{SERVER}}">
19428 <link rel="stylesheet" itemprop="hello" href="{{SERVER}}">
19432 <p> <meta itemprop="hello" content="world" />
19433 <meta http-equiv="refresh" content="5">
19434 <meta itemprop="hello" content="5" />
19435 <link itemprop="hello" href="http://example.org" />
19436 <link rel="stylesheet" href="<a rel="nofollow" class="external free" href="http://example.org">http://example.org</a>">
19437 <link itemprop="hello" href="http://example.org" />
19444 Sanitizer: Strip comments from CSS attributes
19446 parsoid=wt2html,wt2wt
19448 <span style="margin:/*negate mbox-text padding */-0.125em -0.45em; /*rainbow*/rgba(255, 0, 0, 0.3)">2013</span>
19450 <p><span style="margin: -0.125em -0.45em; rgba(255, 0, 0, 0.3)">2013</span>
19453 <p><span style="margin: -0.125em -0.45em; rgba(255, 0, 0, 0.3)">2013</span></p>
19457 Sanitizer: Avoid unnecessary percent encoded characters in interwiki links
19459 [[meatball:Soft"Security]]
19461 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?Soft%22Security" class="extiw" title="meatball:Soft"Security">meatball:Soft"Security</a>
19464 <p><a rel="mw:WikiLink/Interwiki" href='http://www.usemod.com/cgi-bin/mb.pl?Soft"Security' title='meatball:Soft"Security'>meatball:Soft"Security</a></p>
19468 Sanitizer: angle brackets are invalid, even in interwiki links (T182338)
19470 [[meatball:Foo<Bar]]
19471 [[meatball:Foo>Bar]]
19472 [[meatball:Foo<bar]]
19473 [[meatball:Foo>bar]]
19475 <p>[[meatball:Foo<Bar]]
19476 [[meatball:Foo>Bar]]
19477 [[meatball:Foo<bar]]
19478 [[meatball:Foo>bar]]
19481 <p>[[meatball:Foo<Bar]]
19482 [[meatball:Foo>Bar]]
19483 [[meatball:Foo<span typeof="mw:Entity" data-parsoid='{"src":"&lt;","srcContent":"<"}'><</span>bar]]
19484 [[meatball:Foo<span typeof="mw:Entity" data-parsoid='{"src":"&gt;","srcContent":">"}'>></span>bar]]</p>
19488 Language converter: output gets cut off unexpectedly (T7757)
19492 this bit is safe: }-
19494 but if we add a conversion instance: -{zh-cn:xxx;zh-tw:yyy}-
19496 then we get cut off here: }-
19498 all additional text is vanished
19500 <p>this bit is safe: }-
19501 </p><p>but if we add a conversion instance: xxx
19502 </p><p>then we get cut off here: }-
19503 </p><p>all additional text is vanished
19506 <p>this bit is safe: }-</p>
19507 <p>but if we add a conversion instance: <span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"twoway":[{"l":"zh-cn","t":"xxx"},{"l":"zh-tw","t":"yyy"}]}'></span></p>
19508 <p>then we get cut off here: }-</p>
19509 <p>all additional text is vanished</p>
19513 Language converter glossary rules inside attributes (T119158)
19515 language=sr variant=sr-el
19517 -{H|foAjrjvi=>sr-el:" onload="alert(1)" data-foo="}-
19519 [[File:Foobar.jpg|alt=-{}-foAjrjvi-{}-]]
19522 </p><p><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="image"><img alt="" onload="alert(1)" data-foo="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
19525 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"foAjrjvi","l":"sr-el","t":"\" onload=\"alert(1)\" data-foo=\""}]}'/></p>
19527 <p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./Датотека:Foobar.jpg"><img alt="foAjrjvi" resource="./Датотека:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"foAjrjvi","resource":"./Датотека:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=-{}-foAjrjvi-{}-","resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
19531 Self closed html pairs (T7487)
19533 <center><font id="bug" />Centered text</center>
19534 <div><font id="bug2" />In div text</div>
19536 <center><font id="bug"></font>Centered text</center>
19537 <div><font id="bug2"></font>In div text</div>
19541 Punctuation: nbsp before exclamation
19545 <p>C'est grave !
19550 Punctuation: CSS !important (T13874)
19552 <div style="width:50% !important">important</div>
19554 <div style="width:50% !important">important</div>
19559 Punctuation: CSS ! important (T13874; with space after)
19561 <div style="width:50% ! important">important</div>
19563 <div style="width:50% ! important">important</div>
19568 HTML bullet list, closed tags (T7497)
19581 <ul data-parsoid='{"stx":"html"}'>
19582 <li data-parsoid='{"stx":"html"}'>One</li>
19583 <li data-parsoid='{"stx":"html"}'>Two</li>
19589 HTML bullet list, unclosed tags (T7497)
19601 <ul data-parsoid='{"stx":"html"}'>
19602 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>One</li>
19603 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>Two</li>
19609 HTML ordered list, closed tags (T7497)
19622 <ol data-parsoid='{"stx":"html"}'>
19623 <li data-parsoid='{"stx":"html"}'>One</li>
19624 <li data-parsoid='{"stx":"html"}'>Two</li>
19630 HTML ordered list, unclosed tags (T7497)
19643 <ol data-parsoid='{"stx":"html"}'>
19644 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>One</li>
19645 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>Two</li>
19651 HTML nested bullet list, closed tags (T7497)
19674 <ul data-parsoid='{"stx":"html"}'>
19675 <li data-parsoid='{"stx":"html"}'>One</li>
19676 <li data-parsoid='{"stx":"html"}'>Two:
19677 <ul data-parsoid='{"stx":"html"}'>
19678 <li data-parsoid='{"stx":"html"}'>Sub-one</li>
19679 <li data-parsoid='{"stx":"html"}'>Sub-two</li>
19686 HTML nested bullet list, open tags (T7497)
19708 HTML nested ordered list, closed tags (T7497)
19733 HTML nested ordered list, open tags (T7497)
19770 HTML ordered list item with parameters oddity
19772 <ol><li id="fragment">One</li>
19775 <ol><li id="fragment">One</li>
19780 # parsoid doesn't explicitly mark autonumbered links, see T55505
19782 T7918: autonumbering
19784 [http://first/] [http://second] [ftp://ftp]
19788 [mailto:enclosed@mail.tld With target]
19790 [mailto:enclosed@mail.tld]
19792 mailto:inline@mail.tld
19794 <p><a rel="nofollow" class="external autonumber" href="http://first/">[1]</a> <a rel="nofollow" class="external autonumber" href="http://second">[2]</a> <a rel="nofollow" class="external autonumber" href="ftp://ftp">[3]</a>
19795 </p><p><a rel="nofollow" class="external free" href="ftp://inlineftp">ftp://inlineftp</a>
19796 </p><p><a rel="nofollow" class="external text" href="mailto:enclosed@mail.tld">With target</a>
19797 </p><p><a rel="nofollow" class="external autonumber" href="mailto:enclosed@mail.tld">[4]</a>
19798 </p><p><a rel="nofollow" class="external free" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a>
19801 <p><a rel="mw:ExtLink" class="external autonumber" href="http://first/"></a> <a rel="mw:ExtLink" class="external autonumber" href="http://second"></a> <a rel="mw:ExtLink" class="external autonumber" href="ftp://ftp"></a></p>
19802 <p><a rel="mw:ExtLink" class="external free" href="ftp://inlineftp">ftp://inlineftp</a></p>
19803 <p><a rel="mw:ExtLink" class="external text" href="mailto:enclosed@mail.tld">With target</a></p>
19804 <p><a rel="mw:ExtLink" class="external autonumber" href="mailto:enclosed@mail.tld"></a></p>
19805 <p><a rel="mw:ExtLink" class="external free" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a></p>
19810 # Security and HTML correctness
19811 # From Nick Jenkins' fuzz testing
19815 Fuzz testing: Parser13
19829 # Note that Parsoid output differs from the PHP parser here: the PHP
19830 # parser breaks the URL for the magic word, while in Parsoid the URL
19831 # production takes precedence.
19833 Fuzz testing: Parser14
19838 <h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19839 http://<div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
19841 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
19847 <h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2><p>
19848 http://</p><div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
19850 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
19854 <h2 id="onmouseover="><span id="onmouseover.3D" typeof="mw:FallbackId"></span>onmouseover=</h2>
19855 <p><a rel="mw:ExtLink" class="external free" href="http://__TOC__" data-parsoid='{"stx":"url"}'>http://__TOC__</a></p>
19859 Fuzz testing: Parser14-table
19861 parsoid=wt2html,html2html
19866 <h2><span class="mw-headline" id="a">a</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19867 <table style="__TOC__">
19872 <h2><span class="mw-headline" id="a">a</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
19873 <table style="__TOC__">
19874 <tbody><tr><td></td></tr>
19878 <table style="__TOC__"></table>
19881 # Known to produce bogus xml (extra </td>)
19882 # Don't add the html/php section since it generates broken HTML
19884 Fuzz testing: Parser16
19901 Fuzz testing: Parser21
19904 !irc://{{ftp://a" onmouseover="alert('hello world');"
19909 <th><a rel="nofollow" class="external free" href="irc://{{ftp://a">irc://{{ftp://a</a>" onmouseover="alert('hello world');"
19919 Fuzz testing: Parser22
19921 http://===r:::https://b
19925 <p><a rel="nofollow" class="external free" href="http://===r:::https://b">http://===r:::https://b</a>
19933 ## Remex doesn't account for fostered content.
19934 ## Known to produce bad XML for now
19936 Fuzz testing: Parser24
19943 | {{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--><noinclude>}}}} >
19944 <br style="onmouseover='alert(document.cookie);' " />
19946 MOVE YOUR MOUSE CURSOR OVER THIS TEXT
19951 <u class="|">}}}} >
19952 <br style="onmouseover='alert(document.cookie);'" />
19954 MOVE YOUR MOUSE CURSOR OVER THIS TEXT
19964 <u class="|">}}}} >
19965 <br style="onmouseover='alert(document.cookie);'" />
19967 MOVE YOUR MOUSE CURSOR OVER THIS TEXT
19968 </u><table><tbody><tr>
19972 </tbody></table><p><u class="|">
19975 <p data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true}'>
19977 <u class="|" data-parsoid='{"stx":"html","a":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--":null},"sa":{"{{{{SSSll!!!!!!!VVVV)]]][[Special:*xxxxxxx--":""},"autoInsertedEnd":true}'><meta typeof="mw:Includes/NoInclude" data-parsoid='{"src":"<noinclude>"}'/>}}}} >
19978 <br style="onmouseover='alert(document.cookie);' " data-parsoid='{"stx":"html","selfClose":true}'/>
19980 MOVE YOUR MOUSE CURSOR OVER THIS TEXT</u></p>
19981 <table data-parsoid='{"autoInsertedEnd":true}'><tbody><tr data-parsoid='{"autoInsertedStart":true}'><td></td></tr></tbody></table>
19984 # Note: the current result listed for this is not what the original one was,
19985 # but the original bug was JavaScript injection, which is fixed in any case.
19986 # It's not clear that the original result listed was any more correct than the
19987 # current one. Original result:
19990 # <li class="||">
19991 # }}}blah" onmouseover="alert('hello world');" align="left"<b>MOVE MOUSE CURSOR OVER HERE</b>
19993 Fuzz testing: Parser25 (T8055)
19999 }}}blah" onmouseover="alert('hello world');" align="left"'''MOVE MOUSE CURSOR OVER HERE
20001 <p><LI CLASS=blah" onmouseover="alert('hello world');" align="left"<b>MOVE MOUSE CURSOR OVER HERE</b>
20004 <span about="#mwt1" typeof="mw:Param" data-parsoid='{"pi":[[{"k":"1"},{"k":"2"},{"k":"3"}]]}' data-mw='{"parts":[{"templatearg":{"target":{"wt":"\n"},"params":{"1":{"wt":" \n<LI CLASS="},"2":{"wt":""},"3":{"wt":"\n >\n"}},"i":0}},"blah\" onmouseover=\"alert('hello world');\" align=\"left\"'''MOVE MOUSE CURSOR OVER HERE"]}'>
20005 </span><p about="#mwt1"><LI CLASS=blah" onmouseover="alert('hello world');" align="left"<b>MOVE MOUSE CURSOR OVER HERE</b></p>
20009 Fuzz testing: URL adjacent extension (with space, clean)
20011 http://example.com <nowiki>junk</nowiki>
20013 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> junk
20016 <p><a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a> <span typeof="mw:Nowiki">junk</span></p>
20020 Fuzz testing: URL adjacent extension (no space, dirty; nowiki)
20022 http://example.com<nowiki>junk</nowiki>
20024 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>junk
20027 <p><a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a><span typeof="mw:Nowiki">junk</span></p>
20031 Fuzz testing: URL adjacent extension (no space, dirty; pre)
20033 http://example.com<pre>junk</pre>
20035 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><pre>junk</pre>
20038 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></p><pre>junk</pre>
20040 <p><a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a></p><pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"junk"}}'>junk</pre>
20044 Fuzz testing: image with bogus manual thumbnail
20046 [[Image:foobar.jpg|thumbnail= ]]
20048 <div class="thumb tright"><div class="thumbinner" style="width:182px;">Error creating thumbnail: <div class="thumbcaption"></div></div></div>
20051 <figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"manualthumb","ak":"thumbnail= "}]}' data-mw='{"errors":[{"key":"apierror-invalidtitle","message":"Invalid thumbnail title.","params":{"name":""}}],"thumb":""}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"Image:foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="./Special:FilePath/Foobar.jpg" height="220" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"220"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
20054 # Parsoid will emit the newline literally in wt2wt; see next test case.
20056 Fuzz testing: encoded newline in generated HTML replacements (T8577)
20060 <pre dir=" "></pre>
20062 <pre dir=" "></pre>
20066 " typeof="mw:Extension/pre" about="#mwt2"data-mw='{"name":"pre","attrs":{"dir":"\n"},"body":{"extsrc":""}}'></pre>
20070 Fuzz testing: encoded newline in generated HTML replacements, html2wt (T8577)
20074 <pre typeof="mw:Extension/pre" about="#mwt2" dir="
20075 " data-mw='{"name":"pre","attrs":{"dir":"\n"},"body":{"extsrc":""}}'></pre>
20085 Templates in extension attributes are not expanded
20087 <pre dir="{{echo|ltr}}"></pre>
20089 <pre dir="{{echo|ltr}}"></pre>
20092 <pre dir="{{echo|ltr}}" typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{"dir":"{{echo|ltr}}"},"body":{"extsrc":""}}'></pre>
20096 Parsing optional HTML elements (T8171)
20101 <td> Some tabular data</td>
20102 <td> More tabular data ...
20103 <td> And yet som tabular data</td>
20109 <td> Some tabular data</td>
20110 <td> More tabular data ...
20111 </td><td> And yet som tabular data</td>
20118 Correct handling of <td>, <tr> (T8171)
20123 <td> Some tabular data</td>
20124 <td> More tabular data ...</td>
20125 <td> And yet som tabular data</td>
20131 <td> Some tabular data</td>
20132 <td> More tabular data ...</td>
20133 <td> And yet som tabular data</td>
20141 Parsing crashing regression (fr:JavaScript)
20145 <p></body></x>
20150 Inline wiki vs wiki block nesting
20156 <p><b>Bold paragraph</b>
20157 </p><p>New wiki paragraph
20161 # FIXME: The current php output is documented
20162 # and desired output is the parsoid target.
20164 Inline HTML vs wiki block nesting
20170 <p><b>Bold paragraph
20171 </p><p>New wiki paragraph</b>
20174 <p><b>Bold paragraph
20175 </b></p><p><b>New wiki paragraph
20178 <p><b>Bold paragraph</b>
20179 </p><p>New wiki paragraph
20183 # Original result was this:
20184 # <p><b>bold</b><b>bold<i>bolditalics</i></b>
20186 # While that might be marginally more intuitive, maybe, the six-apostrophe
20187 # construct is clearly pathological and the result stated here (which is what
20188 # the parser actually does) is about as reasonable as anything.
20190 Mixing markup for italics and bold
20193 '''bold''''''bold''bolditalics'''''
20195 <p>'<i>bold'</i><b>bold<i>bolditalics</i></b>
20203 Article for special page transclusion test
20207 Special page transclusion
20210 {{Special:Prefixindex/Xyzzyx}}
20212 <ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
20218 Special page transclusion twice (T7021)
20221 {{Special:Prefixindex/Xyzzyx}}
20222 {{Special:Prefixindex/Xyzzyx}}
20224 <ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
20226 <ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
20232 Transclusion of default MediaWiki message
20234 {{MediaWiki:Mainpage}}
20241 Transclusion of nonexistent MediaWiki message
20243 {{MediaWiki:Mainpagexxx}}
20245 <p><a href="/index.php?title=MediaWiki:Mainpagexxx&action=edit&redlink=1" class="new" title="MediaWiki:Mainpagexxx (page does not exist)">MediaWiki:Mainpagexxx</a>
20250 Transclusion of MediaWiki message with underscore
20252 {{MediaWiki:history_short}}
20259 Transclusion of MediaWiki message with space
20261 {{MediaWiki:history short}}
20268 Invalid header with following text
20278 Section extraction test (section 0)
20298 Section extraction test (section 1)
20320 Section extraction test (section 2)
20341 Section extraction test (section 3)
20361 Section extraction test (section 4)
20385 Section extraction test (section 5)
20405 Section extraction test (section 6)
20426 Section extraction test (section 7)
20446 Section extraction test (section 8)
20466 Section extraction test (section 9)
20487 Section extraction test (section 10)
20507 Section extraction test (nonexistent section 11)
20526 Section extraction test with bogus heading (section 1)
20531 ==bogus== not a legal section
20535 ==bogus== not a legal section
20539 Section extraction test with bogus heading (section 2)
20544 ==bogus== not a legal section
20551 Section extraction test with comment after heading (section 1)
20563 Section extraction test with comment after heading (section 2)
20575 Section extraction test with bogus <nowiki> heading (section 1)
20580 ==bogus== <nowiki>not a legal section</nowiki>
20584 ==bogus== <nowiki>not a legal section</nowiki>
20588 Section extraction test with bogus <nowiki> heading (section 2)
20593 ==bogus== <nowiki>not a legal section</nowiki>
20599 # Formerly testing for T4587, now resolved by the use of unmarked sections
20600 # instead of respecting commented sections
20602 Section extraction prefixed by comment (section 1)
20613 Section extraction prefixed by comment (section 2)
20623 # Formerly testing for T4607, now resolved by the use of unmarked sections
20624 # instead of respecting HTML-style headings
20626 Section extraction, mixed wiki and html (section 1)
20642 Section extraction, mixed wiki and html (section 2)
20658 # Formerly testing for T5342
20660 Section extraction, heading surrounded by <noinclude>
20664 <noinclude>==unmarked==</noinclude>
20670 # Test behavior of T21910
20672 Sectiion with all-equals
20677 The line above must have a trailing space
20680 But just in case it doesn't...
20684 But just in case it doesn't...
20688 Section replacement test (section 0)
20719 Section replacement test (section 1)
20748 Section replacement test (section 2)
20778 Section replacement test (section 3)
20809 Section replacement test (section 4)
20836 Section replacement test (section 5)
20867 Section replacement test (section 6)
20897 Section replacement test (section 7)
20928 Section replacement test (section 8)
20959 Section replacement test (section 9)
20988 Section replacement test (section 10)
21018 Section replacement test with initial whitespace (T15728)
21022 Preformatted initial line
21026 Preformatted initial line
21033 Section extraction, heading followed by pre with 20 spaces (T8398)
21045 Section extraction, heading followed by pre with 19 spaces (T8398 sanity check)
21058 Section extraction, <pre> around bogus header (T12309)
21075 Section replacement, <pre> around bogus header (T12309)
21096 Handling of 
 in URLs
21100 <ul><li><a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul>
21103 <ul><li><a rel="mw:ExtLink" class="external free" href="irc://%0Aa" data-parsoid='{"stx":"url","a":{"href":"irc://%0Aa"},"sa":{"href":"irc://&#x0A;a"}}'>irc://%0Aa</a></li></ul>
21107 Handling of %0A in URLs
21111 <ul><li><a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul>
21114 <ul><li><a rel="mw:ExtLink" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul>
21117 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
21119 5 quotes, code coverage +1 line
21126 <p><b><i></i></b></p>
21129 # same html as previous, but wikitext adjusted to match parsoid html2wt
21130 # note that wt2html and html2html will put the <i> before the <b>
21132 5 quotes, code coverage +1 line w/ nowiki (1)
21134 parsoid=wt2wt,html2wt
21136 '''''<nowiki/>'''''
21141 <p><b><i></i></b></p>
21144 # same as previous, just swapping the <i> and <b>
21146 5 quotes, code coverage +1 line w/ nowiki (2)
21148 '''''<nowiki/>'''''
21153 <p><i><b></b></i></p>
21157 Special:Search page linking.
21161 <p><a href="/wiki/Special:Search" title="Special:Search">Special:Search</a>
21166 {{!}} is a magic word
21168 {{!}} is a magic word there and {{!}} is still a magic word here
21169 | is not a magic word here but {{!}} is still a magic word here
21171 <p>| is a magic word there and | is still a magic word here
21172 | is not a magic word here but | is still a magic word here
21175 <p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is a magic word there and <span about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is still a magic word here
21176 | is not a magic word here but <span about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is still a magic word here</p>
21182 title=[[Parser test]]
21196 *{{SUBJECTPAGENAME}}
21197 *{{SUBJECTPAGENAMEE}}
21200 *{{NAMESPACENUMBER}}
21205 *{{Dynamic|{{NUMBEROFUSERS}}|{{NUMBEROFPAGES}}|{{CURRENTVERSION}}|{{CONTENTLANGUAGE}}|{{DIRECTIONMARK}}|{{CURRENTTIMESTAMP}}|{{NUMBEROFARTICLES}}}}
21207 <ul><li>Parser test</li>
21208 <li>Parser_test</li>
21209 <li>Parser test</li>
21210 <li>Parser_test</li>
21211 <li>Parser test</li>
21212 <li>Parser_test</li>
21213 <li>Parser test</li>
21214 <li>Parser_test</li>
21215 <li>Parser test</li>
21216 <li>Parser_test</li>
21217 <li>Talk:Parser test</li>
21218 <li>Talk:Parser_test</li>
21219 <li>Parser test</li>
21220 <li>Parser_test</li>
21228 <li><a href="/index.php?title=Template:Dynamic&action=edit&redlink=1" class="new" title="Template:Dynamic (page does not exist)">Template:Dynamic</a></li></ul>
21231 ### Note: Above tests excludes the "{{NUMBEROFADMINS}}" magic word because it generates a MySQL error when included.
21234 Gallery with valid attributes
21236 <gallery type="123" summary="345">
21237 File:File:Foobar.jpg
21240 <ul class="gallery mw-gallery-traditional" type="123">
21241 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21242 <div class="thumb" style="height: 150px;">File:Foobar.jpg</div>
21243 <div class="gallerytext">
21249 <ul class="gallery mw-gallery-traditional" type="123" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"type":"123","summary":"345"},"body":{"extsrc":"\nFile:File:Foobar.jpg\n"}}'>
21250 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:File:Foobar.jpg"><img resource="./File:File:Foobar.jpg" src="./Special:FilePath/File:Foobar.jpg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21254 ## Parsoid thinks the "centre" here is a property, not a caption.
21259 "modes": ["wt2html"],
21260 "nativeGallery": true
21268 image4 |300px| centre
21269 image5.svg| http://///////
21274 <ul class="gallery mw-gallery-traditional">
21275 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21276 <div class="thumb" style="height: 150px;">Image1.png</div>
21277 <div class="gallerytext">
21280 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21281 <div class="thumb" style="height: 150px;">Image2.gif</div>
21282 <div class="gallerytext">
21285 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21286 <div class="thumb" style="height: 150px;">Image3</div>
21287 <div class="gallerytext">
21290 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21291 <div class="thumb" style="height: 150px;">Image4</div>
21292 <div class="gallerytext">
21297 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21298 <div class="thumb" style="height: 150px;">Image5.svg</div>
21299 <div class="gallerytext">
21300 <p><a rel="nofollow" class="external free" href="http://///////">http://///////</a>
21304 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21305 <div class="thumb" style="height: 150px;">* image6</div>
21306 <div class="gallerytext">
21312 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21313 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image1.png"><img resource="./File:Image1.png" src="./Special:FilePath/Image1.png" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21314 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image2.gif"><img resource="./File:Image2.gif" src="./Special:FilePath/Image2.gif" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21315 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image3"><img resource="./File:Image3" src="./Special:FilePath/Image3" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21316 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image4"><img resource="./File:Image4" src="./Special:FilePath/Image4" height="300" width="300"/></a></figure-inline></div><div class="gallerytext"></div></li>
21317 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image5.svg"><img resource="./File:Image5.svg" src="./Special:FilePath/Image5.svg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"> <a rel="mw:ExtLink" class="external free" href="http://///////">http://///////</a></div></li>
21318 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:*_image6"><img resource="./File:*_image6" src="./Special:FilePath/*_image6" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21323 Gallery (with options, html)
21326 "modes": ["wt2html", "html2html"],
21327 "nativeGallery": true
21330 <gallery widths="70px" heights="40px" perrow="2" caption="Foo [[Main Page]]">
21331 File:Nonexistent.jpg|caption
21332 File:Nonexistent.jpg
21333 image:foobar.jpg|some '''caption''' [[Main Page]]
21335 image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
21338 <ul class="gallery mw-gallery-traditional" style="max-width: 226px;_width: 226px;">
21339 <li class='gallerycaption'>Foo <a href="/wiki/Main_Page" title="Main Page">Main Page</a></li>
21340 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21341 <div class="thumb" style="height: 70px;">Nonexistent.jpg</div>
21342 <div class="gallerytext">
21347 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21348 <div class="thumb" style="height: 70px;">Nonexistent.jpg</div>
21349 <div class="gallerytext">
21352 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21353 <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
21354 <div class="gallerytext">
21355 <p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
21359 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21360 <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
21361 <div class="gallerytext">
21364 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21365 <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
21366 <div class="gallerytext">
21374 <ul class="gallery mw-gallery-traditional" style="max-width: 226px; _width: 226px;" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{"widths":"70px","heights":"40px","perrow":"2"},"body":{}}'>
21375 <li class="gallerycaption">Foo <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></li>
21376 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></figure-inline></div><div class="gallerytext">caption</div></li>
21377 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></figure-inline></div><div class="gallerytext"></div></li>
21378 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></figure-inline></div><div class="gallerytext">some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
21379 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></figure-inline></div><div class="gallerytext"></div></li>
21380 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="This is a foo-bar." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></figure-inline></div><div class="gallerytext">blabla.</div></li>
21385 Gallery (with options, extsrc)
21388 "nativeGallery": false
21391 <gallery widths="70px" heights="40px" perrow="2" caption="Foo [[Main Page]]">
21392 File:Nonexistent.jpg|caption
21393 File:Nonexistent.jpg
21394 image:foobar.jpg|some '''caption''' [[Main Page]]
21396 image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
21399 <ul class="gallery mw-gallery-traditional" style="max-width: 226px;_width: 226px;">
21400 <li class='gallerycaption'>Foo <a href="/wiki/Main_Page" title="Main Page">Main Page</a></li>
21401 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21402 <div class="thumb" style="height: 70px;">Nonexistent.jpg</div>
21403 <div class="gallerytext">
21408 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21409 <div class="thumb" style="height: 70px;">Nonexistent.jpg</div>
21410 <div class="gallerytext">
21413 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21414 <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
21415 <div class="gallerytext">
21416 <p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
21420 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21421 <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
21422 <div class="gallerytext">
21425 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21426 <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
21427 <div class="gallerytext">
21435 <ul class="gallery mw-gallery-traditional" style="max-width: 226px; _width: 226px;" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{"widths":"70px","heights":"40px","perrow":"2","caption":"Foo [[Main Page]]"},"body":{"extsrc":"\nFile:Nonexistent.jpg|caption\nFile:Nonexistent.jpg\nimage:foobar.jpg|some '''caption''' [[Main Page]]\nimage:foobar.jpg\nimage:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.\n"}}'>
21436 <li class="gallerycaption">Foo <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></li>
21437 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></figure-inline></div><div class="gallerytext">caption</div></li>
21438 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></figure-inline></div><div class="gallerytext"></div></li>
21439 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></figure-inline></div><div class="gallerytext">some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
21440 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></figure-inline></div><div class="gallerytext"></div></li>
21441 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="This is a foo-bar." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></figure-inline></div><div class="gallerytext">blabla.</div></li>
21446 Gallery (without px units)
21448 <gallery widths="70" heights="40">
21452 <ul class="gallery mw-gallery-traditional">
21453 <li class="gallerybox" style="width: 105px"><div style="width: 105px">
21454 <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" width="70" height="8" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/105px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/140px-Foobar.jpg 2x" /></a></div></div>
21455 <div class="gallerytext">
21461 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"widths":"70","heights":"40"},"body":{"extsrc":"\nFile:Foobar.jpg\n"}}'>
21462 <li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></figure-inline></div><div class="gallerytext"></div></li>
21467 Gallery (with invalid units)
21469 <gallery widths="70em" heights="40em">
21473 <ul class="gallery mw-gallery-traditional">
21474 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21475 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21476 <div class="gallerytext">
21482 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"widths":"70em","heights":"40em"},"body":{"extsrc":"\nFile:Foobar.jpg\n"}}'>
21483 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21488 Gallery with link that has fragment
21491 "modes": ["wt2html", "html2html"],
21492 "nativeGallery": true
21496 image:foobar.jpg|link=Main_Page
21497 image:foobar.jpg|link=Main_Page#section
21498 image:foobar.jpg|link=Main Page#section|caption
21501 <ul class="gallery mw-gallery-traditional">
21502 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21503 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21504 <div class="gallerytext">
21507 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21508 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21509 <div class="gallerytext">
21512 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21513 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page#section"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21514 <div class="gallerytext">
21522 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21523 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21524 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./Main_Page#section"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21525 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./Main_Page#section"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext">caption</div></li>
21529 ## Whoops, Parsoid shouldn't be parsing templates in the attribute caption!
21531 Gallery with template inside caption
21534 "nativeGallery": true
21537 <gallery caption="{{echo|hi}}">
21538 File:Foobar.jpg|{{echo|ho}}
21541 <ul class="gallery mw-gallery-traditional">
21542 <li class='gallerycaption'>{{echo|hi}}</li>
21543 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21544 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21545 <div class="gallerytext">
21553 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt6" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21554 <li class="gallerycaption"><span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</span></li>
21555 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><span about="#mwt5" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"ho"}},"i":0}}]}'>ho</span></div></li>
21560 Gallery with wikitext inside caption
21563 "nativeGallery": true
21567 File:Foobar.jpg|alt=galleryalt|[[File:Foobar.jpg|alt=inneralt|20x20px|desc]]
21568 File:Foobar.jpg|alt=galleryalt|{{Test|unamedParam|alt=param}}
21571 <ul class="gallery mw-gallery-traditional">
21572 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21573 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21574 <div class="gallerytext">
21575 <p><a href="/wiki/File:Foobar.jpg" class="image" title="desc"><img alt="inneralt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
21579 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21580 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21581 <div class="gallerytext">
21582 <p>This is a test template
21589 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt6" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21590 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><figure-inline typeof="mw:Image" data-mw='{"caption":"desc"}'><a href="./File:Foobar.jpg"><img alt="inneralt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></figure-inline></div></li>
21591 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><span about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Test","href":"./Template:Test"},"params":{"1":{"wt":"unamedParam"},"alt":{"wt":"param"}},"i":0}}]}'>This is a test template</span></div></li>
21596 Gallery (with showfilename option)
21599 "nativeGallery": true
21602 <gallery showfilename="">
21603 File:Nonexistent.jpg|caption
21604 File:Nonexistent.jpg
21605 File:Foobar.jpg|some '''caption''' [[Main Page]]
21609 <ul class="gallery mw-gallery-traditional">
21610 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21611 <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
21612 <div class="gallerytext">
21613 <p><a href="/wiki/File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">Nonexistent.jpg</a>
21618 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21619 <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
21620 <div class="gallerytext">
21621 <p><a href="/wiki/File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">Nonexistent.jpg</a>
21625 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21626 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21627 <div class="gallerytext">
21628 <p><a href="/wiki/File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">Foobar.jpg</a>
21629 some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
21633 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21634 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21635 <div class="gallerytext">
21636 <p><a href="/wiki/File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">Foobar.jpg</a>
21643 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{"showfilename":""},"body":{}}'>
21644 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"><a href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">File:Nonexistent.jpg</a>caption</div></li>
21645 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"><a href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">File:Nonexistent.jpg</a></div></li>
21646 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><a href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">File:Foobar.jpg</a>some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
21647 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><a href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">File:Foobar.jpg</a></div></li>
21651 ## Should Parsoid be preserving these variations? See T151367
21653 Gallery (with namespace-less filenames)
21656 "modes": ["wt2html", "html2html"],
21657 "nativeGallery": true
21661 File:Nonexistent.jpg
21667 <ul class="gallery mw-gallery-traditional">
21668 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21669 <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
21670 <div class="gallerytext">
21673 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21674 <div class="thumb" style="height: 150px;">Nonexistent.jpg</div>
21675 <div class="gallerytext">
21678 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21679 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21680 <div class="gallerytext">
21683 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21684 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21685 <div class="gallerytext">
21691 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21692 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21693 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21694 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21695 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21700 Gallery override link with wikilink (T36852)
21703 "nativeGallery": true
21707 File:Foobar.jpg|alt=galleryalt|link=Wikilink
21710 <ul class="gallery mw-gallery-traditional">
21711 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21712 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Wikilink"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21713 <div class="gallerytext">
21719 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21720 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./Wikilink"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21725 Gallery override link with absolute external link (T36852)
21728 "nativeGallery": true
21732 File:Foobar.jpg|alt=galleryalt|link=http://www.example.org
21735 <ul class="gallery mw-gallery-traditional">
21736 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21737 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21738 <div class="gallerytext">
21744 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21745 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="http://www.example.org"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21750 Gallery override link with absolute external link with LanguageConverter
21755 File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org
21758 <ul class="gallery mw-gallery-traditional">
21759 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21760 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21761 <div class="gallerytext">
21769 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org\n"}}'>
21770 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="http://www.example.org"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext">caption</div></li>
21775 Gallery override link with malicious javascript (T36852)
21778 "modes": ["wt2html", "html2html"],
21779 "nativeGallery": true
21783 File:Foobar.jpg|alt=galleryalt|link=" onclick="alert('malicious javascript code!');
21786 <ul class="gallery mw-gallery-traditional">
21787 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21788 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/%22_onclick%3D%22alert(%27malicious_javascript_code!%27);"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21789 <div class="gallerytext">
21795 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21796 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./%22_onclick=%22alert('malicious_javascript_code!');"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21800 # Note that parsoid uses the invalid link as a caption, PHP does not.
21802 Gallery with invalid title as link (T45964)
21805 "modes": ["wt2html", "html2html"],
21806 "nativeGallery": true
21810 File:Foobar.jpg|link=<
21813 <ul class="gallery mw-gallery-traditional">
21814 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21815 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21816 <div class="gallerytext">
21822 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21823 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext">link=<</div></li>
21828 Serialize gallery without attrs in data-mw
21831 "modes": ["html2wt"],
21832 "nativeGallery": true
21835 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","body":{}}'>
21836 <li class="gallerycaption">123</li>
21837 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span>File:Test.png</span></div><div class="gallerytext"></div></li>
21840 <gallery caption="123">
21846 Gallery with class and style attributes
21849 "nativeGallery": true
21852 <gallery class="center" style="text-align: center;">
21856 <ul class="gallery mw-gallery-traditional center" style="text-align: center;">
21857 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21858 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21859 <div class="gallerytext">
21865 <ul class="gallery mw-gallery-traditional center" style="text-align: center;" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"class":"center","style":"text-align: center;"},"body":{}}'>
21866 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21871 Gallery in slideshow mode
21874 "nativeGallery": true
21877 <gallery mode="slideshow" showthumbnails="">
21881 <ul class="gallery mw-gallery-slideshow" data-showthumbnails="1">
21882 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
21883 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
21884 <div class="gallerytext">
21890 <ul class="gallery mw-gallery-slideshow" data-showthumbnails="1" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"mode":"slideshow","showthumbnails":""},"body":{}}'>
21891 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
21896 Serialize gallery image captions on a line
21899 "modes": ["html2wt"],
21900 "nativeGallery": true
21903 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
21904 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><p>hi</p><p>ho</p></div></li>
21905 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext">hi<br />ho</div></li>
21909 File:Foobar.jpg| hi ho
21910 File:Foobar.jpg|hi<br />ho
21915 HTML Hex character encoding (spells the word "JavaScript")
21917 parsoid=wt2html,wt2wt,html2html
21919 JavaScript
21921 <p>JavaScript
21924 <p><span typeof="mw:Entity">J</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">v</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">S</span><span typeof="mw:Entity">c</span><span typeof="mw:Entity">r</span><span typeof="mw:Entity">i</span><span typeof="mw:Entity">p</span><span typeof="mw:Entity">t</span></p>
21928 HTML Hex character encoding bogus encoding (T28437 regression check)
21932 <p>&#xsee;&#XSEE;
21937 HTML Hex character encoding mixed case
21939 parsoid=wt2html,wt2wt,html2html
21946 <p><span typeof="mw:Entity">î</span><span typeof="mw:Entity">î</span></p>
21949 # See: https://www.w3.org/TR/html5/syntax.html#character-references
21950 # Note that U+000C (form feed) is not a valid XML character, so
21951 # it is banned even though allowed in HTML5.
21953 Illegal character references (T106578)
21958 ; Control (low): 
21959 ; Control (high):  Ÿ
21960 ; Surrogate: ��
21961 ; This is an okay astral character: 💩
21969 <dt>Control (low)</dt>
21971 <dt>Control (high)</dt>
21972 <dd>&#x7F; &#x9F;</dd>
21974 <dd>&#xD83D;&#xDCA9;</dd>
21975 <dt>This is an okay astral character</dt>
21976 <dd>💩</dd></dl>
21980 __FORCETOC__ override
21992 ISBN 978-0-1234-56 789
21994 <p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a> 789
21997 <p><a href="./Special:BookSources/9780123456" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978-0-1234-56</a><span typeof="mw:Entity" data-parsoid='{"src":"&#x20;","srcContent":" "}'> </span>789</p>
22001 ISBN followed by 5 spaces
22012 ISBN ISBN 1234567890
22014 <p>ISBN <a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
22017 <p>ISBN <a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a></p>
22020 # Uppercase X and lowercase x as well
22031 <p><a href="/wiki/Special:BookSources/346204561X" class="internal mw-magiclink-isbn">ISBN 3-462-04561-X</a>
22032 <a href="/wiki/Special:BookSources/346204561X" class="internal mw-magiclink-isbn">ISBN 3-462-04561-x</a>
22033 <a href="/wiki/Special:BookSources/080442957X" class="internal mw-magiclink-isbn">ISBN 080442957X</a>
22034 <a href="/wiki/Special:BookSources/080442957X" class="internal mw-magiclink-isbn">ISBN 080442957x</a>
22035 <a href="/wiki/Special:BookSources/978080442957X" class="internal mw-magiclink-isbn">ISBN 978080442957X</a>
22036 <a href="/wiki/Special:BookSources/978080442957X" class="internal mw-magiclink-isbn">ISBN 978080442957x</a>
22039 <p><a href="./Special:BookSources/346204561X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-X</a>
22040 <a href="./Special:BookSources/346204561X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-x</a>
22041 <a href="./Special:BookSources/080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957X</a>
22042 <a href="./Special:BookSources/080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957x</a>
22043 <a href="./Special:BookSources/978080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957X</a>
22044 <a href="./Special:BookSources/978080442957X" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957x</a></p>
22048 ISBN with empty prefix (parsoid test)
22052 <p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
22055 <p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink">ISBN 1234567890</a></p>
22059 T24905: <abbr> followed by ISBN followed by </a>
22061 <abbr>(fr)</abbr> ISBN 2753300917 [http://www.example.com example.com]
22063 <p><abbr>(fr)</abbr> <a href="/wiki/Special:BookSources/2753300917" class="internal mw-magiclink-isbn">ISBN 2753300917</a> <a rel="nofollow" class="external text" href="http://www.example.com">example.com</a>
22066 <p><abbr data-parsoid='{"stx":"html"}'>(fr)</abbr> <a href="./Special:BookSources/2753300917" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 2753300917</a> <a rel="mw:ExtLink" class="external text" href="http://www.example.com">example.com</a></p>
22074 <p>RFC <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a>
22077 <p>RFC <a href="https://tools.ietf.org/html/rfc1234" rel="mw:ExtLink" class="external mw-magiclink">RFC 1234</a></p>
22081 Double RFC with a wiki link
22085 <p>RFC <a href="/index.php?title=RFC_1234&action=edit&redlink=1" class="new" title="RFC 1234 (page does not exist)">RFC 1234</a>
22088 <p>RFC <a rel="mw:WikiLink" href="./RFC_1234" title="RFC 1234">RFC 1234</a></p>
22096 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc983">RFC 983</a> 987
22099 <p><a href="https://tools.ietf.org/html/rfc983" rel="mw:ExtLink" class="external mw-magiclink" data-parsoid='{"stx":"magiclink"}'>RFC 983</a><span typeof="mw:Entity" data-parsoid='{"src":"&#x20;","srcContent":" "}'> </span>987</p>
22103 Centre-aligned image
22105 [[Image:foobar.jpg|centre]]
22107 <div class="center"><div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div></div>
22110 <figure class="mw-default-size mw-halign-center" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"center","ak":"centre"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
22116 [[Image:foobar.jpg|none]]
22118 <div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
22121 <figure class="mw-default-size mw-halign-none" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
22125 Width + Height sized image (using px) (height is ignored)
22127 [[Image:foobar.jpg|640x480px]]
22129 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
22132 <p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640x480px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
22136 Width-sized image (using px, no following whitespace)
22138 [[Image:foobar.jpg|640px]]
22140 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
22143 <p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
22147 Width-sized image (using px, with following whitespace - test regression from r39467)
22149 [[Image:foobar.jpg|640px ]]
22151 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
22154 <p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640px "}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
22158 Width-sized image (using px, with preceding whitespace - test regression from r39467)
22160 [[Image:foobar.jpg| 640px]]
22162 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
22165 <p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":" 640px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
22169 Image with page parameter
22173 [[File:LoremIpsum.djvu|page=2]]
22175 <p><a href="/index.php?title=File:LoremIpsum.djvu&page=2" class="image"><img alt="LoremIpsum.djvu" src="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-2480px-LoremIpsum.djvu.jpg" width="2480" height="3508" srcset="http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg 1.5x, http://example.com/images/thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg 2x" /></a>
22178 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"page","ak":"page=2"}]}' data-mw='{"page":"2"}'><a href="./File:LoremIpsum.djvu" data-parsoid='{"a":{"href":"./File:LoremIpsum.djvu"},"sa":{"href":"File:LoremIpsum.djvu"}}'><img resource="./File:LoremIpsum.djvu" src="//example.com/images/5/5f/LoremIpsum.djvu" data-file-width="2480" data-file-height="3508" data-file-type="bitmap" height="3508" width="2480" data-parsoid='{"a":{"resource":"./File:LoremIpsum.djvu","height":"3508","width":"2480"},"sa":{"resource":"File:LoremIpsum.djvu"}}'/></a></figure-inline></p>
22182 Another italics / bold test
22190 # FIXME: The php output seems broken. It's interleaving some open/close tags.
22196 <dl><dd><dl><dt><dl><dt><dl><dt><dl><dd><dl><dd></dt></dl></dd></dl></dd></dl></dd></dl></dd></dl></dd></dl>
22199 <dl><dd><dl><dt><dl><dt><dl><dt><dl><dd><dl><dd></dd></dl></dd></dl></dt></dl></dt></dl></dt></dl></dd></dl>
22203 # Images with the "|" character in external URLs in comment tags; Eats half the comment, leaves unmatched "</a>" tag.
22205 Images with the "|" character in the comment
22207 [[File:Foobar.jpg|thumb|An [http://test/?param1=|left|¶m2=|x external] URL]]
22209 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&param2=%7Cx">external</a> URL</div></div></div>
22212 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>An <a rel="mw:ExtLink" class="external text" href="http://test/?param1=%7Cleft%7C&param2=%7Cx" data-parsoid='{"a":{"href":"http://test/?param1=%7Cleft%7C&param2=%7Cx"},"sa":{"href":"http://test/?param1=|left|&param2=|x"}}'>external</a> URL</figcaption></figure>
22216 [Before] HTML without raw HTML enabled ($wgRawHtml==false)
22218 <html><script>alert(1);</script></html>
22220 <p><html><script>alert(1);</script></html>
22225 HTML with raw HTML ($wgRawHtml==true)
22229 <html><script>alert(1);</script></html>
22231 <p><script>alert(1);</script>
22234 <p><script typeof="mw:Extension/html" about="#mwt3" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"<script>alert(1);</script>"}}'>alert(1);</script></p>
22238 Parents of subpages, one level up
22240 subpage title=[[Subpage test/L1/L2/L3]]
22244 <p><a href="/index.php?title=Subpage_test/L1/L2&action=edit&redlink=1" class="new" title="Subpage test/L1/L2 (page does not exist)">L2</a>
22250 Parents of subpages, one level up, not named
22252 subpage title=[[Subpage test/L1/L2/L3]]
22256 <p><a href="/index.php?title=Subpage_test/L1/L2&action=edit&redlink=1" class="new" title="Subpage test/L1/L2 (page does not exist)">Subpage test/L1/L2</a>
22263 Parents of subpages, two levels up
22265 subpage title=[[Subpage test/L1/L2/L3]]
22271 <p><a href="/index.php?title=Subpage_test/L1&action=edit&redlink=1" class="new" title="Subpage test/L1 (page does not exist)">L1</a>2
22272 </p><p><a href="/index.php?title=Subpage_test/L1&action=edit&redlink=1" class="new" title="Subpage test/L1 (page does not exist)">L1l</a>
22277 Parents of subpages, two levels up, without trailing slash or name.
22279 subpage title=[[Subpage test/L1/L2/L3]]
22288 Parents of subpages, two levels up, with lots of extra trailing slashes.
22290 subpage title=[[Subpage test/L1/L2/L3]]
22294 <p><a href="/index.php?title=Subpage_test/L1&action=edit&redlink=1" class="new" title="Subpage test/L1 (page does not exist)">Subpage test/L1</a>
22299 Subpage test/L1/L2/L3Sibling
22305 Transclusion of a sibling page (one level up)
22307 subpage title=[[Subpage test/L1/L2/L3]]
22316 Transclusion of a child page
22318 subpage title=[[Subpage test/L1/L2]]
22326 # This is wt2html only in Parsoid because we add <nowiki>
22327 # because of {{..}} and we don't expect to fix that to
22328 # eliminate the nowikis selective for {{..}} markup.
22330 Non-transclusion because of too many up levels
22332 subpage title=[[Subpage test/L1/L2/L3]]
22335 {{../../../../More than parent}}
22337 <p>{{../../../../More than parent}}
22340 <p>{{../../../../More than parent}}</p>
22344 Definition list code coverage
22358 <dl><dt>title </dt><dd>def</dd>
22359 <dt>title </dt><dd>def</dd>
22360 <dt>title</dt><dd>def</dd></dl>
22364 Don't fall for the self-closing div
22366 <div>hello world</div/>
22368 <div>hello world</div>
22377 <p>[[:Template:Msg]]
22386 <p><a href="/index.php?title=Template:QUERTY&action=edit&redlink=1" class="new" title="Template:QUERTY (page does not exist)">Template:QUERTY</a>
22390 # This isn't needed for XHTML conformance, but would be handy as a fallback security measure
22392 Always escape literal '>' in output, not just after '<'
22406 <p>This is a test template
22407 This is a test template
22419 Inclusion of !userCanEdit() content
22423 <h2><span class="mw-headline" id="header">header</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=MediaWiki:Fake&action=edit&section=T-1" title="MediaWiki:Fake">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
22429 Out-of-order TOC heading levels
22438 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
22440 <li class="toclevel-1 tocsection-1"><a href="#2"><span class="tocnumber">1</span> <span class="toctext">2</span></a>
22442 <li class="toclevel-2 tocsection-2"><a href="#6"><span class="tocnumber">1.1</span> <span class="toctext">6</span></a></li>
22443 <li class="toclevel-2 tocsection-3"><a href="#3"><span class="tocnumber">1.2</span> <span class="toctext">3</span></a></li>
22446 <li class="toclevel-1 tocsection-4"><a href="#1"><span class="tocnumber">2</span> <span class="toctext">1</span></a>
22448 <li class="toclevel-2 tocsection-5"><a href="#5"><span class="tocnumber">2.1</span> <span class="toctext">5</span></a></li>
22449 <li class="toclevel-2 tocsection-6"><a href="#2_2"><span class="tocnumber">2.2</span> <span class="toctext">2</span></a></li>
22455 <h2><span class="mw-headline" id="2">2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
22456 <h6><span class="mw-headline" id="6">6</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: 6">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
22457 <h3><span class="mw-headline" id="3">3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: 3">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
22458 <h1><span class="mw-headline" id="1">1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: 1">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
22459 <h5><span class="mw-headline" id="5">5</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: 5">edit</a><span class="mw-editsection-bracket">]</span></span></h5>
22460 <h2><span class="mw-headline" id="2_2">2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
22466 ISBN with a dummy number
22476 ISBN with space-delimited number
22480 <p><a href="/wiki/Special:BookSources/9290170328" class="internal mw-magiclink-isbn">ISBN 92 9017 032 8</a>
22483 <p data-parsoid='{"dsr":[0,18,0,0]}'><a href="./Special:BookSources/9290170328" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink","dsr":[0,18,2,2]}'>ISBN 92 9017 032 8</a></p>
22488 ISBN with multiple spaces, no number
22507 </p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
22508 </p><p>ISBN 12345678901
22511 <p>ISBN 123456789</p>
22513 <p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a></p>
22515 <p>ISBN 12345678901</p>
22520 ISBN with trailing year (T9110)
22522 ISBN 1-234-56789-0 - 2006
22524 ISBN 1 234 56789 0 - 2006
22526 <p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1-234-56789-0</a> - 2006
22527 </p><p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1 234 56789 0</a> - 2006
22530 <p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1-234-56789-0</a> - 2006</p>
22532 <p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1 234 56789 0</a> - 2006</p>
22539 wgFragmentMode=[ 'html5', 'legacy' ]
22541 {{anchorencode:foo bar©#%n}}
22546 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"anchorencode:foo bar©#%n","function":"anchorencode"},"params":{},"i":0}}]}'>foo_bar©#%n</p>
22550 anchorencode (legacy)
22552 wgFragmentMode=[ 'legacy' ]
22554 {{anchorencode:foo bar©#%n}}
22556 <p>foo_bar.C2.A9.23.25n
22561 anchorencode trims spaces
22563 wgFragmentMode=[ 'html5', 'legacy' ]
22565 {{anchorencode: __pretty__please__}}
22570 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"anchorencode: __pretty__please__","function":"anchorencode"},"params":{},"i":0}}]}'>pretty_please</p>
22574 anchorencode deals with links
22576 wgFragmentMode=[ 'html5', 'legacy' ]
22578 {{anchorencode: [[hello|world]] [[hi]]}}
22583 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"anchorencode: [[hello|world]] [[hi]]","function":"anchorencode"},"params":{},"i":0}}]}'>world_hi</p>
22587 anchorencode deals with templates
22589 wgFragmentMode=[ 'html5', 'legacy' ]
22591 {{anchorencode: {{Foo}} x}}
22596 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"anchorencode: {{Foo}} x","function":"anchorencode"},"params":{},"i":0}}]}'>FOO_x</p>
22600 anchorencode encodes like the TOC generator: (T20431)
22602 wgFragmentMode=[ 'html5', 'legacy' ]
22604 ===_ +:.3A%3A _ &&]] x===
22605 {{anchorencode: _ +:.3A%3A _ &&]] x}}
22608 <h3><span id=".2B:.3A.253A_.26.26.5D.5D_x"></span><span class="mw-headline" id="+:.3A%3A_&&]]_x">_ +:.3A%3A _ &&]] x</span></h3>
22609 <p>+:.3A%3A_&&]]_x
22612 <h3 id="+:.3A%3A_&&]]_x"><span id=".2B:.3A.253A_.26.26.5D.5D_x" typeof="mw:FallbackId"></span>_ +:.3A%3A _ &<span typeof="mw:Entity" data-parsoid='{"src":"&amp;","srcContent":"&","dsr":[18,23,null,null]}'>&</span>]] x</h3>
22613 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"anchorencode: _ +:.3A%3A _ &&amp;]] x","function":"anchorencode"},"params":{},"i":0}}]}'>+:.3A%3A_&&<span typeof="mw:Entity">]</span><span typeof="mw:Entity">]</span>_x</p>
22614 <meta property="mw:PageProp/noeditsection"/>
22618 anchorencode encodes like the TOC generator: (T20431) (legacy)
22620 wgFragmentMode=[ 'legacy' ]
22622 ===_ +:.3A%3A&&]]===
22623 {{anchorencode: _ +:.3A%3A&&]] }}
22626 <h3><span class="mw-headline" id=".2B:.3A.253A.26.26.5D.5D">_ +:.3A%3A&&]]</span></h3>
22627 <p>.2B:.3A.253A.26.26.5D.5D
22632 T8200: blockquotes and paragraph formatting
22653 T10293: Use of center tag ruins paragraph formatting
22674 Parsing of overlapping (improperly nested) inline html tags
22676 <span><s>x</span></s>
22678 <p><span><s>x</span></s></span>
22681 <p><span><s>x</s></span>
22686 ### Language variants related tests
22689 # Parsoid does not mark self-links.
22690 # Parsoid does not convert links; PHP will do any necessary redirects.
22693 Self-link in language variants
22695 title=[[Dunav]] language=sr
22697 Both [[Dunav]] and [[Дунав]] are names for this river.
22699 <p>Both <a class="mw-selflink selflink">Dunav</a> and <a class="mw-selflink selflink">Дунав</a> are names for this river.
22702 <p>Both <a rel="mw:WikiLink" href="./Dunav" title="Dunav">Dunav</a> and <a rel="mw:WikiLink" href="./Дунав" title="Дунав">Дунав</a> are names for this river.</p>
22712 Link to another existing title shouldn't be parsed as self-link even if it's a variant of this title
22714 title=[[Duna]] language=sr
22716 [[Дуна]] is not a self-link while [[Duna]] and [[Dуна]] are still self-links.
22718 <p><a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Дуна</a> is not a self-link while <a class="mw-selflink selflink">Duna</a> and <a class="mw-selflink selflink">Dуна</a> are still self-links.
22721 <p><a rel="mw:WikiLink" href="./Дуна" title="Дуна">Дуна</a> is not a self-link while <a rel="mw:WikiLink" href="./Duna" title="Duna">Duna</a> and <a rel="mw:WikiLink" href="./Dуна" title="Dуна">Dуна</a> are still self-links.</p>
22725 Link to a section of a variant of this title shouldn't be parsed as self-link
22727 title=[[Duna]] language=sr
22729 [[Dуна]] is a self-link while [[Dunа#Foo]] and [[Dуна#Foo]] are not self-links.
22731 <p><a class="mw-selflink selflink">Dуна</a> is a self-link while <a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Dunа#Foo</a> and <a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Dуна#Foo</a> are not self-links.
22734 <p><a rel="mw:WikiLink" href="./Dуна" title="Dуна">Dуна</a> is a self-link while <a rel="mw:WikiLink" href="./Dunа#Foo" title="Dunа">Dunа#Foo</a> and <a rel="mw:WikiLink" href="./Dуна#Foo" title="Dуна">Dуна#Foo</a> are not self-links.</p>
22738 Link to pages in language variants
22742 Main Page can be written as [[Маин Паге]]
22744 <p>Main Page can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>
22747 <p>Main Page can be written as <a rel="mw:WikiLink" href="./Маин_Паге" title="Маин Паге">Маин Паге</a></p>
22752 Multiple links to pages in language variants
22756 [[Main Page]] can be written as [[Маин Паге]] same as [[Маин Паге]].
22758 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a> can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a> same as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>.
22761 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a> can be written as <a rel="mw:WikiLink" href="./Маин_Паге" title="Маин Паге">Маин Паге</a> same as <a rel="mw:WikiLink" href="./Маин_Паге" title="Маин Паге">Маин Паге</a>.</p>
22766 Simple template in language variants
22772 <p>This is a test template
22778 Template with explicit namespace in language variants
22784 <p>This is a test template
22790 Basic test for template parameter in language variants
22794 {{парамтест|param=foo}}
22796 <p>This is a test template with parameter foo
22801 Simple category in language variants
22805 [[Category:МедиаWики Усер'с Гуиде]]
22807 cat=МедиаWики_Усер'с_Гуиде sort=
22809 <link rel="mw:PageProp/Category" href="./Категорија:МедиаWики_Усер'с_Гуиде" data-parsoid='{"stx":"simple","a":{"href":"./Категорија:МедиаWики_Усер'с_Гуиде"},"sa":{"href":"Category:МедиаWики Усер'с Гуиде"}}'/>
22824 ## We used to, but no longer wt2wt this test since the default serializer
22825 ## will normalize all categories to serialize on their own line.
22826 ## This wikitext usage is going to be fairly uncommon in production and
22827 ## selser will take care of preserving formatting in those scenarios.
22829 Don't convert blue categorylinks to another variant (T35210)
22835 [[A]][[Category:分类]]
22839 <p><a rel="mw:WikiLink" href="./A" title="A">A</a></p>
22840 <link rel="mw:PageProp/Category" href="./Category:分类"/>
22844 Stripping -{}- tags (language variants)
22848 Latin proverb: -{Ne nuntium necare}-
22850 <p>Latin proverb: Ne nuntium necare
22853 <p>Latin proverb: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Ne nuntium necare"}}'></span></p>
22858 Prevent conversion with -{}- tags (language variants)
22860 language=sr variant=sr-ec
22862 Latinski: -{Ne nuntium necare}-
22864 <p>Латински: Ne nuntium necare
22867 <p>Latinski: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Ne nuntium necare"}}'></span></p>
22872 Prevent conversion of text with -{}- tags (language variants)
22874 language=sr variant=sr-ec
22876 Latinski: -{Ne nuntium necare}-
22878 <p>Латински: Ne nuntium necare
22881 <p>Latinski: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Ne nuntium necare"}}'></span></p>
22886 Prevent conversion of links with -{}- tags (language variants)
22888 language=sr variant=sr-ec
22892 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
22895 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"<a rel=\"mw:WikiLink\" href=\"./Main_Page\" title=\"Main Page\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Main_Page\"},\"sa\":{\"href\":\"Main Page\"},\"dsr\":[2,15,2,2]}'>Main Page</a>"}}'></span></p>
22900 -{}- tags within headlines (within html for parserConvert())
22902 wgFragmentMode=[ 'html5', 'legacy' ]
22904 language=sr variant=sr-ec
22908 Note that even an unprotected headline ID is not affected by language
22913 <h2><span id="-.7BNaslov.7D-"></span><span class="mw-headline" id="-{Naslov}-">Naslov</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Уредите одељак „Naslov”">уреди</a><span class="mw-editsection-bracket">]</span></span></h2>
22914 <p>Ноте тхат евен ан унпротецтед хеадлине ИД ис нот аффецтед бy лангуаге
22917 <h2><span class="mw-headline" id="Latinski">Латински</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Уредите одељак „Латински”">уреди</a><span class="mw-editsection-bracket">]</span></span></h2>
22920 <h2 id="-{Naslov}-"><span id="-.7BNaslov.7D-" typeof="mw:FallbackId"></span><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Naslov"}}'></span></h2>
22922 <p>Note that even an unprotected headline ID is not affected by language
22925 <h2 id="Latinski">Latinski</h2>
22929 Explicit definition of language variant alternatives
22931 language=zh variant=zh-tw
22933 -{zh:China;zh-tw:Taiwan}-, not China
22935 <p>Taiwan, not China
22938 <p><span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'></span>, not China</p>
22942 Filter syntax for language variants
22944 language=zh variant=zh-tw
22946 foo-{zh;zh-hans;zh-hant|blog, WEBJOURNAL, WEBLOG}-quux
22948 <p>fooblog, WEBJOURNAL, WEBLOGquux
22951 <p>foo<span typeof="mw:LanguageVariant" data-mw-variant='{"filter":{"l":["zh","zh-hans","zh-hant"],"t":"blog, WEBJOURNAL, WEBLOG"}}'></span>quux</p>
22954 # Note that Parsoid post-processing for language variants needs to
22955 # update the `title` attribute here, based on the mw:ExpandedAttrs property
22957 Conversion around HTML tags
22959 language=sr variant=sr-ec
22961 -{H|span=>sr-ec:script;title=>sr-ec:src}-
22962 <span title="La-{sr-el:L;sr-ec:C}-tin">ski</span>
22965 <span title="ЛаCтин">ски</span>
22968 <p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[8]}' data-mw-variant='{"add":true,"oneway":[{"f":"span","l":"sr-ec","t":"script"},{"f":"title","l":"sr-ec","t":"src"}]}'/>
22969 <span title="Latin" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"title"},{"html":"La<span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"twoway\":[{\"l\":\"sr-el\",\"t\":\"L\"},{\"l\":\"sr-ec\",\"t\":\"C\"}]}' data-parsoid='{\"fl\":[],\"tSp\":[6],\"dsr\":[57,76,null,2]}'></span>tin"}]]}'>ski</span></p>
22973 Explicit session-wise two-way language variant mapping (A flag and - flag)
22975 language=zh variant=zh-tw
22977 This is -{zh:China; zh-tw:Taiwan}-, but we'll forget that now.
22979 Taiwan is not China.
22981 But -{A|zh:China; zh-tw:Taiwan}- is China,
22983 (This-{-|zh:China; zh-tw:Taiwan}- should be stripped!)
22985 and -{China}- is China.
22987 <p>This is Taiwan, but we'll forget that now.
22988 </p><p>Taiwan is not China.
22989 </p><p>But Taiwan is Taiwan,
22990 </p><p>(This should be stripped!)
22991 </p><p>and China is China.
22994 <p>This is <span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'></span>, but we'll forget that now.</p>
22995 <p>Taiwan is not China.</p>
22996 <p>But <span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'></span> is China,</p>
22997 <p>(This<meta typeof="mw:LanguageVariant" data-mw-variant='{"remove":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/> should be stripped!)</p>
22998 <p>and <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"China"}}'></span> is China.</p>
23002 Explicit session-wise one-way language variant mapping (A flag and - flag)
23004 language=zh variant=zh-tw
23006 This is -{COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}-, but we'll forget that now.
23008 COUNTRY is China or Taiwan.
23010 But -{A|COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}- is COUNTRY,
23012 (This-{-|COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}- should be stripped!)
23014 and -{COUNTRY}- is COUNTRY.
23016 <p>This is Taiwan, but we'll forget that now.
23017 </p><p>COUNTRY is China or Taiwan.
23018 </p><p>But Taiwan is Taiwan,
23019 </p><p>(This should be stripped!)
23020 </p><p>and COUNTRY is COUNTRY.
23023 <p>This is <span typeof="mw:LanguageVariant" data-mw-variant='{"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}]}'></span>, but we'll forget that now.</p>
23024 <p>COUNTRY is China or Taiwan.</p>
23025 <p>But <span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}]}'></span> is COUNTRY,</p>
23026 <p>(This<meta typeof="mw:LanguageVariant" data-mw-variant='{"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}],"remove":true}'/> should be stripped!)</p>
23027 <p>and <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"COUNTRY"}}'></span> is COUNTRY.</p>
23031 Explicit session-wise two-way language variant mapping (H flag for hide)
23033 language=zh variant=zh-tw
23035 (This-{H|zh:China;zh-tw:Taiwan}- should be stripped!)
23039 <p>(This should be stripped!)
23040 </p><p>Taiwan is Taiwan.
23043 <p>(This<meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/> should be stripped!)</p>
23044 <p>Taiwan is China.</p>
23048 Explicit session-wise one-way language variant mapping (H flag for hide)
23050 language=zh variant=zh-tw
23052 (This-{H|COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}- should be stripped!)
23054 COUNTRY is Taiwan or China.
23056 <p>(This should be stripped!)
23057 </p><p>Taiwan is Taiwan or China.
23060 <p>(This<meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[8]}' data-mw-variant='{"add":true,"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}]}'/> should be stripped!)</p>
23061 <p>COUNTRY is Taiwan or China.</p>
23064 ## Note that parsoid test runner does not support 'showtitle' option.
23066 Adding explicit conversion rule for title (T flag)
23068 language=zh variant=zh-tw showtitle
23070 Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
23075 <p>Should be stripped!
23076 </p><p>Taiwan is China.
23079 <p>Should be stripped<meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
23080 <p>Taiwan is China.</p>
23084 Code coverage: T combined with H flag
23086 language=zh variant=zh-tw showtitle
23088 Should be stripped-{T;H|zh:China; zh-tw:Taiwan}-!
23093 <p>Should be stripped!
23094 </p><p>Taiwan is Taiwan.
23097 <p>Should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
23098 <p>Taiwan is China.</p>
23102 Code coverage: T with no variants
23104 language=zh variant=zh-tw showtitle
23106 -{H|zh:China; zh-tw:Taiwan}-
23107 Taiwan is China.-{T|Taiwan is China}-
23114 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>
23115 Taiwan is China.<meta typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Taiwan is China"},"title":true}'/></p>
23119 Code coverage: rules with no variants
23121 language=zh variant=zh-tw
23123 -{H|zh:China; zh-tw:Taiwan}-
23134 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>
23136 <meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"*","t":"China"}]}'/>
23137 Taiwan is China.</p>
23142 Code coverage: D flag for conversion rule
23144 language=zh variant=zh-tw
23146 -{D|zh-cn:XA; zh-tw:YA}-
23147 -{A;D|zh-cn:XB; zh-tw:YB}-
23148 -{D;H|zh-cn:XC; zh-tw:YC}-
23150 -{D;H|FOO=>zh-tw:BAR;FOO=>zh-cn:BAT}-
23156 XA XB XC YA YB YC FOO BAR BAT 012345
23161 </p><p>FOO⇒台灣:BAR;FOO⇒大陆:BAT;
23165 </p><p>XA YB YC YA YB YC BAR BAR BAT 013355
23168 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"describe":true,"twoway":[{"l":"zh-cn","t":"XA"},{"l":"zh-tw","t":"YA"}]}'></span>
23169 <meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"twoway":[{"l":"zh-cn","t":"XB"},{"l":"zh-tw","t":"YB"}]}'/>
23170 <span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"twoway":[{"l":"zh-cn","t":"XC"},{"l":"zh-tw","t":"YC"}]}'></span></p>
23171 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"oneway":[{"f":"FOO","l":"zh-tw","t":"BAR"},{"f":"FOO","l":"zh-cn","t":"BAT"}]}'></span></p>
23172 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"describe":true,"oneway":[{"f":"0","l":"zh-tw","t":"1"}]}'></span>
23173 <meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"oneway":[{"f":"2","l":"zh-tw","t":"3"}]}'/>
23174 <span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"oneway":[{"f":"4","l":"zh-tw","t":"5"}]}'></span></p>
23175 <p>XA XB XC YA YB YC FOO BAR BAT 012345</p>
23179 Code coverage: N flag for conversion rule
23181 language=zh variant=zh-cn
23191 </p><p>српски (ћирилица)
23194 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"zh-cn"}}'></span></p>
23195 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"zh-tw"}}'></span></p>
23196 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"sr-ec"}}'></span></p>
23199 # html2wt suppresses the bogus 'D' flag, so this is wt2html only
23201 Code coverage: N flag for conversion rule (wt2html only)
23203 language=zh variant=zh-cn
23204 parsoid=wt2html,html2html
23211 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"en"}}' data-parsoid='{"fl":["D","N"]}'></span></p>
23215 Testing that changing the language variant here in the tests actually works
23217 language=zh variant=zh showtitle
23219 Should be stripped-{T|zh:China; zh-tw:Taiwan}-!
23222 <p>Should be stripped!
23225 <p>Should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
23229 Recursive conversion of alt and title attrs shouldn't clear converter state
23231 language=zh variant=zh-cn
23234 -{H|zh-cn:Exclamation; zh-tw:exclamation}-
23235 Should be stripped-{T|zh-cn:China; zh-tw:Taiwan}-<span title="exclamation">!</span>
23239 Should be stripped<span title="Exclamation">!</span>
23242 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh-cn","t":"Exclamation"},{"l":"zh-tw","t":"exclamation"}]}'/>
23243 Should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"title":true,"twoway":[{"l":"zh-cn","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/><span title="exclamation">!</span></p>
23247 T26072: more test on conversion rule for title
23249 language=zh variant=zh-tw showtitle
23251 This should be stripped-{T|zh:China; zh-tw:Taiwan}-!
23253 This won't take interferes with the title rule-{H|zh:Beijing; zh-tw:Taipei}-.
23256 <p>This should be stripped!
23257 </p><p>This won't take interferes with the title rule.
23260 <p>This should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
23261 <p>This won't take interferes with the title rule<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"Beijing"},{"l":"zh-tw","t":"Taipei"}]}'/>.</p>
23265 Partly disable title conversion if variant == main language code
23267 language=zh variant=zh title=[[ZH]] showtitle
23269 -{T|zh-cn:CN;zh-tw:TW}-
23275 <p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"title":true,"twoway":[{"l":"zh-cn","t":"CN"},{"l":"zh-tw","t":"TW"}]}'/></p>
23279 Partly disable title conversion if variant == main language code, more
23281 language=zh variant=zh title=[[ZH]] showtitle
23289 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"TW"},"title":true}'/></p>
23293 Raw output of variant escape tags (R flag)
23295 language=zh variant=zh-tw
23297 Raw: -{R|zh:China;zh-tw:Taiwan}-
23299 <p>Raw: zh:China;zh-tw:Taiwan
23302 <p>Raw: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"zh:China;zh-tw:Taiwan"}}'></span></p>
23305 # html2wt suppresses the bogus 'D' flags, so this is wt2html only
23307 Raw output of variant escape tags (R flag) (wt2html only)
23309 language=zh variant=zh-tw
23310 parsoid=wt2html,html2html
23312 -{Variant}- -{D|syntax}- -{D;R|options}-
23314 <p>Variant syntax options
23317 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Variant"}}'></span> <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"syntax"}}'></span> <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"options"}}'></span></p>
23321 Nested markup inside raw output of variant escape tags (R flag)
23323 language=zh variant=zh-tw
23325 Nested raw: -{R|nested -{zh:China;zh-tw:Taiwan}- nested}-
23327 <p>Nested raw: nested Taiwan nested
23330 <p>Nested raw: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"nested <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"twoway\":[{\"l\":\"zh\",\"t\":\"China\"},{\"l\":\"zh-tw\",\"t\":\"Taiwan\"}]}' data-parsoid='{\"fl\":[],\"tSp\":[6],\"dsr\":[23,48,null,2]}'></span> nested"}}'></span></p>
23334 Nested markup and spaces inside raw output of variant escape tags (R flag)
23336 language=zh variant=zh-tw
23338 X-{ outer -{ inner }- outer }-X
23340 <p>X outer inner outer X
23343 <p>X<span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":" outer <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"disabled\":{\"t\":\" inner \"}}' data-parsoid='{\"fl\":[],\"dsr\":[10,21,null,2]}'></span> outer "}}'></span>X</p>
23347 Templates inside raw output of variant escape tags (R flag)
23349 language=zh variant=zh-tw
23351 Nested raw: -{R|nested {{echo|hi}} templates}-
23353 <p>Nested raw: nested hi templates
23356 <p>Nested raw: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"nested <span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[23,34,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"hi\"}},\"i\":0}}]}'>hi</span> templates"}}'></span></p>
23360 Strings evaluating false shouldn't be ignored by Language converter (T51072)
23362 language=zh variant=zh-cn
23364 -{zh-cn:0;zh-sg:1;zh-tw:2;zh-hk:3}-
23369 <p><span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[12]}' data-mw-variant='{"twoway":[{"l":"zh-cn","t":"0"},{"l":"zh-sg","t":"1"},{"l":"zh-tw","t":"2"},{"l":"zh-hk","t":"3"}]}'></span></p>
23373 Conversion rules from [numeric-only string] to [something else] (T48634)
23375 language=zh variant=zh-cn
23377 -{H|0=>zh-cn:B}--{H|0=>zh-cn:C;0=>zh-cn:D}--{H|0=>zh-hans:A}-012345-{A|zh-tw:0;zh-cn:E;}-012345
23382 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-cn","t":"B"}]}'/><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-cn","t":"C"},{"f":"0","l":"zh-cn","t":"D"}]}'/><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-hans","t":"A"}]}'/>012345<span typeof="mw:LanguageVariant" data-parsoid='{"fl":["A"],"tSp":[7]}' data-mw-variant='{"add":true,"twoway":[{"l":"zh-tw","t":"0"},{"l":"zh-cn","t":"E"}]}'></span>012345</p>
23386 Two-way converter rule entries with an empty value should be ignored (T53551)
23388 language=zh variant=zh-cn
23390 -{H|zh-cn:foo;zh-tw:;}-foobar
23395 <p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[7]}' data-mw-variant='{"add":true,"twoway":[{"l":"zh-cn","t":"foo"},{"l":"zh-tw","t":""}]}'/>foobar</p>
23399 One-way converter rule entries with an empty "from" string should be ignored (T53551)
23401 language=zh variant=zh-cn
23403 -{H|=>zh-cn:foo;}-foobar
23408 <p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[5]}' data-mw-variant='{"add":true,"oneway":[{"f":"","l":"zh-cn","t":"foo"}]}'/>foobar</p>
23412 Empty converter rule entries shouldn't be inserted into the conversion table (T53551)
23414 language=zh variant=zh-cn
23421 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"*","t":""}]}'/>foobar</p>
23425 Nested using of manual convert syntax
23427 language=zh variant=zh-hk
23429 Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiwan;zh-hk:H-{ong}- K-{}-ong;}-;}-!
23431 <p>Nested: Hello Hong Kong!
23434 <p>Nested: <span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[7]}' data-mw-variant='{"twoway":[{"l":"zh-hans","t":"Hi <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"twoway\":[{\"l\":\"zh-cn\",\"t\":\"China\"},{\"l\":\"zh-sg\",\"t\":\"Singapore\"}]}' data-parsoid='{\"fl\":[],\"tSp\":[7],\"dsr\":[21,53,null,2]}'></span>"},{"l":"zh-hant","t":"Hello <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"twoway\":[{\"l\":\"zh-tw\",\"t\":\"Taiwan\"},{\"l\":\"zh-hk\",\"t\":\"H&lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&apos;{\\\"disabled\\\":{\\\"t\\\":\\\"ong\\\"}}&apos; data-parsoid=&apos;{\\\"fl\\\":[],\\\"dsr\\\":[90,97,null,2]}&apos;>&lt;/span> K&lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&apos;{\\\"disabled\\\":{\\\"t\\\":\\\"\\\"}}&apos; data-parsoid=&apos;{\\\"fl\\\":[],\\\"dsr\\\":[99,103,null,2]}&apos;>&lt;/span>ong\"}]}' data-parsoid='{\"fl\":[],\"tSp\":[7],\"dsr\":[68,109,null,2]}'></span>"}]}'></span>!</p>
23438 HTML markups with conversion syntax in attribs, nested in other conversion blocks
23440 language=zh variant=zh-cn
23442 -{zh;zh-hans;zh-hant|<span title="-{X}-">A</span>}-
23444 <p><span title="X">A</span>
23447 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"filter":{"l":["zh","zh-hans","zh-hant"],"t":"<span title=\"\" about=\"#mwt1\" typeof=\"mw:ExpandedAttrs\" data-parsoid='{\"stx\":\"html\",\"a\":{\"title\":\"\"},\"sa\":{\"title\":\"-{X}-\"},\"dsr\":[21,49,20,7]}' data-mw='{\"attribs\":[[{\"txt\":\"title\"},{\"html\":\"&lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&apos;{\\\"disabled\\\":{\\\"t\\\":\\\"X\\\"}}&apos; data-parsoid=&apos;{\\\"fl\\\":[],\\\"dsr\\\":[34,39,null,2]}&apos;>&lt;/span>\"}]]}'>A</span>"}}'></span></p>
23451 HTML markups with conversion syntax in attribs, nested in other conversion blocks (not working yet in PHP parser)
23453 language=zh variant=zh-cn
23455 -{<span title="-{X}-">A</span>}-
23456 !! html/php+disabled
23457 <p><span title="X">A</span>
23460 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"<span title=\"\" about=\"#mwt1\" typeof=\"mw:ExpandedAttrs\" data-parsoid='{\"stx\":\"html\",\"a\":{\"title\":\"\"},\"sa\":{\"title\":\"-{X}-\"},\"dsr\":[2,30,20,7]}' data-mw='{\"attribs\":[[{\"txt\":\"title\"},{\"html\":\"&lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&apos;{\\\"disabled\\\":{\\\"t\\\":\\\"X\\\"}}&apos; data-parsoid=&apos;{\\\"fl\\\":[],\\\"dsr\\\":[15,20,null,2]}&apos;>&lt;/span>\"}]]}'>A</span>"}}'></span></p>
23463 # Parsoid and PHP disagree on how to parse this example: Parsoid
23464 # insists that the content of a language converter element be a valid
23465 # DOM fragment or attribute string
23467 Language converter markup with block content
23469 language=zh variant=zh-cn
23471 <span>a-{b<div>c}-d
23473 <span>a-{zh;zh-hans;zh-hant|b<div>c}-d
23475 <span>a-{H|0=>zh-cn:x<span>y;0=>zh-tw:b<div>c}-d
23480 </span></div></span></div></span>
23482 <span data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a<div typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"b<div data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[10,16,5,0]}'>c</div>"}}'></div>d
23484 <span data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a<div typeof="mw:LanguageVariant" data-mw-variant='{"filter":{"l":["zh","zh-hans","zh-hant"],"t":"b<div data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[50,56,5,0]}'>c</div>"}}'></div>d
23486 <p><span data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-cn","t":"x<span data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[82,89,6,0]}'>y</span>"},{"f":"0","l":"zh-tw","t":"b<div data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[100,106,5,0]}'>c</div>"}]}'/>d</span></p></span></span>
23490 LanguageConverter selser (1)
23492 language=zh variant=zh-cn
23494 "modes": ["wt2wt", "selser"],
23496 ["span[typeof]", "attr", "data-mw-variant", "{\"disabled\":{\"t\":\"edited\"}}"]
23506 LanguageConverter selser (2)
23508 language=zh variant=zh-cn
23510 "modes": ["wt2wt", "selser"],
23512 ["span[class='x']", "contents", "text", "-{foo}-"],
23513 ["a", "contents", "text", "-{"],
23514 ["span[typeof]", "attr", "data-mw", "{\"parts\":[{\"template\":{\"target\":{\"wt\":\"1x\",\"href\":\"./Template:1x\"},\"params\":{\"1\":{\"wt\":\"-{\"}},\"i\":0}}]}"]
23518 <span class="x">TEXT1</span>
23519 [http://example.com TEXT2]
23523 <span class="x"><nowiki>-{foo}-</nowiki></span>
23524 [http://example.com -{]
23525 [[Foo|<nowiki>-{</nowiki>]]
23526 {{1x|<nowiki>-{</nowiki>}}
23529 # Tests LanguageVariantText in ConstrainedText
23531 LanguageConverter selser (3)
23533 language=zh variant=zh-cn
23535 "modes": ["wt2wt", "selser"],
23537 ["td > span", "attr", "typeof", "mw:LanguageVariant"],
23538 ["td > span", "attr", "data-mw-variant", "{\"disabled\":{\"t\":\"edited\"}}"]
23549 |<nowiki/>-{edited}-
23553 # Tests LanguageVariantText._fromSelSer
23555 LanguageConverter selser (4)
23557 language=zh variant=zh-cn
23559 "modes": ["wt2wt", "selser"],
23561 ["td > span.x", "remove"]
23567 |<span class="x">Foo</span>-{Bar}-
23568 ||<span class="x">Foo</span>-{Bar}-
23578 # Since Parsoid is starting to emit canonical wikitext for links,
23579 # [http://example.com http://example.com] will not RT back to that
23581 # Parsoid does not language-convert links (it is done in a
23582 # post-processing step)
23584 Proper conversion of text in external links
23586 language=sr variant=sr-ec
23589 http://www.google.com
23590 gopher://www.google.com
23591 [http://www.google.com http://www.google.com]
23592 [gopher://www.google.com gopher://www.google.com]
23593 [https://www.google.com irc://www.google.com]
23594 [ftp://www.google.com www.google.com/ftp://dir]
23595 [//www.google.com www.google.com]
23597 <p><a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
23598 <a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
23599 <a rel="nofollow" class="external text" href="http://www.google.com">http://www.google.com</a>
23600 <a rel="nofollow" class="external text" href="gopher://www.google.com">gopher://www.google.com</a>
23601 <a rel="nofollow" class="external text" href="https://www.google.com">irc://www.google.com</a>
23602 <a rel="nofollow" class="external text" href="ftp://www.google.com">www.гоогле.цом/фтп://дир</a>
23603 <a rel="nofollow" class="external text" href="//www.google.com">www.гоогле.цом</a>
23606 <p><a rel="mw:ExtLink" class="external free" href="http://www.google.com">http://www.google.com</a>
23607 <a rel="mw:ExtLink" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
23608 <a rel="mw:ExtLink" class="external text" href="http://www.google.com">http://www.google.com</a>
23609 <a rel="mw:ExtLink" class="external text" href="gopher://www.google.com">gopher://www.google.com</a>
23610 <a rel="mw:ExtLink" class="external text" href="https://www.google.com">irc://www.google.com</a>
23611 <a rel="mw:ExtLink" class="external text" href="ftp://www.google.com">www.google.com/ftp://dir</a>
23612 <a rel="mw:ExtLink" class="external text" href="//www.google.com">www.google.com</a></p>
23616 Do not convert roman numbers to language variants
23618 language=sr variant=sr-ec
23622 <p>Фридрих IV је цар.
23625 <p>Fridrih IV je car.</p>
23629 Unclosed language converter markup "-{"
23640 Don't convert raw rule "-{R|=>}-" to "=>"
23649 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"=<span typeof=\"mw:Entity\" data-parsoid='{\"src\":\"&amp;gt;\",\"srcContent\":\">\",\"dsr\":[5,9,null,null]}'>></span>"}}'></span></p>
23653 Don't break link parsing if language converter markup is in the caption.
23655 language=sr variant=sr-ec
23657 [[Main Page|-{R|main page}-]]
23659 <p><a href="/wiki/Main_Page" title="Маин Паге">main page</a>
23662 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page"><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"main page"}}' data-parsoid='{"fl":["R"]}'></span></a></p>
23666 T146304: Don't break template parsing if language converter markup is in the parameter.
23668 language=sr variant=sr-ec
23675 <p><span typeof="mw:Transclusion mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"foo"}}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Шаблон:Echo"},"params":{"1":{"wt":"-{R|foo}-"}},"i":0}}]}'></span></p>
23679 T146305: Don't break image parsing if language converter markup is in the caption.
23683 [[Датотека:Foobar.jpg|thumb|-{R|caption:}-]]
23685 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="internal" title="Повећајте"></a></div>caption:</div></div></div>
23688 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"}]}'><a href="./Датотека:Foobar.jpg"><img resource="./Датотека:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"caption:"}}' data-parsoid='{"fl":["R"]}'></span></figcaption></figure>
23692 T146305: Don't break image parsing if nested language converter markup is in the caption.
23694 language=zh variant=zh-cn
23696 [[File:Foobar.jpg|thumb|-{|zh-cn:blog (hk: -{zh-hans|WEBJOURNAL}-, tw: -{zh-hans|WEBLOG}-)}-]]
23698 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="放大"></a></div>blog (hk: WEBJOURNAL, tw: WEBLOG)</div></div></div>
23701 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"zh-cn","t":"blog (hk: <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"WEBJOURNAL\"}}' data-parsoid='{\"fl\":[\"zh-hans\"],\"dsr\":[43,65,null,2]}'></span>, tw: <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"WEBLOG\"}}' data-parsoid='{\"fl\":[\"zh-hans\"],\"dsr\":[71,89,null,2]}'></span>)"}]}'></span></figcaption></figure>
23704 # XXX html2wt disabled because rich markup in alt is not preserved.
23706 Don't break gallery if language converter markup is inside.
23711 File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=-{R|foo}-|-{R|bar}-]]|alt=-{R|bat}-
23712 File:foobar.jpg|{{Test|unamedParam|alt=-{R|param}-}}|alt=galleryalt
23715 <ul class="gallery mw-gallery-traditional">
23716 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
23717 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="bat" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
23718 <div class="gallerytext">
23719 <p><a href="/wiki/File:Foobar.jpg" class="image" title="bar"><img alt="foo" src="http://example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" width="20" height="2" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/30px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/40px-Foobar.jpg 2x" /></a>
23723 <li class="gallerybox" style="width: 155px"><div style="width: 155px">
23724 <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
23725 <div class="gallerytext">
23726 <p>This is a test template
23733 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt6" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=-{R|foo}-|-{R|bar}-]]|alt=-{R|bat}-\nFile:foobar.jpg|{{Test|unamedParam|alt=-{R|param}-}}|alt=galleryalt\n"}}'>
23734 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><figure-inline typeof="mw:Image" data-mw='{"caption":"<span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"disabled\":{\"t\":\"bar\"}}' data-parsoid='{\"fl\":[\"R\"],\"dsr\":[68,77,null,2]}'></span>"}'><a href="./File:Foobar.jpg"><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></figure-inline></div></li>
23735 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"><span about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Test","href":"./Template:Test"},"params":{"1":{"wt":"unamedParam"},"alt":{"wt":"-{R|param}-"}},"i":0}}]}'>This is a test template</span></div></li>
23740 T153135: Don't break list handling if language converter markup is in the item.
23742 language=zh variant=zh-cn
23744 ;-{zh-cn:AAA;zh-tw:BBB}-
23748 <dt>foo:bar</dt></dl>
23751 <dl><dt data-parsoid='{"dsr":[0,24,1,0]}'><span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"twoway":[{"l":"zh-cn","t":"AAA"},{"l":"zh-tw","t":"BBB"}]}'></span></dt>
23752 <dt data-parsoid='{"dsr":[25,39,1,0]}'><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"foo:bar"}}'></span></dt>
23756 // Note that parsoid does not protect colons unless language converter
23757 // markup is properly nested, because it is a backtracking parser.
23759 T153135: Unclosed markup in definition list (code coverage)
23761 language=zh variant=zh-cn
23766 <dl><dt><b>foo:bar</b></dt><b>
23767 <dt>-{zh-cn:AAA</dt></b></dl><p><b>
23770 <dl><dt data-parsoid='{}'><b data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo:bar</b></dt><b data-parsoid='{"stx":"html","autoInsertedEnd":true,"autoInsertedStart":true}'>
23771 <dt data-parsoid='{}'>-{zh-cn</dt><dd data-parsoid='{"stx":"row"}'>AAA</dd></b></dl>
23775 T153135: Nested language converter markup in definition list (code coverage)
23777 language=zh variant=zh-cn
23779 ;-{|zh-cn:AAA -{zh-hans|foo:bar}- -{R|bat:baz}-}-:def
23781 <dl><dt>AAA foo:bar bat:baz</dt>
23785 <dl><dt data-parsoid='{"dsr":[0,49,1,0]}'><span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"zh-cn","t":"AAA <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"foo:bar\"}}' data-parsoid='{\"fl\":[\"zh-hans\"],\"dsr\":[14,33,null,2]}'></span> <span typeof=\"mw:LanguageVariant\" data-mw-variant='{\"disabled\":{\"t\":\"bat:baz\"}}' data-parsoid='{\"fl\":[\"R\"],\"dsr\":[34,47,null,2]}'></span>"}]}'></span></dt>
23786 <dd data-parsoid='{"stx":"row","dsr":[49,53,1,0]}'>def</dd>
23790 # html2wt mode disabled due to <nowiki> insertion.
23792 T153140: Don't break table handling if language converter markup is in the cell.
23794 language=sr variant=sr-ec
23795 parsoid=wt2html,wt2wt,html2html
23812 <td><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"B"}}'></span></td>
23819 Language converter tricky html2wt cases (1)
23822 parsoid=html2wt,wt2wt
23824 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"}-"}}'></span></p>
23826 -{<nowiki>}-</nowiki>}-
23833 Language converter tricky html2wt cases (2)
23836 parsoid=html2wt,wt2wt
23840 <nowiki>-{foo}-</nowiki>
23842 <p>-{foo}-
23847 Language converter tricky html2wt cases (3)
23850 parsoid=html2wt,wt2wt
23852 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"|"}}'></span></p>
23853 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"R|raw"}}'></span></p>
23854 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"-{foo}-"}}'></span></p>
23860 -{<nowiki>-{foo}-</nowiki>}-
23864 </p><p>-{foo}-
23869 Language converter tricky html2wt cases (4)
23872 parsoid=html2wt,wt2wt
23874 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"<span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,14,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"hey\"}},\"i\":0}}]}'>hey</span>"}}'></span></p>
23882 # Note that the <nowiki> escaping added by parsoid for source text,
23883 # destination text, and language names only works on the PHP side
23884 # for *destination text*. (HTML entity escaping wouldn't work
23885 # any better.) This is probably a bug, at least for source texts.
23886 # (For language names PHP uses a precise regexp based on the languages
23887 # it currently knows have variants, which is fragile since this set
23888 # can grow/shrink over time.)
23890 Language converter tricky html2wt cases (5)
23892 language=zh variant=zh-cn
23894 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"a:b=>c","l":"zh-cn","t":"x;foo=>zh-cn:boo"},{"f":"bar","l":"zh-cn","t":"bat;xyz=>zh-cn:abc"}]}'/>foobar</p>
23895 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"A","l":"bo:g;us","t":"B"}]}'/></p>
23896 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh-tw","t":"xyz"},{"l":"zh-cn","t":"0;zh-tw:bar"}]}'></span></p>
23897 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"bo:g;us","t":"xyz"},{"l":"zh-cn","t":"abc"}]}'></span></p>
23900 -{H|<nowiki>a:b=>c</nowiki>=>zh-cn:<nowiki>x;foo=>zh-cn:boo</nowiki>;bar=>zh-cn:<nowiki>bat;xyz=>zh-cn:abc</nowiki>}-foobar
23902 -{H|A=><nowiki>bo:g;us</nowiki>:B}-
23904 -{A|zh-tw:xyz; zh-cn:<nowiki>0;zh-tw:bar</nowiki>}-
23906 -{<nowiki>bo:g;us</nowiki>:xyz; zh-cn:abc}-
23909 !! html/php+disabled
23910 <p>foobat;xyz=>zh-cn:abc
23914 </p><p>a:b=>c 0;zh-tw:bar
23919 T179579: Nowiki and lc interaction
23926 -{123<nowiki>|</nowiki>456}-
23928 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"&lt;/nowiki>123"}}' data-parsoid='{"fl":[],"src":"-{</nowiki>123}-"}'></span></p>
23930 <p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"123<span typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[23,41,8,9]}'>|</span>456"}}' data-parsoid='{"fl":[],"src":"-{123<nowiki>|</nowiki>456}-"}'></span></p>
23934 T2529: Uncovered bullet
23944 T2529: Uncovered bullet in a deeply nested list
23946 *******Foo {{bullet}}
23948 <ul><li><ul><li><ul><li><ul><li><ul><li><ul><li><ul><li>Foo</li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li>
23954 T2529: Uncovered table already at line-start
23977 T2529: Uncovered bullet in parser function result
23979 *Foo {{lc:{{bullet}} }}
23987 T7678: Double-parsed template argument
23989 {{lc:{{{1}}}|hello}}
23996 T7678: Double-parsed template invocation
23998 {{lc:{{paramtest {{!}} param = hello }} }}
24000 <p>{{paramtest | param = hello }}
24005 Case insensitivity of parser functions for non-ASCII characters (T10143)
24008 title=[[Main Page]]
24010 {{PRVNÍVELKÉ:ěščř}}
24011 {{prvnívelké:ěščř}}
24031 Morwen/13: Unclosed link followed by heading
24038 <h2><span class="mw-headline" id="heading">heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
24043 HHP2.1: Heuristics for headings in preprocessor parenthetical structures
24050 <h1><span class="mw-headline" id="heading">heading</span></h1>
24055 HHP2.2: Heuristics for headings in preprocessor parenthetical structures
24062 <h2><span class="mw-headline" id="heading">heading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: heading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
24077 Paragraphs inside divs (no extra line breaks)
24089 Paragraphs inside divs (extra line break on open)
24104 Paragraphs inside divs (extra line break on close)
24119 Paragraphs inside divs (extra line break on open and close)
24135 # doBlockLevels screws up this output and Remex cleans up as much as it can.
24137 Nesting tags, paragraphs on lines which begin with <div>
24139 <div></div><strong>A
24142 <div></div><p><strong>A
24143 </strong></p><strong></strong><p><strong>B</strong>
24146 <div data-parsoid='{"stx":"html"}'></div><p><strong data-parsoid='{"stx":"html","autoInsertedEnd":true}'>A</strong></p>
24147 <p><strong data-parsoid='{"stx":"html","autoInsertedStart":true}'>B</strong></p>
24150 # T8200: <blockquote> should behave like <div> with respect to line breaks
24152 T8200: paragraphs inside blockquotes (no extra line breaks)
24154 <blockquote>Line one
24156 Line two</blockquote>
24158 <blockquote>Line one
24159 Line two</blockquote>
24162 <blockquote><p>Line one
24163 Line two</p></blockquote>
24167 T8200: paragraphs inside blockquotes (extra line break on open)
24172 Line two</blockquote>
24177 Line two</blockquote>
24183 Line two</p></blockquote>
24187 T8200: paragraphs inside blockquotes (extra line break on close)
24189 <blockquote>Line one
24194 <blockquote>Line one
24200 <blockquote><p>Line one
24207 T8200: paragraphs inside blockquotes (extra line break on open and close)
24223 ## This is a corner case interaction between the paragraph wrapping in the
24224 ## php parser's BlockLevelPass and Remex. `doBlockLevels` has a notion of
24225 ## some tags which close paragraphs (and thus prevent wrapping on their line),
24226 ## of which "div" is one, but do p-wrapping inside them. These are referred
24227 ## to as "never suppressing". Remex, for its part, doesn't traverse into
24228 ## "div"s to p-wrap. Hence, we only get this partial wrapping.
24230 Paragraphs inside blockquotes/divs (no extra line breaks)
24232 <blockquote><div>Line one
24234 Line two</div></blockquote>
24236 <blockquote><div>Line one
24237 Line two</div></blockquote>
24242 Paragraphs inside blockquotes/divs (extra line break on open)
24247 Line two</div></blockquote>
24252 Line two</div></blockquote>
24257 Paragraphs inside blockquotes/divs (extra line break on close)
24259 <blockquote><div>Line one
24262 </div></blockquote>
24264 <blockquote><div>Line one
24267 </div></blockquote>
24272 Paragraphs inside blockquotes/divs (extra line break on open and close)
24278 </div></blockquote>
24284 </div></blockquote>
24289 Interwiki links trounced by replaceExternalLinks after early LinkHolderArray expansion
24291 wgLinkHolderBatchSize=0
24297 <p><a href="http://www.usemod.com/cgi-bin/mb.pl?1" class="extiw" title="meatball:1">meatball:1</a>
24298 <a href="http://www.usemod.com/cgi-bin/mb.pl?2" class="extiw" title="meatball:2">meatball:2</a>
24299 <a href="http://www.usemod.com/cgi-bin/mb.pl?3" class="extiw" title="meatball:3">meatball:3</a>
24304 Free external link invading image caption
24306 [[Image:Foobar.jpg|thumb|http://x|hello]]
24308 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>hello</div></div></div>
24311 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"bogus","ak":"http://x"},{"ck":"caption","ak":"hello"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a><figcaption>hello</figcaption></figure>
24315 T17196: localised external link numbers
24319 [http://en.wikipedia.org/]
24321 <p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/">[۱]</a>
24324 <p><a rel="mw:ExtLink" class="external autonumber" href="http://en.wikipedia.org/"></a></p>
24328 Multibyte character in padleft
24330 {{padleft:-Hello|7|Æ}}
24335 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:-Hello","function":"padleft"},"params":{"1":{"wt":"7"},"2":{"wt":"Æ"}},"i":0}}]}'>Æ-Hello</p>
24339 Multibyte character in padright
24341 {{padright:Hello-|7|Æ}}
24346 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:Hello-","function":"padright"},"params":{"1":{"wt":"7"},"2":{"wt":"Æ"}},"i":0}}]}'>Hello-Æ</p>
24350 formatdate parser function
24352 {{#formatdate:2009-03-24}}
24354 <p><span class="mw-formatted-date" title="2009-03-24">2009-03-24</span>
24359 formatdate parser function, with default format
24361 {{#formatdate:2009-03-24|mdy}}
24363 <p><span class="mw-formatted-date" title="2009-03-24">March 24, 2009</span>
24368 Spacing of numbers in formatted dates
24370 {{#formatdate:January 15}}
24372 <p><span class="mw-formatted-date" title="01-15">January 15</span>
24377 formatdate parser function, with default format and on a page of which the content language is always English and different from the wiki content language
24379 language=nl title=[[MediaWiki:Common.css]]
24381 {{#formatdate:2009-03-24|dmy}}
24383 <p><span class="mw-formatted-date" title="2009-03-24">24 March 2009</span>
24396 Edit comment with link
24400 I like the [[Main Page]] a lot
24402 I like the <a href="/wiki/Main_Page" title="Main Page">Main Page</a> a lot
24406 Edit comment with link and link text
24410 I like the [[Main Page|best pages]] a lot
24412 I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
24416 Edit comment with link and link text with suffix
24420 I like the [[Main Page|best page]]s a lot
24422 I like the <a href="/wiki/Main_Page" title="Main Page">best pages</a> a lot
24426 Edit comment with section link (non-local, eg in history list)
24428 comment title=[[Main Page]]
24430 /* External links */ removed bogus entries
24432 <a href="/wiki/Main_Page#External_links" title="Main Page">→External links</a><span dir="auto"><span class="autocomment">: </span> removed bogus entries</span>
24436 Edit comment with section link and text before it (non-local, eg in history list)
24438 comment title=[[Main Page]]
24440 pre-comment text /* External links */ removed bogus entries
24442 pre-comment text <a href="/wiki/Main_Page#External_links" title="Main Page">→External links</a><span dir="auto"><span class="autocomment">: </span> removed bogus entries</span>
24446 Edit comment with section link (local, eg in diff view)
24448 comment local title=[[Main Page]]
24450 /* External links */ removed bogus entries
24452 <a href="#External_links">→External links</a><span dir="auto"><span class="autocomment">: </span> removed bogus entries</span>
24456 Edit comment with subpage link (T16080)
24460 title=[[Subpage test]]
24462 Poked at a [[/subpage]] here...
24464 Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">/subpage</a> here...
24468 Edit comment with subpage link and link text (T16080)
24472 title=[[Subpage test]]
24474 Poked at a [[/subpage|neat little page]] here...
24476 Poked at a <a href="/wiki/Subpage_test/subpage" title="Subpage test/subpage">neat little page</a> here...
24480 Edit comment with bogus subpage link in non-subpage NS (T16080)
24483 title=[[Subpage test]]
24485 Poked at a [[/subpage]] here...
24487 Poked at a <a href="/index.php?title=/subpage&action=edit&redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a> here...
24491 Edit comment with bare anchor link (local, as on diff)
24495 title=[[Main Page]]
24499 <a href="#section">#section</a>
24503 Edit comment with bare anchor link (non-local, as on history)
24506 title=[[Main Page]]
24510 <a href="/wiki/Main_Page#section" title="Main Page">#section</a>
24514 Anchor starting with underscore
24520 <p><a href="#_ref">One</a>
24523 <p><a rel="mw:WikiLink" href="./Foo#_ref" data-parsoid='{"stx":"piped","a":{"href":"./Foo#_ref"},"sa":{"href":"#_ref"}}'>One</a></p>
24527 Id starting with underscore
24529 <div id="_ref"></div>
24531 <div id="_ref"></div>
24536 Edit comment with link with more than one pipe (T99346)
24540 [[Main Page|Many|pipes]]
24542 <a href="/wiki/Main_Page" title="Main Page">Many|pipes</a>
24546 Complex edit comment with link with more than one pipe (T99346)
24550 Created page with "<noinclude>[[Category:Requests for permissions/Bot|{{subst:#titleparts:{{subst:PAGENAME}}|1|3}}]]</noinclude> === [[User:MineoBot|]] 8=== {{Request for permissions/links|Mineo..."
24552 Created page with "<noinclude><a href="/index.php?title=Category:Requests_for_permissions/Bot&action=edit&redlink=1" class="new" title="Category:Requests for permissions/Bot (page does not exist)">{{subst:#titleparts:{{subst:PAGENAME}}|1|3}}</a></noinclude> === <a href="/index.php?title=User:MineoBot&action=edit&redlink=1" class="new" title="User:MineoBot (page does not exist)">User:MineoBot</a> 8=== {{Request for permissions/links|Mineo..."
24556 Space normalisation on autocomment (T24784)
24559 title=[[Main Page]]
24561 /* __hello__world__ */
24563 <a href="/wiki/Main_Page#hello_world" title="Main Page">→__hello__world__</a>
24567 percent-encoding and + signs in comments (T28410)
24571 [[ABC%33D% ++]] [[ABC%33D% ++|+%20]]
24573 <a href="/index.php?title=ABC3D%25_%2B%2B&action=edit&redlink=1" class="new" title="ABC3D% ++ (page does not exist)">ABC3D% ++</a> <a href="/index.php?title=ABC3D%25_%2B%2B&action=edit&redlink=1" class="new" title="ABC3D% ++ (page does not exist)">+%20</a>
24576 # Parsoid doesn't support this yet: see T75581
24577 # but it *should* omit the 'src' attribute if the image is bad.
24578 # PHP side of tests was disabled in
24579 # mediawiki/core:6bd31e7d95161a6e88fa86df60871051da997c3c
24580 # because of issues in the PHP parserTests infrastructure
24581 # (but the output below is indeed what the PHP side emits)
24583 Bad images - basic functionality
24586 !! html/php+disabled
24588 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"bad-image","message":"This image is blacklisted in this context."}]}'><a href="./File:Bad.jpg"><img resource="./File:Bad.jpg" height="220" width="220"/></a></span></p>
24592 Bad images - T18039: text after bad image disappears
24597 !! html/php+disabled
24603 <span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"bad-image","message":"This image is blacklisted in this context."}]}'><a href="./File:Bad.jpg"><img resource="./File:Bad.jpg" height="220" width="220"/></a></span>
24608 Verify that displaytitle works (T24501) no displaytitle
24612 wgAllowDisplayTitle=true
24613 wgRestrictDisplayTitle=false
24615 this is not the the title
24618 <p>this is not the the title
24623 Verify that displaytitle works (T24501) RestrictDisplayTitle=false
24628 wgAllowDisplayTitle=true
24629 wgRestrictDisplayTitle=false
24631 this is not the the title
24632 {{DISPLAYTITLE:whatever}}
24635 <p>this is not the the title
24640 Verify that displaytitle works (T24501) RestrictDisplayTitle=true mismatch
24645 wgAllowDisplayTitle=true
24646 wgRestrictDisplayTitle=true
24648 this is not the the title
24649 {{DISPLAYTITLE:whatever}}
24652 <p>this is not the the title
24657 Verify that displaytitle works (T24501) RestrictDisplayTitle=true matching
24662 wgAllowDisplayTitle=true
24663 wgRestrictDisplayTitle=true
24665 this is not the the title
24666 {{DISPLAYTITLE:screen}}
24669 <p>this is not the the title
24674 Verify that displaytitle works (T24501) AllowDisplayTitle=false
24679 wgAllowDisplayTitle=false
24681 this is not the the title
24682 {{DISPLAYTITLE:screen}}
24685 <p>this is not the the title
24686 <a href="/index.php?title=Template:DISPLAYTITLE:screen&action=edit&redlink=1" class="new" title="Template:DISPLAYTITLE:screen (page does not exist)">Template:DISPLAYTITLE:screen</a>
24691 Verify that displaytitle works (T24501) AllowDisplayTitle=false no DISPLAYTITLE
24696 wgAllowDisplayTitle=false
24698 this is not the the title
24701 <p>this is not the the title
24706 Verify that displaytitle handles inline CSS styles (T28547) - rejected value
24711 wgAllowDisplayTitle=true
24712 wgRestrictDisplayTitle=true
24714 this is not the the title
24715 {{DISPLAYTITLE:<span style="display: none;">s</span>creen}}
24717 <span style="/* attempt to bypass $wgRestrictDisplayTitle */">s</span>creen
24718 <p>this is not the the title
24723 Verify that displaytitle handles inline CSS styles (T28547) - accepted value
24728 wgAllowDisplayTitle=true
24729 wgRestrictDisplayTitle=true
24731 this is not the the title
24732 {{DISPLAYTITLE:<span style="color: red;">s</span>creen}}
24734 <span style="color: red;">s</span>creen
24735 <p>this is not the the title
24740 Page status indicators: Empty name is invalid
24744 <indicator name=" "></indicator>
24745 <indicator></indicator>
24747 <p><span class="error"><strong>Error:</strong> Page status indicators' <code>name</code> attribute must not be empty.</span>
24748 <span class="error"><strong>Error:</strong> Page status indicators' <code>name</code> attribute must not be empty.</span>
24753 Page status indicators: Weird syntaxes that are okay
24757 <indicator name="empty" />
24758 <indicator name="name"></indicator>
24767 Page status indicators: Torture test
24771 <indicator name="01">hello world</indicator>
24772 <indicator name="02">[[Main Page]]</indicator>
24773 <indicator name="03">[[File:Foobar.jpg|25px|link=]]</indicator>
24774 <indicator name="04">[[File:Foobar.jpg|25px]]</indicator>
24775 <indicator name="05">*foo
24777 <indicator name="06"><nowiki>foo</nowiki></indicator>
24778 <indicator name="07"> Preformatted</indicator>
24779 <indicator name="08"><div>Broken tag</indicator>
24780 <indicator name="09">{| class=wikitable
24783 <indicator name="10">Two
24785 paragraphs</indicator>
24788 02=<a href="/wiki/Main_Page" title="Main Page">Main Page</a>
24789 03=<img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" />
24790 04=<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/25px-Foobar.jpg" width="25" height="3" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/38px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg 2x" /></a>
24791 05=<ul><li>foo</li>
24795 07=<pre>Preformatted
24797 08=<div>Broken tag</div>
24799 09=<table class="wikitable">
24816 preload: check <noinclude> and <includeonly>
24820 Hello <noinclude>cruel</noinclude><includeonly>kind</includeonly> world.
24826 preload: check <onlyinclude>
24830 Goodbye <onlyinclude>Hello world</onlyinclude>
24836 preload: can pass tags through if we want to
24840 <includeonly><</includeonly>includeonly>Hello world<includeonly><</includeonly>/includeonly>
24842 <includeonly>Hello world</includeonly>
24846 preload: check that it doesn't try to do tricks
24850 * <!-- Hello --> ''{{world}}'' {{<includeonly>subst:</includeonly>How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
24852 * <!-- Hello --> ''{{world}}'' {{subst:How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
24856 Play a bit with r67090 and T5158
24858 <div style="width:50% !important"> </div>
24859 <div style="width:50% !important"> </div>
24860 <div style="width:50% !important"> </div>
24861 <div style="border : solid;"> </div>
24863 <div style="width:50% !important"> </div>
24864 <div style="width:50% !important"> </div>
24865 <div style="width:50% !important"> </div>
24866 <div style="border : solid;"> </div>
24869 <div style="width:50% !important" data-parsoid='{"stx":"html"}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
24870 <div style="width:50% !important" data-parsoid='{"stx":"html","a":{"style":"width:50% !important"},"sa":{"style":"width:50%&nbsp;!important"}}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
24871 <div style="width:50% !important" data-parsoid='{"stx":"html","a":{"style":"width:50% !important"},"sa":{"style":"width:50%&#160;!important"}}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
24872 <div style="border : solid;" data-parsoid='{"stx":"html"}'><span typeof="mw:Entity" data-parsoid='{"srcContent":" "}'> </span></div>
24877 French spaces in wikitext
24879 foo ! bar ? bat 50 % is less than 75 %.
24881 Hello : this ; is « something ‹ else › again »
24883 <p>foo ! bar ? bat 50 % is less than 75 %.
24884 </p><p>Hello : this ; is « something ‹ else › again »
24888 # It would be reasonable for Parsoid and PHP to differ here.
24889 # The PHP behavior is arguably a bug.
24891 Corner case: french spaces in definition list
24895 <dl><dt>foo </dt>
24900 T5158: Test for French spaces in attributes
24902 <br style=" clear : both ; " />
24904 <p><br style="clear : both ;" />
24909 HTML5 data attributes
24911 <span data-foo="bar">Baz</span>
24912 <p data-abc-def_hij="">Quuz</p>
24914 <p><span data-foo="bar">Baz</span>
24916 <p data-abc-def_hij="">Quuz</p>
24919 <p><span data-foo="bar" data-parsoid='{"stx":"html"}'>Baz</span></p>
24920 <p data-abc-def_hij="" data-parsoid='{"stx":"html"}'>Quuz</p>
24924 Strip reserved data attributes
24926 <div data-mw="foo" data-parsoid="bar" data-mw-someext="baz" data-ok="fred" data-ooui="xyzzy" data-bad:ns="ns">d</div>
24928 <div data-ok="fred">d</div>
24931 <div data-x-data-mw="foo" data-x-data-parsoid="bar" data-x-data-mw-someext="baz" data-ok="fred" data-parsoid='{"stx":"html","a":{"data-ooui":null,"data-bad:ns":null},"sa":{"data-ooui":"xyzzy","data-bad:ns":"ns"}}'>d</div>
24935 percent-encoding and + signs in internal links (T28410)
24937 [[User:+%]] [[Page+title%]]
24938 [[%+]] [[%+|%20]] [[%+ ]] [[%+r]]
24939 [[%]] [[+]] [[File:%+abc%39|foo|[[bar]]]]
24940 [[%33%45]] [[%33%45+]]
24942 <p><a href="/index.php?title=User:%2B%25&action=edit&redlink=1" class="new" title="User:+% (page does not exist)">User:+%</a> <a href="/index.php?title=Page%2Btitle%25&action=edit&redlink=1" class="new" title="Page+title% (page does not exist)">Page+title%</a>
24943 <a href="/index.php?title=%25%2B&action=edit&redlink=1" class="new" title="%+ (page does not exist)">%+</a> <a href="/index.php?title=%25%2B&action=edit&redlink=1" class="new" title="%+ (page does not exist)">%20</a> <a href="/index.php?title=%25%2B&action=edit&redlink=1" class="new" title="%+ (page does not exist)">%+ </a> <a href="/index.php?title=%25%2Br&action=edit&redlink=1" class="new" title="%+r (page does not exist)">%+r</a>
24944 <a href="/index.php?title=%25&action=edit&redlink=1" class="new" title="% (page does not exist)">%</a> <a href="/index.php?title=%2B&action=edit&redlink=1" class="new" title="+ (page does not exist)">+</a> <a href="/index.php?title=Special:Upload&wpDestFile=%25%2Babc9" class="new" title="File:%+abc9">bar</a>
24945 <a href="/index.php?title=3E&action=edit&redlink=1" class="new" title="3E (page does not exist)">3E</a> <a href="/index.php?title=3E%2B&action=edit&redlink=1" class="new" title="3E+ (page does not exist)">3E+</a>
24948 <p><a rel="mw:WikiLink" href="./User:+%25" title="User:+%" data-parsoid='{"stx":"simple","a":{"href":"./User:+%25"},"sa":{"href":"User:+%"}}'>User:+%</a> <a rel="mw:WikiLink" href="./Page+title%25" title="Page+title%" data-parsoid='{"stx":"simple","a":{"href":"./Page+title%25"},"sa":{"href":"Page+title%"}}'>Page+title%</a>
24949 <a rel="mw:WikiLink" href="./%25+" title="%+" data-parsoid='{"stx":"simple","a":{"href":"./%25+"},"sa":{"href":"%+"}}'>%+</a> <a rel="mw:WikiLink" href="./%25+" title="%+" data-parsoid='{"stx":"piped","a":{"href":"./%25+"},"sa":{"href":"%+"}}'>%20</a> <a rel="mw:WikiLink" href="./%25+" title="%+" data-parsoid='{"stx":"simple","a":{"href":"./%25+"},"sa":{"href":"%+ "}}'>%+ </a> <a rel="mw:WikiLink" href="./%25+r" title="%+r" data-parsoid='{"stx":"simple","a":{"href":"./%25+r"},"sa":{"href":"%+r"}}'>%+r</a>
24950 <a rel="mw:WikiLink" href="./%25" title="%" data-parsoid='{"stx":"simple","a":{"href":"./%25"},"sa":{"href":"%"}}'>%</a> <a rel="mw:WikiLink" href="./+" title="+" data-parsoid='{"stx":"simple","a":{"href":"./+"},"sa":{"href":"+"}}'>+</a> <figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"foo"},{"ck":"caption","ak":"[[bar]]"}]}' data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"<a rel=\"mw:WikiLink\" href=\"./Bar\" title=\"Bar\" data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Bar\"},\"sa\":{\"href\":\"bar\"},\"dsr\":[94,101,2,2]}'>bar</a>"}'><a href="./File:%25+abc9" data-parsoid='{"a":{"href":"./File:%25+abc9"},"sa":{}}'><img resource="./File:%25+abc9" src="./Special:FilePath/%25+abc9" height="220" width="220" data-parsoid='{"a":{"resource":"./File:%25+abc9","height":"220","width":"220"},"sa":{"resource":"File:%+abc%39"}}'/></a></figure-inline>
24951 <a rel="mw:WikiLink" href="./3E" title="3E" data-parsoid='{"stx":"simple","a":{"href":"./3E"},"sa":{"href":"%33%45"}}'>3E</a> <a rel="mw:WikiLink" href="./3E+" title="3E+" data-parsoid='{"stx":"simple","a":{"href":"./3E+"},"sa":{"href":"%33%45+"}}'>3E+</a></p>
24955 Special characters in embedded file links (T29679)
24957 [[File:Contains & ampersand.jpg]]
24958 [[File:Does not exist.jpg|Title with & ampersand]]
24960 <p><a href="/index.php?title=Special:Upload&wpDestFile=Contains_%26_ampersand.jpg" class="new" title="File:Contains & ampersand.jpg">File:Contains & ampersand.jpg</a>
24961 <a href="/index.php?title=Special:Upload&wpDestFile=Does_not_exist.jpg" class="new" title="File:Does not exist.jpg">Title with & ampersand</a>
24964 <p><figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Contains_&_ampersand.jpg"><img resource="./File:Contains_&_ampersand.jpg" src="./Special:FilePath/Contains_&_ampersand.jpg" height="220" width="220"/></a></figure-inline>
24965 <figure-inline class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}],"caption":"Title with &amp; ampersand"}'><a href="./File:Does_not_exist.jpg"><img resource="./File:Does_not_exist.jpg" src="./Special:FilePath/Does_not_exist.jpg" height="220" width="220"/></a></figure-inline></p>
24969 Confirm that 'apos' named character reference doesn't make it to output (not legal in HTML 4)
24971 Text's been normalized?
24973 <p>Text's been normalized?
24978 T21052 U+3000 IDEOGRAPHIC SPACE should terminate free external links
24980 http://www.example.org/ <-- U+3000 (vim: ^Vu3000)
24982 <p><a rel="nofollow" class="external free" href="http://www.example.org/">http://www.example.org/</a> <-- U+3000 (vim: ^Vu3000)
24987 T21052 U+3000 IDEOGRAPHIC SPACE should terminate bracketed external links
24989 [http://www.example.org/ ideograms]
24991 <p><a rel="nofollow" class="external text" href="http://www.example.org/">ideograms</a>
24996 T21052 U+3000 IDEOGRAPHIC SPACE should terminate external images links
24998 http://www.example.org/pic.png <-- U+3000 (vim: ^Vu3000)
25000 <p><img src="http://www.example.org/pic.png" alt="pic.png"/> <-- U+3000 (vim: ^Vu3000)
25024 T33098 Template which includes system messages which includes the template
25028 <p><span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
25029 <span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
25034 T33490 Turkish: ucfirst 'blah'
25045 T33490 Turkish: ucfirst 'ix'
25056 T33490 Turkish: lcfirst 'BLAH'
25067 T33490 Turkish: ucfırst (with a dotless i)
25073 <p><a href="/index.php?title=%C5%9Eablon:Ucf%C4%B1rst:blah&action=edit&redlink=1" class="new" title="Şablon:Ucfırst:blah (sayfa mevcut değil)">Şablon:Ucfırst:blah</a>
25078 T33490 ucfırst (with a dotless i) with English language
25084 <p><a href="/index.php?title=Template:Ucf%C4%B1rst:blah&action=edit&redlink=1" class="new" title="Template:Ucfırst:blah (page does not exist)">Template:Ucfırst:blah</a>
25088 # Note that Parsoid doesn't emit an explicit TOC.
25089 # Note also that the html2wt direction tends to emit an extra newline
25090 # between the __TOC__ magicword and the first heading unless *both*
25091 # the <meta> and the <h2> have a data-parsoid attribute set (even if
25095 T28375: TOC with italics
25097 title=[[Main Page]]
25100 ==''Lost'' episodes==
25102 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25104 <li class="toclevel-1 tocsection-1"><a href="#Lost_episodes"><span class="tocnumber">1</span> <span class="toctext"><i>Lost</i> episodes</span></a></li>
25108 <h2><span class="mw-headline" id="Lost_episodes"><i>Lost</i> episodes</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Lost episodes">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25111 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25112 <h2 id="Lost_episodes" data-parsoid='{}'><i>Lost</i> episodes</h2>
25116 T28375: TOC with bold
25118 title=[[Main Page]]
25121 =='''should be bold''' then normal text==
25123 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25125 <li class="toclevel-1 tocsection-1"><a href="#should_be_bold_then_normal_text"><span class="tocnumber">1</span> <span class="toctext"><b>should be bold</b> then normal text</span></a></li>
25129 <h2><span class="mw-headline" id="should_be_bold_then_normal_text"><b>should be bold</b> then normal text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: should be bold then normal text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25132 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25133 <h2 id="should_be_bold_then_normal_text" data-parsoid='{}'><b>should be bold</b> then normal text</h2>
25137 T35845: Headings become cursive in TOC when they contain an image
25139 title=[[Main Page]]
25142 ==Image [[Image:foobar.jpg]]==
25144 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25146 <li class="toclevel-1 tocsection-1"><a href="#Image"><span class="tocnumber">1</span> <span class="toctext">Image</span></a></li>
25150 <h2><span class="mw-headline" id="Image">Image <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Image">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25153 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25154 <h2 id="Image" data-parsoid='{}'>Image <figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></h2>
25158 T35845 (2): Headings become bold in TOC when they contain a blockquote
25160 title=[[Main Page]]
25163 ==<blockquote>Quote</blockquote>==
25165 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25167 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
25171 <h2><span class="mw-headline" id="Quote"><blockquote>Quote</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25174 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25176 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
25180 <h2><span class="mw-headline" id="Quote"><blockquote><p>Quote</p></blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25182 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25183 <h2 id="Quote" data-parsoid='{}'><blockquote><p>Quote</p></blockquote></h2>
25187 Unclosed tags in TOC
25189 wgFragmentMode=[ 'html5', 'legacy' ]
25191 title=[[Main Page]]
25195 <small>Hanc marginis exiguitas non caperet.</small>
25198 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25200 <li class="toclevel-1 tocsection-1"><a href="#Proof:_2_<_3"><span class="tocnumber">1</span> <span class="toctext">Proof: 2 < 3</span></a></li>
25204 <h2><span id="Proof:_2_.3C_3"></span><span class="mw-headline" id="Proof:_2_<_3">Proof: 2 < 3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Proof: 2 < 3">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25205 <p><small>Hanc marginis exiguitas non caperet.</small>
25209 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25210 <h2 id="Proof:_2_<_3" data-parsoid='{}'><span id="Proof:_2_.3C_3" typeof="mw:FallbackId"></span>Proof: 2 < 3</h2>
25211 <p><small>Hanc marginis exiguitas non caperet.</small>
25216 Multiple tags in TOC
25219 ==<i>Foo</i> <b>Bar</b>==
25221 ==<i>Foo</i> <blockquote>Bar</blockquote>==
25223 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25225 <li class="toclevel-1 tocsection-1"><a href="#Foo_Bar"><span class="tocnumber">1</span> <span class="toctext"><i>Foo</i> <b>Bar</b></span></a></li>
25226 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
25230 <h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25231 <h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote>Bar</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25234 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25236 <li class="toclevel-1 tocsection-1"><a href="#Foo_Bar"><span class="tocnumber">1</span> <span class="toctext"><i>Foo</i> <b>Bar</b></span></a></li>
25237 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
25241 <h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25242 <h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote><p>Bar</p></blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25244 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25245 <h2 id="Foo_Bar" data-parsoid='{}'><i data-parsoid='{"stx":"html"}'>Foo</i> <b data-parsoid='{"stx":"html"}'>Bar</b></h2>
25247 <h2 id="Foo_Bar_2" data-parsoid='{}'><i data-parsoid='{"stx":"html"}'>Foo</i> <blockquote><p>Bar</p></blockquote></h2>
25250 # Don't expect Parsoid to roundtrip this until the php parser comes closer to
25251 # html5 tag parsing.
25253 Tags with parameters in TOC
25258 ==<sup class="in-h2">Hello</sup>==
25260 ==<sup class="a > b">Evilbye</sup>==
25262 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25264 <li class="toclevel-1 tocsection-1"><a href="#Hello"><span class="tocnumber">1</span> <span class="toctext"><sup>Hello</sup></span></a></li>
25265 <li class="toclevel-1 tocsection-2"><a href="#b.22.3EEvilbye"><span class="tocnumber">2</span> <span class="toctext"><sup> b">Evilbye</sup></span></a></li>
25269 <h2><span class="mw-headline" id="Hello"><sup class="in-h2">Hello</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Hello">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25270 <h2><span class="mw-headline" id="b.22.3EEvilbye"><sup class="a"> b">Evilbye</sup></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: b">Evilbye">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25273 <meta property="mw:PageProp/toc" />
25274 <h2 id="Hello"><sup class="in-h2" data-parsoid='{"stx":"html"}'>Hello</sup></h2>
25276 <h2 id='b">Evilbye'><span id="b.22.3EEvilbye" typeof="mw:FallbackId"></span><sup class="a " data-parsoid='{"stx":"html"}'> b">Evilbye</sup></h2>
25280 span tags with directionality in TOC
25283 ==<span dir="ltr">C++</span>==
25285 ==<span dir="rtl">זבנג!</span>==
25287 ==<span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span>==
25289 ==<span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span>==
25291 ==<span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span>==
25293 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25295 <li class="toclevel-1 tocsection-1"><a href="#C.2B.2B"><span class="tocnumber">1</span> <span class="toctext"><span dir="ltr">C++</span></span></a></li>
25296 <li class="toclevel-1 tocsection-2"><a href="#.D7.96.D7.91.D7.A0.D7.92.21"><span class="tocnumber">2</span> <span class="toctext"><span dir="rtl">זבנג!</span></span></a></li>
25297 <li class="toclevel-1 tocsection-3"><a href="#The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">3</span> <span class="toctext"><span>The attributes on these span tags must be deleted from the TOC</span></span></a></li>
25298 <li class="toclevel-1 tocsection-4"><a href="#All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">4</span> <span class="toctext"><span>All attributes on these span tags must be deleted from the TOC</span></span></a></li>
25299 <li class="toclevel-1 tocsection-5"><a href="#Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span class="tocnumber">5</span> <span class="toctext"><span dir="ltr">Attributes after dir on these span tags must be deleted from the TOC</span></span></a></li>
25303 <h2><span class="mw-headline" id="C.2B.2B"><span dir="ltr">C++</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: C++">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25304 <h2><span class="mw-headline" id=".D7.96.D7.91.D7.A0.D7.92.21"><span dir="rtl">זבנג!</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: זבנג!">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25305 <h2><span class="mw-headline" id="The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: The attributes on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25306 <h2><span class="mw-headline" id="All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: All attributes on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25307 <h2><span class="mw-headline" id="Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: Attributes after dir on these span tags must be deleted from the TOC">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25310 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25311 <h2 id="C++" data-parsoid='{}'><span id="C.2B.2B" typeof="mw:FallbackId"></span><span dir="ltr">C++</span></h2>
25312 <h2 id="זבנג!"><span id=".D7.96.D7.91.D7.A0.D7.92.21" typeof="mw:FallbackId"></span><span dir="rtl">זבנג!</span></h2>
25313 <h2 id="The_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic">The attributes on these span tags must be deleted from the TOC</span></h2>
25314 <h2 id="All_attributes_on_these_span_tags_must_be_deleted_from_the_TOC"><span style="font-style: italic" dir="ltr">All attributes on these span tags must be deleted from the TOC</span></h2>
25315 <h2 id="Attributes_after_dir_on_these_span_tags_must_be_deleted_from_the_TOC"><span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span></h2>
25319 T74884: bdi element in ToC
25322 ==<bdi>test</bdi>==
25324 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25326 <li class="toclevel-1 tocsection-1"><a href="#test"><span class="tocnumber">1</span> <span class="toctext"><bdi>test</bdi></span></a></li>
25330 <h2><span class="mw-headline" id="test"><bdi>test</bdi></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: test">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25333 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25334 <h2 id="test" data-parsoid='{}'><bdi>test</bdi></h2>
25338 T35715: s/strike element in ToC
25341 ==<s>test</s> test <strike>test</strike>==
25343 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25345 <li class="toclevel-1 tocsection-1"><a href="#test_test_test"><span class="tocnumber">1</span> <span class="toctext"><s>test</s> test <strike>test</strike></span></a></li>
25349 <h2><span class="mw-headline" id="test_test_test"><s>test</s> test <strike>test</strike></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: test test test">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25352 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25353 <h2 id="test_test_test" data-parsoid='{}'><s>test</s> test <strike>test</strike></h2>
25357 T198618: style element in ToC
25362 ==<style>.foo {}</style>Style<style>.bar {}</style>==
25364 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25366 <li class="toclevel-1 tocsection-1"><a href="#Style"><span class="tocnumber">1</span> <span class="toctext">Style</span></a></li>
25370 <h2><span class="mw-headline" id="Style"><style>.foo {}</style>Style<style>.bar {}</style></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Style">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25373 <meta property="mw:PageProp/toc" data-parsoid="{}"/>
25374 <h2 id="Style" data-parsoid="{}"><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo {}"}}'>.foo {}</style>Style<style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".bar {}"}}'>.bar {}</style></h2>
25378 T198618: script element in ToC
25383 ==<html><script>alert(1);</script></html>Script<html><script>alert(1);</script></html>==
25385 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25387 <li class="toclevel-1 tocsection-1"><a href="#Script"><span class="tocnumber">1</span> <span class="toctext">Script</span></a></li>
25391 <h2><span class="mw-headline" id="Script"><script>alert(1);</script>Script<script>alert(1);</script></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Script">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25394 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25395 <h2 id="Script" data-parsoid='{}'><script typeof="mw:Extension/html" about="#mwt4" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"<script>alert(1);</script>"}}'>alert(1);</script>Script<script typeof="mw:Extension/html" about="#mwt6" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"<script>alert(1);</script>"}}'>alert(1);</script></h2>
25399 Empty <p> tag in TOC, removed by Sanitizer (T92892)
25404 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
25406 <li class="toclevel-1 tocsection-1"><a href="#x"><span class="tocnumber">1</span> <span class="toctext">x</span></a></li>
25410 <h2><span class="mw-headline" id="x">x</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: x">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25413 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
25414 <h2 id="x" data-parsoid='{}'>x</h2>
25420 == {{int:headline_sample}} ==
25424 T34057: Title needed when expanding <h> nodes.
25426 title=[[Main Page]]
25430 <h2><span class="mw-headline" id="Headline_text">Headline text</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Headline text">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25435 Strip marker in urlencode
25437 {{urlencode:x<nowiki/>y}}
25438 {{urlencode:x<nowiki/>y|wiki}}
25439 {{urlencode:x<nowiki/>y|path}}
25440 {{urlencode:x<pre id="one">two</pre>y}}
25468 Strip marker in formatNum
25470 {{formatnum:1<nowiki/>2}}
25471 {{formatnum:1<nowiki/>2|R}}
25479 Check noCommafy in formatNum
25483 {{formatnum:123456.78}}
25484 {{formatnum:123456.78|NOSEP}}
25492 Wrong option for formatNum (T58199)
25494 {{formatnum:1,234.56|Random}}
25495 {{formatnum:1,234.56|EVERYTHING}}
25496 {{formatnum:1234.56|any argument that has the string 'NOSEP'}}
25505 Strip marker in grammar
25509 {{grammar:elative|foo<nowiki/>bar}}
25516 Strip marker in padleft
25518 {{padleft:|2|x<nowiki/>y}}
25525 Strip marker in padright
25527 {{padright:|2|x<nowiki/>y}}
25534 Strip marker in anchorencode
25536 {{anchorencode:x<nowiki/>y}}
25541 <p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"anchorencode:x<nowiki/>y","function":"anchorencode"},"params":{},"i":0}}]}'>xy</p>
25545 nowiki inside link inside heading (T20295)
25547 ==[[foo|x<nowiki>y</nowiki>z]]==
25549 <h2><span class="mw-headline" id="xyz"><a href="/wiki/Foo" title="Foo">xyz</a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: xyz">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25554 new support for bdi element (T33817)
25556 <p dir="rtl" lang="he">ולדימיר לנין (ברוסית: <bdi lang="ru">Владимир Ленин</bdi>, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.</p>
25558 <p dir="rtl" lang="he">ולדימיר לנין (ברוסית: <bdi lang="ru">Владимир Ленин</bdi>, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.</p>
25563 Ignore pipe between table row attributes
25567 |- id=foo | style='color: red'
25575 <tr id="foo" style="color: red">
25582 Language parser function
25591 Padleft and padright (default 0-padding)
25600 <p><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:xyz","function":"padleft"},"params":{"1":{"wt":"5"}},"i":0}}]}'>00xyz</span>
25601 <span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:xyz","function":"padright"},"params":{"1":{"wt":"5"}},"i":0}}]}'>xyz00</span></p>
25605 Padleft and padright (partial fill)
25607 {{padleft:xyz|6|ab}}
25608 {{padright:xyz|6|ab}}
25614 <p><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:xyz","function":"padleft"},"params":{"1":{"wt":"6"},"2":{"wt":"ab"}},"i":0}}]}'>abaxyz</span>
25615 <span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:xyz","function":"padright"},"params":{"1":{"wt":"6"},"2":{"wt":"ab"}},"i":0}}]}'>xyzaba</span></p>
25619 Padleft and padright as substr
25621 {{padleft:|3|abcde}}
25622 {{padright:|3|abcde}}
25628 <p><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:","function":"padleft"},"params":{"1":{"wt":"3"},"2":{"wt":"abcde"}},"i":0}}]}'>abc</span>
25629 <span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:","function":"padright"},"params":{"1":{"wt":"3"},"2":{"wt":"abcde"}},"i":0}}]}'>abc</span></p>
25633 Padleft and padright with non-numerical length (T180403)
25635 {{padleft:abcdef|junk}}
25636 {{padright:abcdef|junk}}
25644 Special parser function
25646 {{#special:RandomPage}}
25647 {{#special:BaDtItLe}}
25648 {{#special:Foobar}}
25657 T36939 - Case insensitive link parsing ([HttP://])
25659 [HttP://MediaWiki.Org/]
25661 <p><a rel="nofollow" class="external autonumber" href="HttP://MediaWiki.Org/">[1]</a>
25664 <p><a rel="mw:ExtLink" class="external autonumber" href="HttP://MediaWiki.Org/"></a></p>
25668 T36939 - Case insensitive link parsing ([HttP:// title])
25670 [HttP://MediaWiki.Org/ MediaWiki]
25672 <p><a rel="nofollow" class="external text" href="HttP://MediaWiki.Org/">MediaWiki</a>
25677 T36939 - Case insensitive link parsing (HttP://)
25679 HttP://MediaWiki.Org/
25681 <p><a rel="nofollow" class="external free" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a>
25684 <p><a rel="mw:ExtLink" class="external free" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a></p>
25702 <h2><span class="mw-headline" id="Section_1">Section 1</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Section 1">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25703 <h2><span class="mw-headline" id="Section_2">Section 2</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Section 2">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25704 <h2><span class="mw-headline" id="Section_3">Section 3</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Section 3">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25705 <h2><span class="mw-headline" id="Section_4">Section 4</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Section 4">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25706 <h2><span class="mw-headline" id="Section_5">Section 5</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: Section 5">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
25712 ### Parsoid-specific tests
25713 ### Parsoid-PHP parser incompatibilities
25716 1. SOL-sensitive wikitext tokens as template-args
25718 parsoid=wt2html,wt2wt
25724 <ul><li>a</li></ul>
25725 <ol><li>a</li></ol>
25726 <dl><dd>a</dd></dl>
25728 <span about="#mwt1" typeof="mw:Transclusion">
25729 </span><ul about="#mwt1"><li>a</li>
25731 <span about="#mwt2" typeof="mw:Transclusion">
25732 </span><ol about="#mwt2"><li>a</li>
25734 <span about="#mwt3" typeof="mw:Transclusion">
25735 </span><dl about="#mwt3"><dd>a</dd>
25739 #### -----------------------------------------------------------------
25740 #### Parsoid-specific functionality tests
25741 #### -----------------------------------------------------------------
25743 # T65642/T68749: Formatting elt fixup around images.
25744 # We know wt2wt will fail, but we expect selser to pass.
25745 # Due to the nature of our testing, wt2wt and selser tests will enter the
25746 # blacklist and we'll catch selser regressions based on changes to the
25747 # blacklist entries for selser tests.
25749 1. Treebuilder fixup of formatting elt
25751 parsoid=wt2html,wt2wt
25756 [[Image:Foobar.jpg|right|Test]]
25764 </small></p><small>
25765 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Test"><img alt="Test" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
25766 </small><p><small></small>
25768 </td></tr></tbody></table>
25772 <p><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'></small></p><small data-parsoid='{"stx":"html","autoInsertedEnd":true,"autoInsertedStart":true}'>
25773 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a><figcaption>Test</figcaption></figure></small>
25774 <p><small data-parsoid='{"stx":"html","autoInsertedStart":true}'></small></p></td></tr>
25779 2. Treebuilder fixup of formatting elt
25781 parsoid=wt2html,wt2wt
25783 '''foo[[File:Foobar.jpg|thumb|caption]]bar'''
25785 <small>[[Image:Foobar.jpg|right|300px]]</small>
25787 <p><b>foo</b></p><b><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div></b><p><b>bar</b>
25788 </p><small><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></div></small>
25790 <p><b>foo</b></p><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure></b><p><b>bar</b></p>
25792 <small><figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure></small>
25796 3. Treebuilder fixup of formatting elt
25798 parsoid=wt2html,wt2wt
25800 <small>'''foo[[File:Foobar.jpg|thumb|caption]]bar'''</small>
25802 <p><small><b>foo</b></small></p><small><b><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div></b></small><p><small><b>bar</b></small>
25805 <p><small><b>foo</b></small></p><small><b><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure></b></small><p><small><b>bar</b></small></p>
25809 4. Treebuilder fixup of formatting elt: formatting tags around captionless images
25811 parsoid=wt2html,wt2wt
25813 '''<small>[[Image:Foobar.jpg|right|300px]]</small>'''
25815 <b><small><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" width="300" height="34" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/450px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/600px-Foobar.jpg 2x" /></a></div></small></b>
25817 <b><small><figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure></small></b>
25820 #### ----------------------------------------------------------------
25821 #### Parsoid-only testing of Parsoid's impl of LST
25822 #### Not implemented yet, see
25823 #### https://www.mediawiki.org/wiki/Parsoid/HTML_based_LST
25824 #### ----------------------------------------------------------------
25826 ## We still need to support serializing the older format while content is stored.
25828 LST Sections: Backwards compatibility
25831 "suppressErrors": true,
25832 "modes": ["html2wt"]
25835 <section begin="2011-05-16" />
25836 <section end="2014-04-10 (MW 1.23wmf22)" />
25838 <p><meta typeof="mw:Extension/LabeledSectionTransclusion/begin" content="2011-05-16"/>
25839 <meta typeof="mw:Extension/LabeledSectionTransclusion/end" content="2014-04-10 (MW 1.23wmf22)"/></p>
25843 LST Sections: Newfangled approach
25845 <section begin="2011-05-16" />
25846 <section end="2014-04-10 (MW 1.23wmf22)" />
25848 <p><span typeof="mw:Extension/section" about="#mwt4" data-mw='{"name":"section","attrs":{"begin":"2011-05-16"}}'>
25850 <span typeof="mw:Extension/section" about="#mwt6" data-mw='{"name":"section","attrs":{"end":"2014-04-10 (MW 1.23wmf22)"}}'>
25854 #--------- Test stripping of empty nodes in template content ----------
25857 Empty LI and TR nodes should be stripped from template content
25862 <ul about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyLITest","href":"./Template:EmptyLITest"},"params":{},"i":0}}]}'>
25866 <table about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyTRTest","href":"./Template:EmptyTRTest"},"params":{},"i":0}}]}'>
25879 Empty LI and TR nodes should not be stripped from top-level content
25893 <li class='mw-empty-elt'></li>
25898 <tr class='mw-empty-elt'></tr>
25907 Empty TR nodes should not be stripped if they have any attributes set
25909 {{EmptyTRWithHTMLAttrTest}}
25911 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyTRWithHTMLAttrTest","href":"./Template:EmptyTRWithHTMLAttrTest"},"params":{},"i":0}}]}'>
25912 <tr align='center'></tr>
25913 <tr><td>foo</td></tr>
25914 <tr align='center'></tr>
25915 <tr><td>bar</td></tr>
25919 #### ----------------------------------------------------------------
25920 #### The following section of tests are primarily to test
25921 #### wikitext escaping capabilities of Parsoid. Given that
25922 #### escaping can be done any number of ways, the wikitext (input)
25923 #### is always adjusted to reflect how Parsoid adds nowiki
25926 #### We are marking several tests as parsoid-only since the
25927 #### HTML in the result section is different from what the
25928 #### PHP parser generates for it.
25929 #### ----------------------------------------------------------------
25932 #### --------------- Headings ---------------
25934 #### 1. Nested inside html <h1>=foo=</h1>
25935 #### 2. Outside heading nest on a single line <h1>foo</h1>*bar
25936 #### 3. Nested inside html with wikitext split by html tags
25937 #### 4. No escape needed
25938 #### 5. Empty headings <h1></h1>
25939 #### 6. Heading chars in SOL context
25940 #### ----------------------------------------
25942 Headings: 0. Unnested
25952 <p>=foo<i>a</i>=</p>
25954 <nowiki>=foo=</nowiki>
25956 <nowiki> </nowiki>=foo=
25958 <nowiki>=foo=</nowiki>
25960 =foo''a''<nowiki>=</nowiki>
25963 # New headings and existing headings are handled differently
25965 Headings: 1. Nested inside html
25973 <h1 data-parsoid=''>=foo=</h1>
25974 <h2 data-parsoid=''>=foo=</h2>
25975 <h3 data-parsoid=''>=foo=</h3>
25976 <h4 data-parsoid=''>=foo=</h4>
25977 <h5 data-parsoid=''>=foo=</h5>
25978 <h6 data-parsoid=''>=foo=</h6>
25986 =<nowiki>=foo=</nowiki>=
25987 ==<nowiki>=foo=</nowiki>==
25988 ===<nowiki>=foo=</nowiki>===
25989 ====<nowiki>=foo=</nowiki>====
25990 =====<nowiki>=foo=</nowiki>=====
25991 ======<nowiki>=foo=</nowiki>======
25996 Headings: 2. Outside heading nest on a single line <h1>foo</h1>*bar
26005 <nowiki>*</nowiki>bar
26011 <nowiki>=bar=</nowiki>
26015 Headings: 3. Nested inside html with wikitext split by html tags
26019 <h1>=<b>bold</b>foo=</h1>
26021 = ='''bold'''foo= =
26025 Headings: 4a. No escaping needed (testing just h1 and h2)
26036 <h1><i>=</i>foo=</h1>
26056 Headings: 4b. No escaping needed (inside p-tags)
26073 Headings: 4c. Short headings (1)
26080 <nowiki>===</nowiki>
26086 # in the html2wt direction we emit '= = =' or '=<nowiki>=</nowiki>='
26088 Headings: 4d. Short headings (2)
26090 parsoid=wt2html,html2html
26101 <h1><span class="mw-headline" id=".3D">=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: =">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
26102 <h1><span class="mw-headline" id=".3D.3D">==</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: ==">edit</a><span class="mw-editsection-bracket">]</span></span></h1>
26103 <h2><span class="mw-headline" id=".3D_2">=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: =">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
26108 <h1 id="="><span id=".3D" typeof="mw:FallbackId"></span>=</h1>
26109 <h1 id="=="><span id=".3D.3D" typeof="mw:FallbackId"></span>==</h1>
26110 <h2 id="=_2"><span id=".3D_2" typeof="mw:FallbackId"></span>=</h2>
26114 Headings: 5. Empty headings
26118 <h1 data-parsoid='{}'></h1>
26120 <h2 data-parsoid='{}'></h2>
26122 <h3 data-parsoid='{}'></h3>
26124 <h4 data-parsoid='{}'></h4>
26126 <h5 data-parsoid='{}'></h5>
26128 <h6 data-parsoid='{}'></h6>
26138 =====<nowiki/>=====
26140 ======<nowiki/>======
26144 Headings: 6a. Heading chars in SOL context (with trailing spaces)
26154 <nowiki>=a=</nowiki>
26156 <nowiki>=a=</nowiki>
26158 <nowiki>=a=</nowiki>
26162 Headings: 6b. Heading chars in SOL context (with trailing newlines)
26175 <nowiki>=a=</nowiki>
26178 <nowiki>=a=</nowiki>
26181 <nowiki>=a=</nowiki>
26186 Headings: 6c. Heading chars in SOL context (leading newline break)
26194 <nowiki>=b=</nowiki>
26198 Headings: 6d. Heading chars in SOL context (with interspersed comments)
26202 <!--c0--><p>=a=</p>
26204 <!--c1--><p>=a=</p> <!--c2--> <!--c3-->
26206 <!--c0--><nowiki>=a=</nowiki>
26208 <!--c1--><nowiki>=a=</nowiki> <!--c2--> <!--c3-->
26212 Headings: 6d. Heading chars in SOL context (No escaping needed)
26222 Headings: 7. Insert a newline between new content and headings
26228 <h2 data-parsoid='{}'>A</h2>
26229 <p data-parsoid='{}'>a</p>
26240 Headings: Used as horizontal rule
26242 wgFragmentMode=[ 'html5', 'legacy' ]
26248 <h6><span id=".3D.3D.3D"></span><span class="mw-headline" id="===">===</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: ===">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
26251 <h6 id="==="><span id=".3D.3D.3D" typeof="mw:FallbackId"></span>===</h6>
26254 #### --------------- Lists ---------------
26255 #### 0. Outside nests (*foo, etc.)
26256 #### 1. Nested inside html <ul><li>*foo</li></ul>
26257 #### 2. Inside definition lists
26258 #### 3. Only bullets at start should be escaped
26259 #### 4. No escapes needed
26260 #### 5. No unnecessary escapes
26261 #### 6. Escape bullets in SOL position
26262 #### 7. Escape bullets in a multi-line context
26263 #### ----------------------------------------
26266 Lists: 0. Outside nests
26276 <nowiki>*</nowiki>foo
26278 <nowiki>#</nowiki>foo
26280 <nowiki>;</nowiki>Foo<nowiki>:</nowiki>bar
26283 ## Making these next 3 tests Parsoid-only since they are html2wt tests
26284 ## to test wikitext escaping, and insignificant whitespace diffs
26285 ## cause PHP parser tests to barf
26287 Lists: 1. Nested inside html (No unnecessary escapes)
26296 <li data-parsoid='{}'>*foo</li>
26297 <li data-parsoid='{}'>#foo</li>
26298 <li data-parsoid='{}'>:foo</li>
26299 <li data-parsoid='{}'>;foo</li>
26307 <li data-parsoid='{}'>*foo</li>
26308 <li data-parsoid='{}'>#foo</li>
26309 <li data-parsoid='{}'>:foo</li>
26310 <li data-parsoid='{}'>;foo</li>
26317 *<nowiki>*foo</nowiki>
26318 *<nowiki>#foo</nowiki>
26319 *<nowiki>:foo</nowiki>
26320 *<nowiki>;foo</nowiki>
26326 #<nowiki>*foo</nowiki>
26327 #<nowiki>#foo</nowiki>
26328 #<nowiki>:foo</nowiki>
26329 #<nowiki>;foo</nowiki>
26333 Lists: 2. Inside definition lists
26337 <dl><dt>;foo</dt></dl>
26338 <dl><dt>:foo</dt></dl>
26341 <dl><dd>:foo</dd></dl>
26345 ; <nowiki>:foo</nowiki>
26347 ; <nowiki>:foo</nowiki>
26354 Lists: 3. Only bullets at start of text in wikitext-generated HTML should be escaped
26360 <li data-parsoid='{}'>*foo<i>it</i>*bar</li>
26364 *<nowiki>*foo</nowiki>''it''*bar
26368 Lists: 4. No escapes needed
26381 <li><a rel="mw:WikiLink" href="Foo" title="Foo">Foo</a>: bar
26385 <li><a rel="mw:WikiLink" href="Foo" title="Foo">Foo</a>*bar
26399 Lists: 5. No unnecessary escapes
26403 <ul><li> bar <span>[[foo]]</span></li></ul>
26404 <ul><li> =bar <span>[[foo]]</span></li></ul>
26405 <ul><li> [[bar <span>[[foo]]</span></li></ul>
26406 <ul><li> ]]bar <span>[[foo]]</span></li></ul>
26407 <ul><li> =bar <span>foo]]</span>=</li></ul>
26408 <ul><li> <s></s>: a</li></ul>
26409 <ul><li> <i>* foo</i></li></ul>
26412 * bar <span><nowiki>[[foo]]</nowiki></span>
26414 * =bar <span><nowiki>[[foo]]</nowiki></span>
26416 * [[bar <span><nowiki>[[foo]]</nowiki></span>
26418 * ]]bar <span><nowiki>[[foo]]</nowiki></span>
26420 * =bar <span>foo]]</span>=
26428 Lists: 6. Escape bullets in SOL position
26432 <p><!--cmt-->*foo</p>
26434 <!--cmt--><nowiki>*</nowiki>foo
26438 Lists: 7. Escape bullets in a multi-line context
26447 <nowiki>*</nowiki>b
26451 Lists: 8. Escape colons only if not present in tags
26455 <dl><dt>a:b<i>c:d</i></dt></dl>
26457 ; <nowiki>a:b</nowiki>''c:d''
26460 #### --------------- HRs ---------------
26461 #### 1. Single line
26462 #### -----------------------------------
26465 HRs: 1. Single line
26473 ----<nowiki>----</nowiki>
26478 #### --------------- Tables ---------------
26479 #### 1a. Simple example
26480 #### 1b. No escaping needed (!foo)
26481 #### 1c. No escaping needed (|foo)
26482 #### 1d. No escaping needed (|}foo)
26484 #### 2a. Nested in td (<td>foo|bar</td>)
26485 #### 2b. Nested in td (<td>foo||bar</td>)
26486 #### 2c. Nested in td -- no escaping needed(<td>foo!!bar</td>)
26488 #### 3a. Nested in th (<th>foo!bar</th>)
26489 #### 3b. Nested in th (<th>foo!!bar</th>)
26490 #### 3c. Nested in th -- no escaping needed(<th>foo||bar</th>)
26494 #### 4c. No escaping needed
26495 #### --------------------------------------
26498 Tables: 1a. Simple example
26506 <nowiki>{|</nowiki>
26511 Tables: 1b. No escaping needed
26522 Tables: 1c. No escaping needed
26533 Tables: 1d. No escaping needed
26544 Tables: 2a. Nested in td
26549 <td>foo|bar</td></tr>
26550 <tr><td>x<div>a|b</div></td>
26554 |<nowiki>foo|bar</nowiki>
26556 |x<div><nowiki>a|b</nowiki></div>
26564 <td>x<div>a|b</div>
26565 </td></tr></tbody></table>
26569 Tables: 2b. Nested in td
26575 <td>a<i>b||c</i></td>
26576 <td>a<i><div>b||c</div></i></td>
26577 </tr></tbody></table>
26580 |<nowiki>foo||bar</nowiki>
26581 |a''<nowiki>b||c</nowiki>''
26582 |a''<div><nowiki>b||c</nowiki></div>''
26591 <td>a<i><div>b||c</div></i>
26597 Tables: 2c. Nested in td -- no escaping needed
26613 Tables: 3a. Nested in th
26629 Tables: 3b. Nested in th
26634 <tr><th>foo!!bar</th>
26635 <th><i>foo|bar</i></th>
26636 <th><i>foo!!bar</i></th>
26637 <th><i><span>foo!!bar</span></i></th>
26638 </tr></tbody></table>
26641 !<nowiki>foo!!bar</nowiki>
26642 !''<nowiki>foo|bar</nowiki>''
26643 !''<nowiki>foo!!bar</nowiki>''
26644 !''<span><nowiki>foo!!bar</nowiki></span>''
26653 <th><i>foo!!bar</i>
26655 <th><i><span>foo!!bar</span></i>
26661 Tables: 3c. Nested in th
26666 <tr><th>foo||bar</th>
26667 <th><span typeof="mw:Nowiki">foo||bar</span></th>
26668 </tr></tbody></table>
26671 !<nowiki>foo||bar</nowiki>
26672 !<nowiki>foo||bar</nowiki>
26685 Tables: 4a. Escape -
26701 |<nowiki>-bar</nowiki>
26706 Tables: 4b. Escape +
26722 |<nowiki>+bar</nowiki>
26727 Tables: 4c. No escaping needed
26732 <tr><td>foo-bar</td><td>foo+bar</td></tr>
26733 <tr><td><i>foo</i>-bar</td><td><i>foo</i>+bar</td></tr>
26739 <div>a|b</div></td>
26784 Tables: 4d. No escaping needed
26789 <tbody><tr><td><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a>-bar</td>
26790 <td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>+1</td>
26791 <td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>-2</td></tr>
26802 <td><a href="/wiki/Foo" title="Foo">Foo</a>-bar
26812 Tables: 4e. Escape }
26817 <tr><td>}</td></tr>
26818 <tr><td>x</td><td data-parsoid='{"stx":"row"}'>}</td></tr></table>
26822 |<nowiki>}</nowiki>
26839 Tables: 5. Empty table cells should get whitespace to avoid need for nowikis
26843 <table><tr><td></td><td align="center" data-parsoid='{"stx":"row"}'></td><td data-parsoid='{"stx":"row"}'></td></tr></table>
26845 <table><tr><td></td><td align="center"></td><td></td></tr></table>
26847 <table><tr><td></td><td align="center" data-parsoid='{"stx":"row", "startTagSrc":"{{!}}{{!}}"}'></td><td data-parsoid='{"stx":"row"}'></td></tr></table>
26849 <table><tr><th></th><th align="center" data-parsoid='{"stx":"row"}'></th><th data-parsoid='{"stx":"row"}'></th></tr></table>
26852 | || align="center" | ||
26862 | {{!}}{{!}} align="center" | ||
26866 ! !! align="center" | !!
26872 <td align="center"></td>
26874 </td></tr></tbody></table>
26879 <td align="center">
26882 </td></tr></tbody></table>
26886 <td align="center"></td>
26888 </td></tr></tbody></table>
26892 <th align="center"></th>
26894 </th></tr></tbody></table>
26898 T97430: Don't emit empty nowiki pairs around marker meta tags
26902 <p>*This is a long sentence here that will make the nowiki algo split up the nowikis into multiple pairs
26903 |** Make this another long long long sentence forcing the nowiki algo to split up the nowikis.</p>
26905 <nowiki>*</nowiki>This is a long sentence here that will make the nowiki algo split up the nowikis into multiple pairs
26906 |** Make this another long long long sentence forcing the nowiki algo to split up the nowikis.
26910 Unclosed xmlish element in table line shouldn't eat end delimiters
26915 <tbody><tr><td> <foo</td>
26916 <td> bar></td></tr>
26933 #### --------------- Links ----------------
26934 #### 1. Quote marks in link text
26935 #### 2. Wikilinks: Escapes needed
26936 #### 3. Wikilinks: No escapes needed
26937 #### 4. Extlinks: Escapes needed
26938 #### 5. Extlinks: No escapes needed
26939 #### --------------------------------------
26941 Links 1. WikiLinks: No escapes needed
26945 <p><a rel="mw:WikiLink" href="Foo" title="Foo">Foo<i>boo</i></a>
26946 <a rel="mw:WikiLink" href="Foo" title="Foo">[Foobar]</a>
26947 <a rel="mw:WikiLink" href="Foo" title="Foo">x [Foobar] x</a></p>
26951 [[Foo|x [Foobar] x]]
26953 <p><a href="/wiki/Foo" title="Foo">Foo<i>boo</i></a>
26954 <a href="/wiki/Foo" title="Foo">[Foobar]</a>
26955 <a href="/wiki/Foo" title="Foo">x [Foobar] x</a>
26960 Links 2. WikiLinks: Escapes needed
26964 <a href="Foo" rel="mw:WikiLink">Foobar]</a>
26965 <a href="Foo" rel="mw:WikiLink">x [http://google.com g] x</a>
26966 <a href="Foo" rel="mw:WikiLink">[[Bar]]</a>
26967 <a href="Foo" rel="mw:WikiLink">x [[Bar]] x</a>
26968 <a href="Foo" rel="mw:WikiLink">|Bar</a>
26969 <a href="Foo" rel="mw:WikiLink">]]bar</a>
26970 <a href="Foo" rel="mw:WikiLink">[[bar</a>
26971 <a href="Foo" rel="mw:WikiLink">x [[ y</a>
26972 <a href="Foo" rel="mw:WikiLink">x ]] y</a>
26973 <a href="Foo" rel="mw:WikiLink">x ]] y [[ z</a>
26975 [[Foo|<nowiki>Foobar]</nowiki>]]
26976 [[Foo|x <nowiki>[http://google.com g]</nowiki> x]]
26977 [[Foo|<nowiki>[[Bar]]</nowiki>]]
26978 [[Foo|<nowiki>x [[Bar]] x</nowiki>]]
26979 [[Foo|<nowiki>|Bar</nowiki>]]
26980 [[Foo|<nowiki>]]bar</nowiki>]]
26981 [[Foo|<nowiki>[[bar</nowiki>]]
26982 [[Foo|<nowiki>x [[ y</nowiki>]]
26983 [[Foo|<nowiki>x ]] y</nowiki>]]
26984 [[Foo|<nowiki>x ]] y [[ z</nowiki>]]
26986 <p><a href="/wiki/Foo" title="Foo">Foobar]</a>
26987 <a href="/wiki/Foo" title="Foo">x [http://google.com g] x</a>
26988 <a href="/wiki/Foo" title="Foo">[[Bar]]</a>
26989 <a href="/wiki/Foo" title="Foo">x [[Bar]] x</a>
26990 <a href="/wiki/Foo" title="Foo">|Bar</a>
26991 <a href="/wiki/Foo" title="Foo">]]bar</a>
26992 <a href="/wiki/Foo" title="Foo">[[bar</a>
26993 <a href="/wiki/Foo" title="Foo">x [[ y</a>
26994 <a href="/wiki/Foo" title="Foo">x ]] y</a>
26995 <a href="/wiki/Foo" title="Foo">x ]] y [[ z</a>
27000 Links 3. WikiLinks: No escapes needed
27004 <p><a rel="mw:WikiLink" href="Foo">[Foobar</a>
27005 <a rel="mw:WikiLink" href="Foo" title="Foo">foo|bar</a></p>
27010 <p><a href="/wiki/Foo" title="Foo">[Foobar</a>
27011 <a href="/wiki/Foo" title="Foo">foo|bar</a>
27016 Links 4. ExtLinks: Escapes needed
27020 <p><a rel="mw:ExtLink" href="http://google.com">[google]</a>
27021 <a rel="mw:ExtLink" href="http://google.com">google]</a>
27022 <a rel="mw:ExtLink" href="http://google.com">goog] le</a></p>
27023 <p>[http://google.com]</p>
27024 <p>[http://google.com google]</p>
27025 <p>[<a rel="mw:ExtLink" href="http://google.com">http://google.com</a>]</p>
27026 <p>[<a rel="mw:ExtLink" href="http://google.com" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://google.com"}},"i":0}}]}'>http://google.com</a>]</p>
27028 [http://google.com <nowiki>[google]</nowiki>]
27029 [http://google.com <nowiki>google]</nowiki>]
27030 [http://google.com <nowiki>goog] le</nowiki>]
27032 <nowiki>[http://google.com]</nowiki>
27034 <nowiki>[http://google.com google]</nowiki>
27036 [http://google.com<nowiki>]</nowiki>
27038 [{{echo|http://google.com}}<nowiki>]</nowiki>
27040 <p><a rel="nofollow" class="external text" href="http://google.com">[google]</a>
27041 <a rel="nofollow" class="external text" href="http://google.com">google]</a>
27042 <a rel="nofollow" class="external text" href="http://google.com">goog] le</a>
27043 </p><p>[http://google.com]
27044 </p><p>[http://google.com google]
27045 </p><p>[<a rel="nofollow" class="external free" href="http://google.com">http://google.com</a>]
27046 </p><p>[<a rel="nofollow" class="external free" href="http://google.com">http://google.com</a>]
27051 Links 5. ExtLinks: No escapes needed
27055 <p><a rel="mw:ExtLink" href="http://google.com">[google</a></p>
27056 <p>[<a ref="mw:ExtLink" href="http://google.com"></a>]</p>
27058 [http://google.com [google]
27060 [[http://google.com]]
27062 <p><a rel="nofollow" class="external text" href="http://google.com">[google</a>
27063 </p><p>[<a rel="nofollow" class="external autonumber" href="http://google.com">[1]</a>]
27068 Links 6. Add <nowiki/>s between text-nodes and url-links when required (T66300)
27072 <p>x<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>y
27073 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>?x
27074 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>&x
27075 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>'x
27076 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>,x
27077 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>.x
27078 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>;x
27079 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>:x
27080 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>;x
27081 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>!x
27082 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>=x
27083 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>(x)
27084 <a rel="mw:ExtLink" href="http://example.com(x" data-parsoid='{"stx":"url"}'>http://example.com(x</a>)
27087 x<nowiki/>http://example.com<nowiki/>y
27088 http://example.com<nowiki/>?x
27089 http://example.com<nowiki/>&x
27090 http://example.com<nowiki/>'x
27091 http://example.com<nowiki/>,x
27092 http://example.com<nowiki/>.x
27093 http://example.com<nowiki/>;x
27094 http://example.com<nowiki/>:x
27095 http://example.com<nowiki/>;x
27096 http://example.com<nowiki/>!x
27097 http://example.com<nowiki/>=x
27098 http://example.com<nowiki/>(x)
27099 http://example.com(x<nowiki/>)
27103 Links 7a. Don't add spurious <nowiki/>s between text-nodes and url-links (T66300)
27108 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>
27110 "<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>"
27111 (<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>)
27112 (<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>) foo
27113 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>,
27114 <a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>, foo
27120 "http://example.com"
27121 (http://example.com)
27122 (http://example.com) foo
27123 http://example.com,
27124 http://example.com, foo
27127 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
27129 "<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>"
27130 (<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
27131 (<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>) foo
27132 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>,
27133 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>, foo
27138 Links 7b. Don't add spurious <nowiki/>s between text-nodes and url-links (T66300)
27142 <p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a>.,;:!?\
27143 -<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>:</p>
27145 http://example.com.,;:!?\
27146 -http://example.com:
27148 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>.,;:!?\
27149 -<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>:
27154 Links 8. Add <nowiki/>s between text-nodes and RFC-links when required (T66300)
27158 <p><a href="https://tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>4
27159 <a href="https://tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>y
27160 X<a href="https://tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>y</p>
27164 X<nowiki/>RFC 123<nowiki/>y
27168 Links 9. Don't add spurious <nowiki/>s between text-nodes and RFC-links (T66300)
27172 <p><a href="https://tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>?foo
27173 <a href="https://tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>&foo
27174 -<a href="https://tools.ietf.org/html/rfc123" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>RFC 123</a>-
27181 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc123">RFC 123</a>?foo
27182 <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc123">RFC 123</a>&foo
27183 -<a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc123">RFC 123</a>-
27188 Links 10. Add <nowiki/>s between text-nodes and PMID-links when required (T66300)
27192 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>4
27193 <a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>y
27194 X<a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>y
27198 X<nowiki/>PMID 123<nowiki/>y
27202 Links 11. Don't add spurious <nowiki/>s between text-nodes and PMID-links (T66300)
27206 <p><a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>?foo
27207 <a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>&foo
27208 -<a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>PMID 123</a>-
27215 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract">PMID 123</a>?foo
27216 <a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract">PMID 123</a>&foo
27217 -<a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract">PMID 123</a>-
27222 Links 12. Add <nowiki/>s between text-nodes and ISBN-links when required (T66300)
27226 <p><a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>1
27227 <a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>x
27228 a<a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>b
27231 ISBN 1234567890<nowiki/>1
27232 ISBN 1234567890<nowiki/>x
27233 a<nowiki/>ISBN 1234567890<nowiki/>b
27237 Links 13. Don't add spurious <nowiki/>s between text-nodes and ISBN-links (T66300)
27241 <p>-<a href="./Special:BookSources/1234567890" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a>'s
27245 <p>-<a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>'s
27250 Links 14. Protect link-like plain text. (Parsoid bug T78425)
27254 <p>this is not a link: http://example.com
27257 this is not a link: <nowiki>http://example.com</nowiki>
27261 Links 15. Link trails can't become link prefixes.
27266 <p><a rel="mw:WikiLink" href="Söfnuður" title="Söfnuður" data-parsoid='{"stx":"simple","tail":"-"}'>Söfnuður-</a><a rel="mw:WikiLink" href="00" title="00">00</a></p>
27268 [[Söfnuður]]-[[00]]
27270 <p><a href="/wiki/S%C3%B6fnu%C3%B0ur" title="Söfnuður">Söfnuður-</a><a href="/wiki/00" title="00">00</a>
27274 #### --------------- Quotes ---------------
27275 #### 1. Quotes inside <b> and <i>
27276 #### 2. Link fragments separated by <i> and <b> tags
27277 #### 3. Link fragments inside <i> and <b>
27278 #### 4. No escaping needed
27279 #### --------------------------------------
27281 1a. Quotes inside <b> and <i>
27292 <b>foo'<i>bar'</i>baz</b>
27301 <i>fools'<span> errand</span></i>
27302 <i><span>fool</span>'s errand</i>
27303 '<i>foo</i> bar '<i>baz</i>
27304 a|!*#-:;+-~[]{}b'<i>x</i>
27308 ''<nowiki>''foo''</nowiki>''
27309 ''<nowiki>'''foo'''</nowiki>''
27311 '''<nowiki/>'foo''''
27312 '''<nowiki>''foo''</nowiki>'''
27313 '''<nowiki>'''foo'''</nowiki>'''
27314 '''foo'<nowiki/>''bar'<nowiki/>''baz'''
27315 '''foo'''<nowiki/>'s
27321 '''foo'''<nowiki/>'
27322 ''''foo'''<nowiki/>'
27323 ''fools'<span> errand</span>''
27324 ''<span>fool</span>'s errand''
27325 '<nowiki/>''foo'' bar '''baz''
27326 a|!*#-:;+-~[]{}b'''x''
27330 1b. Quotes inside <b> and <i> with other tags on same line
27334 '<i>a</i> foo <i><a rel="mw:WikiLink" href="Bar" title="Bar">bar</a></i>
27335 <i>a'</i> foo <i><a rel="mw:WikiLink" href="Bar" title="Bar">bar</a></i>
27336 <i>a'</i> foo <b><a rel="mw:WikiLink" href="Bar" title="Bar" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[bar]]"}},"i":0}}]}'>bar</a></b>
27337 <a rel="mw:WikiLink" href="Foo" title="Foo">foo</a> x'<i><a href="Bar" rel="mw:WikiLink" title="Bar">bar</a></i>
27338 '<i>foo</i> <span class="mw-ref" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span>
27339 '<i>foo</i> <div title="name">test</div>
27340 '<i>foo</i> and <br data-parsoid='{"stx":"html","noClose":true}'/> bar
27341 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'>
27342 <li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">test</span></li>
27345 '''a'' foo ''[[bar]]''
27346 ''a''' foo ''[[bar]]''
27347 ''a''' foo '''{{echo|[[bar]]}}'''
27348 [[foo]] x'''[[bar]]''
27349 '''foo'' <ref>test</ref>
27350 '''foo'' <div title="name">test</div>
27351 '''foo'' and <br> bar
27356 2. Link fragments separated by <i> and <b> tags
27360 <p>[[<i>foo</i>hello]]</p>
27361 <p>[[<b>foo</b>hello]]</p>
27363 [[''foo''<nowiki>hello]]</nowiki>
27365 [['''foo'''<nowiki>hello]]</nowiki>
27368 # FIXME: Escaping one or both of [[ and ]] is also acceptable --
27369 # this is one of the shortcomings of this format
27371 3. Link fragments inside <i> and <b>
27375 <p><i>[[foo</i>]]</p>
27376 <p><b>[[foo</b>]]</p>
27378 ''[[foo''<nowiki>]]</nowiki>
27380 '''[[foo'''<nowiki>]]</nowiki>
27384 4. No escaping needed
27388 <p>'<span><i>bar</i></span>'
27389 '<span><b>bar</b></span>'
27393 '<span>''bar''</span>'
27394 '<span>'''bar'''</span>'
27398 #### ----------- Paragraphs ---------------
27399 #### 1. No unnecessary escapes
27400 #### --------------------------------------
27403 1. No unnecessary escapes
27407 <p>bar <span>[[foo]]</span>
27408 </p><p>=bar <span>[[foo]]</span>
27409 </p><p>[[bar <span>[[foo]]</span>
27410 </p><p>]]bar <span>[[foo]]</span>
27411 </p><p>=bar <span>foo]]</span>=
27414 bar <span><nowiki>[[foo]]</nowiki></span>
27416 =bar <span><nowiki>[[foo]]</nowiki></span>
27418 [[bar <span><nowiki>[[foo]]</nowiki></span>
27420 ]]bar <span><nowiki>[[foo]]</nowiki></span>
27422 =bar <span>foo]]</span><nowiki>=</nowiki>
27425 #### ----------------------- PRE --------------------------
27427 1. Leading whitespace in SOL context should be escaped
27450 <nowiki> </nowiki>a
27452 <nowiki> </nowiki> a
27456 <nowiki> </nowiki> a
27458 <nowiki> </nowiki>a
27461 <nowiki> </nowiki>b
27484 2. Leading whitespace in non-indent-pre contexts should not be escaped
27488 <p>foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span></p>
27489 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
27490 <li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text"><i>a</i>
27500 3. Leading whitespace in indent-pre suppressing contexts should not be escaped
27519 4. Leading whitespace in indent-pre suppressing contexts should not be escaped
27523 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
27525 [[File:Foobar.jpg|thumb|caption]]
27529 5. Nowiki escaping should account for indent-pres
27539 T95794: nowiki escaping should account for leading space at start-of-line in an indent-pre block
27553 Whitespace scrubbing in SOL position should account for SOL-sensitive wikitext markup
27556 "modes": ["html2wt"],
27557 "scrubWikitext": true
27565 <p><link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid="{}"> *foo</p>
27566 <p> <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid="{}">*foo</p>
27567 <p> <!--boo-->*foo</p>
27568 <p><!--boo--> *foo</p>
27569 <p><!--a--> <!--b--> <!--c--> <!--d--> <!--e--> foo</p>
27570 <p><!--a--> <!--b--> <!--c--> <!--d--> <!--e--> *foo</p>
27586 <nowiki>*</nowiki>foo
27588 <nowiki/><!--boo-->*foo
27590 <!--boo--><nowiki/>*foo
27592 <!--a--><!--b--><!--c--><!--d--><!--e-->foo
27594 <!--a--><nowiki/><!--b--><!--c--><!--d--><!--e-->*foo
27597 #### --------------- Behavior Switches --------------------
27600 1. Valid behavior switches should be escaped
27607 <nowiki>__TOC__</nowiki>
27608 ''<nowiki>__TOC__</nowiki>''
27612 2. Invalid behavior switches should not be escaped
27623 # We use indent-pre as an indirect way to test for sol-transparent behavior.
27625 Behavior switches should be SOL-transparent
27629 <meta property="mw:PageProp/toc" />
27631 <!-- this one's bogus -->
27634 <pre data-parsoid='{}'><meta property="mw:PageProp/toc" data-parsoid='{"src":"__TOC__","magicSrc":"__TOC__"}'/> foo</pre>
27636 <meta property="mw:PageProp/toc" data-parsoid='{"src":"__TOC__","magicSrc":"__TOC__"}'/><pre data-parsoid='{}'>bar</pre>
27640 <!-- this one's bogus -->
27649 #### --------------- HTML tags ---------------
27652 #### 3. multi-line html tag
27653 #### 4. extension tags
27654 #### -----------------------------------------
27660 <a href="http://google.com">google</a>
27662 <a href="http://google.com">google</a>
27670 <ul><li> <div>foo</div></li>
27671 <li> <div style="color:red">foo</div></li>
27672 <li> <td></li></ul>
27675 * <nowiki><div>foo</div></nowiki>
27676 * <nowiki><div style="color:red">foo</div></nowiki>
27677 * <nowiki><td></nowiki>
27681 3. multi-line html tag
27700 <p><ref>foo</ref>
27701 </p><p><ref>bar
27702 </p><p>baz</ref>
27705 <nowiki><ref>foo</ref></nowiki>
27707 <nowiki><ref>bar</nowiki>
27709 baz<nowiki></ref></nowiki>
27713 Parsoid: newline inducing block nodes don't suppress <nowiki>
27719 <nowiki> </nowiki>a
27724 #### --------------- Others ---------------
27730 <p><nowiki>foo</nowiki>
27733 <nowiki>foo</nowiki>
27736 ## The quote-char in the input is necessary for triggering the bug
27738 (T54035) Nowiki-escaping should not get tripped by " :" in text
27747 #----------- End of wikitext escaping tests --------------
27751 Tag-like HTML structures are passed through as text
27773 </p><p>1<d e>f
27778 HTML tag with necessary entities in attributes
27780 <span title="&amp;">foo</span>
27782 <p><span title="&amp;">foo</span>
27787 HTML tag with 'unnecessary' entity encoding in attributes
27789 <span title="&">foo</span>
27791 <p><span title="&">foo</span>
27796 HTML tag with broken attribute value quoting
27798 parsoid=wt2html,html2html
27800 <span title="Hello world>Foo</span>
27802 <p><span title="Hello world">Foo</span>
27805 <p><span title="Hello world">Foo</span></p>
27809 Self-closed tag with broken attribute value quoting
27811 parsoid=wt2html,html2html
27813 <div title="Hello world />Foo
27815 <div title="Hello world"></div><p>Foo
27818 <div title="Hello world " data-parsoid='{"stx":"html","selfClose":true}'></div><p>Foo</p>
27822 Table with broken attribute value quoting
27824 parsoid=wt2html,html2html
27827 | title="Hello world|Foo
27832 <td title="Hello world">Foo
27838 <td title="Hello world">Foo
27844 Table with broken attribute value quoting on consecutive lines
27846 parsoid=wt2html,html2html
27849 | title="Hello world|Foo
27850 | style="color:red|Bar
27855 <td title="Hello world">Foo
27857 <td style="color:red">Bar
27863 <td title="Hello world">Foo
27864 </td><td style="color: red">Bar
27865 </td></tr></tbody></table>
27870 Accept empty td cell attribute
27873 | align="center" |foo|| |
27878 <td align="center">foo</td>
27885 Non-empty attributes in th-cells
27888 !Foo!! style="color: red" |Bar
27894 <th style="color: red">Bar
27900 Accept empty attributes in th-cells
27915 Empty table rows go away
27936 ### Parsoid-centric tests for testing RTing of inter-element separators
27937 ### Edge cases not tested by existing parser tests and specific to
27938 ### Parsoid-specific serialization strategies.
27942 RT-ed inter-element separators should be valid separators
27954 <tbody><tr class='mw-empty-elt' data-parsoid='{"startTagSrc":"|-","a":{"[[foo]]":null},"sa":{"[[foo]]":""},"autoInsertedEnd":true}'></tr>
27958 # Parsoid-only test of a DOM pass
27960 Trailing newlines in a deep dom-subtree that ends a wikitext line should be migrated out
27972 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo
27973 <p>bar</p></small></td></tr>
27977 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo<small data-parsoid='{"stx":"html","autoInsertedEnd":true}'></small></small></td></tr>
27981 # Note that the "style" attribute is really a template parameter here.
27982 # The = would have to be {{=}} if you wanted the literal.
27984 Empty TD followed by TD with tpl-generated attribute
27989 |{{echo|style='color:red'}}|foo
28003 Indented table with an empty td
28022 Indented table with blank lines in between (T85627)
28041 <br /></p></td></tr>
28046 Indented block & table
28060 <div data-parsoid='{"stx":"html"}'>foo</div>
28062 <tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'>foo</td></tr>
28067 Indent and comment before table row
28082 <!--hi--><tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
28083 <td data-parsoid='{"autoInsertedEnd":true}'> there</td></tr>
28087 # PHP parser omits empty TR
28089 Empty TR followed by a template-generated TR
28093 {{echo|<tr><td>foo</td></tr>}}
28098 <tbody><tr><td>foo</td></tr>
28103 <tr class='mw-empty-elt'></tr>
28104 <tr about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<tr><td>foo</td></tr>"}},"i":0}}]}'>
28109 ## PHP and parsoid output differ for this; as usual PHP omits empty
28110 ## elements, and since it strips the comments the TR is empty.
28112 Empty TR followed by mixed-ws-comment line should RT correctly
28128 <tr class='mw-empty-elt'></tr>
28131 <!--c--> </tr><!--d-->
28137 Multi-line image caption generated by templates with/without trailing newlines
28139 [[File:Foobar.jpg|thumb|300x300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}]]
28140 [[File:Foobar.jpg|thumb|300x300px|foo\n{{echo|A}}\n{{echo|B}}\n{{echo|C}}\n\n]]
28142 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a><figcaption>foo\n<span about="#mwt9" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"A"}},"i":0}}]}'>A</span>\n<span about="#mwt10" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"B"}},"i":0}}]}'>B</span>\n<span about="#mwt11" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"C"}},"i":0}}]}'>C</span></figcaption></figure>
28143 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a><figcaption>foo\n<span about="#mwt12" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"A"}},"i":0}}]}'>A</span>\n<span about="#mwt13" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"B"}},"i":0}}]}'>B</span>\n<span about="#mwt14" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"C"}},"i":0}}]}'>C</span>\n\n</figcaption></figure>
28147 New element inserted (without intervening newlines) after an old sol-transparent node should serialize correctly
28151 <meta typeof="mw:Includes/IncludeOnly" data-parsoid='{"src":"<includeonly>foo</includeonly>"}' data-mw='{"src":"<includeonly>foo</includeonly>"}'/><meta typeof="mw:Includes/IncludeOnly/End" data-parsoid='{"src":""}'/><p>new para</p>
28153 <link rel="mw:PageProp/Category" href="./Category:Foo" data-parsoid='{}'/><h1>new heading</h1>
28155 <includeonly>foo</includeonly>
28163 ## PHP emits broken html for this, and since this is primarily
28164 ## a Parsoid serializer test, marking this Parsoid only
28166 Improperly nested inline or quotes tags with whitespace in between
28168 <span> <s>x</span> </s>
28171 <p><span> <s>x</s></span><s> </s>
28172 <b> <i>x</i></b><i> </i>
28177 Encapsulate protected attributes from wt
28179 <div typeof="mw:placeholder stuff" data-mw="whoo" data-parsoid="weird" data-parsoid-other="no" about="time" rel="mw:true">foo</div>
28181 {| typeof="mw:placeholder stuff" data-mw="whoo" data-parsoid="weird" data-parsoid-other="no" about="time" rel="mw:true"
28185 <div data-x-typeof="mw:placeholder stuff" data-x-data-mw="whoo" data-x-data-parsoid="weird" data-x-data-parsoid-other="no" data-x-about="time" data-x-rel="mw:true">foo</div>
28187 <table data-x-typeof="mw:placeholder stuff" data-x-data-mw="whoo" data-x-data-parsoid="weird" data-x-data-parsoid-other="no" data-x-about="time" data-x-rel="mw:true">
28188 <tbody><tr><td data-parsoid='{"autoInsertedEnd":true}'>ok</td></tr>
28192 ## Currently the p-wrapper is fragile in how it adds / removes transformations.
28193 ## Having nested or stray pre tags results in the attempt to add duplicates,
28194 ## causing an assertion fail. This test tries to prevent that situation.
28196 Ensure ParagraphWrapper can deal with stray closing pre tags
28205 ## Remex doesn't account for fostered content.
28207 1. Ensure fostered text content is wrapped in element nodes
28211 <table>hi</table><table>ho</table>
28213 hi<table></table>ho<table></table>
28215 <p data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true}'>hi</p><table data-parsoid='{"stx":"html"}'></table><p data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true}'>ho</p><table data-parsoid='{"stx":"html"}'></table>
28218 ## Remex doesn't account for fostered content.
28220 2. Ensure fostered text content is wrapped in element nodes (traps regressions around fostered marker on the element getting lost)
28222 parsoid=wt2html,wt2wt
28232 </td></tr></tbody></table>
28234 <p data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true}'> || ||</p>
28235 <table data-parsoid='{"stx":"html"}'>
28236 <tbody><tr data-parsoid='{"stx":"html","autoInsertedEnd":true}'><td data-parsoid='{"stx":"html","autoInsertedEnd":true}'> a
28237 </td></tr></tbody></table>
28240 ## Remex doesn't account for fostered content.
28242 Encapsulation properly handles null DSR information from foster box
28244 parsoid=wt2html,wt2wt
28246 {{echo|<table>foo<tr><td>bar</td></tr></table>}}
28248 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<table>foo<tr><td>bar</td></tr></table>"}},"i":0}}]}'>foo</p><table about="#mwt1" data-parsoid='{"stx":"html"}'><tbody><tr><td>bar</td></tr></tbody></table>
28251 ## Remex doesn't account for fostered content.
28253 1. Encapsulate foster-parented transclusion content
28255 parsoid=wt2wt,wt2html
28257 <table>{{echo|foo<tr><td>bar</td></tr>}}</table>
28259 foo<table><tbody><tr><td>bar</td></tr></tbody></table>
28261 <p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE_html","pi":[[{"k":"1"}]]}' data-mw='{"parts":["<table>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo<tr><td>bar</td></tr>"}},"i":0}},"</table>"]}'>foo</p><table about="#mwt2" data-parsoid='{"stx":"html"}'><tbody><tr><td>bar</td></tr></tbody></table>
28265 2. Encapsulate foster-parented transclusion content
28267 parsoid=wt2wt,wt2html
28269 <table><div>{{echo|foo}}</div><tr><td>bar</td></tr></table>
28271 <div typeof="mw:Transclusion" data-mw="{"parts":["<table><div>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}},"</div><tr><td>bar</td></tr></table>"]}">foo</div>
28282 3. Encapsulate foster-parented transclusion content
28284 parsoid=wt2wt,wt2html
28286 <table><div><p>{{echo|foo</p></div><tr><td>}}bar</td></tr></table>
28288 <div typeof="mw:Transclusion" data-mw="{"parts":["<table><div><p>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo</p></div><tr><td>"}},"i":0}},"bar</td></tr></table>"]}">
28301 4. Encapsulate foster-parented transclusion content
28303 parsoid=wt2wt,wt2html
28305 <table><div><p>{{echo|foo</p></div><tr><td>}}bar</td></tr></table>
28307 <div typeof="mw:Transclusion" data-mw="{"parts":["<table><div><p>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo</p></div><tr><td>"}},"i":0}},"bar</td></tr></table>"]}">
28319 ## Remex doesn't account for fostered content.
28321 5. Encapsulate foster-parented transclusion content
28323 parsoid=wt2wt,wt2html
28325 <table><tr><td><div><p>{{echo|foo</p></div></td>foo}}</tr></table>
28327 foo<table><tbody><tr><td><div><p>foo</p></div></td></tr></tbody></table>
28329 <p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE_html","pi":[[{"k":"1"}]]}' data-mw='{"parts":["<table><tr><td><div><p>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo</p></div></td>foo"}},"i":0}},"</tr></table>"]}'>foo</p><table about="#mwt2" data-parsoid='{"stx":"html"}'><tbody><tr><td><div><p>foo</p></div></td></tr></tbody></table>
28332 ## Remex doesn't account for fostered content.
28334 6. Encapsulate foster-parented transclusion content
28336 parsoid=wt2wt,wt2html
28338 <table><tr><td><div><p>{{echo|foo</p></div></td>foo</tr></table>}}<p>ok</p>
28340 foo<table><tbody><tr><td><div><p>foo</p></div></td></tr></tbody></table><p>ok</p>
28342 <p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE_html","pi":[[{"k":"1"}]]}' data-mw='{"parts":["<table><tr><td><div><p>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo</p></div></td>foo</tr></table>"}},"i":0}}]}'>foo</p><table about="#mwt2" data-parsoid='{"stx":"html"}'><tbody><tr><td><div><p>foo</p></div></td></tr></tbody></table><p data-parsoid='{"stx":"html"}'>ok</p>
28346 7. Encapsulate foster-parented transclusion content
28348 parsoid=wt2wt,wt2html
28350 <table>{{echo|<p>foo</p>}}<td>bar</td></table>
28352 <p typeof="mw:Transclusion" data-mw="{"parts":["<table>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<p>foo</p>"}},"i":0}},"<td>bar</td></table>"]}">foo</p>
28362 ## Remex doesn't account for fostered content.
28363 # Note that the wt is broken on purpose: the = should be {{=}} if you
28364 # don't want it to be a template parameter key.
28366 8. Encapsulate foster-parented transclusion content
28368 parsoid=wt2wt,wt2html
28371 }}{|{{echo|style='color:red'}}
28382 </td></tr></tbody></table>
28384 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n"}},"i":0}}]}'>a</p><span about="#mwt1">
28385 </span><p about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE","pi":[[{"k":"style","named":true}]]}' data-mw='{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"style":{"wt":"'color:red'"}},"i":0}},"\n|-\n|b\n|}"]}'>{{{1}}}</p><table about="#mwt3">
28388 </td></tr></tbody></table>
28391 ## Remex doesn't account for fostered content.
28393 9. Encapsulate foster-parented transclusion content
28395 parsoid=wt2wt,wt2html
28397 <table>{{echo|hi</table>hello}}
28399 hi<table></table><p>hello
28402 <p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE_html","pi":[[{"k":"1"}]]}' data-mw='{"parts":["<table>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi</table>hello"}},"i":0}}]}'>hi</p><table about="#mwt2"></table><p about="#mwt2">hello</p>
28406 Table in fosterable position
28417 <div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"OpenTable","href":"./Template:OpenTable"},"params":{},"i":0}},"\n<div>\n"]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[]]}'></div><span about="#mwt1">
28419 <table about="#mwt1" data-parsoid='{"autoInsertedEnd":true}'></table>
28425 # Parsoid only for T66747
28427 Properly encapsulate empty-content transclusions in fosterable positions
28435 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["<table>\n",{"template":{"target":{"wt":"#if:","function":"if"},"params":{"1":{"wt":"\n<td>foo</td>\n"}},"i":0}},"\n</table>"]}' data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}'>
28440 ## No longer captures its original intention
28442 Always encapsulate foster box when template range is expanded to table
28456 T115289: Unclosed table
28458 {{echo|<table>}}<!--c-->[[Category:Two]]
28460 <link rel="mw:PageProp/Category" href="./Category:Two" about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"simple","a":{"href":"./Category:Two"},"sa":{"href":"Category:Two"},"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<table>"}},"i":0}},"<!--c-->[[Category:Two]]"]}'/><table about="#mwt1" data-parsoid='{"stx":"html","autoInsertedEnd":true}'><!--c--></table>
28464 T115289: Don't migrate newlines out of tables with fostered content
28466 <table><td></td>{{echo|<tr>[[Category:One]]}}<!--c-->[[Category:Two]]
28468 <link rel="mw:PageProp/Category" href="./Category:One" about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"stx":"simple","a":{"href":"./Category:One"},"sa":{"href":"Category:One"},"fostered":true,"pi":[[{"k":"1"}]]}' data-mw='{"parts":["<table><td></td>",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<tr>[[Category:One]]"}},"i":0}},"<!--c-->[[Category:Two]]"]}'/><link rel="mw:PageProp/Category" href="./Category:Two" about="#mwt2"/><table about="#mwt2" data-parsoid='{"stx":"html","autoInsertedEnd":true}'><tbody><tr><td></td></tr><tr><!--c--></tr></tbody></table>
28472 T73074: More fostering fun
28474 <table><td></td>{{echo|<tr>}}<!--c-->[[Category:Two]]
28476 <link rel="mw:PageProp/Category" href="./Category:Two" data-parsoid='{"stx":"simple","a":{"href":"./Category:Two"},"sa":{"href":"Category:Two"},"fostered":true}'/><table data-parsoid='{"stx":"html","autoInsertedEnd":true}'><tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"stx":"html"}'></td></tr><tr about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<tr>"}},"i":0}},"<!--c-->[[Category:Two]]"]}'><!--c--></tr></tbody></table>
28480 Support <object> element with .data attribute
28484 <object data="test.swf"></object>
28486 <object data="test.swf"></object>
28490 Don't block XML namespace declaration
28492 <span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">MediaWiki</span>
28494 <p><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">MediaWiki</span>
28497 <p><span xmlns:dct="http://purl.org/dc/terms/" data-x-property="dct:title" data-parsoid='{"stx":"html"}'>MediaWiki</span></p>
28500 # -----------------------------------------------------------------
28501 # The following section of tests are primarily to spec requirements
28502 # around Parsoid's serialization (old, new, edited content)
28504 # All these tests are marked Parsoid html2wt and html2html only
28505 # ----------------------------------------------------------------
28508 Ignore rel attribute in a-tags during serialization to url-links
28512 <a href='http://en.wikipedia.org/wiki/Foobar'>http://en.wikipedia.org/wiki/Foobar</a>
28513 <a href='http://en.wikipedia.org/wiki/Foobar' rel='mw:ExtLink'>http://en.wikipedia.org/wiki/Foobar</a>
28514 <a href='http://en.wikipedia.org/wiki/Foobar' rel='mw:WikiLink'>http://en.wikipedia.org/wiki/Foobar</a>
28516 http://en.wikipedia.org/wiki/Foobar
28517 http://en.wikipedia.org/wiki/Foobar
28518 http://en.wikipedia.org/wiki/Foobar
28521 # 'mi' is a localinterwiki prefix as well as a language
28523 Serialize interwiki links pointing to the current wiki as plain wiki links (T67869)
28527 <p><a rel="mw:ExtLink" href="http://mi.wikipedia.org/wiki/Foo">Foo</a></p>
28533 Parsoid should accept interwiki shortcuts
28537 <p><a rel='mw:WikiLink' href='./fr:Foo'>Foo</a>
28538 <a rel='mw:ExtLink' href='./fr:Foo'>Foo</a>
28539 <a href='./fr:Foo'>Foo</a></p>
28540 <p><a rel='mw:WikiLink' href='fr%3AFoo'>Foo</a>
28541 <a rel='mw:ExtLink' href='fr%3AFoo'>Foo</a>
28542 <a href='fr%3AFoo'>Foo</a></p>
28543 <p><a href='FR%3AFoo'>Foo</a>
28544 <a href='./FR:Foo'>Foo</a></p>
28559 Parsoid should not accept invalid interwiki shortcuts
28563 <p><a rel='mw:WikiLink' href='news:Foo'>Foo</a>
28564 <a rel='mw:ExtLink' href='news:Foo'>Foo</a>
28565 <a href='news:Foo'>Foo</a></p>
28574 New wikilinks should be serialized properly
28578 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{}'>Foo</a>
28579 <a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a>
28580 <a href="//en.wikipedia.org/wiki/Foo">//en.wikipedia.org/wiki/Foo</a>
28581 <a href="http://en.wikipedia.org/wiki/Foo">http://en.wikipedia.org/wiki/Foo</a>
28582 <a href="//en.wikipedia.org/wiki/Foo_bar">//en.wikipedia.org/wiki/Foo bar</a>
28586 [[:en:Foo|//en.wikipedia.org/wiki/Foo]]
28587 http://en.wikipedia.org/wiki/Foo
28588 [[:en:Foo_bar|//en.wikipedia.org/wiki/Foo bar]]
28592 New wiki links (href variations)
28596 <a rel="mw:WikiLink" href="./Foo_bar">Foo_bar</a>
28597 <a rel="mw:WikiLink" href="Foo_bar">Foo_bar</a>
28598 <a rel="mw:WikiLink" href="Foo bar">Foo_bar</a>
28599 <a rel="mw:WikiLink" href="./Toxine_bact%C3%A9rienne">Toxine bactérienne</a>
28604 [[Toxine bactérienne]]
28608 New wiki links (content string variations)
28612 <a rel="mw:WikiLink" href="./Foo_bar">Foo_bar</a>
28613 <a rel="mw:WikiLink" href="./Foo_bar">Foo bar</a>
28614 <a rel="mw:WikiLink" href="./Foo_bar">./Foo_bar</a>
28618 [[Foo_bar|./Foo_bar]]
28622 New category links (href variations)
28626 <link rel="mw:PageProp/Category" href="./Category:Toxine_bactérienne" />
28627 <link rel="mw:PageProp/Category" href="./Category:Toxine_bact%C3%A9rienne" />
28628 <link rel="mw:PageProp/Category" href="Category:Toxine_bact%C3%A9rienne" />
28630 [[Category:Toxine bactérienne]]
28631 [[Category:Toxine bactérienne]]
28632 [[Category:Toxine bactérienne]]
28636 New sol transparent links don't need indent-pre nowiki protection
28641 <link rel="mw:PageProp/redirect" href="./Main_Page">
28642 <!-- this is good --> <link rel="mw:PageProp/Category" href="./Category:Good" />
28643 <!-- this is great --> <link rel="mw:PageProp/Category" href="./Kategorie:Great" />
28645 #WEITERLEITUNG [[Main Page]]
28646 <!-- this is good --> [[Category:Good]]
28647 <!-- this is great --> [[Kategorie:Great]]
28651 New interlanguage links (href variations)
28655 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine bactérienne" />
28656 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine_bactérienne" />
28657 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine_bact%C3%A9rienne" />
28659 [[es:Toxine bactérienne]]
28660 [[es:Toxine_bactérienne]]
28661 [[es:Toxine_bactérienne]]
28665 Image: Modifying size of an image (1)
28668 "modes": ["wt2wt"],
28670 ["img[height]", "attr", "height", "22"],
28671 ["img[width]", "attr", "width", "200"]
28675 [[Image:Foobar.jpg|230x230px]]
28677 [[Image:Foobar.jpg|200x200px]]
28681 Image: Modifying size of an image (2)
28684 "modes": ["wt2wt"],
28686 ["img[height]", "attr", "height", "100"],
28687 ["img[width]", "attr", "width", "500"]
28691 [[Image:Foobar.jpg|230x230px]]
28693 [[Image:Foobar.jpg|500x500px]]
28696 # Change in size is ignored so long as class='mw-default-size'
28698 Image: Modifying size of an image (3)
28701 "modes": ["wt2wt"],
28703 ["figure[class]", "removeClass", "mw-default-size"],
28704 ["figure img", "attr", "height", "19"],
28705 ["figure img", "attr", "width", "170"]
28709 [[Image:Foobar.jpg|thumb]]
28711 [[Image:Foobar.jpg|thumb|170x170px]]
28715 Image: Modifying alignment of an image (T50665)
28718 "modes": ["wt2wt"],
28720 ["figure[class]", "removeClass", "mw-halign-right"],
28721 ["figure[class]", "addClass", "mw-halign-left"]
28725 [[Image:Foobar.jpg|thumb|caption|right]]
28727 [[Image:Foobar.jpg|thumb|caption|left]]
28731 Image: Modifying mw-default-size of an frameless image (T64805)
28734 "modes": ["wt2wt"],
28736 ["figure.mw-default-size", "removeClass", "mw-default-size"]
28740 [[Image:Foobar.jpg|frameless|right]]
28742 [[Image:Foobar.jpg|frameless|right|220x220px]]
28746 Image: Modifying valign of an image (T51221)
28749 "modes": ["wt2wt"],
28751 ["*[typeof=\"mw:Image\"]", "removeClass", "mw-valign-middle"],
28752 ["*[typeof=\"mw:Image\"]", "addClass", "mw-valign-text-top"]
28756 [[File:Foobar.jpg|20px|middle]]
28758 [[File:Foobar.jpg|20px|text-top]]
28762 Image: Modifying alt attribute of an image (T58400)
28765 "modes": ["wt2wt"],
28767 ["img[alt]", "attr", "alt", "some alternate edited text"]
28771 [[File:Foobar.jpg|thumb|some caption|alt=some alternate text]]
28773 [[File:Foobar.jpg|thumb|some caption|alt=some alternate edited text]]
28777 Image: Modifying caption of an image
28780 "modes": ["wt2wt"],
28782 ["figcaption", "text", "new caption"]
28786 [[Image:Foobar.jpg|thumb|original caption]]
28788 [[Image:Foobar.jpg|thumb|new caption]]
28792 Image: empty alt attribute (T50924)
28794 [[File:Foobar.jpg|thumb|alt=|bar]]
28796 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>bar</div></div></div>
28798 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"alt","ak":"alt="},{"ck":"caption","ak":"bar"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"alt":"","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=","resource":"File:Foobar.jpg"}}'/></a><figcaption>bar</figcaption></figure>
28802 Image: new attributes should be serialized in wiki's language for RTL languages (T53852)
28808 <figure class="mw-default-size mw-halign-right" typeof="mw:Image/Thumb"><a href="./Imagen:Foobar.jpg"><img resource="./Imagen:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="180"/></a></figure>
28810 [[Imagen:Foobar.jpg|derecha|miniaturadeimagen]]
28814 Image: Block level image should have \n before and after
28817 [[File:Foobar.jpg|right|thumb|150x150px]]
28821 <figure class="mw-halign-right" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150"/></a></figure>
28826 Image: New block level image should have \n before and after (existing content)
28829 [[File:Foobar.jpg|right|thumb|150x150px]]
28833 <figure class="mw-halign-right" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"right","ak":"right"},{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"150x150px"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"17","width":"150"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure>
28838 Image: upright option (parsoid)
28840 [[File:Foobar.jpg|thumb|upright|caption]]
28841 [[File:Foobar.jpg|thumb|upright=0.5|caption]]
28842 [[File:Foobar.jpg|thumb|500x500px|upright=0.5|caption]]
28844 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/170px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="19" width="170"/></a><figcaption>caption</figcaption></figure>
28845 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/110px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="12" width="110"/></a><figcaption>caption</figcaption></figure>
28846 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/500px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="57" width="500"/></a><figcaption>caption</figcaption></figure>
28850 Image: upright option is ignored on inline and frame images (parsoid)
28852 [[File:Foobar.jpg|500x500px|upright=0.5|caption]]
28854 <p><figure-inline typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/500px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="57" width="500"/></a></figure-inline></p>
28858 Image: in template parameter with empty parameter
28860 {{echo|[[File:Foobar.jpg|link=]]}}
28862 <p><figure-inline class="mw-default-size" typeof="mw:Transclusion mw:Image" about="#mwt1" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[File:Foobar.jpg|link=]]"}},"i":0}}]}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></figure-inline></p>
28866 Image: from basic HTML (1)
28870 <span typeof="mw:Image">
28871 <img src="./File:Foobar.jpg" width=100 height=100 alt="Alt">
28874 [[File:Foobar.jpg|link=|alt=Alt|100x100px]]
28878 Image: from basic HTML (2)
28882 <img src="./File:Foobar.jpg" width=100 height=100 alt="Alt">
28884 [[File:Foobar.jpg|link=|alt=Alt|100x100px]]
28888 Image: from basic HTML (3)
28892 <a href="Main"><img src="./File:Foobar.jpg" width=100 height=100 alt="Alt"></a>
28894 [[File:Foobar.jpg|link=Main|alt=Alt|100x100px]]
28898 Image: from basic HTML (4)
28902 <img src="./File:Foobar.jpg">
28904 [[File:Foobar.jpg|link=]]
28908 Image: Invalid title as link
28910 [[File:Foobar.jpg|link=<]]
28912 <p><a href="/wiki/File:Foobar.jpg" class="image" title="link=<"><img alt="link=<" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
28915 <p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=<"}]}' data-mw='{"caption":"link=&lt;"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
28919 Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does)
28924 <li><p>foo</p></li>
28931 Lists: Serialize correctly even when list tags has unneeded whitespace between tags
28935 <ul> <li>foo</li></ul>
28941 Don't strip leading whitespace when handling indent-pre suppressing tags
28946 <tr><td> indented row</td></tr>
28949 <b>This is very bold of you!</b>
28952 indented cell (no pre-wrapping!)
28962 '''This is very bold of you!'''
28966 indented cell (no pre-wrapping!)
28974 Nowiki-wrap leading whitespace when handling indent-pre inducing tags
28996 <nowiki> </nowiki></span>bar2
28999 <nowiki> </nowiki><span>bar</span>
29002 <nowiki> </nowiki><span>foo</span>
29007 Lists: Dont insert newlines in a serialized list item.
29011 <ul><li>a<br>b</li><li>c</li></ul>
29018 1. Headings: Force sol-transparent links and behavior switches to serialize before/after
29021 "modes": ["html2wt"],
29022 "scrubWikitext": false
29025 <h2>hello there<link href="./Category:A1" rel="mw:PageProp/Category" /></h2>
29026 <h2><link href="./Category:A2" rel="mw:PageProp/Category" />hi pal</h2>
29028 <h2><!--foo--> <link href="./Category:A3" rel="mw:PageProp/Category" /> how goes it</h2>
29029 <h2>it goes well <link href="./Category:A4" rel="mw:PageProp/Category" /> <!--bar--></h2>
29031 <h2 data-parsoid='{}'>howdy<link href="./Category:A5" rel="mw:PageProp/Category" /></h2>
29033 <h2><meta property="mw:PageProp/toc" /> ok</h2>
29035 == hello there [[Category:A1]] ==
29037 == [[Category:A2]] hi pal ==
29039 == <!--foo--> [[Category:A3]] how goes it ==
29041 == it goes well [[Category:A4]] <!--bar--> ==
29043 ==howdy [[Category:A5]]==
29049 2. Headings: Force sol-transparent links and behavior switches to serialize before/after
29052 "modes": ["html2wt"],
29053 "scrubWikitext": true
29056 <h2>hello there<link href="./Category:A1" rel="mw:PageProp/Category" /></h2>
29057 <h2><link href="./Category:A2" rel="mw:PageProp/Category" />hi pal</h2>
29059 <h2><!--foo--> <link href="./Category:A3" rel="mw:PageProp/Category" /> how goes it</h2>
29060 <h2>it goes well <link href="./Category:A4" rel="mw:PageProp/Category" /> <!--bar--></h2>
29062 <h2><meta property="mw:PageProp/toc" /> ok</h2>
29070 <!--foo-->[[Category:A3]]
29075 [[Category:A4]] <!--bar-->
29083 Headings: Don't hoist metas that come from templates
29086 "modes": ["html2wt"],
29087 "scrubWikitext": true
29090 <h2><span about="#mwt1" typeof="mw:Transclusion" data-parsoid="{}" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo [[Category:Foo]]"}},"i":0}}]}'>foo </span><link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" data-parsoid="{}" /></h2>
29092 == {{echo|foo [[Category:Foo]]}} ==
29096 Headings: Category in ref isn't hoisted
29099 "modes": ["html2wt"],
29100 "scrubWikitext": true
29103 <h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
29105 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">bar <link rel="mw:PageProp/Category" href="./Category:Baz" /> </span></li></ol>
29108 [[Category:Baz]] </ref> ==
29114 Parsoid: Serialize positional parameters with = in them as named parameter
29118 <p about="#mwt1" typeof="mw:Transclusion"
29119 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"}},"i":0}}]}'>foo</p>
29121 <p about="#mwt1" typeof="mw:Transclusion"
29122 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"}, "2":{"wt":"bar"}},"i":0}}]}'>foo</p>
29124 <!--Orig params with data-parsoid has heuristics for handling = chars-->
29125 <!--FIXME: But maybe the heuristic needs fixing to apply to new params as well-->
29126 <p data-parsoid='{"pi":[[{"k":"1"},{"k":"2"}]]}' about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"},"2":{"wt":"bar"}},"i":0}}]}'>foo</p>
29130 {{echo|1=f=oo|2=bar}}
29132 <!--Orig params with data-parsoid has heuristics for handling = chars-->
29133 <!--FIXME: But maybe the heuristic needs fixing to apply to new params as well-->
29134 {{echo|<nowiki>f=oo</nowiki>|bar}}
29138 Parsoid: Serialize positional parameters with = in extlink as named parameter
29142 <p><a rel="mw:ExtLink" href="http://stuff?is=ok" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://stuff?is=ok"}},"i":0}}]}'>http://stuff?is=ok</a></p>
29144 {{echo|1=http://stuff?is=ok}}
29148 Parsoid: Correctly serialize block-node children when they are a combination of text and p-nodes
29152 <div>a<p>b</p></div>
29173 Substrings resembling wikitext in hrefs should not get nowiki escapes
29177 <a rel="mw:WikiLink" href="./Foo''bar''baz">Foo''bar''baz</a>
29183 Enforce single-line context in the serializer
29190 <h2> hi <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"bogus","href":"./Template:Bogus"},"params":{"1":{"wt":"there\nyou"}},"i":0}}]}'>there</span><span about="#mwt1">
29191 </span><span about="#mwt1">you</span> </h2>
29193 <h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
29195 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="./Main_Page#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">hello
29196 there</span></li></ol>
29208 ho </dt><dd data-parsoid='{"stx":"row"}'> hi
29215 </tbody></table></dd></dl>
29219 == hi {{bogus|there
29230 * foo '''bar''' baz
29242 Serialize new placeholder space without spans
29246 <p>foo<span typeof="mw:Placeholder"> </span>: bar</p>
29248 <p>foo<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"src":" ","isDisplayHack":true}'> </span>: bar</p>
29250 <span typeof="mw:Extension/ref" data-mw="{"name":"ref","body":{"html":"foo<span typeof=\"mw:Placeholder\">&nbsp;</span>: bar"}}"><sup>[1]</sup></span>ok</p>
29256 <ref>foo : bar</ref>ok
29260 #-----------------------
29261 # Tag minimization tests
29262 #-----------------------
29265 1. I/B quote minimization: wikitext-only tags should be combined
29269 <p><i>A</i><i>B</i></p>
29270 <p><b>A</b><b>B</b></p>
29271 <p><i>A</i><b><i>B</i></b></p>
29272 <p><b>A</b><i><b>B</b></i></p>
29273 <p><b>A</b><i><b>B</b><b>C</b></i><b>D</b></p>
29274 <p><i><b>A</b></i><i><b>B</b></i></p>
29275 <p><i><b>A</b></i><b><i>B</i></b></p>
29276 <p><b><i>A</i></b><i><b>B</b></i></p>
29296 2. I/B quote minimization: wikitext and html tags should not be combined
29300 <p><i>A</i><i data-parsoid='{"stx":"html"}'>B</i></p>
29301 <p><i>A</i><b><i data-parsoid='{"stx":"html"}'>B</i></b></p>
29305 ''A''<nowiki/>'''<i>B</i>'''
29309 3. I/B quote minimization: templated content stops minimization
29313 <p><i>A</i><i about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"''B''"}},"i":0}}]}'>B</i>
29314 <p><i>A</i><b about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"'''''B'''''"}},"i":0}}]}'><i>B</i></b>
29316 ''A''{{echo|''B''}}
29318 ''A''{{echo|'''''B'''''}}
29322 4. I/B quote minimization: new content should be mimimized with adjacent old content
29326 <p><i>A</i><i>B</i></p>
29327 <p><b>A</b><b>B</b></p>
29328 <p><i>A</i><b><i>B</i></b></p>
29338 5a. Merge adjacent quote nodes if they've been edited
29341 "modes": ["wt2wt", "selser"],
29343 ["p", "contents", "remove", ":contains('b')"]
29353 5b. Merge adjacent quote nodes if they've been edited
29356 "modes": ["wt2wt", "selser"],
29362 ''a''<span id="x">b</span>''c''
29368 1. Merge adjacent link nodes as long as at least one element is new
29371 "modes": ["html2wt"],
29372 "scrubWikitext": true
29375 <a rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
29376 <a data-parsoid="{}" rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
29377 <a data-parsoid="{}" rel="mw:WikiLink" href="./Football">Foot</a><a data-parsoid="{}" rel="mw:WikiLink" href="./Football">ball</a>
29381 [[Football|Foot]][[Football|ball]]
29385 2. Merge adjacent link nodes and enable additional normalizations
29388 "modes": ["html2wt"],
29389 "scrubWikitext": true
29392 <a rel="mw:WikiLink" href="./Football"><i>Foot</i></a><a rel="mw:WikiLink" href="./Football"><i>ball</i></a>
29398 3. Don't merge adjacent link nodes if scrubWikitext is false
29401 "modes": ["html2wt"],
29402 "scrubWikitext": false
29405 <a rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
29407 [[Football|Foot]][[Football|ball]]
29411 1. Move format tags outside of WikiLink
29414 "modes": ["html2wt"],
29415 "scrubWikitext": true
29418 <a rel="mw:WikiLink" href="./Football"><i>Football</i></a>
29419 <a rel="mw:WikiLink" href="./Football"><i><b>Football</b></i></a>
29420 <a rel="mw:WikiLink" href="./Football"><u><i><b>Football</b></i></u></a>
29423 '''''[[Football]]'''''
29424 <u>'''''[[Football]]'''''</u>
29428 2. Move format tags outside of WikiLink with mergable A tags
29431 "modes": ["html2wt"],
29432 "scrubWikitext": true
29435 <a rel="mw:WikiLink" href="./Football"><i><b>Foot</b></i></a><a rel="mw:WikiLink" href="./Football"><i><b>ball</b></i></a>
29437 '''''[[Football]]'''''
29441 3. Move format tags outside of WikiLink while preserving formats already outside WikiLink
29444 "modes": ["html2wt"],
29445 "scrubWikitext": true
29448 <font color="red"><a rel="mw:WikiLink" href="./Foo" title="Foo" class="mw-redirect"><u><b>Foo</b></u></a></font>
29450 <font color="red"><u>'''[[Foo]]'''</u></font>
29454 4. Do not move format tags outside of WikiLink which includes attributes color, style and class
29457 "modes": ["html2wt"],
29458 "scrubWikitext": true
29461 <a rel="mw:WikiLink" href="./Foo" title="Foo" class="mw-redirect"><font color="red">Foo</font></a>
29462 <a rel="mw:WikiLink" href="./Foo" title="Foo" class="mw-redirect"><span style="color: blue; font-size: 46px;">Foo></span></a>
29463 <a rel="mw:WikiLink" href="./Foo" title="Foo" class="mw-redirect"><span class="Bar">Foo</span></a>
29465 [[Foo|<font color="red">Foo</font>]]
29466 [[Foo|<span style="color: blue; font-size: 46px;">Foo></span>]]
29467 [[Foo|<span class="Bar">Foo</span>]]
29471 5. T194083 Regression test: Manual edit test that also enables scrubWikitext to move format tags outside wikilinks
29474 "modes": ["selser"],
29475 "scrubWikitext": true,
29477 ["a", "html", "<i>Foo</i>"]
29487 6. Regression test: Manual edit test to ensure diff markers are not lost
29490 "modes": ["selser"],
29491 "scrubWikitext": true,
29493 ["i", "wrap", "<a href='./Foo' rel='mw:WikiLink'></a>"]
29503 7. T194083 Regression test: Manual edit test to ensure nested diff markers aren't inserted
29506 "modes": ["selser"],
29507 "scrubWikitext": true,
29509 ["div", "after", "\n<p><a href='./Foo' rel='mw:WikiLink'>Foo </a>, placeholder</p>"]
29513 <div>placeholder</div>
29515 <div>placeholder</div>
29516 [[Foo]] , placeholder
29519 #------------------------------
29520 # End of tag minimization tests
29521 #------------------------------
29524 T56262: New entities
29528 <span typeof="mw:Entity"> </span>
29533 ## Note that there is no wikitext output for 'unknownproperty' ##
29534 ## Unknown magic words are silently dropped ##
29541 <meta property='mw:PageProp/toc' />
29542 <meta property='mw:PageProp/notoc' />
29543 <meta property='mw:PageProp/forcetoc' />
29544 <meta property='mw:PageProp/index' />
29545 <meta property='mw:PageProp/noindex' />
29546 <meta property='mw:PageProp/nogallery' />
29547 <meta property='mw:PageProp/noeditsection' />
29548 <meta property='mw:PageProp/notitleconvert' />
29549 <meta property='mw:PageProp/nocontentconvert' />
29550 <meta property='mw:PageProp/unknownproperty' />
29560 __NOCONTENTCONVERT__
29564 Consecutive <pre>s should not get merged
29566 parsoid=html2wt,html2html
29568 <pre>a</pre><pre>b</pre>
29596 Edited ISBN links not serializable as ISBN links should serialize as wikilinks
29600 <a href="./Special:BookSources/1234567890" rel="mw:ExtLink">ISBN 1234567895</a>
29602 [[Special:BookSources/1234567890|ISBN 1234567895]]
29606 Edited RFC links not serializable as RFC links should serialize as extlinks
29610 <a href="https://tools.ietf.org/html/rfc123" rel="mw:ExtLink">New RFC</a>
29612 [https://tools.ietf.org/html/rfc123 New RFC]
29616 Edited PMID links not serializable as PMID links should serialize as extlinks
29620 <a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink">New PMID</a>
29622 [//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract New PMID]
29626 WTS of autolinks with trailing/surrounding context
29630 <p><a href="http://cscott.net">http://cscott.net</a><b>foo</b></p>
29631 <p><a href="http://cscott.net">http://cscott.net</a><b data-parsoid='{"stx":"html"}'>foo</b></p>
29632 <p><b><a href="http://cscott.net">http://cscott.net</a></b></p>
29633 <p><b><a href="http://cscott.net">http://cscott.net</a> </b></p>
29634 <p><b><a href="http://cscott.net">http://cscott.net</a>x</b></p>
29635 <p><a href="http://cscott.net">http://cscott.net</a>x</p>
29637 http://cscott.net'''foo'''
29639 http://cscott.net<b>foo</b>
29641 '''http://cscott.net'''
29643 '''http://cscott.net '''
29645 '''http://cscott.net<nowiki/>x'''
29647 http://cscott.net<nowiki/>x
29651 WTS of autolinks with nowikis (round-trip)
29653 x<nowiki/>http://cscott.net<nowiki/>x
29655 <p>x<a rel="mw:ExtLink" class="external free" href="http://cscott.net">http://cscott.net</a>x</p>
29658 # this is the "easy" test because it leaves in place all the
29659 # data-parsoid information indicating this is an autolink
29661 WTS of autolinks with escapes (editing)
29664 "modes": ["wt2wt"],
29666 [ "span", "remove" ]
29670 x<nowiki/>http://cscott.net<nowiki/>x
29672 x<nowiki/>http://cscott.net<nowiki/>x
29676 WTS of edited autolink-like text (T103364)
29679 "modes": ["wt2wt"],
29681 [ "span[typeof]", "removeAttr", "typeof" ]
29685 Not a link: <nowiki>http://example.com</nowiki>.
29687 Not a link: <span><nowiki>http://example.com</nowiki></span>.
29691 WTS of newly-authored autolink-like text (T103364)
29695 <p>http://example.com is not a link.</p>
29697 <nowiki>http://example.com</nowiki> is not a link.
29701 WTS of autolink-like text after an autolink (T108563)
29705 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a> http://example.com is not a link.</p>
29707 http://example.com <nowiki>http://example.com</nowiki> is not a link.
29711 Magic links inside links (not autolinked)
29713 [[Foo|http://example.com]]
29716 [[Foo|ISBN 123456789x]]
29718 [http://foo.com http://example.com]
29719 [http://foo.com RFC 1234]
29720 [http://foo.com PMID 1234]
29721 [http://foo.com ISBN 123456789x]
29723 <p><a href="/wiki/Foo" title="Foo">http://example.com</a>
29724 <a href="/wiki/Foo" title="Foo">RFC 1234</a>
29725 <a href="/wiki/Foo" title="Foo">PMID 1234</a>
29726 <a href="/wiki/Foo" title="Foo">ISBN 123456789x</a>
29727 </p><p><a rel="nofollow" class="external text" href="http://foo.com">http://example.com</a>
29728 <a rel="nofollow" class="external text" href="http://foo.com">RFC 1234</a>
29729 <a rel="nofollow" class="external text" href="http://foo.com">PMID 1234</a>
29730 <a rel="nofollow" class="external text" href="http://foo.com">ISBN 123456789x</a>
29733 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">http://example.com</a>
29734 <a rel="mw:WikiLink" href="./Foo" title="Foo">RFC 1234</a>
29735 <a rel="mw:WikiLink" href="./Foo" title="Foo">PMID 1234</a>
29736 <a rel="mw:WikiLink" href="./Foo" title="Foo">ISBN 123456789x</a></p>
29738 <p><a rel="mw:ExtLink" class="external text" href="http://foo.com">http://example.com</a>
29739 <a rel="mw:ExtLink" class="external text" href="http://foo.com">RFC 1234</a>
29740 <a rel="mw:ExtLink" class="external text" href="http://foo.com">PMID 1234</a>
29741 <a rel="mw:ExtLink" class="external text" href="http://foo.com">ISBN 123456789x</a></p>
29745 Magic links inside image captions (autolinked)
29747 [[File:Foobar.jpg|thumb|http://example.com]]
29748 [[File:Foobar.jpg|thumb|RFC 1234]]
29749 [[File:Foobar.jpg|thumb|PMID 1234]]
29750 [[File:Foobar.jpg|thumb|ISBN 123456789x]]
29752 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
29753 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a></div></div></div>
29754 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></div></div></div>
29755 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></div></div></div>
29757 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
29758 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="https://tools.ietf.org/html/rfc1234" rel="mw:ExtLink" class="external mw-magiclink">RFC 1234</a></figcaption></figure>
29759 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external mw-magiclink">PMID 1234</a></figcaption></figure>
29760 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/123456789X" rel="mw:WikiLink">ISBN 123456789x</a></figcaption></figure>
29764 WTS of magic word text (T109371)
29769 <p><a href="http://foo.com" rel="mw:ExtLink">RFC 1234</a></p>
29770 <p><a href="./Foo" rel="mw:WikiLink">RFC 1234</a></p>
29772 <nowiki>RFC 1234</nowiki>
29774 [http://foo.com RFC 1234]
29780 Edited Redirect link should emit a non-piped wikitext link
29784 <link rel="mw:PageProp/redirect" href="Bar" data-parsoid='{"a":{"href":"./Foo"},"sa":{"href":"Foo"}}'>
29790 T75121: Infer extension name from typeOf if data-mw is not present
29792 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
29794 <div typeOf="mw:Extension/foo"></div>
29799 # Note that the <p> wrapping isn't present in PHP parser output
29800 # The important thing for this test is that P-wrapping doesn't
29801 # interfere with the <nowiki> protection for leading - in <td>
29802 # (which isn't necessary for <th>).
29804 T88318: p-wrapped dash in table.
29806 parsoid=html2wt,wt2wt
29809 <tr><th><p>-</p></th><th><p>- </p></th></tr>
29810 <tr><td><p>-</p></td><td><p>- </p></td></tr>
29811 <tr><td><small>-</small></td><td><br/><p>-</p></td><td><br/>-</td></tr>
29818 |<nowiki>-</nowiki>
29819 |<nowiki>- </nowiki>
29839 <td><small>-</small>
29846 </td></tr></tbody></table>
29850 T149209: WTS: Handle newlines in table cells properly
29858 </td><td data-parsoid='{"stx":"row"}'>c</td></tr>
29860 </td><td data-parsoid='{"stx":"row", "startTagSrc": "{{!}}{{!}}"}'>y</td></tr>
29866 </th><th data-parsoid='{"stx":"row"}'>c</th></tr>
29868 </th><th data-parsoid='{"stx":"row"}'>y</th></tr>
29890 T149209: Selser: Handle newlines in table cells properly
29893 "modes": ["selser"],
29895 [ "#h1", "html", "a\nb\n" ],
29896 [ "#h2", "html", "a\nb\n" ],
29897 [ "#c1", "html", "a\nb\n" ],
29898 [ "#c2", "html", "<p>a</p>" ],
29899 [ "#c3", "html", "<p>a</p>" ],
29900 [ "#c4", "html", "edit-me<p>a</p>" ]
29905 ! id="h1" |edit-me!!1
29907 ! id="h2" |edit-me||2
29909 | id="c1" |edit-me||3
29911 | id="c2" |edit-me||4
29913 | id="c3" |edit-me||p||q||r
29915 | id="c4" |edit-me||p||q||r
29944 HTML id attribute with Parsoid-like element ids should not be serialized to wikitext
29949 <td id='mwAc'>foo</td>
29950 <td id='serialize-this'>bar</td>
29955 | id="serialize-this" |bar
29960 Parsoid-like element ids should not be serialized to wikitext unless shadowed
29964 <div id="mwAQ" data-parsoid='{"stx":"html","a":{"id":"mwAQ"},"sa":{"id":"hello"}}'>ok</div>
29966 <div id="hello">ok</div>
29970 Testing serialization after deletion in references
29973 "modes": ["wt2wt"],
29979 hi <ref><div id="x">ho</div></ref>
29989 Testing serialization after deletion of table cells
29992 "modes": ["wt2wt", "selser"],
30000 | id="x" |c1 {{!}}{{!}}{{!}}c2 |||c3
30010 Testing selser after addition of new row before first row (T125419)
30013 "modes": ["wt2wt", "selser"],
30015 [ "tr", "before", "<tr><td>X</td></tr>" ]
30031 Serialize new table rows in a HTML table using HTML tags
30034 "modes": ["wt2wt", "selser"],
30036 [ "tr", "before", "<tr><td>X</td></tr>" ]
30040 <table><tr><td>a</td></tr></table>
30042 <table><tr><td>X</td></tr><tr><td>a</td></tr></table>
30046 Serialize new table cells in a HTML row using HTML tags
30049 "modes": ["wt2wt", "selser"],
30051 [ "td", "before", "<td>X</td>" ]
30055 <table><tr><td>a</td></tr></table>
30057 <table><tr><td>X</td><td>a</td></tr></table>
30061 Serialize wikitext list items as HTML list items when embedded in a HTML list
30065 <ul data-parsoid='{"stx": "html"}'>
30066 <li data-parsoid='{}'>a</li>
30081 # Nested list should be inside <li>, that is
30082 # <ul><li>foo<ul>..</ul></li></ul> instead of
30083 # <ul><li>foo</li><ul>..</ul></ul>
30084 # See https://stackoverflow.com/questions/5899337/proper-way-to-make-html-nested-list
30086 Wikitext lists can be nested inside HTML lists
30090 <ul data-parsoid='{"stx": "html"}'>
30091 <li data-parsoid='{"stx": "html"}'>a
30092 <ul><li>b</li></ul>
30096 <ul data-parsoid='{"stx": "html"}'>
30098 <ul><li>y</li></ul>
30116 <ul><li>b</li></ul>
30121 <ul><li>y</li></ul>
30130 "modes": ["wt2wt"],
30132 [ "#xyz", "before", "<b>before</b> stuff " ],
30133 [ "#xyz", "after", " stuff <i>after</i>" ],
30134 [ "#xyz", "html", "x <b>y</b> z" ]
30138 <span id="xyz">hello</span>
30140 '''before''' stuff <span id="xyz">x '''y''' z</span> stuff ''after''
30144 Never serialize a-tag as html, regardless of what data-parsoid has to say
30146 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
30148 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"html"}'>Foo</a>
30153 ## SSS FIXME: This is broken output nevertheless.
30154 ## What might be a reasonable non-broken output for this?
30155 ## This is an edge case unlikely to be seen in production
30156 ## that I am not wasting more time on this right now.
30158 Never serialize a-tag as html, no matter what attributes it has
30160 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
30162 <a bad='true' href='http://boo.org'><img src='http://boohoo.org' /></a>
30164 [http://boo.org http://boohoo.org]
30167 # Misnested is an indication that selser can reuse the source but these have
30168 # shown to sneak through on occasion. See T101768.
30169 # The original wikitext here is: [http://test.com [[one]] two three]
30171 Strip span tags added to mark misnested links
30175 <p data-parsoid='{}'><a rel="mw:ExtLink" href="http://test.com" data-parsoid='{"targetOff":17,"contentOffsets":[17,34]}'></a><a rel="mw:WikiLink" href="./One" title="One" data-parsoid='{"stx":"simple","a":{"href":"./One"},"sa":{"href":"one"},"misnested":true}'>one</a><span data-parsoid='{"misnested":true}'> two three</span></p>
30177 [http://test.com][[one]] two three
30181 Catch regression when unpacking misnested links
30185 {{echo|hi}}[http://example.com [[ho]]]
30187 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</span><a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a><a rel="mw:WikiLink" href="./Ho" title="Ho" data-parsoid='{"misnested":true}'>ho</a></p>
30191 Catch regression when unpacking with trailing content
30193 {{echo|Foo <references/> bar}}
30195 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Foo <references/> bar"}},"i":0}}]}'>Foo </p><ol class="mw-references references" typeof="mw:Extension/references" about="#mwt2" data-mw='{"name":"references","attrs":{}}'></ol><p about="#mwt2"> bar</p>
30199 Use data-parsoid.firstWikitextNode to compute newline constraints for template content
30203 <span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a"}},"i":0}}]}'>a</span><table about="#mwt2" typeof="mw:Transclusion mw:ExpandedAttrs" data-parsoid='{"a":{"{{echo|c\n{{!}}d\n}}":null},"sa":{"{{echo|c\n{{!}}d\n}}":""},"firstWikitextNode":"table","pi":[[{"k":"1"}]]}' data-mw='{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"c\n{{!}}d\n"}},"i":0}},"\n|}"]}'>
30215 ## This test verifies the presence and computation of this attribute indirectly
30216 ## by making an edit and ensuring that the serialization is correct (which it would be
30217 ## only if firstWikitextNode is properly set).
30219 data-parsoid.firstWikitextNode should be computed properly in the presence of fostered content
30222 "modes": ["wt2wt"],
30224 [ "div#x", "remove" ],
30225 [ "div", "before", "<div>new</div>" ]
30229 <div id="x">foo</div>
30231 {{echo|<div>boo</div>
30239 {{echo|<div>boo</div>
30245 # --------------------------------------------
30246 # Tests spec'ing wikitext serialization norms |
30247 # --------------------------------------------
30250 Serialize multi-line indent-pre starting with wikitext syntax
30264 1. Categories should always be serialized on their own line
30268 foo<link rel="mw:PageProp/Category" href="./Category:Foo">bar
30276 2. Categories that are part of templates should not introduce a line break
30278 foo {{echo|<span>bar</span> [[Category:baz]]}} bar
30280 <p>foo <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<span>bar</span> [[Category:baz]]"}},"i":0}}]}'>bar</span><span about="#mwt1"> </span><link rel="mw:PageProp/Category" href="./Category:Baz" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Category:Baz"},"sa":{"href":"Category:baz"}}'/> bar</p>
30283 # Careful while editing these next 2 tests. There are \u200f characters
30284 # before and after the <link> tags in the HTML and following some
30285 # of the categories in wikitext
30286 # Do not remove these characters in edits.
30288 # As part of the serialization, these bidi characters will get stripped.
30290 RTL (\u200f) and LTR (\u200e) markers around category tags should be stripped
30293 "modes": ["html2wt"],
30294 "scrubWikitext": true
30297 <p><link rel="mw:PageProp/Category" href="./קטגוריה:טקסים" />
30298 <link rel="mw:PageProp/Category" href="./קטגוריה:_שיטות_משפט" /></p>
30301 [[קטגוריה: שיטות משפט]]
30305 RTL (\u200f) and LTR (\u200e) markers should not be stripped if followed by a text node
30308 "modes": ["html2wt"],
30309 "scrubWikitext": true
30312 <p><link rel="mw:PageProp/Category" href="./קטגוריה:טקסים" />y</p>
30319 Lists: Add space after bullets
30326 <li><span> baz</span></li>
30331 * <span> baz</span>
30335 1. Headings: Add space before/after == (T53744)
30342 <h2><span> baz</span></h2>
30350 == <span> baz</span> ==
30354 2. Headings: Add space before/after == even after hoisted content
30357 "modes": ["html2wt"],
30358 "scrubWikitext": true
30361 <h2> <link href="./Category:A2" rel="mw:PageProp/Category" />ok</h2>
30369 1. Headings: suppress newly created empty headings
30372 "modes": ["html2wt"],
30373 "scrubWikitext": true
30381 2. Headings: don't suppress empty headings if scrubWikitext is false
30391 3. Headings: suppress empty headings on edits
30394 "modes": ["selser"],
30395 "scrubWikitext": true,
30401 ==<span id="x">foo</span>==
30406 Headings: Replace <br/> with a single whitespace char (when scrubWikitext = true)
30409 "modes": ["html2wt"],
30410 "scrubWikitext": true
30413 <h2>foo<br/>bar</h2>
30414 <h2>foo <span><br/>bar</span> baz</h2>
30418 == foo <span> bar</span> baz ==
30422 Headings: Replace <br/> with a single whitespace char (when scrubWikitext = false)
30425 "modes": ["html2wt"],
30426 "scrubWikitext": false
30429 <h2>foo<br/>bar</h2>
30435 1. WT Quote Tags: suppress newly created empty style tags
30438 "modes": ["html2wt"],
30439 "scrubWikitext": true
30447 2. WT Quote Tags: don't suppress empty style tags if scrubWikitext is false
30453 ''<nowiki/>'''''<nowiki/>'''
30457 3. WT Quote Tags: suppress empty style tags on edits
30460 "modes": ["selser"],
30461 "scrubWikitext": true,
30467 '''<span id="x">foo</span>'''
30472 1. Anchors: suppress newly created empty anchors
30475 "modes": ["html2wt"],
30476 "scrubWikitext": true
30479 <a rel="mw:WikiLink" href="./Test" title="Test"></a>
30484 2. Anchors: don't suppress empty anchors if scrubWikitext is false
30487 "modes": ["html2wt"],
30488 "scrubWikitext": false
30491 <a rel="mw:WikiLink" href="./Test" title="Test"></a>
30497 3. Anchors: suppress empty anchors on edits
30500 "modes": ["selser"],
30501 "scrubWikitext": true,
30507 [[Test|<span id="x">foo</span>]]
30512 3a. Anchors: do not suppress numbered extlinks
30515 "modes": ["wt2wt"],
30516 "scrubWikitext": true
30521 <a rel="mw:ExtLink" href="http://foo.com"></a>
30525 3b. Anchors: do not suppress numbered extlinks
30528 "modes": ["wt2wt"],
30529 "scrubWikitext": true,
30535 [http://foo.com <span id="x">foo</span>]
30541 Normalizations should be restricted to edited content
30544 "modes": ["selser"],
30545 "scrubWikitext": true,
30547 [ "h1", "before", "<i></i>"]
30561 1. Multiple normalizations (html2wt)
30564 "modes": ["html2wt"],
30565 "scrubWikitext": true
30569 <p><a href='Foo' rel='mw:WikiLink'>foo<i></i>
30570 </a><b><i></i></b>x</p>
30579 2. Multiple normalizations (selser)
30582 "modes": ["selser"],
30583 "scrubWikitext": true,
30585 [ "#x", "after", "<h1><i></i></h1>\n<p> bar<b></b></p>"]
30589 <div id="x">foo</div>
30591 <div id="x">foo</div>
30596 1. Indent Pre Nowiki: suppress whitespace at the start of new paragraph
30599 "modes": ["html2wt"],
30600 "scrubWikitext": true
30612 2. Indent Pre Nowiki: don't suppress whitespace at the start of new paragraph if scrubWikitext is false
30619 <nowiki> </nowiki>hi
30621 <nowiki> </nowiki> hello
30625 3. Indent Pre Nowiki: suppress whitespace after newlines in new paragraph or table cell
30628 "modes": ["html2wt"],
30629 "scrubWikitext": true
30638 baz bang</td></tr></table>
30644 bar<span>boo</span></p>
30660 bar<span>boo</span>
30664 4. Indent Pre Nowiki: suppress leading whitespace in edited paragraphs
30667 "modes": ["selser"],
30668 "scrubWikitext": true,
30670 [ "p", "html", " a\n b" ]
30681 1. New links that end in spaces
30684 "modes": ["html2wt"],
30685 "scrubWikitext": false
30688 <p><a rel="mw:WikiLink" href="./Berlin" title="Berlin">Berlin </a>is the capital of Germany.</p>
30689 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo </a><b>bar</b></p>
30690 <p><a rel="mw:WikiLink" href="./Boston" title="Boston">Boston </a> is a city.</p>
30692 [[Berlin ]]<nowiki/>is the capital of Germany.
30696 [[Boston ]] is a city.
30700 2. New links that end in spaces
30703 "modes": ["html2wt"],
30704 "scrubWikitext": true
30707 <p><a rel="mw:WikiLink" href="./Berlin" title="Berlin">Berlin </a>is the capital of Germany.</p>
30708 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo </a><b>bar</b></p>
30709 <p><a rel="mw:WikiLink" href="./Boston" title="Boston">Boston </a> is a city.</p>
30711 [[Berlin]] is the capital of Germany.
30715 [[Boston]] is a city.
30719 1. Table cells with escapable prefixes
30722 "modes": ["html2wt"],
30723 "scrubWikitext": false
30727 <tr><td>a</td></tr>
30728 <tr><td>-</td></tr>
30729 <tr><td>+</td></tr>
30730 <tr><td>}</td></tr>
30736 |<nowiki>-</nowiki>
30738 |<nowiki>+</nowiki>
30740 |<nowiki>}</nowiki>
30745 2. Table cells with escapable prefixes
30748 "modes": ["html2wt"],
30749 "scrubWikitext": true
30753 <tr><td>a</td></tr>
30754 <tr><td>-</td></tr>
30755 <tr><td>+</td></tr>
30756 <tr><td>}</td></tr>
30771 3a. Table cells with escapable prefixes after edits
30774 "modes": ["selser"],
30775 "scrubWikitext": true,
30777 [ "table tbody tr:first-child td:first-child", "remove"]
30791 3b. Table cells with escapable prefixes after edits
30794 "modes": ["selser"],
30795 "scrubWikitext": true,
30797 [ "table tbody tr:first-child td:first-child", "html", "-" ],
30804 |<span id="x">foo</span>+
30813 # FIXME: This test will fail because
30814 # normalization doesn't realize that the id attribute
30815 # will eliminate the escapable scenario
30817 4a. Table cells without escapable prefixes after edits
30820 "modes": ["selser"],
30821 "scrubWikitext": true,
30823 [ "#x", "html", "-" ]
30836 ## This tests normalizer's ability to discriminate between
30837 ## cells having identical content.
30839 4b. Table cells without escapable prefixes after edits
30842 "modes": ["selser"],
30843 "scrubWikitext": true,
30845 [ "td", "html", "-" ]
30858 ## This tests normalizer's ability to not be tripped by
30859 ## comments (and whitespace)
30861 4c. Table cells without escapable prefixes after edits
30864 "modes": ["selser"],
30865 "scrubWikitext": true,
30867 [ "table tbody tr td:first-child", "remove" ]
30882 ## This tests normalizer's ability to handle HTML cells
30884 4d. Table cells without escapable prefixes after edits
30887 "modes": ["selser"],
30888 "scrubWikitext": true,
30890 [ "td", "html", "-" ]
30895 <tr><td>a</td></tr>
30899 <tr><td>-</td></tr>
30903 ## T111151 Remove font elements without attributes
30905 5a. font tags without attributes should be dropped in scrubWikitext mode
30908 "modes": ["html2wt"],
30909 "scrubWikitext": true
30913 <font><font>bar</font></font>
30914 <font class="x">boo</font>
30918 <font class="x">boo</font>
30922 5b. font tags should not be dropped without scrubWikitext being enabled
30925 "modes": ["html2wt"],
30926 "scrubWikitext": false
30935 Escape nowiki DOM elements
30939 <nowiki><i>foo</i></nowiki>
30941 <nowiki>''foo''</nowiki>
30944 # This is meant to be an interim fix while we go about figuring out
30945 # how to not introduce these trailing <nowiki/>s in the first place.
30947 T115717: Strip trailing <nowiki/>s (without affecting valid uses)
30951 <p>x<meta typeof="mw:Placeholder" data-parsoid='{"src":"<nowiki/>"}'/><meta typeof="mw:Placeholder" data-parsoid='{"src":"<nowiki/>"}'/>
30953 <p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","named":true,"spc":["\n"," "," ",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki/>"}},"i":0}}]}'></span></p>
30954 <p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","named":true,"spc":["\n"," "," ","\n"]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki/>"}},"i":0}}]}'></span></p>
30968 New list is serialized on newlines
30972 <p>The quick brown fox jumps over the lazy dog.</p><ul>
30976 </ul><p>The quick onyx goblin jumps over the lazy dwarf.</p>
30978 The quick brown fox jumps over the lazy dog.
30984 The quick onyx goblin jumps over the lazy dwarf.
30988 New lists in formatting elements serialized w/o newlines
31000 <small><ul><li>hi</li></ul></small>
31012 New list in table doesn't need newlines
31016 <table><tr><td><ul><li>test</li><li>123</li></td></tr></table>
31025 # ---------------------------------------------------
31026 # End of tests spec'ing wikitext serialization norms |
31027 # ---------------------------------------------------
31031 Bare inline nodes not wrapped inside p-tags should be treated as p-wrapped
31039 <td><b>c</b><p>d</p></td>
31058 Anchor without href scenarios
31060 parsoid={ "modes": ["html2wt"], "suppressErrors": true }
31063 <a class="no">dice</a>
31068 <span name="foo"></span>
31072 New transclusion added after a list should be serialized after the list
31076 <ul><li>a</li></ul><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>
31082 # -----------------------------------------------------------------
31083 # End of section for Parsoid-only html2wt tests for serialization
31085 # -----------------------------------------------------------------
31087 # -----------------------------------------------------------------
31088 # The following section of tests are primarily to spec behavior of
31089 # the selective serializer. All these tests have manual selser
31090 # changes. The automated selser changes for all tests handle the
31091 # wide variation of changes, but these tests here capture specs
31092 # deterministically.
31093 # ----------------------------------------------------------------
31097 Selser: New comments should not be lost
31100 "modes": ["selser"],
31102 [ "#a", "after", "<!--c1-->" ],
31103 [ "#b", "before", "<!--c2-->" ]
31107 <span id="a">a</span>
31109 <span id="b">b</span>
31111 <span id="a">a</span><!--c1-->
31113 <!--c2--><span id="b">b</span>
31118 Selser: Check for validity of DSR before using it
31121 "modes": ["selser"],
31123 [ "#a", "before", "<meta property='mw:PageProp/displaytitle' content='foo'>" ]
31127 <span id="a">a</span>
31129 {{DISPLAYTITLE:foo}}
31130 <span id="a">a</span>
31134 1. DOMDiff: Changes to <ref> content should be looked up using id
31137 "modes": ["selser"],
31139 ["#X", "after", "bar"],
31140 ["#Y", "after", "baz"]
31144 X <ref><span id="X">foo</span></ref>
31147 <ref name="a"><span id="Y">foo</span></ref>
31150 X <ref><span id="X">foo</span>bar</ref>
31153 <ref name="a"><span id="Y">foo</span>baz</ref>
31158 2. DOMDiff: Changes to <ref> content should be looked up using id
31161 "modes": ["selser"],
31163 ["#Z", "after", "bar"]
31167 A <ref>foo bar for a</ref>
31168 B <ref group="X" name="b" />
31172 <references group="X">
31173 <ref name="b"><span id="Z">foo</span></ref>
31176 A <ref>foo bar for a</ref>
31177 B <ref group="X" name="b" />
31181 <references group="X">
31182 <ref name="b"><span id="Z">foo</span>bar</ref>
31187 DOMDiff: Edits to content nested in elements with templated attributes should not be lost (T139388)
31190 "modes": ["selser"],
31192 [ "div:first-child", "text", "bar" ]
31196 <div style="{{1x|color:red;}}%">foo</div>
31198 <div style="{{1x|color:red;}}%">bar</div>
31210 <li class="mw-empty-elt"></li>
31211 <li class="mw-empty-elt"></li>
31218 [[File:Thumb.png|thumb]]
31220 <div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Thumb.png" class="image"><img alt="Thumb.png" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Thumb.png" class="internal" title="Enlarge"></a></div></div></div></div>
31222 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Thumb.png"><img resource="./File:Thumb.png" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a></figure>
31226 unclosed internal link XSS (T137264)
31228 [[#%3Cscript%3Ealert(1)%3C/script%3E|
31230 <p>[[#<script>alert(1)</script>|
31233 <p>[[#%3Cscript%3Ealert(1)%3C/script%3E|</p>
31237 Validating that <style> isn't eaten by tidy (T167349)
31242 <style>.foo::before { content: "<foo>"; }</style>
31243 <style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style>
31247 <style>.foo::before { content: "<foo>"; }</style>
31248 <style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style>
31252 <style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style>
31253 <style data-x-data-mw-foobar="baz" typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{"data-x-data-mw-foobar":"baz"},"body":{"extsrc":".foo::after { content: \"<bar>\"; }"}}'>.foo::after { content: "<bar>"; }</style>
31257 ## Right now, Parsoid doesn't de-duplicate style tags.
31258 ## So, we shouldn't see link tags that need to bypass the sanitizer.
31259 ## In a followup patch, when we de-duplicate style tags and
31260 ## introduce link tags, we'll add a hook for link tags in
31261 ## the parser test runner script.
31263 Validating that <style> isn't wrapped in a paragraph (T186965)
31267 A style tag, by itself or with other style/link tags, shouldn't be wrapped in a paragraph
31269 <style>.foo::before { content: "<foo>"; }</style>
31271 <style>.foo::before { content: "<foo>"; }</style> <link rel="foo" href="bar"/><style>.foo::before { content: "<foo>"; }</style>
31273 But if it's on a line with other content, let it be wrapped.
31275 <style>.foo::before { content: "<foo>"; }</style> bar
31277 foo <style>.foo::before { content: "<foo>"; }</style>
31279 foo <style>.foo::before { content: "<foo>"; }</style> bar
31281 And the same if we have non-paragraph-breaking whitespace
31284 <style>.foo::before { content: "<foo>"; }</style>
31287 <p>A style tag, by itself or with other style/link tags, shouldn't be wrapped in a paragraph
31289 <style>.foo::before { content: "<foo>"; }</style>
31290 <style>.foo::before { content: "<foo>"; }</style> <link rel="foo" href="bar"/><style>.foo::before { content: "<foo>"; }</style>
31291 <p>But if it's on a line with other content, let it be wrapped.
31292 </p><p><style>.foo::before { content: "<foo>"; }</style> bar
31293 </p><p>foo <style>.foo::before { content: "<foo>"; }</style>
31294 </p><p>foo <style>.foo::before { content: "<foo>"; }</style> bar
31295 </p><p>And the same if we have non-paragraph-breaking whitespace
31297 <style>.foo::before { content: "<foo>"; }</style>
31301 <p>A style tag, by itself or with other style/link tags, shouldn't be wrapped in a paragraph</p>
31303 <style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style>
31305 <p><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style> <link rel="foo" href="bar"/><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style></p>
31307 <p>But if it's on a line with other content, let it be wrapped.</p>
31309 <p><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style> bar</p>
31311 <p>foo <style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style></p>
31313 <p>foo <style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style> bar</p>
31315 <p>And the same if we have non-paragraph-breaking whitespace</p>
31318 <style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"<foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style>
31323 Validating that <link> isn't wrapped in a paragraph (T186965)
31327 A link tag, by itself or with other style/link tags, shouldn't be wrapped in a paragraph
31329 <link rel="foo" href="bar"/>
31331 <link rel="foo" href="bar"/> <style>.foo::before { content: "<foo>"; }</style><link rel="foo" href="bar"/>
31333 But if it's on a line with other content, let it be wrapped.
31335 <link rel="foo" href="bar"/> bar
31337 foo <link rel="foo" href="bar"/>
31339 foo <link rel="foo" href="bar"/> bar
31341 And the same if we have non-paragraph-breaking whitespace
31344 <link rel="foo" href="bar"/>
31347 <p>A link tag, by itself or with other style/link tags, shouldn't be wrapped in a paragraph
31349 <link rel="foo" href="bar"/>
31350 <link rel="foo" href="bar"/> <style>.foo::before { content: "<foo>"; }</style><link rel="foo" href="bar"/>
31351 <p>But if it's on a line with other content, let it be wrapped.
31352 </p><p><link rel="foo" href="bar"/> bar
31353 </p><p>foo <link rel="foo" href="bar"/>
31354 </p><p>foo <link rel="foo" href="bar"/> bar
31355 </p><p>And the same if we have non-paragraph-breaking whitespace
31357 <link rel="foo" href="bar"/>
31363 Extension returning multiple nodes starting with a style tag roundtrips
31368 {{echo|<html><style>.hi { color: red; }</style>
31370 <tr><td class="hi">ho</td></tr>
31373 <p about="#mwt5" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE_html","pi":[[{"k":"1"}]]}' data-mw='{"parts":["<table>\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<html><style>.hi { color: red; }</style>\n</html>"}},"i":0}},"\n<tr><td class=\"hi\">ho</td></tr>\n</table>"]}'><style typeof="mw:Extension/html" about="#mwt4" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"<style>.hi { color: red; }</style>\n"}}'>.hi { color: red; }</style><span about="#mwt4">
31374 </span></p><table about="#mwt5" data-parsoid='{"stx":"html"}'>
31376 <tbody><tr><td class="hi">ho</td></tr>
31381 Decoding of HTML entities in headings and links for IDs and link fragments (T103714)
31383 wgFragmentMode=[ 'html5', 'legacy' ]
31385 ==A&B&C&amp;D&amp;amp;E==
31386 [[#A&B&C&amp;D&amp;amp;E]]
31388 <h2><span id="A.26B.26C.26amp.3BD.26amp.3Bamp.3BE"></span><span class="mw-headline" id="A&B&C&amp;D&amp;amp;E">A&B&C&amp;D&amp;amp;E</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: A&B&C&amp;D&amp;amp;E">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31389 <p><a href="#A&B&C&amp;D&amp;amp;E">#A&B&C&amp;D&amp;amp;E</a>
31392 <h2 id="A&B&C&amp;D&amp;amp;E"><span id="A.26B.26C.26amp.3BD.26amp.3Bamp.3BE" typeof="mw:FallbackId" data-parsoid="{}"></span>A&B<span typeof="mw:Entity" data-parsoid='{"src":"&amp;","srcContent":"&"}'>&</span>C<span typeof="mw:Entity" data-parsoid='{"src":"&amp;","srcContent":"&"}'>&</span>amp;D<span typeof="mw:Entity" data-parsoid='{"src":"&amp;","srcContent":"&"}'>&</span>amp;amp;E</h2>
31393 <p><a rel="mw:WikiLink" href="./Parser_test#A&B&C&amp;D&amp;amp;E" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#A&B&C&amp;D&amp;amp;E"},"sa":{"href":"#A&B&amp;C&amp;amp;D&amp;amp;amp;E"}}'>#A&B&C&amp;D&amp;amp;E</a></p>
31397 Decoding of HTML entities in headings and links for IDs and link fragments (T103714) (legacy)
31399 wgFragmentMode=[ 'legacy' ]
31401 ==A&B&C&amp;D&amp;amp;E==
31402 [[#A&B&C&amp;D&amp;amp;E]]
31404 <h2><span class="mw-headline" id="A.26B.26C.26amp.3BD.26amp.3Bamp.3BE">A&B&C&amp;D&amp;amp;E</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: A&B&C&amp;D&amp;amp;E">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31405 <p><a href="#A.26B.26C.26amp.3BD.26amp.3Bamp.3BE">#A&B&C&amp;D&amp;amp;E</a>
31410 Decoding of HTML entities in embedded HTML tags
31412 <table class="1&2&3&amp;4&amp;amp;5"><tr><td>x</td></tr></table>
31414 <table class="1&2&3&amp;4&amp;amp;5"><tr><td>x</td></tr></table>
31417 <table class="1&2&3&amp;4&amp;amp;5" data-parsoid='{"stx":"html","a":{"class":"1&2&3&amp;4&amp;amp;5"},"sa":{"class":"1&2&amp;3&amp;amp;4&amp;amp;amp;5"}}'><tbody><tr data-parsoid='{"stx":"html"}'><td data-parsoid='{"stx":"html"}'>x</td></tr></tbody></table>
31421 Decoding of HTML entities in indicator names for IDs (T104196)
31423 parsoid=wt2html,html2html
31426 <indicator name="1&2&3&amp;4&amp;amp;5">Indicator</indicator>
31428 1&2&3&4&amp;5=Indicator
31431 <p><span typeof="mw:Extension/indicator" about="#mwt3" data-mw='{"name":"indicator","attrs":{"name":"1&2&3&amp;4&amp;amp;5"},"body":{"extsrc":"Indicator"}}'></span></p>
31434 # this version of the test strips out the ambiguity so Parsoid rts cleanly
31436 Decoding of HTML entities in indicator names for IDs (unambiguous) (T104196)
31440 <indicator name="1&2&3&amp;4&amp;amp;5">Indicator</indicator>
31442 1&2&3&4&amp;5=Indicator
31445 <p><span typeof="mw:Extension/indicator" about="#mwt3" data-mw='{"name":"indicator","attrs":{"name":"1&2&3&amp;4&amp;amp;5"},"body":{"extsrc":"Indicator"}}'></span></p>
31448 # This fragment mode is what Parsoid supports.
31450 HTML5 ids: fallback to legacy
31452 wgFragmentMode=[ 'html5', 'legacy' ]
31464 ==Hey < # " > % : '==
31465 [[#Foo bar]] [[#foo Bar]] [[#Тест]] [[#тест]] [[#Hey < # " > % : ']]
31467 {{anchorencode:💩}} <span id="{{anchorencode:💩}}"></span>
31469 <!-- These two links should produce identical HTML -->
31470 [[#啤酒]] [[#%E5%95%A4%E9%85%92]]
31473 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
31475 <li class="toclevel-1 tocsection-1"><a href="#Foo_bar"><span class="tocnumber">1</span> <span class="toctext">Foo bar</span></a></li>
31476 <li class="toclevel-1 tocsection-2"><a href="#foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext">foo Bar</span></a></li>
31477 <li class="toclevel-1 tocsection-3"><a href="#Тест"><span class="tocnumber">3</span> <span class="toctext">Тест</span></a></li>
31478 <li class="toclevel-1 tocsection-4"><a href="#Тест_2"><span class="tocnumber">4</span> <span class="toctext">Тест</span></a></li>
31479 <li class="toclevel-1 tocsection-5"><a href="#тест"><span class="tocnumber">5</span> <span class="toctext">тест</span></a></li>
31480 <li class="toclevel-1 tocsection-6"><a href="#Hey_<_#_"_>_%_:_'"><span class="tocnumber">6</span> <span class="toctext">Hey < # " > % : '</span></a></li>
31484 <h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31485 <h2><span class="mw-headline" id="foo_Bar_2">foo Bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31486 <h2><span id=".D0.A2.D0.B5.D1.81.D1.82"></span><span class="mw-headline" id="Тест">Тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31487 <h2><span id=".D0.A2.D0.B5.D1.81.D1.82_2"></span><span class="mw-headline" id="Тест_2">Тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31488 <h2><span id=".D1.82.D0.B5.D1.81.D1.82"></span><span class="mw-headline" id="тест">тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31489 <h2><span id="Hey_.3C_.23_.22_.3E_.25_:_.27"></span><span class="mw-headline" id="Hey_<_#_"_>_%_:_'">Hey < # " > % : '</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: Hey < # " > % : '">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31490 <p><a href="#Foo_bar">#Foo bar</a> <a href="#foo_Bar">#foo Bar</a> <a href="#Тест">#Тест</a> <a href="#тест">#тест</a> <a href="#Hey_<_#_"_>_%_:_'">#Hey < # " > % : '</a>
31491 </p><p>💩 <span id="💩"></span>
31492 </p><p><a href="#啤酒">#啤酒</a> <a href="#啤酒">#啤酒</a>
31495 <h2 id="Foo_bar">Foo bar</h2>
31497 <h2 id="foo_Bar_2">foo Bar</h2>
31499 <h2 id="Тест"><span id=".D0.A2.D0.B5.D1.81.D1.82" typeof="mw:FallbackId"></span>Тест</h2>
31501 <h2 id="Тест_2"><span id=".D0.A2.D0.B5.D1.81.D1.82_2" typeof="mw:FallbackId"></span>Тест</h2>
31503 <h2 id="тест"><span id=".D1.82.D0.B5.D1.81.D1.82" typeof="mw:FallbackId"></span>тест</h2>
31505 <h2 id="Hey_<_#_"_>_%_:_'"><span id="Hey_.3C_.23_.22_.3E_.25_:_.27" typeof="mw:FallbackId"></span>Hey < # " > %<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"src":" ","isDisplayHack":true}'> </span>: '</h2>
31506 <p><a rel="mw:WikiLink" href="./Parser_test#Foo_bar">#Foo bar</a> <a rel="mw:WikiLink" href="./Parser_test#foo_Bar">#foo Bar</a> <a rel="mw:WikiLink" href="./Parser_test#Тест">#Тест</a> <a rel="mw:WikiLink" href="./Parser_test#тест">#тест</a> <a rel="mw:WikiLink" href="./Parser_test#Hey_<_#_"_>_%_:_'" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Hey_<_#_\"_>_%_:_'"},"sa":{"href":"#Hey < # \" > % : '"}}'>#Hey < # " > % : '</a></p>
31508 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"anchorencode:💩","function":"anchorencode"},"params":{},"i":0}}]}'>💩</span> <span id="💩" about="#mwt3" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"id"},{"html":"<span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[178,197,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"anchorencode:💩\",\"function\":\"anchorencode\"},\"params\":{},\"i\":0}}]}'>💩</span>"}]]}'></span></p>
31510 <!-- These two links should produce identical HTML -->
31511 <p><a rel="mw:WikiLink" href="./Parser_test#啤酒">#啤酒</a> <a rel="mw:WikiLink" href="./Parser_test#啤酒" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#啤酒"},"sa":{"href":"#%E5%95%A4%E9%85%92"}}'>#啤酒</a></p>
31514 # Parsoid doesn't support this mode
31516 HTML5 ids: legacy with a fallback to modern
31518 wgFragmentMode=[ 'legacy', 'html5' ]
31530 ==Hey < # " > % : '==
31531 [[#Foo bar]] [[#foo Bar]] [[#Тест]] [[#тест]] [[#Hey < # " > % : ']]
31533 {{anchorencode:💩}} <span id="{{anchorencode:💩}}"></span>
31535 <!-- These two links should produce identical HTML -->
31536 [[#啤酒]] [[#%E5%95%A4%E9%85%92]]
31539 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
31541 <li class="toclevel-1 tocsection-1"><a href="#Foo_bar"><span class="tocnumber">1</span> <span class="toctext">Foo bar</span></a></li>
31542 <li class="toclevel-1 tocsection-2"><a href="#foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext">foo Bar</span></a></li>
31543 <li class="toclevel-1 tocsection-3"><a href="#.D0.A2.D0.B5.D1.81.D1.82"><span class="tocnumber">3</span> <span class="toctext">Тест</span></a></li>
31544 <li class="toclevel-1 tocsection-4"><a href="#.D0.A2.D0.B5.D1.81.D1.82_2"><span class="tocnumber">4</span> <span class="toctext">Тест</span></a></li>
31545 <li class="toclevel-1 tocsection-5"><a href="#.D1.82.D0.B5.D1.81.D1.82"><span class="tocnumber">5</span> <span class="toctext">тест</span></a></li>
31546 <li class="toclevel-1 tocsection-6"><a href="#Hey_.3C_.23_.22_.3E_.25_:_.27"><span class="tocnumber">6</span> <span class="toctext">Hey < # " > % : '</span></a></li>
31550 <h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31551 <h2><span class="mw-headline" id="foo_Bar_2">foo Bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31552 <h2><span id="Тест"></span><span class="mw-headline" id=".D0.A2.D0.B5.D1.81.D1.82">Тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31553 <h2><span id="Тест_2"></span><span class="mw-headline" id=".D0.A2.D0.B5.D1.81.D1.82_2">Тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31554 <h2><span id="тест"></span><span class="mw-headline" id=".D1.82.D0.B5.D1.81.D1.82">тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31555 <h2><span id="Hey_<_#_"_>_%_:_'"></span><span class="mw-headline" id="Hey_.3C_.23_.22_.3E_.25_:_.27">Hey < # " > % : '</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: Hey < # " > % : '">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31556 <p><a href="#Foo_bar">#Foo bar</a> <a href="#foo_Bar">#foo Bar</a> <a href="#.D0.A2.D0.B5.D1.81.D1.82">#Тест</a> <a href="#.D1.82.D0.B5.D1.81.D1.82">#тест</a> <a href="#Hey_.3C_.23_.22_.3E_.25_:_.27">#Hey < # " > % : '</a>
31557 </p><p>.F0.9F.92.A9 <span id=".F0.9F.92.A9"></span>
31558 </p><p><a href="#.E5.95.A4.E9.85.92">#啤酒</a> <a href="#.E5.95.A4.E9.85.92">#啤酒</a>
31562 # Parsoid doesn't support this mode.
31564 HTML5 ids: no legacy
31566 wgFragmentMode=[ 'html5' ]
31578 ==Hey < # " > % : '==
31579 [[#Foo bar]] [[#foo Bar]] [[#Тест]] [[#тест]] [[#Hey < # " > % : ']]
31581 {{anchorencode:💩}} <span id="{{anchorencode:💩}}"></span>
31583 <!-- These two links should produce identical HTML -->
31584 [[#啤酒]] [[#%E5%95%A4%E9%85%92]]
31587 <div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
31589 <li class="toclevel-1 tocsection-1"><a href="#Foo_bar"><span class="tocnumber">1</span> <span class="toctext">Foo bar</span></a></li>
31590 <li class="toclevel-1 tocsection-2"><a href="#foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext">foo Bar</span></a></li>
31591 <li class="toclevel-1 tocsection-3"><a href="#Тест"><span class="tocnumber">3</span> <span class="toctext">Тест</span></a></li>
31592 <li class="toclevel-1 tocsection-4"><a href="#Тест_2"><span class="tocnumber">4</span> <span class="toctext">Тест</span></a></li>
31593 <li class="toclevel-1 tocsection-5"><a href="#тест"><span class="tocnumber">5</span> <span class="toctext">тест</span></a></li>
31594 <li class="toclevel-1 tocsection-6"><a href="#Hey_<_#_"_>_%_:_'"><span class="tocnumber">6</span> <span class="toctext">Hey < # " > % : '</span></a></li>
31598 <h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31599 <h2><span class="mw-headline" id="foo_Bar_2">foo Bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31600 <h2><span class="mw-headline" id="Тест">Тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31601 <h2><span class="mw-headline" id="Тест_2">Тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=4" title="Edit section: Тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31602 <h2><span class="mw-headline" id="тест">тест</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=5" title="Edit section: тест">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31603 <h2><span class="mw-headline" id="Hey_<_#_"_>_%_:_'">Hey < # " > % : '</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=6" title="Edit section: Hey < # " > % : '">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31604 <p><a href="#Foo_bar">#Foo bar</a> <a href="#foo_Bar">#foo Bar</a> <a href="#Тест">#Тест</a> <a href="#тест">#тест</a> <a href="#Hey_<_#_"_>_%_:_'">#Hey < # " > % : '</a>
31605 </p><p>💩 <span id="💩"></span>
31606 </p><p><a href="#啤酒">#啤酒</a> <a href="#啤酒">#啤酒</a>
31611 T90902: Normalize weird characters in section IDs
31613 wgFragmentMode=[ 'html5', 'legacy' ]
31619 <h2><span class="mw-headline" id="Foo_bar">Foo bar</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
31620 <p><a href="#Foo_bar">#Foo bar</a>
31623 <h2 id="Foo_bar"> Foo<span typeof="mw:Entity" data-parsoid='{"src":"&nbsp;","srcContent":" "}'> </span>bar </h2>
31624 <p><a rel="mw:WikiLink" href="./Parser_test#Foo_bar" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#Foo_bar"},"sa":{"href":"#Foo&nbsp;bar"}}'>#Foo bar</a></p>
31628 T51672: Test for brackets in attributes of elements in external link texts
31630 [http://example.com/ link <span title="title with [brackets]">span</span>]
31631 [http://example.com/ link <span title="title with [brackets]">span</span>]
31634 <p><a rel="nofollow" class="external text" href="http://example.com/">link <span title="title with [brackets]">span</span></a>
31635 <a rel="nofollow" class="external text" href="http://example.com/">link <span title="title with [brackets]">span</span></a>
31638 <p><a rel="mw:ExtLink" class="external text" href="http://example.com/">link <span title="title with [brackets]">span</span></a>
31639 <a rel="mw:ExtLink" class="external text" href="http://example.com/">link <span title="title with [brackets]" data-parsoid='{"stx":"html","a":{"title":"title with [brackets]"},"sa":{"title":"title with &#91;brackets&#93;"}}'>span</span></a></p>
31643 T72875: Test for brackets in attributes of elements in internal link texts
31645 [[Foo|link <span title="title with [[double brackets]]">span</span>]]
31646 [[Foo|link <span title="title with [[double brackets]]">span</span>]]
31649 <p><a href="/wiki/Foo" title="Foo">link <span title="title with [[double brackets]]">span</span></a>
31650 <a href="/wiki/Foo" title="Foo">link <span title="title with [[double brackets]]">span</span></a>
31653 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">link <span title="title with [[double brackets]]">span</span></a>
31654 <a rel="mw:WikiLink" href="./Foo" title="Foo">link <span title="title with [[double brackets]]" data-parsoid='{"stx":"html","a":{"title":"title with [[double brackets]]"},"sa":{"title":"title with &#91;&#91;double brackets&#93;&#93;"}}'>span</span></a></p>
31658 T199926: html arrow wt: Parsoid sometimes trips up on verticalbar chars in hrefs
31661 "modes": ["html2wt"]
31664 <a href="https://stats.wikimedia.org/v2/#/fr.wikipedia.org/reading/page-views-by-country/normal|map|2-Year~2016060100~2018071100|~total">9</a>
31665 <a href="https://stats.wikimedia.org/v2/#/fr.wikipedia.org/reading/page-views-by-country/normal%7Cmap%7C2-Year~2016060100~2018071100%7C~total">10</a>
31667 [https://stats.wikimedia.org/v2/#/fr.wikipedia.org/reading/page-views-by-country/normal|map|2-Year~2016060100~2018071100|~total 9]
31668 [[stats:v2/#/fr.wikipedia.org/reading/page-views-by-country/normal%7Cmap%7C2-Year~2016060100~2018071100%7C~total|10]]
31672 T179544: {{anchorencode:}} output should be always usable in links
31674 wgFragmentMode=[ 'html5' ]
31676 <span id="{{anchorencode:[foo]}}"></span>[[#{{anchorencode:[foo]}}]]
31678 <p><span id="[foo]"></span><a href="#[foo]">#[foo]</a>
31681 <p><span id="[foo]" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"id":"[foo]"},"sa":{"id":"{{anchorencode:[foo]}}"}}' data-mw='{"attribs":[[{"txt":"id"},{"html":"<span typeof=\"mw:Transclusion mw:Entity\" about=\"#mwt1\" data-parsoid='{\"srcContent\":\"[\",\"dsr\":[10,32,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"anchorencode:[foo]\",\"function\":\"anchorencode\"},\"params\":{},\"i\":0}}]}'>[</span><span about=\"#mwt1\" data-parsoid=\"{}\">foo</span><span typeof=\"mw:Entity\" about=\"#mwt1\" data-parsoid='{\"src\":\"&amp;#x5D;\",\"srcContent\":\"]\"}'>]</span>"}]]}'></span><a typeof="mw:ExpandedAttrs" about="#mwt4" rel="mw:WikiLink" href="./Parser_test#[foo]" data-parsoid='{"stx":"simple","a":{"href":"./Parser_test#[foo]"},"sa":{"href":"#{{anchorencode:[foo]}}"}}' data-mw='{"attribs":[[{"txt":"href"},{"html":"#<span typeof=\"mw:Transclusion mw:Entity\" about=\"#mwt2\" data-parsoid='{\"srcContent\":\"[\",\"dsr\":[44,66,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"anchorencode:[foo]\",\"function\":\"anchorencode\"},\"params\":{},\"i\":0}}]}'>[</span><span about=\"#mwt2\" data-parsoid=\"{}\">foo</span><span typeof=\"mw:Entity\" about=\"#mwt2\" data-parsoid='{\"src\":\"&amp;#x5D;\",\"srcContent\":\"]\"}'>]</span>"}]]}'>#[foo]</a></p>
31684 ## ------------------------------
31685 ## Parsoid section-wrapping tests
31686 ## ------------------------------
31688 Section wrapping for well-nested sections (no leading content)
31691 "wrapSections": true
31712 <section data-mw-section-id="0"></section><section data-mw-section-id="1"><h1 id="1">1</h1>
31715 </section><section data-mw-section-id="2"><h1 id="2">2</h1>
31718 <section data-mw-section-id="3"><h2 id="2.1">2.1</h2>
31721 </section><section data-mw-section-id="4"><h2 id="2.2">2.2</h2>
31724 <section data-mw-section-id="5"><h3 id="2.2.1">2.2.1</h3>
31727 </section></section></section><section data-mw-section-id="6"><h1 id="3">3</h1>
31734 Section wrapping for well-nested sections (with leading content)
31737 "wrapSections": true
31742 Para 2 with a <div>nested in it</div>
31755 <section data-mw-section-id="0"><p>Para 1.</p>
31757 <p>Para 2 with a </p><div>nested in it</div>
31761 </section><section data-mw-section-id="1"><h1 id="1">1</h1>
31764 </section><section data-mw-section-id="2"><h1 id="2">2</h1>
31767 <section data-mw-section-id="3"><h2 id="2.1">2.1</h2>
31770 </section></section>
31774 Section wrapping with template-generated sections (good nesting 1)
31777 "wrapSections": true
31794 <section data-mw-section-id="0"></section><section data-mw-section-id="1"><h1 id="1">1</h1>
31797 <section data-mw-section-id="-1"><h2 about="#mwt1" typeof="mw:Transclusion" id="1.1" data-parsoid='{"dsr":[9,33,null,null],"pi":[[{"k":"1","named":true,"spc":["","","\n","\n"]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"==1.1==\nb"}},"i":0}}]}'>1.1</h2><span about="#mwt1">
31798 </span><p about="#mwt1">b</p>
31799 </section><section data-mw-section-id="3"><h2 id="1.2">1.2</h2>
31802 </section></section><section data-mw-section-id="4"><h1 id="2">2</h1>
31806 # In this example, the template scope is mildly expanded to incorporate the
31807 # trailing newline after the transclusion since that is part of section 1.1.1
31809 Section wrapping with template-generated sections (good nesting 2)
31812 "wrapSections": true,
31813 "modes": ["wt2html", "wt2wt"]
31828 <section data-mw-section-id="0"></section><section data-mw-section-id="1"><h1 id="1">1</h1>
31831 <section data-mw-section-id="-1"><h2 about="#mwt1" typeof="mw:Transclusion" id="1.1" data-parsoid='{"dsr":[9,50,null,null],"pi":[[{"k":"1","named":true,"spc":["","","\n","\n"]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"==1.1==\nb\n===1.1.1===\nd"}},"i":0}},"\n"]}'>1.1</h2><span about="#mwt1">
31832 </span><p about="#mwt1">b</p><span about="#mwt1">
31833 </span><section data-mw-section-id="-1" about="#mwt1"><h3 about="#mwt1" id="1.1.1">1.1.1</h3><span about="#mwt1">
31834 </span><p about="#mwt1">d</p><span about="#mwt1">
31835 </span></section></section></section><section data-mw-section-id="4" data-parsoid="{}"><h1 id="2">2</h1>
31839 # In this example, the template scope is mildly expanded to incorporate the
31840 # trailing newline after the transclusion since that is part of section 1.2.1
31842 Section wrapping with template-generated sections (good nesting 3)
31845 "wrapSections": true,
31846 "modes": ["wt2html", "wt2wt"]
31864 <section data-mw-section-id="0"></section><section data-mw-section-id="1" data-parsoid="{}"><h1 id="1"> 1 </h1>
31867 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"dsr":[9,60,0,0],"pi":[[{"k":"1","named":true,"spc":["","","\n","\n"]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"x\n==1.1==\nb\n==1.2==\nc\n===1.2.1===\nd"}},"i":0}},"\n"]}'>x</p><span about="#mwt1">
31868 </span><section data-mw-section-id="-1" about="#mwt1"><h2 about="#mwt1" id="1.1">1.1</h2><span about="#mwt1">
31869 </span><p about="#mwt1">b</p><span about="#mwt1">
31870 </span></section><section data-mw-section-id="-1" about="#mwt1"><h2 about="#mwt1" id="1.2">1.2</h2><span about="#mwt1">
31871 </span><p about="#mwt1">c</p><span about="#mwt1">
31872 </span><section data-mw-section-id="-1" about="#mwt1"><h3 about="#mwt1" id="1.2.1">1.2.1</h3><span about="#mwt1">
31873 </span><p about="#mwt1">d</p><span about="#mwt1">
31874 </span></section></section></section><section data-mw-section-id="5"><h1 id="2">2</h1>
31878 # Because of section-wrapping and template-wrapping interactions,
31879 # the scope of the template is expanded so that the template markup
31880 # is valid in the presence of <section> tags.
31881 # This exercises the s1 is null scenario in the wrapSections code
31883 Section wrapping with template-generated sections (bad nesting 1)
31886 "wrapSections": true
31900 <section data-mw-section-id="-1"></section><section data-mw-section-id="-2"><div data-parsoid='{"stx":"html"}'>
31903 <span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n=1=\nb\n"}},"i":0}},"\n\nc\n"]}'>
31904 </span><section data-mw-section-id="-1" about="#mwt1"><h1 about="#mwt1" id="1">1</h1><span about="#mwt1">
31905 </span><p about="#mwt1">b
31906 </p><span about="#mwt1">
31908 </span><p about="#mwt1">c</p><span about="#mwt1">
31909 </span></section></div></section>
31912 # Because of section-wrapping and template-wrapping interactions,
31913 # the scope of the template is expanded so that the template markup
31914 # is valid in the presence of <section> tags.
31915 # This exercises the s1 is ancestor of s2 scenario in the wrapSections code
31917 Section wrapping with template-generated sections (bad nesting 2)
31920 "wrapSections": true
31938 <section data-mw-section-id="0"></section><section data-mw-section-id="1"><h1 id="1">1</h1>
31941 </section><section data-mw-section-id="-1"><h1 about="#mwt1" typeof="mw:Transclusion" id="2" data-parsoid='{"dsr":[9,45,null,null],"pi":[[{"k":"1","named":true,"spc":["","","\n","\n"]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"=2=\nb\n==2.1==\nc"}},"i":0}},"\n\nd\n\n"]}'>2</h1><span about="#mwt1">
31942 </span><p about="#mwt1">b</p><span about="#mwt1">
31943 </span><section data-mw-section-id="-1" about="#mwt1"><h2 about="#mwt1" id="2.1">2.1</h2><span about="#mwt1">
31944 </span><p about="#mwt1">c</p><span about="#mwt1">
31946 </span><p about="#mwt1">d</p><span about="#mwt1">
31948 </span></section></section><section data-mw-section-id="4"><h1 id="3">3</h1>
31952 # Because of section-wrapping and template-wrapping interactions,
31953 # additional template wrappers are added to <section> tags
31954 # so that template wrapping semantics are valid whether section
31955 # tags are retained or stripped. But, the template scope can expand
31956 # greatly when accounting for section tags.
31957 # This exercises the s1 and s2 are in different subtrees scenario
31959 Section wrapping with template-generated sections (bad nesting 3)
31962 "wrapSections": true,
31963 "modes": ["wt2html", "wt2wt"]
31981 <section data-mw-section-id="0"></section><section data-mw-section-id="1" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["=1=\na\n\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"==1.2==\nb\n=2=\nc"}},"i":0}},"\n\nd\n\n"]}'><h1 id="1">1</h1>
31984 <section data-mw-section-id="-1"><h2 about="#mwt1" typeof="mw:Transclusion" id="1.2" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"==1.2==\nb\n=2=\nc"}},"i":0}}]}'>1.2</h2><span about="#mwt1">
31985 </span><p about="#mwt1">b</p><span about="#mwt1">
31986 </span></section></section><section data-mw-section-id="-1" about="#mwt1"><h1 about="#mwt1" id="2">2</h1><span about="#mwt1">
31987 </span><p about="#mwt1">c</p>
31990 </section><section data-mw-section-id="4" data-parsoid="{}"><h1 id="3">3</h1>
31995 Section wrapping with uneditable lead section + div wrapping multiple sections
31998 "wrapSections": true
32003 <div style="border:1px solid red;">
32020 <section data-mw-section-id="-1"><p>foo</p>
32022 </section><section data-mw-section-id="-2"><div style="border:1px solid red;">
32023 <section data-mw-section-id="1"><h1 id="1">1</h1>
32026 <section data-mw-section-id="2"><h2 id="1.1">1.1</h2>
32029 </section></section><section data-mw-section-id="-1"><h1 id="2">2</h1>
32033 </section><section data-mw-section-id="4"><h1 id="3">3</h1>
32036 <section data-mw-section-id="5"><h2 id="3.1">3.1</h2>
32038 </section></section>
32042 Section wrapping with editable lead section + div overlapping multiple sections
32045 "wrapSections": true
32052 <div style="border:1px solid red;">
32069 <section data-mw-section-id="0"><p>foo</p>
32071 </section><section data-mw-section-id="-1"><h1 id="1">1</h1>
32073 </section><section data-mw-section-id="-2"><div style="border:1px solid red;">
32076 <section data-mw-section-id="2"><h2 id="1.1">1.1</h2>
32079 </section><section data-mw-section-id="-1"><h1 id="2">2</h1>
32084 </section><section data-mw-section-id="4"><h1 id="3">3</h1>
32087 <section data-mw-section-id="5"><h2 id="3.1">3.1</h2>
32089 </section></section>
32093 HTML header tags should not be wrapped in section tags
32096 "wrapSections": true
32109 <section data-mw-section-id="0"><p>foo</p>
32111 <h1 id="a" data-parsoid='{"stx":"html"}'>a</h1>
32113 </section><section data-mw-section-id="1"><h1 id="b">b</h1>
32115 <h1 id="c" data-parsoid='{"stx":"html"}'>c</h1>
32117 </section><section data-mw-section-id="2"><h1 id="d">d</h1></section>
32121 Lead section containing only whitespace and comments.
32124 "wrapSections": true
32128 <!-- this is a comment, presumably significant to editors -->
32135 <section data-mw-section-id="0" data-parsoid="{}">
32136 <!-- this is a comment, presumably significant to editors -->
32137 </section><section data-mw-section-id="1"><h1 id="1">1</h1>
32140 </section><section data-mw-section-id="2"><h1 id="2">2</h1>
32145 Pseudo-sections emitted by templates should have id -2
32148 "wrapSections": true
32158 <section data-mw-section-id="-1"><p>foo</p>
32159 </section><section data-mw-section-id="-2"><div about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>\n==a==\n==b==\n</div>\n"}},"i":0}}]}'>
32160 <section data-mw-section-id="-1"><h2 id="a">a</h2>
32161 </section><section data-mw-section-id="-1"><h2 id="b">b</h2>
32162 </section></div><span about="#mwt1">
32166 ##########################################################################
32167 Tests demonstrating white-space insensitivity in input wikitext
32168 for wikitext headings, wikitext list items, and wikitext table captions,
32169 headings, and cells. HTML versions of the same should preserve whitespace.
32170 ##########################################################################
32172 Trim whitespace in wikitext headings, list items, table captions, headings, and cells
32175 "modes": ["wt2html"],
32176 "preserveIEW": true
32180 == <!--c1--> <!--c2--> Spaces <!--c3--> <!--c4--> ==
32181 == <!--c1--> <!--c2--> Tabs <!--c3--><!--c4--> ==
32182 == <!--Headings with fallback ids--> Личная жизнь ==
32183 * <!--c1--> <!--c2--> List item <!--c3--> <!--c4-->
32184 ; <!--term to define--> term : <!--term's definition--> definition
32186 |+ <!--c1--> <!--c2--> Table Caption <!--c3--> <!--c4-->
32188 ! <!--c1--> <!--c2--> Table Heading 1 <!--c3--> <!--c4--> !! Table Heading 2 <!--c5-->
32190 | <!--c1--> <!--c2--> Table Cell 1 <!--c3--> <!--c4--> || Table Cell 2 <!--c5-->
32192 | class="foo" || <!--c1--> <!--c2--> Table Cell 3 <!--c3--> <!--c4-->
32194 | <!--c1--> testing [[one|two]] <!--c2--> | <!--c3--> some content
32197 | <!--c1--> <!--c2--> Table Cell 1 <!--c3--> <!--c4--> || Table Cell 2 <!--c5-->
32200 <h2><span class="mw-headline" id="Spaces">Spaces</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Spaces">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
32201 <h2><span class="mw-headline" id="Tabs">Tabs</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Tabs">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
32202 <h2><span class="mw-headline" id=".D0.9B.D0.B8.D1.87.D0.BD.D0.B0.D1.8F_.D0.B6.D0.B8.D0.B7.D0.BD.D1.8C">Личная жизнь</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=3" title="Edit section: Личная жизнь">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
32203 <ul><li>List item</li></ul>
32204 <dl><dt>term </dt>
32205 <dd>definition</dd></dl>
32207 <caption>Table Caption
32210 <th>Table Heading 1</th>
32211 <th>Table Heading 2
32214 <td>Table Cell 1</td>
32218 <td>class="foo"</td>
32222 <td>testing <a href="/index.php?title=One&action=edit&redlink=1" class="new" title="One (page does not exist)">two</a> | some content
32223 </td></tr></tbody></table>
32226 <td>Table Cell 1</td>
32228 </td></tr></tbody></table> foo</dd></dl>
32230 <meta property="mw:PageProp/notoc">
32231 <h2 id="Spaces"><!--c1--><!--c2-->Spaces<!--c3--><!--c4--></h2>
32232 <h2 id="Tabs"><!--c1--><!--c2-->Tabs<!--c3--><!--c4--></h2>
32233 <h2 id="Личная_жизнь"><span id=".D0.9B.D0.B8.D1.87.D0.BD.D0.B0.D1.8F_.D0.B6.D0.B8.D0.B7.D0.BD.D1.8C" typeof="mw:FallbackId"></span><!--Headings with fallback ids-->Личная жизнь</h2>
32234 <ul><li><!--c1--><!--c2-->List item<!--c3--><!--c4--></li></ul>
32235 <dl><dt><!--term to define-->term </dt><dd><!--term's definition-->definition</dd></dl>
32237 <caption><!--c1--><!--c2-->Table Caption<!--c3--><!--c4--></caption>
32239 <th><!--c1--><!--c2-->Table Heading 1<!--c3--><!--c4--></th><th>Table Heading 2<!--c5--></th></tr>
32241 <td><!--c1--><!--c2-->Table Cell 1<!--c3--><!--c4--></td><td>Table Cell 2<!--c5--></td></tr>
32243 <td>class="foo"</td><td><!--c1--><!--c2-->Table Cell 3<!--c3--><!--c4--></td></tr>
32245 <td><!--c1-->testing <a rel="mw:WikiLink" href="./One" title="One">two</a> <!--c2--> | <!--c3--> some content</td></tr>
32248 <tbody><tr><td><!--c1--><!--c2-->Table Cell 1<!--c3--><!--c4--></td><td>Table Cell 2<!--c5--></td></tr>
32249 </tbody></table> foo<!--c1--></dd></dl>
32252 # Looks like <caption> is not accepted in HTML
32254 Do not trim whitespace in HTML headings, list items, table captions, headings, and cells
32257 "modes": ["wt2html"],
32258 "preserveIEW": true
32262 <h2> <!--c1--> <!--c2--> Heading <!--c3--> <!--c4--> </h2>
32263 <ul><li> <!--c1--> <!--c2--> List item <!--c3--> <!--c4--> </li></ul>
32265 <tr><th> <!--c1--> <!--c2--> Table Heading <!--c3--> <!--c4--> <th></tr>
32266 <tr><td> <!--c1--> <!--c2--> Table Cell <!--c3--> <!--c4--> <th></tr>
32269 <h2><span class="mw-headline" id="Heading"> Heading </span></h2>
32270 <ul><li> List item </li></ul>
32272 <tbody><tr><th> Table Heading </th><th></th></tr>
32273 <tr><td> Table Cell </td><th></th></tr>
32276 <meta property="mw:PageProp/notoc"/>
32277 <h2 id="Heading"> <!--c1--> <!--c2--> Heading <!--c3--> <!--c4--> </h2>
32278 <ul><li> <!--c1--> <!--c2--> List item <!--c3--> <!--c4--> </li></ul>
32280 <tbody><tr><th> <!--c1--> <!--c2--> Table Heading <!--c3--> <!--c4--> </th><th></th></tr>
32281 <tr><td> <!--c1--> <!--c2--> Table Cell <!--c3--> <!--c4--> </td><th></th></tr>
32286 Do not trim whitespace in links and quotes
32289 "modes": ["wt2html"],
32290 "preserveIEW": true
32293 foo '' <!--c1--> italic <!--c2--> '' and ''' <!--c3--> bold <!--c4--> '''
32294 [[Foo| some text ]]
32296 <p>foo <i> italic </i> and <b> bold </b>
32297 <a href="/wiki/Foo" title="Foo"> some text </a>
32300 <p>foo <i> <!--c1--> italic <!--c2--> </i> and <b> <!--c3--> bold <!--c4--> </b>
32301 <a rel="mw:WikiLink" href="./Foo" title="Foo"> some text </a></p>
32305 Remove p tags surrounding a single element in a figcaption
32309 [[File:Foobar.jpg|right|200x200px|Caption]]
32311 <figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption><p>Caption</p></figcaption></figure>
32315 Selser preserves lack of newline before list and allows newline after the list
32318 "modes": ["selser"],
32319 "scrubWikitext": true,
32321 [ "ul", "after", "<p>footer</p>" ]
32338 Selser does not introduce newlines between unedited paragraph preceding the list
32341 "modes": ["selser"],
32343 [ "table tbody tr td p:last-child", "empty" ]
32365 Selser does not introduce newlines between unedited paragraph following the list
32368 "modes": ["selser"],
32370 [ "table tbody tr td p:first-child", "empty" ]
32392 Remove a list item but do not insert newline above list
32395 "modes": ["selser"],
32397 [ "ul li:last-child", "remove" ]