FamilySearch Wiki:Extension tests: Difference between revisions

From FamilySearch Wiki
(→‎PDF Handler: use a file that exists)
m (codemirror)
 
(30 intermediate revisions by the same user not shown)
Line 9: Line 9:


== 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==
Line 21: Line 21:
; Expected
; Expected
: orange, red, yellow, yellow
: orange, red, yellow, yellow
== Article Feedback ==
:Note: this is for the extension <code>ArticleFeedbackv5</code>
[[Special:ArticleFeedbackv5]] should exist and allow access to the feedback system.


== BatchUserRights ==
== BatchUserRights ==
Line 29: Line 33:
: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>
Line 57: Line 61:


== 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]


;For Cite enabled wikis
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.
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 85: Line 86:


== 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).


== ContributionScores ==
== ContributionScores ==
Line 100: Line 101:


== DismissableSiteNotice ==
== DismissableSiteNotice ==
This should have a number:
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>).
* [[MediaWiki:Sitenotice_id]]


== DisplayTitle==
== DisplayTitle==
Line 119: Line 119:
This should be a valid link:
This should be a valid link:
[[Special:EmailFile]]
[[Special:EmailFile]]
== EmailRegisteredUsers ==
This should be a valid link:
[[Special:EmailRegisteredUsers]]


== External Data ==
== External Data ==
Line 129: Line 125:
;Test&#160;:{{#external_value:Located in}}
;Test&#160;:{{#external_value:Located in}}
;Expected :Europe
;Expected :Europe
== FixedHeaderTable ==
Header of table below should be fixed:
<fixedheadertable fixedcolumns="1">
{| class="wikitable"
! Header 1
! Header 2
|-
| Cell 1
| Cell 2
|-
| Cell 3
| Cell 4
|}
</fixedheadertable>


== FsLookAndFeel ==
== FsLookAndFeel ==
Line 157: Line 137:


== 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 ==
Line 169: Line 153:
More content
More content
<headertabs />
<headertabs />
== HeaderFooter ==
The content of [[MediaWiki:hf-footer-{{FULLPAGENAME}}]] must be shown as a footer on the current page.
<div class="toccolours mw-collapsible mw-collapsed" style="width:400px; overflow:auto;">
<div style="font-weight:bold;line-height:1.6;">
Source of [[MediaWiki:hf-footer-{{FULLPAGENAME}}]]</div>
<div class="mw-collapsible-content">
<syntaxhighlight lang="html">
<div class="card bg-dark text-white">
<div class="card-body font-weight-bold text-center">I am Footer</div>
</div>
</syntaxhighlight>
</div></div>


== ImageMap ==
== ImageMap ==
Line 232: Line 202:
<section begin=test1 />This is a test.<section end=test1 />
<section begin=test1 />This is a test.<section end=test1 />
Some text ...
Some text ...
=== Section by heading ===
=== Section by heading ===
This is a section with a heading
This is a section with a heading
Line 239: Line 208:


== 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}}
Check it below:
;Expected
 
:Whatever except <code>⧼Lingo-termeinologypagename⧽</code>
USA <- is abbreviations


== LocalisationUpdate ==
Hovering over the abbreviation below should display a popup with the definition:
No test was invented. The extension must be listed on [[Special:Version]].
* USA <= adjust to any term defined on [[{{int:Lingo-terminologypagename}}]]


== 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 ==
Line 322: Line 293:
== 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:JoshuaReynoldsParty.jpg|50px]]


