State.done = (0 == State.remaining)
-# this just does Firefox for now
-class BrowserCommand():
+class BaseBrowserCommand(object):
def __init__(self, browserRecord):
self.name = browserRecord["name"]
self.path = browserRecord["path"]
if not os.path.exists(self.path):
throw("Path to browser '%s' does not exist." % self.path)
- def _fixupMacPath(self):
- self.path = os.path.join(self.path, "Contents", "MacOS", "firefox-bin")
-
def setup(self):
self.tempDir = tempfile.mkdtemp()
self.profileDir = os.path.join(self.tempDir, "profile")
- shutil.copytree(os.path.join(DOC_ROOT, "test", "resources", "firefox"),
- self.profileDir)
def teardown(self):
# If the browser is still running, wait up to ten seconds for it to quit
if self.tempDir is not None and os.path.exists(self.tempDir):
shutil.rmtree(self.tempDir)
+ def start(self, url):
+ raise Exception("Can't start BaseBrowserCommand")
+
+class FirefoxBrowserCommand(BaseBrowserCommand):
+ def _fixupMacPath(self):
+ self.path = os.path.join(self.path, "Contents", "MacOS", "firefox-bin")
+
+ def setup(self):
+ super(FirefoxBrowserCommand, self).setup()
+ shutil.copytree(os.path.join(DOC_ROOT, "test", "resources", "firefox"),
+ self.profileDir)
+
def start(self, url):
cmds = [self.path]
if platform.system() == "Darwin":
cmds.extend(["-no-remote", "-profile", self.profileDir, url])
self.process = subprocess.Popen(cmds)
+class ChromeBrowserCommand(BaseBrowserCommand):
+ def _fixupMacPath(self):
+ self.path = os.path.join(self.path, "Contents", "MacOS", "Google Chrome")
+
+ def start(self, url):
+ cmds = [self.path]
+ cmds.extend(["--user-data-dir=%s" % self.profileDir,
+ "--no-first-run", "--disable-sync", url])
+ self.process = subprocess.Popen(cmds)
+
+def makeBrowserCommand(browser):
+ path = browser["path"].lower()
+ name = browser["name"].lower()
+ if name.find("firefox") > -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):