function executeTests(tests, callback) { // context is `this` object in test functions // it can be used to track data between tests var context = {};
(async function executeRemainingTests(remainingTests) { if (!remainingTests.length) {
callback(); return;
}
var nextTest = remainingTests.shift(); var finishTest = executeRemainingTests.bind(null, remainingTests); var startTest = nextTest.call.bind(nextTest, context, finishTest);
try {
await startTest(); // if no callback was defined for test function, // we must manually invoke finish to continue if (nextTest.length === 0) {
finishTest();
}
} catch (e) {
ok(false, `Test threw exception: ${e}`);
finishTest();
}
})(tests);
}
// NotificationTest API return {
run(tests) {
SimpleTest.waitForExplicitFinish();
addLoadEvent(async function () {
executeTests(tests, function () {
SimpleTest.finish();
});
});
},
async function testFrame(src, args) {
let { promise, resolve } = Promise.withResolvers();
let iframe = document.createElement("iframe");
let serialized = encodeURIComponent(JSON.stringify(args));
iframe.src = `${src}?args=${serialized}`;
window.callback = async function (data) {
window.callback = null;
document.body.removeChild(iframe);
iframe = null;
resolve(data);
};
document.body.appendChild(iframe); return await promise;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.26Bemerkung:
(vorverarbeitet am 2026-09-27)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.