FamilySearch Wiki:Extension tests: Difference between revisions

From FamilySearch Wiki
m (→‎Semantic Meeting Minutes: switch test and expected lines)
(MFAM-266 update tests for installed extensions)
 
Line 7: Line 7:


If you are an admin, you should see links by your personal tools.
If you are an admin, you should see links by your personal tools.


== AdvancedSearch ==
== AdvancedSearch ==
If [[#CirrusSearch]] is enabled, the extension produces the "Advanced Search" form on Special:Search.  
If [[#CirrusSearch]] is enabled, the extension produces the "Advanced Search" form on [[Special:Search]].  
 


== Approved Revs==
== Approved Revs ==
This should be a valid link:
This should be a valid link:
[[Special:ApprovedRevs]]  
[[Special:ApprovedRevs]]  


== Arrays ==
== Arrays ==
Line 21: Line 24:
; Expected
; Expected
: orange, red, yellow, yellow
: orange, red, yellow, yellow


== BatchUserRights ==
== BatchUserRights ==
This should be a valid link:
This should be a valid link:
[[Special:BatchUserRights]]
[[Special:BatchUserRights]]


== Bootstrap ==
== Bootstrap ==
:This test should be done while using the Chameleon skin; [{{fullurl:{{FULLPAGENAME}}|useskin=chameleon}} view page with useskin=chameleon]
:This test should be done while using the Chameleon skin; [{{fullurl:{{FULLPAGENAME}}|useskin=chameleon}} view page with useskin=chameleon]
This should be a greeny shadowed alert box with white text:
This should be a greeny shadowed alert box with white text:
<div class="alert alert-success shadow text-white font-weight-bold">
<div class="alert bg-success shadow text-white font-weight-bold">
I am bootstrapped
I am bootstrapped
</div>
</div>


== BootstrapComponents ==
== BootstrapComponents ==
Line 42: Line 48:
<bootstrap_panel heading="Headline for Panel4" color="info">Text inside the panel</bootstrap_panel>
<bootstrap_panel heading="Headline for Panel4" color="info">Text inside the panel</bootstrap_panel>
</bootstrap_accordion>
</bootstrap_accordion>


== Cargo ==
== Cargo ==
The [[Special:CargoTables]] should exist
The [[Special:CargoTables]] should exist


== CategoryTree ==
== CategoryTree ==
A category tree should be shown:
A category tree should be shown:
<categorytree mode=pages>Tests</categorytree>
<categorytree mode=pages>Tests</categorytree>


== CharInsert ==
== CharInsert ==
Line 55: Line 64:
; Expected
; Expected
: <span class="plainlinks"> [{{fullurl:{{FULLPAGENAME}}}}# Á]</span>
: <span class="plainlinks"> [{{fullurl:{{FULLPAGENAME}}}}# Á]</span>


== CirrusSearch ==
== CirrusSearch ==
;For semantic wikis
To test that the extension is loaded, the following link (using the <code>cirrusDumpQuery</code> parameter) should show a JSON object with details of the search:
The search results should display "'''ask'''" in bold:
* [{{fullurl:Special:Search|search=Example&cirrusDumpQuery=true}} Example search with cirrusDumpQuery]
* [{{SERVER}}{{SCRIPTPATH}}/index.php?search=insource%3A+%23ask%3A&title=Special%3ASearch&profile=all&fulltext=1 Search in the source]
 
To test that the indexer is working, add some custom string to this section that does not currently show up in Special:Search and then confirm that it shows up - this may take a few reloads. We want a string not currently in use so that we can check that new edits get indexed. If it works, revert the addition.


;For Cite enabled wikis
The search results should display "'''ref'''" in bold:
* [{{SERVER}}{{SCRIPTPATH}}/index.php?search=insource%3A+ref&title=Special%3ASearch&profile=all&fulltext=1 Search in the source]


== Cite ==
== Cite ==
Line 75: Line 83:
</li>
</li>
</ol>
</ol>


== CiteThisPage ==
== CiteThisPage ==
This should be a valid link:
This should be a valid link:
[[Special:CiteThisPage]]
[[Special:CiteThisPage]]


== CodeEditor ==
== CodeEditor ==
This should open in the ACE editor interface:
This should open in the ACE editor interface:
[{{fullurl: Mediawiki:Common.css|action=edit}} edit]
[{{fullurl: Mediawiki:Common.css|action=edit}} edit]


== CodeMirror ==
== CodeMirror ==
* The "Editing" tab on [[Special:Preferences]] should have the "Enable colorblind-friendly mode" checkbox ("Accessibility" section).  
* The "Editing" tab on [[Special:Preferences]] should have the "Enable colorblind-friendly mode" checkbox ("Accessibility" section).
 
NOTE: in 1.35 installations use the following instead (either way remove this note and use only one of the tests)
 
* When navigating to [{{fullurl:Main Page|action=submit}} editing the main page] the codemirror interface should be loaded. Make sure that the option is enabled by running <code>mw.loader.using( [ 'mediawiki.api' ], () => new mw.Api().saveOption( 'usecodemirror', 1 ) );</code> and then reloading the page.
 


== ContributionScores ==
== ContributionScores ==
This should be a valid link:
This should be a valid link:
[[Special:ContributionScores]]
[[Special:ContributionScores]]


== Data Transfer ==
== Data Transfer ==
This should be a valid link:
This should be a valid link:
[[Special:ImportCSV]]
[[Special:ImportCSV]]


== Description2 ==
== Description2 ==
This should produce "Description2 works!" in the description meta tag of this page head.
This should produce "Description2 works!" in the description meta tag of this page head.
{{#description2:Description2 works!}}
{{#description2:Description2 works!}}


== DismissableSiteNotice ==
== DismissableSiteNotice ==
The <code>ext.dismissableSiteNotice</code> ResourceLoader module should be registered; in the developer console running <code>mw.loader.getState('ext.dismissableSiteNotice');</code> should return a string (rather than <code>null</code>).
The <code>ext.dismissableSiteNotice</code> ResourceLoader module should be registered; in the developer console running <code>mw.loader.getState('ext.dismissableSiteNotice');</code> should return a string (rather than <code>null</code>).


== DisplayTitle==
 
== DisplayTitle ==
;Expected:  
;Expected:  
{{FULLPAGENAME}}
{{FULLPAGENAME}}
;Result:
;Result:
{{#getdisplaytitle:{{FULLPAGENAME}}}}
{{#getdisplaytitle:{{FULLPAGENAME}}}}


== Echo ==
== Echo ==
This should be a valid link:
This should be a valid link:
[[Special:Notifications]]
[[Special:Notifications]]


== Elastica ==
== Elastica ==
Usually, it is a dependency of CirrusSearch. If CirrusSearch test is passed, Elastica works. The extension must be listed on [[Special:Version]].
Usually, it is a dependency of CirrusSearch. If CirrusSearch test is passed, Elastica works. The extension must be listed on [[Special:Version]].


== EmailFile ==
== EmailFile ==
This should be a valid link:
This should be a valid link:
[[Special:EmailFile]]
[[Special:EmailFile]]


== External Data ==
== External Data ==
{{#get_web_data:url=https://www.semantic-mediawiki.org/wiki/Special:Ask/-5B-5BGermany-5D-5D/-3FLocated_in/format%3Dcsv/sep%3D,
{{#get_web_data:url=https://www.semantic-mediawiki.org/wiki/Special:Ask/-5B-5BGermany-5D-5D/-3FLocated_in/format%3Dcsv/sep%3D,
     |format=csv with header|data=Located in=Located in}}
     |format=csv with header|data=Located in=Located in}}
;Test&#160;:{{#external_value:Located in}}
;Test :{{#external_value:Located in}}
;Expected :Europe
;Expected :Europe


== FsLookAndFeel ==
The <code>ext.fslookandfeel.scripts</code> ResourceLoader module should be registered; in the developer console running <code>mw.loader.getState('ext.fslookandfeel.scripts');</code> should return a string (rather than <code>null</code>).


== FsSignin ==
== FsSignin ==
No test was invented. The extension must be listed on [[Special:Version]].
No test was invented. The extension must be listed on [[Special:Version]].


== Gadgets ==
== Gadgets ==
* [{{fullurl: Special:AllPages|from=&to=&namespace=2300}} This link] must '''not contain''' the error message "<code>{{SITENAME}} does not have namespace "2300"</code>.
* [{{fullurl: Special:AllPages|from=&to=&namespace=2300}} This link] must '''not contain''' the error message "<code>{{SITENAME}} does not have namespace "2300"</code>.
* {{#ifeq: {{NAMESPACENUMBER:Gadget:Something}}|2300|You have gadgets!|No gadgets or something went unusual...}}
* {{#ifeq: {{NAMESPACENUMBER:Gadget:Something}}|2300|You have gadgets!|No gadgets or something went unusual...}}


== GlobalNotice ==
== GlobalNotice ==
No test was invented. The extension must be listed on [[Special:Version]].
If there is not already a global notice at the top of the page, create one by editing one of the following pages. We want to be as unobtrusive as possible in our testing, so ideally, use an account with bureaucrat rights and test the bureaucrat-only message, but if you don't have access to such an account, use the sysop-only message.
 
Edit [[MediaWiki:globalnotice-bureaucrat]] (or [[MediaWiki:globalnotice-sysop]] if not a bureaucrat) and confirm that the resulting content is shown at the top of the page for bureaucrats (or sysops, if that message was edited) but not for users that are not part of those groups.
 
After finishing the test, be sure to revert your changes - if you just created the page, it can be disabled by blanking it or replacing it with <code>-</code>.
 


== GoogleTranslator ==
== GoogleTranslator ==
The sidebar should include an option to translate the page into different languages.
The sidebar should include an option to translate the page into different languages.


== Header Tabs ==
== Header Tabs ==
Line 148: Line 178:
More content
More content
<headertabs />
<headertabs />


== ImageMap ==
== ImageMap ==
<imagemap>
<imagemap>
Image:JoshuaReynoldsParty.jpg|thumb|center|400px|alt=Dining room with nine men seated around a table. The dinner has been finished, and a large man at the head talks and gesticulates while the others eagerly listen. The men wear wigs and clothing of late 18th century Britain, and the furniture, hangings, and chandelier are of similar vintage. A liveried servant is entering with a tray bearing two high-shouldered decanters of wine.|Image map example. Clicking on a person in the picture causes the browser to load the appropriate article.
Image:Australian Capital Territory and New South Wales, Australia.jpg|thumb|center|400px|alt=Dining room with nine men seated around a table. The dinner has been finished, and a large man at the head talks and gesticulates while the others eagerly listen. The men wear wigs and clothing of late 18th century Britain, and the furniture, hangings, and chandelier are of similar vintage. A liveried servant is entering with a tray bearing two high-shouldered decanters of wine.|Image map example. Clicking on a person in the picture causes the browser to load the appropriate article.


poly 133 343 124 287 159 224 189 228 195 291 222 311 209 343 209 354 243 362 292 466 250 463 [[wikipedia:Samuel Johnson|Dr Johnson - Dictionary writer]]
poly 133 343 124 287 159 224 189 228 195 291 222 311 209 343 209 354 243 362 292 466 250 463 [[wikipedia:Samuel Johnson|Dr Johnson - Dictionary writer]]
Line 168: Line 199:
rect 12 10 702 500 [[wikipedia:The Club (Literary Club)|Use button to enlarge or use hyperlinks]]
rect 12 10 702 500 [[wikipedia:The Club (Literary Club)|Use button to enlarge or use hyperlinks]]
</imagemap>
</imagemap>


== InputBox ==
== InputBox ==
Line 177: Line 209:
; Expected
; Expected
: An input box
: An input box


== Interwiki ==
== Interwiki ==
This should be a valid link:
This should be a valid link:
[[Special:Interwiki]]
[[Special:Interwiki]]


== LabeledSectionTransclusion ==
== LabeledSectionTransclusion ==
;Test&#160;:{{#lst:{{FULLPAGENAME}}/Labeled Section Transclusion|test1}}
;Test :{{#lst:{{FULLPAGENAME}}/Labeled Section Transclusion|test1}}
;Expected :This is a test.
;Expected :This is a test.


'''NOTE:''' In this case, the "Section by heading" must be a section in the page that is to be transcluded.
'''NOTE:''' In this case, the "Section by heading" must be a section in the page that is to be transcluded.
;Test&#160;:{{#lsth:{{FULLPAGENAME}}/Labeled Section Transclusion|Section by heading}}
;Test :{{#lsth:{{FULLPAGENAME}}/Labeled Section Transclusion|Section by heading}}
;Expected :This is a section with a heading
;Expected :This is a section with a heading


Line 199: Line 233:


=== Section by heading ===
=== Section by heading ===
This is a section with a heading
This is a section with a heading
</pre>
</pre>
</div></div>
</div></div>


== Lingo ==
== Lingo ==
Lingo is a glossary extension. It lets you define a list of abbreviations and their definitions on [[{{MediaWiki:Lingo-terminologypagename}}]] page and then displays these definitions whenever an abbreviation is hovered over in an article.
;Test
:{{int:Lingo-terminologypagename}}
;Expected
:Whatever except <code>⧼Lingo-termeinologypagename⧽</code>


Check it below:
Hovering over the abbreviation below should display a popup with the definition:
* FHL <= adjust to any term defined on [[{{int:Lingo-terminologypagename}}]]


FHL <- is abbreviations


== Lockdown ==
== Lockdown ==
No test was invented. The extension must be listed on [[Special:Version]].
* Check the values of the configuration settings <code>$wgNamespacePermissionLockdown</code>, <code>$wgSpecialPageLockdown</code>, and <code>$wgActionLockdown</code>
* Identify an action that should be allowed by other configuration on the wiki, but prevented by one of these settings
* Try to perform that action
* Confirm that an error message is shown about lacking permission
 


== Loops ==
== Loops ==
; Note: this extension requires that the Variables extension also be installed
; Note: this extension requires that the Variables extension also be installed
;Test&#160;: {{#vardefine: i | 1 }}{{#while:
;Test : {{#vardefine: i | 1 }}{{#while:
  | {{#ifexpr: {{#var: i }} < 4 | true }}
  | {{#ifexpr: {{#var: i }} < 4 | true }}
  |  
  |  
{{#var: i }} {{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
{{#var: i }} {{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}
}}
;Expected&#160;: 1  2  3
;Expected : 1  2  3
 


== MagicNoCache ==
== MagicNoCache ==
Line 228: Line 273:
|__NOCACHE__
|__NOCACHE__
|}
|}


== Maps ==
== Maps ==
;Variant 1
;Variant 1
{{#display_map:address=Brandenburg Gate, Berlin, Germany|width=200|height=150|zoom=17|type=hybrid}}
{{#display_map:address=Brandenburg Gate, Berlin, Germany|width=200|height=150|zoom=17|type=hybrid}}
;Test&#160;:{{#geocode:Brandenburg Gate, Berlin, Germany}}
;Test :{{#geocode:Brandenburg Gate, Berlin, Germany}}
;Expected :52° 30' 58.59" N, 13° 22' 39.73" E
;Expected :52° 30' 58.59" N, 13° 22' 39.73" E


;Variant 2
;Variant 2
{{#display_map: Brandenburg Gate, Berlin~Brandenburg Gate }}
{{#display_map: Brandenburg Gate, Berlin~Brandenburg Gate }}
;Test&#160;:{{#geocode:Brandenburg Gate}}
;Test :{{#geocode:Brandenburg Gate}}
;Expected :52° 30' 58.59" N, 13° 22' 39.73" E
;Expected :52° 30' 58.59" N, 13° 22' 39.73" E


== MasonryMainPage ==
<div id="mediawiki-masonry-main-page-container">
{{#masonry-block: title=Test
| color=orange
| body =
This should be orange
}}{{#masonry-block: title=Test2
| color=blue
| width=2
| body =
This should be blue and wider
}}
{{#masonry-block: title=Test
| color=orange
| body =
This should be orange
}}{{#masonry-block: title=Test2
| color=blue
| width=2
| body =
This should be blue and wider
}}
{{#masonry-block: title=Test
| color=orange
| body =
This should be orange
}}{{#masonry-block: title=Test2
| color=blue
| width=2
| body =
This should be blue and wider
}}{{#masonry-block: title=Test
| color=orange
| body =
This should be orange
}}
</div>


== MobileFrontend ==
== MobileFrontend ==
* [{{fullurl:{{FULLPAGENAME}}|mobileaction=toggle_view_mobile}} This link] should open '''mobile''' version
* [{{fullurl:{{FULLPAGENAME}}|mobileaction=toggle_view_mobile}} This link] should open '''mobile''' version
* [{{fullurl:{{FULLPAGENAME}}|mobileaction=toggle_view_desktop}} This link] should open '''desktop''' version
* [{{fullurl:{{FULLPAGENAME}}|mobileaction=toggle_view_desktop}} This link] should open '''desktop''' version


== MultimediaViewer ==
== MultimediaViewer ==
Clicking this should pop up a nice lightbox image viewer or, in case MMV is disabled by default, this should open the file page with the <code>Open in Media Viewer</code> button:
Clicking this should pop up a nice lightbox image viewer or, in case MMV is disabled by default, this should open the file page with the <code>Open in Media Viewer</code> button:
:[[File:Australian Capital Territory and New South Wales, Australia.jpg|50px]]
:[[File:Australian Capital Territory and New South Wales, Australia.jpg|50px]]


== MyVariables ==
== MyVariables ==
; Test&#160;: {{CURRENTUSER}}  
; Test : {{CURRENTUSER}}  
; Expected&#160;: Your user name or the IP for anonymous users
; Expected : Your user name or the IP for anonymous users
 


== Nuke ==
== Nuke ==
This should be a valid link:
This should be a valid link:
[[Special:Nuke]]
[[Special:Nuke]]


== OpenGraphMeta ==
== OpenGraphMeta ==
Line 299: Line 312:
;Expected:
;Expected:
[[File:Australian Capital Territory and New South Wales, Australia.jpg|100px]]
[[File:Australian Capital Territory and New South Wales, Australia.jpg|100px]]


== OpenID Connect ==
== OpenID Connect ==
No test was invented. The extension must be listed on [[Special:Version]].
No test was invented. The extension must be listed on [[Special:Version]].


== PDF Handler ==
== PDF Handler ==
Line 308: Line 323:
[[File:Overview of FamilySearch JMR2023.pdf|page=1|200px|Succeeded]]
[[File:Overview of FamilySearch JMR2023.pdf|page=1|200px|Succeeded]]


== Page Importer ==
No test was invented. The extension must be listed on [[Special:Version]].


== PageForms ==
== PageForms ==
This should be a valid link:
This should be a valid link:
[[Special:Forms]]
[[Special:Forms]]
== Page Importer ==
No test was invented. The extension must be listed on [[Special:Version]].


== PageImages ==
== PageImages ==
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=query&prop=pageimages&titles={{PAGENAMEE}} This must not fire a warning about pageimages]
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=query&prop=pageimages&titles={{PAGENAMEE}} This must not fire a warning about pageimages]
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=help&modules=query This should list '''pageimages''' property]
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=help&modules=query This should list '''pageimages''' property]


== Parser Function Helper ==
== Parser Function Helper ==
No test was invented. The extension must be listed on [[Special:Version]].
No test was invented. The extension must be listed on [[Special:Version]].


== ParserFunctions ==
== ParserFunctions ==
; Test math functions: {{#expr: 4 + 6}}
; Test math functions: {{#expr: 4 + 6}}
; Expected&#160;: 10
; Expected : 10


; Test string functions: {{#ifeq:{{#expr: 4 + 6}}|10|{{#ifeq:{{#len:Icecream }}|8|{{#len:Icecream }}|disabled}}}}
; Test string functions: {{#ifeq:{{#expr: 4 + 6}}|10|{{#ifeq:{{#len:Icecream }}|8|{{#len:Icecream }}|disabled}}}}
; Expected&#160;: {{#ifeq:{{#len:Icecream }}|8|8|disabled}}
; Expected : {{#ifeq:{{#len:Icecream }}|8|8|disabled}}
 


== Parsoid ==
== Parsoid ==
No test was invented. The extension must be listed on [[Special:Version]].
Used to support the VisualEditor extension. If that extension is working, Parsoid works. The extension must be listed on [[Special:Version]].
 


== PluggableAuth ==
== PluggableAuth ==
No test was invented. The extension must be listed on [[Special:Version]].
No test was invented. The extension must be listed on [[Special:Version]].


== Poem ==
== Poem ==
Line 341: Line 364:
Où les vivants pensifs travaillent tristement,  
Où les vivants pensifs travaillent tristement,  
::Et qui donne à regret à cette race humaine
::Et qui donne à regret à cette race humaine
Un peu de pain pour tant de labeur et de peine&#160;;  
Un peu de pain pour tant de labeur et de peine ;  
::Des hommes durs, éclos sur ces sillons ingrats&#160;;  
::Des hommes durs, éclos sur ces sillons ingrats ;  
Des cités d’où s’en vont, en se tordant les bras,  
Des cités d’où s’en vont, en se tordant les bras,  
::La charité, la paix, la foi, sœurs vénérables&#160;;  
::La charité, la paix, la foi, sœurs vénérables ;  
L’orgueil chez les puissants et chez les misérables&#160;;  
L’orgueil chez les puissants et chez les misérables ;  
</poem>
</poem>
; Expected
; Expected
: A nicely formatted poem
: A nicely formatted poem


== Renameuser ==
== Renameuser ==
This should be a valid link:
This should be a valid link:
[[Special:RenameUser]]
[[Special:RenameUser]]


== Replace Text ==
== Replace Text ==
This should be a valid link:
This should be a valid link:
[[Special:ReplaceText]]
[[Special:ReplaceText]]


== RevisionSlider ==
== RevisionSlider ==
Check '''Browse history Interactively''' slider interface at the top of ''Difference between revisions'' page ([{{fullurl:{{FULLPAGENAME}}|action=history}} history])
Check '''Browse history Interactively''' slider interface at the top of ''Difference between revisions'' page ([{{fullurl:{{FULLPAGENAME}}|action=history}} history])


== RottenLinks ==
== RottenLinks ==
This should be a valid link:
This should be a valid link:
[[Special:RottenLinks]]
[[Special:RottenLinks]]


== SandboxLink ==
== SandboxLink ==
'''Sandbox''' link should be added on user's personal tools menu (at the top)
'''Sandbox''' link should be added on user's personal tools menu (at the top)


== Scribunto ==
== Scribunto ==
Line 372: Line 401:
; Test&#160;: {{#invoke:String|len|This is a test.}}  
; Test&#160;: {{#invoke:String|len|This is a test.}}  
; Expected&#160;: 15
; Expected&#160;: 15
== Semantic Drilldown ==
This should be a valid link:
[[Special:BrowseData]]
== Semantic Meeting Minutes ==
;Test: {{#synopsize:
Only this line should show, with no lines after it
This line should '''not''' show
|9999
|1}}
;Expected: Only this line should show, with no lines after it
== SemanticCompoundQueries ==
This should produce no error:
{{#compound_query: [[:+]][[Modification date::+]];?Modification date;limit=1;order=rand
|[[File:+]][[Modification date::+]];?Modification date;limit=1;order=rand
|link=none
|format=ul
}}
== SemanticMediaWiki ==
; Test&#160;:[[Test::NONEXISTENTPAGE|Test]] __SHOWFACTBOX__
; Expected&#160;:[[NONEXISTENTPAGE|Test]]
: There should be a factbox at the page bottom.
== SemanticResultFormats ==
; Test (old wikis)
{{#ask:[[{{FULLPAGENAME}}]]|?Test|format=datatables}}
; Expected
: A nice-looking DataTable with a search field
== SemanticScribunto ==
Should be an icon with information popup -> {{#invoke:SemanticScribuntoTest|info|some text}}
{{#invoke:SemanticScribuntoTest|inlineInfo}}
<div class="toccolours mw-collapsible mw-collapsed" style="width:400px; overflow:auto;">
<div style="font-weight:bold;line-height:1.6;">
Source of [[Module:SemanticScribuntoTest]]</div>
<div class="mw-collapsible-content">
<pre>
-- Module:SMW
local p = {}
-- set with direct return results
function p.info( frame )
    if not mw.smw then
        return "mw.smw module not found"
    end
    if frame.args[1] == nil then
        return "no parameter found"
    end
    local tooltip
    if frame.args[2] then
        tooltip = mw.smw.info( frame.args[1], frame.args[2] )
    else
        tooltip = mw.smw.info( frame.args[1] )
    end
    return tooltip
end
-- another example, info used inside another function
function p.inlineInfo( frame )
    local output = 'This is sample output'
    -- so some stuff
    output = output .. mw.smw.info( 'This is a warning', 'warning' )
    -- some more stuff
    return output
end
return p
</pre>
</div></div>


== SimpleMathJax ==
== SimpleMathJax ==
Line 471: Line 416:
; Expected
; Expected
: E=mc^2 (but much better-looking)
: E=mc^2 (but much better-looking)


== SpamBlacklist ==
== SpamBlacklist ==
This should display the spam blacklist log: [{{fullurl:Special:Log|type=spamblacklist}} spamblacklist].
This should display the spam blacklist log: [{{fullurl:Special:Log|type=spamblacklist}} spamblacklist].


== SubPageList ==
== SubPageList ==
Line 480: Line 427:
;Expected
;Expected
An integer matching the number of pages at [[Special:PrefixIndex/{{FULLPAGENAME}}/]]
An integer matching the number of pages at [[Special:PrefixIndex/{{FULLPAGENAME}}/]]


== SyntaxHighlight ==
== SyntaxHighlight ==
Line 494: Line 442:
pass
pass
</syntaxhighlight>
</syntaxhighlight>


== TemplateData ==
== TemplateData ==
[{{fullurl:Template:Test|action=edit}} This link should take you to a page with the <code>Manage TemplateData</code> button] (normally below the first heading).
[{{fullurl:Template:Test|action=edit}} This link should take you to a page with the <code>Manage TemplateData</code> button] (normally below the first heading).


== TextExtracts ==
== TextExtracts ==
The output should not contain <code>Unrecognized parameter: exchars</code> error:
The output should not contain <code>Unrecognized parameter: exchars</code> error:
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=query&prop=extracts&exchars=175&format=json&titles={{FULLPAGENAMEE}} Extract]
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=query&prop=extracts&exchars=175&format=json&titles={{FULLPAGENAMEE}} Extract]


== Thanks ==
== Thanks ==
[[Special:Log/thanks]] exists.
[[Special:Log/thanks]] exists.


== TitleBlacklist ==
== TitleBlacklist ==
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=help&modules=titleblacklist This should document the '''titleblacklist''' API]
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=help&modules=titleblacklist This should document the '''titleblacklist''' API]


== TwitterCards ==
== TwitterCards ==
No test was invented. The extension must be listed on [[Special:Version]].
No test was invented. The extension must be listed on [[Special:Version]].


== Upload Wizard ==
== Upload Wizard ==
UploadWizard is displayed at [[:Special:UploadWizard]]
UploadWizard is displayed at [[:Special:UploadWizard]]


== UserFunctions ==
== UserFunctions ==
; Test&#160;: {{#ifanon:It works|It works}}
; Test : {{#ifanon:You are not logged in|You are logged in}}
; Expected&#160;: It works
; Expected : "You are not logged in" when not logged in, and "You are logged in" when you are
 


== VEForAll ==
== VEForAll ==
No test was invented. The extension must be listed on [[Special:Version]].
The <code>ext.veforall.main</code> ResourceLoader module should be registered; in the developer console running <code>mw.loader.getState('ext.veforall.main');</code> should return a string (rather than <code>null</code>).
 
Note that the actual functioning of this extension is based on it being invoked by other extensions, and so even if it is installed it may not actually be used.
 


== Variables ==
== Variables ==
; Test&#160;: {{#vardefine:test|testing}}{{#var:test}}
; Test : {{#vardefine:test|testing}}{{#var:test}}
; Expected&#160;: testing
; Expected : testing
 


== VisualEditor ==
== VisualEditor ==
This should load VisualEditor in edit mode:
This should load VisualEditor in edit mode:
[{{fullurl:Main Page|veaction=edit}} edit]
[{{fullurl:Main Page|veaction=edit}} edit]


== WhoIsWatching ==
== WhoIsWatching ==
Line 533: Line 494:


{{#whoiswatching:{{FULLPAGENAME}}}}
{{#whoiswatching:{{FULLPAGENAME}}}}


== Widgets ==
== Widgets ==
Line 539: Line 501:
;Expected
;Expected
:Widget
:Widget


== WikiEditor ==
== WikiEditor ==
This should load a tabbed WikiEditor:
This should load a tabbed WikiEditor:
[{{fullurl:Main Page|action=edit}} edit]
[{{fullurl:Main Page|action=edit}} edit]


== WikiSEO ==
== WikiSEO ==
Line 567: Line 531:
</pre>
</pre>
but the content may be different if another extension (like Description2) is installed and tries to set the description. As long as there is a description set and the page title and keywords match, having a different description should not be considered a failure.
but the content may be different if another extension (like Description2) is installed and tries to set the description. As long as there is a description set and the page title and keywords match, having a different description should not be considered a failure.


== Wiretap ==
== Wiretap ==
This should be a valid link:
This should be a valid link:
[[Special:Wiretap]]
[[Special:Wiretap]]


== YouTube ==
== YouTube ==
<youtube>VyBSS48E4xI</youtube>
<youtube>VyBSS48E4xI</youtube>
== ZionLookAndFeel ==
The <code>ext.zionlookandfeel.scripts</code> ResourceLoader module should be registered; in the developer console running <code>mw.loader.getState('ext.zionlookandfeel.scripts');</code> should return a string (rather than <code>null</code>).

Latest revision as of 07:14, 22 November 2025

The following are tests of the extensions running on the wiki. Where applicable, if the "Test" value matches the "Expected" value, the extension can be assumed to be working.

Admin Links[edit | edit source]

This should be a valid link: Special:AdminLinks

If you are an admin, you should see links by your personal tools.


AdvancedSearch[edit | edit source]

If #CirrusSearch is enabled, the extension produces the "Advanced Search" form on Special:Search.


Approved Revs[edit | edit source]

This should be a valid link: Special:ApprovedRevs


Arrays[edit | edit source]

Test
orange, red, yellow, yellow
Expected
orange, red, yellow, yellow


BatchUserRights[edit | edit source]

This should be a valid link: Special:BatchUserRights


Bootstrap[edit | edit source]

This test should be done while using the Chameleon skin; view page with useskin=chameleon

This should be a greeny shadowed alert box with white text:

I am bootstrapped


BootstrapComponents[edit | edit source]

Should be an accordion below:

Text inside the panel
Text inside the panel

Headline for Panel3

Text inside the panel
Text inside the panel


Cargo[edit | edit source]

The Special:CargoTables should exist


CategoryTree[edit | edit source]

A category tree should be shown:


CharInsert[edit | edit source]

Test
Á
Expected
Á


CirrusSearch[edit | edit source]

To test that the extension is loaded, the following link (using the cirrusDumpQuery parameter) should show a JSON object with details of the search:

To test that the indexer is working, add some custom string to this section that does not currently show up in Special:Search and then confirm that it shows up - this may take a few reloads. We want a string not currently in use so that we can check that new edits get indexed. If it works, revert the addition.


Cite[edit | edit source]

Test
Text[1]
  1. Test
Expected
Text[1]
  1. Jump up Test


CiteThisPage[edit | edit source]

This should be a valid link: Special:CiteThisPage


CodeEditor[edit | edit source]

This should open in the ACE editor interface: edit


CodeMirror[edit | edit source]

  • The "Editing" tab on Special:Preferences should have the "Enable colorblind-friendly mode" checkbox ("Accessibility" section).

NOTE: in 1.35 installations use the following instead (either way remove this note and use only one of the tests)

  • When navigating to editing the main page the codemirror interface should be loaded. Make sure that the option is enabled by running mw.loader.using( [ 'mediawiki.api' ], () => new mw.Api().saveOption( 'usecodemirror', 1 ) ); and then reloading the page.


ContributionScores[edit | edit source]

This should be a valid link: Special:ContributionScores


Data Transfer[edit | edit source]

This should be a valid link: Special:ImportCSV


Description2[edit | edit source]

This should produce "Description2 works!" in the description meta tag of this page head.


DismissableSiteNotice[edit | edit source]

The ext.dismissableSiteNotice ResourceLoader module should be registered; in the developer console running mw.loader.getState('ext.dismissableSiteNotice'); should return a string (rather than null).


DisplayTitle[edit | edit source]

Expected

FamilySearch Wiki:Extension tests

Result

FamilySearch Wiki:Extension tests


Echo[edit | edit source]

This should be a valid link: Special:Notifications


Elastica[edit | edit source]

Usually, it is a dependency of CirrusSearch. If CirrusSearch test is passed, Elastica works. The extension must be listed on Special:Version.


EmailFile[edit | edit source]

This should be a valid link: Special:EmailFile


External Data[edit | edit source]

Test
Europe
Expected
Europe


FsSignin[edit | edit source]

No test was invented. The extension must be listed on Special:Version.


Gadgets[edit | edit source]

  • This link must not contain the error message "FamilySearch Wiki does not have namespace "2300".
  • You have gadgets!


GlobalNotice[edit | edit source]

If there is not already a global notice at the top of the page, create one by editing one of the following pages. We want to be as unobtrusive as possible in our testing, so ideally, use an account with bureaucrat rights and test the bureaucrat-only message, but if you don't have access to such an account, use the sysop-only message.

Edit MediaWiki:globalnotice-bureaucrat (or MediaWiki:globalnotice-sysop if not a bureaucrat) and confirm that the resulting content is shown at the top of the page for bureaucrats (or sysops, if that message was edited) but not for users that are not part of those groups.

After finishing the test, be sure to revert your changes - if you just created the page, it can be disabled by blanking it or replacing it with -.


GoogleTranslator[edit | edit source]

The sidebar should include an option to translate the page into different languages.


Header Tabs[edit | edit source]

Two tabs should be visible below.

Content

More content


ImageMap[edit | edit source]

Dr Johnson - Dictionary writerBoswell - BiographerSir Joshua Reynolds - HostDavid Garrick - actorEdmund Burke - statesmanPasqual Paoli - Corsican patriotCharles Burney - music historianThomas Warton - poet laureateOliver Goldsmith - writerprob.The Infant Academy 1782unknown paintingAn unknown portraitservant - poss. Francis BarberUse button to enlarge or use hyperlinksDining room with nine men seated around a table. The dinner has been finished, and a large man at the head talks and gesticulates while the others eagerly listen. The men wear wigs and clothing of late 18th century Britain, and the furniture, hangings, and chandelier are of similar vintage. A liveried servant is entering with a tray bearing two high-shouldered decanters of wine.
Image map example. Clicking on a person in the picture causes the browser to load the appropriate article.


InputBox[edit | edit source]

Test
Expected
An input box


Interwiki[edit | edit source]

This should be a valid link: Special:Interwiki


LabeledSectionTransclusion[edit | edit source]

Test
This is a test.
Expected
This is a test.

NOTE: In this case, the "Section by heading" must be a section in the page that is to be transcluded.

Test

This is a section with a heading

Expected
This is a section with a heading
<section begin=test1 />This is a test.<section end=test1 />
Some text ...

=== Section by heading ===

This is a section with a heading

Lingo[edit | edit source]

Test
Terminology
Expected
Whatever except ⧼Lingo-termeinologypagename⧽

Hovering over the abbreviation below should display a popup with the definition:


Lockdown[edit | edit source]

  • Check the values of the configuration settings $wgNamespacePermissionLockdown, $wgSpecialPageLockdown, and $wgActionLockdown
  • Identify an action that should be allowed by other configuration on the wiki, but prevented by one of these settings
  • Try to perform that action
  • Confirm that an error message is shown about lacking permission


Loops[edit | edit source]

Note
this extension requires that the Variables extension also be installed
Test
123
Expected
1 2 3


MagicNoCache[edit | edit source]

The table cell should be empty:


Maps[edit | edit source]

Variant 1
Loading map...
Test
52° 30' 58.57" N, 13° 22' 39.73" E
Expected
52° 30' 58.59" N, 13° 22' 39.73" E
Variant 2
Loading map...
Test
52° 30' 58.57" N, 13° 22' 39.73" E
Expected
52° 30' 58.59" N, 13° 22' 39.73" E


MobileFrontend[edit | edit source]


MultimediaViewer[edit | edit source]

Clicking this should pop up a nice lightbox image viewer or, in case MMV is disabled by default, this should open the file page with the Open in Media Viewer button:

Australian Capital Territory and New South Wales, Australia.jpg


MyVariables[edit | edit source]

Test
23.22.79.156
Expected
Your user name or the IP for anonymous users


Nuke[edit | edit source]

This should be a valid link: Special:Nuke


OpenGraphMeta[edit | edit source]

Test

Australian Capital Territory and New South Wales, Australia.jpg

Expected

Australian Capital Territory and New South Wales, Australia.jpg


OpenID Connect[edit | edit source]

No test was invented. The extension must be listed on Special:Version.


PDF Handler[edit | edit source]

You should see the content of the uploaded PDF (Overview of FamilySearch JMR2023.pdf):

Succeeded


PageForms[edit | edit source]

This should be a valid link: Special:Forms


Page Importer[edit | edit source]

No test was invented. The extension must be listed on Special:Version.


PageImages[edit | edit source]


Parser Function Helper[edit | edit source]

No test was invented. The extension must be listed on Special:Version.


ParserFunctions[edit | edit source]

Test math functions
10
Expected
10
Test string functions
8
Expected
8


Parsoid[edit | edit source]

Used to support the VisualEditor extension. If that extension is working, Parsoid works. The extension must be listed on Special:Version.


PluggableAuth[edit | edit source]

No test was invented. The extension must be listed on Special:Version.


Poem[edit | edit source]

Test

Une terre au flanc maigre, âpre, avare, inclément
Où les vivants pensifs travaillent tristement,
Et qui donne à regret à cette race humaine
Un peu de pain pour tant de labeur et de peine ;
Des hommes durs, éclos sur ces sillons ingrats ;
Des cités d’où s’en vont, en se tordant les bras,
La charité, la paix, la foi, sœurs vénérables ;
L’orgueil chez les puissants et chez les misérables ;

Expected
A nicely formatted poem


Renameuser[edit | edit source]

This should be a valid link: Special:RenameUser


Replace Text[edit | edit source]

This should be a valid link: Special:ReplaceText


RevisionSlider[edit | edit source]

Check Browse history Interactively slider interface at the top of Difference between revisions page (history)


RottenLinks[edit | edit source]

This should be a valid link: Special:RottenLinks


SandboxLink[edit | edit source]

Sandbox link should be added on user's personal tools menu (at the top)


Scribunto[edit | edit source]

Module:String (source)[edit | edit source]

Test 
15
Expected 
15

SimpleMathJax[edit | edit source]

Note
this extension does not work with the Math extension installed
Test
[math]\displaystyle{ \int_{(x,y)\in C} x^3\, dx + 4y^2\, dy }[/math]
Expected
∫(x,y)∈Cx3dx+4y2dy (but much better-looking)

And if SMJ added as $wgSmjExtraInlineMath = [ [ 'SMJ(', ')SMJ' ] ]; in LocalSettings.php file:

Test
SMJ(E=mc^2)SMJ
Expected
E=mc^2 (but much better-looking)


SpamBlacklist[edit | edit source]

This should display the spam blacklist log: spamblacklist.


SubPageList[edit | edit source]

Result

1

Expected

An integer matching the number of pages at Special:PrefixIndex/FamilySearch Wiki:Extension tests/


SyntaxHighlight[edit | edit source]

Note
this extension make also be referred to as "SyntaxHighlight GeSHi"

The following must be colorful:

def quick_sort(arr):
	less = []
	pivot_list = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass


TemplateData[edit | edit source]

This link should take you to a page with the Manage TemplateData button (normally below the first heading).


TextExtracts[edit | edit source]

The output should not contain Unrecognized parameter: exchars error:


Thanks[edit | edit source]

Special:Log/thanks exists.


TitleBlacklist[edit | edit source]


TwitterCards[edit | edit source]

No test was invented. The extension must be listed on Special:Version.


Upload Wizard[edit | edit source]

UploadWizard is displayed at Special:UploadWizard


UserFunctions[edit | edit source]

Test
You are not logged in
Expected
"You are not logged in" when not logged in, and "You are logged in" when you are


VEForAll[edit | edit source]

The ext.veforall.main ResourceLoader module should be registered; in the developer console running mw.loader.getState('ext.veforall.main'); should return a string (rather than null).

Note that the actual functioning of this extension is based on it being invoked by other extensions, and so even if it is installed it may not actually be used.


Variables[edit | edit source]

Test
testing
Expected
testing


VisualEditor[edit | edit source]

This should load VisualEditor in edit mode: edit


WhoIsWatching[edit | edit source]

Should show the number of watching users below:

0 watching users


Widgets[edit | edit source]

Test
Widget
Expected
Widget


WikiEditor[edit | edit source]

This should load a tabbed WikiEditor: edit


WikiSEO[edit | edit source]

The page source should contain:

<title>Your page title</title>

and:

<meta name="keywords" content="these,are,your,keywords"/>

There should also be a description, with

<meta name="description" content="Your meta description"/>

but the content may be different if another extension (like Description2) is installed and tries to set the description. As long as there is a description set and the page title and keywords match, having a different description should not be considered a failure.


Wiretap[edit | edit source]

This should be a valid link: Special:Wiretap


YouTube[edit | edit source]


ZionLookAndFeel[edit | edit source]

The ext.zionlookandfeel.scripts ResourceLoader module should be registered; in the developer console running mw.loader.getState('ext.zionlookandfeel.scripts'); should return a string (rather than null).