Benutzer:Schnark/js/browsertest.js/watchlist++.js

aus Wikipedia, der freien Enzyklopädie

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/*global mediaWiki*/
(function (test) {
"use strict";
test('Beobachtungsliste++', function (S) {
	S.load('Spezial:Letzte Änderungen', {hidebots: 1});
	S.wait();
	S.assert('!!$(".mw-changeslist-line-not-watched .mw-title a").length', 'Änderungen an nicht beobachteten Seiten');
	S.exec('mw.libs.browsertest.data.title = $(".mw-changeslist-line-not-watched .mw-title a").first().text();');
	S.exec('mw.libs.browsertest.data.titleWithoutNS = mw.libs.browsertest.data.title.replace(/.*?:/, "");'); //FIXME nur NR
	S.exec('mw.libs.browsertest.data.done = false;' +
		'mw.loader.using("mediawiki.api").then(function () {' +
			'(new mw.Api()).watch(mw.libs.browsertest.data.title).then(function () {' +
					'$.post(mw.util.wikiScript("api"), {' +
						'action: "setnotificationtimestamp",' +
						'timestamp: "2000-01-01T00:00:00Z",' +
						'titles: mw.libs.browsertest.data.title,' +
						'token: mw.user.tokens.get("csrfToken"),' +
						'format: "json",' +
						'formatversion: 2' +
					'}).then(function () {' +
						'mw.libs.browsertest.data.done = true;' +
					'});' +
			'});' +
		'});'
	);
	S.waitFor('mw.libs.browsertest.data.done', 7000, 'Seite beobachtet');
	S.load('Spezial:Watchlist++');
	S.wait();
	S.waitFor('$("#rules-add").length > 0', 5000, 'Interface aufgebaut');
	S.exec('mw.libs.browsertest.data.rules = $("#rules-list > li").length;');
	S.click('#rules-add');
	S.waitFor('$(".oo-ui-window-active").length === 1', 3000, 'Dialog angezeigt');
	S.exec('$("input.oo-ui-inputWidget-input").first().val("tEST").change();');
	S.click('$("table.oo-ui-widget .oo-ui-dropdownWidget-handle").first()');
	S.click('.oo-ui-labelElement:visible:contains("Seitentitel")');
	S.assert('$("table.oo-ui-widget tr").length === 2', 'Neue Zeile angezeigt');
	S.exec('$("table.oo-ui-widget input[type=\'text\']").eq(0).val(mw.libs.browsertest.data.titleWithoutNS).change();');
	S.click('[role="button"]:contains("Speichern")');
	S.waitFor('$(".oo-ui-processDialog-errors").text()' +
		'.indexOf("Fehlende Aktion für Regel!") > -1',
		10000, 'Fehlende Markierung bemängelt');
	S.click('.oo-ui-processDialog-errors [role="button"]:contains("Ausblenden")');
	S.click('$(".oo-ui-dropdownWidget-handle").first()');
	S.click('.oo-ui-labelElement:visible:contains("rot")');
	S.click('[role="button"]:contains("Speichern")');
	S.waitFor('mw.libs.browsertest.data.rules + 1 === $("#rules-list > li").length', 1000, 'Regel hinzugefügt');
	S.load('Spezial:Watchlist++');
	S.wait();
	S.waitFor('$("#changes-table tr td:visible").length >= 10', 18000, 'Seite mit ungesehenen Änderungen');
	S.assert('$("#changes-table tr.mark-1 .td-title:visible").text().indexOf(mw.libs.browsertest.data.title) > -1',
		'Erwartete Seite mit richtiger Markierung aufgeführt');
	S.exec('mw.libs.browsertest.data.changes = $("#changes-table tr td:visible").length / 10');
	S.click('[role="button"]:contains("ein-/ausblenden")');
	S.assert('$("#changes-table tr td:visible").length / 10 > mw.libs.browsertest.data.changes', 'weitere Änderungen');
	S.exec('$("tr:contains(\'" + mw.libs.browsertest.data.title.replace(/\'/, "\\\\\'") + "\')")' +
		'.find(".td-read a").first().click();');
	S.click('[role="button"]:contains("ein-/ausblenden")');
	S.assert('$("#changes-table tr td:visible").length / 10 === mw.libs.browsertest.data.changes - 1', 'als gelesen markiert');
	S.click('$(".rules-edit").eq(-1)');
	S.waitFor('$("table.oo-ui-widget input[type=\'text\']").eq(0).val() === mw.libs.browsertest.data.titleWithoutNS',
		2000, 'Dialog angezeigt');
	S.exec('window.confirm = function (q) {return q === "Soll die Regel „tEST“ wirklich gelöscht werden?";};');
	S.click('$(".rules-delete").eq(-1)');
	S.assert('mw.libs.browsertest.data.rules === $("#rules-list > li").length', 'Regel gelöscht');
	S.exec('mw.libs.browsertest.data.done = false;' +
		'mw.loader.using("mediawiki.api").then(function () {' +
			'(new mw.Api()).unwatch(mw.libs.browsertest.data.title).then(function () {' +
				'mw.libs.browsertest.data.done = true;' +
			'});' +
		'});'
	);
	S.waitFor('mw.libs.browsertest.data.done', 5000, 'Seite entobachtet');
});
})(mediaWiki.libs.browsertest.test);