| // 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(); |
| }); |
| } |
| } |
| } |