mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-23 20:46:50 +03:00
119 lines
3.3 KiB
Python
Executable File
119 lines
3.3 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import sys, getopt, yaml
|
|
|
|
def print_usage():
|
|
print('Usage:')
|
|
print(' ' + sys.argv[0] + ' -m <path to monkey> -t <path to test>')
|
|
|
|
def parse_argv(argv):
|
|
path_monkey = ''
|
|
path_test = ''
|
|
try:
|
|
opts, args = getopt.getopt(argv,"hm:t:",["monkey=","test="])
|
|
except getopt.GetoptError:
|
|
print_usage()
|
|
sys.exit(2)
|
|
for opt, arg in opts:
|
|
if opt == '-h':
|
|
print_usage()
|
|
sys.exit()
|
|
elif opt in ("-m", "--monkey"):
|
|
path_monkey = arg
|
|
elif opt in ("-t", "--test"):
|
|
path_test = arg
|
|
|
|
if path_monkey == '':
|
|
print_usage()
|
|
sys.exit()
|
|
if path_test == '':
|
|
print_usage()
|
|
sys.exit()
|
|
|
|
return path_monkey, path_test
|
|
|
|
def load_test_plan(path):
|
|
plan = []
|
|
with open(path, 'r') as stream:
|
|
try:
|
|
plan = (yaml.load(stream))
|
|
except:
|
|
print (exc)
|
|
return plan
|
|
|
|
def get_indent(ctx):
|
|
return ' ' * ctx["depth"];
|
|
|
|
def print_test_plan_info(ctx, plan):
|
|
print('Running test: [' + plan["group"] + '] ' + plan["title"])
|
|
|
|
def run_test_step_action_launch(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_window_new(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_window_close(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_navigate(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_sleep_ms(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_block(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
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
|
|
|
|
def run_test_step_action_timer_start(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_timer_stop(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_timer_check(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
def run_test_step_action_quit(ctx, step):
|
|
print(get_indent(ctx) + "Action: " + step["action"])
|
|
|
|
step_handlers = {
|
|
"launch": run_test_step_action_launch,
|
|
"window-new": run_test_step_action_window_new,
|
|
"window-close": run_test_step_action_window_close,
|
|
"navigate": run_test_step_action_navigate,
|
|
"sleep-ms": run_test_step_action_sleep_ms,
|
|
"block": run_test_step_action_block,
|
|
"repeat": run_test_step_action_repeat,
|
|
"timer-start": run_test_step_action_timer_start,
|
|
"timer-stop": run_test_step_action_timer_stop,
|
|
"timer-check": run_test_step_action_timer_check,
|
|
"quit": run_test_step_action_quit,
|
|
}
|
|
|
|
def run_test_step(ctx, step):
|
|
step_handlers[step["action"]](ctx, step)
|
|
|
|
def walk_test_plan(ctx, plan):
|
|
ctx["depth"] = 0
|
|
for step in plan["steps"]:
|
|
run_test_step(ctx, step)
|
|
|
|
|
|
def main(argv):
|
|
ctx = {}
|
|
path_monkey, path_test = parse_argv(argv)
|
|
plan = load_test_plan(path_test)
|
|
print_test_plan_info(ctx, plan)
|
|
walk_test_plan(ctx, plan)
|
|
|
|
# Some python weirdness to get to main().
|
|
if __name__ == "__main__":
|
|
main(sys.argv[1:]) |