== MyVariables ==
== MyVariables ==
Line 334: Line 305:
== OpenGraphMeta ==
== OpenGraphMeta ==
;Test
;Test
[[File:{{#setmainimage:Australian Capital Territory and New South Wales, Australia.jpg}}|100px]]
[[File:{{#setmainimage:JoshuaReynoldsParty.jpg}}|100px]]
;Expected:
;Expected:
[[File:Australian Capital Territory and New South Wales, Australia.jpg|100px]]
[[File:JoshuaReynoldsParty.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 ==
You should see the content of the uploaded PDF ([[media:Overview of FamilySearch JMR2023.pdf|Overview of FamilySearch JMR2023.pdf]]):
[[File:Overview of FamilySearch JMR2023.pdf|page=1|200px|Succeeded]]


== Page Importer ==
== Page Importer ==
Line 367: Line 333:
; Expected&#160;: {{#ifeq:{{#len:Icecream }}|8|8|disabled}}
; Expected&#160;: {{#ifeq:{{#len:Icecream }}|8|8|disabled}}


== ParserHooks ==
== 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]].
 
== PDF Handler ==
You should see the content of the uploaded PDF ([[media:ExamplePDF.pdf|ExamplePDF.pdf]]):


== Parsoid ==
[[File:ExamplePDF.pdf|page=1|200px|Succeeded]]
No test was invented. The extension must be listed on [[Special:Version]].


== PluggableAuth ==
== PluggableAuth ==
Line 410: Line 378:


== Scribunto ==
== Scribunto ==
=== [[Module:String]] ([https://en.wikipedia.org/w/index.php?title=Module:String&action=edit source]) ===
=== [[Module:String]] ===
; 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 Internal Objects ==
{{#set_internal:Part of recipe
|Has quantity=1
|Has unit=cup
|Has ingredient=flour
}}
* Expected: 1
* Actual: {{#ask:[[Part of recipe::+]][[Has ingredient::flour]][[Has unit::cup]][[Has quantity::>.5]]
|mainlabel=-
|? Has quantity=
|link=none
}}
== Semantic Meeting Minutes ==
[[Special:FormEdit/Meeting Minutes]] must be a valid form.
== 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 class="toccolours mw-collapsible mw-collapsed" style="width:400px; overflow:auto;">
<div style="font-weight:bold;line-height:1.6;">
<div style="font-weight:bold;line-height:1.6;">
Source of [[Module:SemanticScribuntoTest]]</div>
Source of [[Module:String]]</div>
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
<pre>
<pre>
-- Module:SMW
local p = {}
local p = {}
 
function p.len(frame)
-- set with direct return results
local s = frame.args[1]
function p.info( frame )
return mw.ustring.len( s )
 
    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
end
return p
return p
</pre>
</pre>
</div></div>
</div></div>


== SimpleMathJax ==
== SimpleMathJax ==
Line 521: Line 413:


== SpamBlacklist ==
== SpamBlacklist ==
Once this is added to [[Mediawiki:Spam-blacklist]]:
This should display the spam blacklist log: [{{fullurl:Special:Log|type=spamblacklist}} spamblacklist].
:<code>\bexample\.com\b</code>
this should be blocked:
:[http://example.com example.com]


== SubPageList ==
== SubPageList ==
Line 530: Line 419:
{{#subpagecount: }}
{{#subpagecount: }}
;Expected
;Expected
0
An integer matching the number of pages at [[Special:PrefixIndex/{{FULLPAGENAME}}/]]


== SyntaxHighlight ==
== SyntaxHighlight ==
Line 545: Line 434:
pass
pass
</syntaxhighlight>
</syntaxhighlight>
== TalkRight ==
<code>talk</code> right should be present [[Special:ListGroupRights|here]].


== TemplateData ==
== TemplateData ==
Line 557: Line 449:


== TitleBlacklist ==
== TitleBlacklist ==
;The text should follow:
* [{{SERVER}}{{SCRIPTPATH}}/api.php?action=help&modules=titleblacklist This should document the '''titleblacklist''' API]
{{int: Titleblacklist}}
 
</pre>


== 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]].
== UniversalLanguageSelector ==
No test was invented. The language selector should appear somewhere and the extension must be listed on [[Special:Version]].


== Upload Wizard ==
== Upload Wizard ==
Line 572: Line 458:


== UserFunctions ==
== UserFunctions ==
; Test&#160;: {{#ifanon:It works|It works}}
; Test&#160;: {{#ifanon:You are not logged in|You are logged in}}
; Expected&#160;: It works
; Expected&#160;: "You are not logged in" when not logged in, and "You are logged in" when you are
 
== VEForAll ==
No test was invented. The extension must be listed on [[Special:Version]].
 
== Validator ==
No test was invented. The extension must be listed on [[Special:Version]].


== Variables ==
== Variables ==
; Test&#160;: {{#vardefine:test|testing}}{{#var:test}}
; Test&#160;: {{#vardefine:test|testing}}{{#var:test}}
; Expected&#160;: testing
; Expected&#160;: testing
== VEForAll ==
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.


== VisualEditor ==
== VisualEditor ==
Line 599: Line 484:
;Expected
;Expected
:Widget
:Widget
=== Widget:Audio ===
An audio player should be here:
{{#widget:Audio
|url=https://www.soundhelix.com/examples/mp3/SoundHelix-Song-8.mp3
}}
=== Widget:Disqus ===
{{#widget:DISQUS|PUT_YOUR_DISCUS_ID}}
=== Widget:Google Calendar ===
{{#widget:Google Calendar
|id=p2m2av9dhrh4n1ub7jlsc68s7o@group.calendar.google.com
|color=2952A3
|id=usa@holiday.calendar.google.com
|color=B1440E
|title=NYCResistor, US Holidays
}}
=== Widget:Html5media ===
A video should be visible:
{{#widget:Html5media
|url=http://pornel.net/Performance.ogg
|width=200
|height=150
}}
=== Widget:Iframe ===
{{#widget:Iframe
|url={{fullurl:Main Page}}
}}
=== Widget:SoundCloud ===
A SoundCloud embed should be here:
{{#widget:SoundCloud
|id=26963349
}}
=== Widget:Twitter ===
A Twitter feed should be below:
<div style="height:200px; overflow: scroll;">
{{#widget:Twitter timeline|id=TwitterDev}}
</div>
=== Widget:Twitter Search ===
{{#widget:Twitter Search
|query=showslow
|title=ShowSlow
|caption=what people say about ShowSlow
}}
=== Widget:Vimeo ===
{{#widget:Vimeo|id=8758454}}
=== Widget:YouTube ===
A YouTube video should be visible:
{{#widget:Youtube
|id=DWef69ItVrU
|width=200
|height=150
}}


== WikiEditor ==
== WikiEditor ==
Line 674: Line 498:
The page source should contain:
The page source should contain:
<pre>
<pre>
<title></nowiki>Your page title<nowiki></title>
<title>Your page title</title>
</pre>
</pre>


Line 681: Line 505:
<pre>
<pre>
<meta name="keywords" content="these,are,your,keywords"/>
<meta name="keywords" content="these,are,your,keywords"/>
</pre>
There should also be a description, with
<pre>
<meta name="description" content="Your meta description"/>
<meta name="description" content="Your meta description"/>
</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.


== Wiretap ==
== Wiretap ==

Latest revision as of 01:56, 5 January 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

Article Feedback[edit | edit source]

Note: this is for the extension ArticleFeedbackv5

Special:ArticleFeedbackv5 should exist and allow access to the feedback system.

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).

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

FsLookAndFeel[edit | edit source]

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

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

MasonryMainPage[edit | edit source]

Test
This should be orange
Test2
This should be blue and wider
Test
This should be orange
Test2
This should be blue and wider
Test
This should be orange
Test2
This should be blue and wider
Test
This should be orange

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:

JoshuaReynoldsParty.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

JoshuaReynoldsParty.jpg

Expected

JoshuaReynoldsParty.jpg

OpenID Connect[edit | edit source]

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

Page Importer[edit | edit source]

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

PageForms[edit | edit source]

This should be a valid link: Special:Forms

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.

PDF Handler[edit | edit source]

You should see the content of the uploaded PDF (ExamplePDF.pdf):

Succeeded

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[edit | edit source]

Test 
15
Expected 
15
Source of Module:String
local p = {}
function p.len(frame)
	local s = frame.args[1]
	return mw.ustring.len( s )
end
return p


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

TalkRight[edit | edit source]

talk right should be present here.

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

Variables[edit | edit source]

Test 
testing
Expected 
testing

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.

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]