summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/virtual-keyboard/vk_support.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/virtual-keyboard/vk_support.js')
-rw-r--r--testing/web-platform/tests/virtual-keyboard/vk_support.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/testing/web-platform/tests/virtual-keyboard/vk_support.js b/testing/web-platform/tests/virtual-keyboard/vk_support.js
new file mode 100644
index 0000000000..e40216dd44
--- /dev/null
+++ b/testing/web-platform/tests/virtual-keyboard/vk_support.js
@@ -0,0 +1,71 @@
+// 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();
+ });
+ }
+ }
+}