summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2018-11-04 14:34:31 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2018-11-04 14:34:31 +0000
commitd676c7e5b6166d49497aae851eea84037f94b412 (patch)
tree626eb75e0216260fd5ce496474b164675d8c9136
parenteb87192ddcaaed47dd54f95716674502862b3a1d (diff)
downloadnetsurf-d676c7e5b6166d49497aae851eea84037f94b412.tar.gz
netsurf-d676c7e5b6166d49497aae851eea84037f94b412.tar.bz2
Test: Monkey driver: Implement sleep-ms and repeat actions.
-rwxr-xr-xtest/monkey-driver.py45
-rw-r--r--test/monkey-tests/quit-mid-fetch.yaml2
2 files changed, 42 insertions, 5 deletions
diff --git a/test/monkey-driver.py b/test/monkey-driver.py
index 4b8da8254..226c028e7 100755
--- a/test/monkey-driver.py
+++ b/test/monkey-driver.py
@@ -105,6 +105,32 @@ def run_test_step_action_navigate(ctx, step):
def run_test_step_action_sleep_ms(ctx, step):
print(get_indent(ctx) + "Action: " + step["action"])
+ conds = step['conditions']
+ sleep_time = step['time']
+ sleep = 0
+ have_repeat = False
+ if isinstance(sleep_time, str):
+ assert(ctx['repeats'].get(sleep_time) is not None)
+ repeat = ctx['repeats'].get(sleep_time)
+ sleep = repeat["i"] / 1000
+ start = repeat["start"]
+ have_repeat = True
+ else:
+ sleep = time / 1000
+ start = time.time()
+
+ while True:
+ slept = time.time() - start
+ if conds_met(ctx, conds):
+ if have_repeat:
+ ctx['repeats'][sleep_time]["loop"] = False
+ print(get_indent(ctx) + " Condition met after {}s".format(slept))
+ break
+ elif slept > sleep:
+ print(get_indent(ctx) + " Condition not met after {}s".format(sleep))
+ break
+ else:
+ ctx['browser'].farmer.loop(once=True)
def run_test_step_action_block(ctx, step):
print(get_indent(ctx) + "Action: " + step["action"])
@@ -116,10 +142,20 @@ def run_test_step_action_block(ctx, step):
def run_test_step_action_repeat(ctx, step):
print(get_indent(ctx) + "Action: " + step["action"])
- ctx["depth"] += 1
- for step in step["steps"]:
- run_test_step(ctx, step)
- ctx["depth"] -= 1
+ tag = step['tag']
+ assert(ctx['repeats'].get(tag) is None)
+ ctx['repeats'][tag] = {
+ "i": step["min"],
+ "step": step["step"],
+ "loop": True,
+ }
+ while ctx['repeats'][tag]["loop"]:
+ ctx['repeats'][tag]["start"] = time.time()
+ ctx["depth"] += 1
+ for s in step["steps"]:
+ run_test_step(ctx, s)
+ ctx['repeats'][tag]["i"] += ctx['repeats'][tag]["step"]
+ ctx["depth"] -= 1
def run_test_step_action_plot_check(ctx, step):
print(get_indent(ctx) + "Action: " + step["action"])
@@ -204,6 +240,7 @@ def run_test_step(ctx, step):
def walk_test_plan(ctx, plan):
ctx["depth"] = 0
ctx["timers"] = dict()
+ ctx['repeats'] = dict()
for step in plan["steps"]:
run_test_step(ctx, step)
diff --git a/test/monkey-tests/quit-mid-fetch.yaml b/test/monkey-tests/quit-mid-fetch.yaml
index b033f67b6..cffdae3f2 100644
--- a/test/monkey-tests/quit-mid-fetch.yaml
+++ b/test/monkey-tests/quit-mid-fetch.yaml
@@ -4,7 +4,7 @@ steps:
- action: repeat
min: 0
step: 50
- name: sleepytimer
+ tag: sleepytimer
steps:
- action: launch
- action: window-new