pdf.js/test/unit/testreporter.js
Tim van der Meij d86720b7dc
Identify browsers using the name instead of the path
The other testing code already uses the name of the browser as the
unique identifier, so I don't see a good reason to not use that for
identifying browsers to quit as well. Doing so simplifies the (already
somewhat complex) testing logic and ensures that we can use existing
functionality (such as the `getSession` function) to retrieve sessions.
2020-04-26 14:42:17 +02:00

78 lines
1.9 KiB
JavaScript

"use strict";
// eslint-disable-next-line no-unused-vars
var TestReporter = function (browser) {
function send(action, json, cb) {
var r = new XMLHttpRequest();
// (The POST URI is ignored atm.)
r.open("POST", action, true);
r.setRequestHeader("Content-Type", "application/json");
r.onreadystatechange = function sendTaskResultOnreadystatechange(e) {
if (r.readyState === 4) {
// Retry until successful
if (r.status !== 200) {
send(action, json, cb);
} else {
if (cb) {
cb();
}
}
}
};
json.browser = browser;
r.send(JSON.stringify(json));
}
function sendInfo(message) {
send("/info", { message });
}
function sendResult(status, description, error) {
var message = {
status,
description,
};
if (typeof error !== "undefined") {
message.error = error;
}
send("/submit_task_results", message);
}
function sendQuitRequest() {
send(`/tellMeToQuit?browser=${escape(browser)}`, {});
}
this.now = function () {
return new Date().getTime();
};
this.jasmineStarted = function (suiteInfo) {
this.runnerStartTime = this.now();
sendInfo("Started tests for " + browser + ".");
};
this.suiteStarted = function (result) {};
this.specStarted = function (result) {};
this.specDone = function (result) {
if (result.failedExpectations.length === 0) {
sendResult("TEST-PASSED", result.description);
} else {
var failedMessages = "";
var items = result.failedExpectations;
for (var i = 0, ii = items.length; i < ii; i++) {
failedMessages += items[i].message + " ";
}
sendResult("TEST-UNEXPECTED-FAIL", result.description, failedMessages);
}
};
this.suiteDone = function (result) {};
this.jasmineDone = function () {
// Give the test.py some time process any queued up requests
setTimeout(sendQuitRequest, 500);
};
};