71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
// Ends a manual test. Must be called before any async tests are started.
|
|
function skipManualTest() {
|
|
test(function() { assert_true(false); }, "Manual Test Skipped");
|
|
done();
|
|
}
|
|
|
|
var stepInstructions = [];
|
|
var testNames = [];
|
|
var stepFunctions = [];
|
|
var steps;
|
|
var curStep = 0;
|
|
|
|
// Adds a manual test step to the test. A test will add a series of steps,
|
|
// along with instructions. Once all the tests steps are added, the test can
|
|
// be run by continually running the nextStep() function. All manual test steps
|
|
// must be added before calling nextStep.
|
|
//
|
|
// |func| A function to be executed at the given step. This function can include
|
|
// testharness assertions if |testName| is provided. If this is the last
|
|
// step, the |done()| function (used for manual testharness.js tests)
|
|
// will be called after |func| is executed.
|
|
// |testName| If provided, the |func| will be wrapped in a testharness.js
|
|
// async_test with this name. If null, |func| will be executed as a
|
|
// free function.
|
|
// |instructions| The text to display to the user. Note, these are shown after
|
|
// step is executed so these should be instructions to setup the
|
|
// checks in the next step.
|
|
function addManualTestStep(func, testName, instructions) {
|
|
stepFunctions.push(func);
|
|
testNames.push(testName);
|
|
stepInstructions.push(instructions);
|
|
}
|
|
|
|
// Runs the next step of the test. This must be called only after all test steps
|
|
// have been added using |addManualTestStep|.
|
|
//
|
|
// |callbackFunc| If provided, will be called with a single argument being the
|
|
// instruction string for the current step. Use this to update
|
|
// any necessary UI.
|
|
function nextStep(callbackFunc) {
|
|
if (curStep == 0)
|
|
_startManualTest();
|
|
|
|
if (typeof(callbackFunc) === 'function')
|
|
callbackFunc(stepInstructions[curStep]);
|
|
|
|
steps[curStep]();
|
|
curStep++;
|
|
}
|
|
|
|
function _startManualTest() {
|
|
steps = [];
|
|
for (let i = 0; i < stepFunctions.length; ++i) {
|
|
var stepFunc = stepFunctions[i];
|
|
var testName = testNames[i];
|
|
if (testName) {
|
|
steps.push(async_test(testName).step_func(function() {
|
|
stepFunctions[i]();
|
|
this.done();
|
|
if (i == stepFunctions.length - 1)
|
|
done();
|
|
}));
|
|
} else {
|
|
steps.push(function() {
|
|
stepFunctions[i]();
|
|
if (i == stepFunctions.length - 1)
|
|
done();
|
|
});
|
|
}
|
|
}
|
|
}
|