summaryrefslogtreecommitdiff
path: root/misc/openlayers/tests/selenium/remotecontrol/test_ol.py
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/tests/selenium/remotecontrol/test_ol.py')
-rw-r--r--misc/openlayers/tests/selenium/remotecontrol/test_ol.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/misc/openlayers/tests/selenium/remotecontrol/test_ol.py b/misc/openlayers/tests/selenium/remotecontrol/test_ol.py
new file mode 100644
index 0000000..cb8ad98
--- /dev/null
+++ b/misc/openlayers/tests/selenium/remotecontrol/test_ol.py
@@ -0,0 +1,95 @@
+from selenium import selenium
+import time
+import sys
+from ConfigParser import ConfigParser
+
+MAX_TEST_LENGTH = 300
+if len(sys.argv) > 2:
+ filename = sys.argv[2]
+else:
+ filename = "config.cfg"
+
+c = ConfigParser()
+c.read(filename)
+
+targets = {}
+
+server = c.get('config', 'server')
+url= c.get('config', 'url')
+if c.has_option('config', 'timeout'):
+ MAX_TEST_LENGTH = int(c.get('config', 'timeout'))
+
+
+sections = c.sections()
+for s in sections:
+ if s == 'config':
+ continue
+ targets[s] = dict(c.items(s))
+ targets[s]['name'] = s
+
+if sys.argv[1] == "all":
+ browsers = list(targets.values())
+elif sys.argv[1] not in targets:
+ print "Invalid target"
+ sys.exit()
+else:
+ browsers = [targets[sys.argv[1]]]
+
+keep_going = True
+
+if 1:
+ for b in browsers:
+ if not keep_going:
+ continue
+
+ print "Running %s on %s" % (b['name'], b['host'])
+ s = selenium(b['host'], 4444, "*%s" % b['browsercmd'], server)
+ s.start()
+ try:
+ s.open_window(url, "test_running")
+ time.sleep(2)
+ s.select_window("test_running")
+ time.sleep(2)
+ s.refresh()
+
+ count = 0
+ while count == 0:
+ count = int(s.get_eval("window.document.getElementById('testtable').getElementsByTagName('tr').length"))
+ time.sleep(5)
+
+ ok = 0
+ fail = 0
+ last_change = time.time()
+ while True:
+ new_ok = int(s.get_eval('window.Test.AnotherWay._g_ok_pages'))
+ new_fail = int(s.get_eval('window.Test.AnotherWay._g_fail_pages'))
+ if new_ok != ok or new_fail != fail:
+ ok = new_ok
+ fail = new_fail
+ last_change = time.time()
+
+ if (ok + fail) >= count:
+ break
+ if time.time() - last_change > MAX_TEST_LENGTH:
+ raise Exception("Failed: with %s okay and %s failed, ran out of time: %s is more than %s" % (ok, fail, (time.time() - last_change), MAX_TEST_LENGTH))
+ time.sleep(10)
+
+ if fail:
+ print "Failed: %s" % fail
+ html = s.get_eval("window.document.getElementById('results').innerHTML").encode("utf-8")
+ all_html = """<html>
+ <head>
+ <meta content="text/html; charset=utf-8" http-equiv="content-type" />
+ </head>
+ <body>%s</body></html>""" % html
+
+ f = open("fail.%s.%s.html" % (time.time(), b['name']), "w")
+ f.write(all_html)
+ f.close()
+ except KeyboardInterrupt, E:
+ keep_going = False
+ print "Stopped by keyboard interrupt"
+ except Exception, E:
+ print "Error: ", E
+ s.stop()
+