diff --git a/test/resources/browser_manifests/browser_manifest.json.linux b/test/resources/browser_manifests/browser_manifest.json.linux new file mode 100644 index 000000000..a576899b5 --- /dev/null +++ b/test/resources/browser_manifests/browser_manifest.json.linux @@ -0,0 +1,10 @@ +[ + { + "name":"firefox7", + "path":"/home/sayrer/firefoxen/nightly/firefox" + }, + { + "name":"chrome14", + "path":"/opt/google/chrome/chrome" + } +] diff --git a/test/resources/browser_manifests/browser_manifest.json.mac b/test/resources/browser_manifests/browser_manifest.json.mac index 7c9dda943..5b93ff196 100644 --- a/test/resources/browser_manifests/browser_manifest.json.mac +++ b/test/resources/browser_manifests/browser_manifest.json.mac @@ -6,5 +6,9 @@ { "name":"firefox6", "path":"/Users/sayrer/firefoxen/Aurora.app" + }, + { + "name":"chrome14", + "path":"/Applications/Google Chrome.app" } ] diff --git a/test/test.py b/test/test.py index 662f2d8e4..5f756877a 100644 --- a/test/test.py +++ b/test/test.py @@ -2,7 +2,7 @@ import json, platform, os, shutil, sys, subprocess, tempfile, threading, time, u from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer import SocketServer from optparse import OptionParser -from urlparse import urlparse +from urlparse import urlparse, parse_qs USAGE_EXAMPLE = "%prog" @@ -132,6 +132,11 @@ class PDFTestHandler(BaseHTTPRequestHandler): self.send_header('Content-Type', 'text/plain') self.end_headers() + url = urlparse(self.path) + if url.path == "/tellMeToQuit": + tellAppToQuit(url.path, url.query) + return + result = json.loads(self.rfile.read(numBytes)) browser, id, failure, round, page, snapshot = result['browser'], result['id'], result['failure'], result['round'], result['page'], result['snapshot'] taskResults = State.taskResults[browser][id] @@ -156,8 +161,20 @@ class PDFTestHandler(BaseHTTPRequestHandler): State.done = (0 == State.remaining) -# this just does Firefox for now -class BrowserCommand(): +# Applescript hack to quit Chrome on Mac +def tellAppToQuit(path, query): + if platform.system() != "Darwin": + return + d = parse_qs(query) + path = d['path'][0] + cmd = """osascript< -1 or path.find("firefox") > -1: + return FirefoxBrowserCommand(browser) + elif name.find("chrom") > -1 or path.find("chrom") > -1: + return ChromeBrowserCommand(browser) + else: + raise Exception("Unrecognized browser: %s" % browser) + def makeBrowserCommands(browserManifestFile): with open(browserManifestFile) as bmf: - browsers = [BrowserCommand(browser) for browser in json.load(bmf)] + browsers = [makeBrowserCommand(browser) for browser in json.load(bmf)] return browsers def downloadLinkedPDFs(manifestList): @@ -267,6 +311,7 @@ def startBrowsers(browsers, options): b.setup() print 'Launching', b.name qs = 'browser='+ urllib.quote(b.name) +'&manifestFile='+ urllib.quote(options.manifestFile) + qs += '&path=' + b.path b.start('http://localhost:8080/test/test_slave.html?'+ qs) def teardownBrowsers(browsers): diff --git a/test/test_slave.html b/test/test_slave.html index c64c6a390..d70e362af 100644 --- a/test/test_slave.html +++ b/test/test_slave.html @@ -6,7 +6,7 @@