diff --git a/.gitignore b/.gitignore index ccdec1b..cd778bd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,7 @@ local.log dist/** MANIFEST +venv build -browserstack_local.egg-info \ No newline at end of file +build +browserstack_local.egg-info diff --git a/browserstack/local.py b/browserstack/local.py index 7a9619e..d7e1618 100644 --- a/browserstack/local.py +++ b/browserstack/local.py @@ -1,13 +1,15 @@ -import subprocess, os, time, json, psutil +import subprocess, os, time, json,logging +import psutil + from browserstack.local_binary import LocalBinary from browserstack.bserrors import BrowserStackLocalError +logger = logging.getLogger(__name__) try: from importlib.metadata import version as package_version, PackageNotFoundError except: import pkg_resources - class Local: def __init__(self, key=None, binary_path=None, **kwargs): self.key = os.environ['BROWSERSTACK_ACCESS_KEY'] if 'BROWSERSTACK_ACCESS_KEY' in os.environ else key @@ -88,16 +90,19 @@ def start(self, **kwargs): os.system('echo "" > "'+ self.local_logfile_path +'"') try: if out: - data = json.loads(out.decode()) + output_string = out.decode() else: - data = json.loads(err.decode()) + output_string = err.decode() + + data = json.loads(output_string) if data['state'] != "connected": raise BrowserStackLocalError(data["message"]["message"]) else: self.pid = data['pid'] except ValueError: - raise BrowserStackLocalError('Error parsing JSON output from daemon') + logger.error("BinaryOutputParseError: Raw String = '{}'".format(output_string) ) + raise BrowserStackLocalError('Error parsing JSON output from daemon. Raw String = "{}"'.format(output_string)) def isRunning(self): return hasattr(self, 'pid') and psutil.pid_exists(self.pid)