['edit', 'submit'].includes(mw.config.get('wgAction')) &&
[10, 828].includes(mw.config.get('wgNamespaceNumber')) &&
!mw.config.get('wgTitle').endsWith('/doc') &&
$(function autoTestcases() {
let input = document.querySelector('#wpTemplateSandboxPage > input');
if (!input || input.value) return;
let isModule = mw.config.get('wgNamespaceNumber') === 828;
let title = mw.config.get('wgTitle');
let ns = mw.config.get('wgFormattedNamespaces');
if (title.endsWith('/testcases')) {
if (isModule) input.value = ns[829] ':' title;
return;
}
let titles = [], last;
title.replace(/\/sandbox$/, '').split('/').forEach(s => {
last = last ? last '/' s : s;
titles.push(ns[10] ':' last '/testcases');
if (isModule) titles.push(ns[829] ':' last '/testcases');
});
mw.loader.using('mediawiki.api').then(() => (
new mw.Api().post({
action: 'query',
titles: titles,
formatversion: 2
}, {
headers: { 'Promise-Non-Write-API-Action': 1 }
})
)).then(response => {
let obj;
(((response || {}).query || {}).pages || []).forEach(page => {
if (page.missing ||
obj && (page.ns < obj.ns || page.title.length < obj.title.length)
) {
return;
}
obj = page;
});
if (obj) input.value = obj.title;
});
});