def __init__(self, runner, jsbridge_port, jsbridge_timeout=JSBRIDGE_TIMEOUT, handlers=None, screenshots_path=None): """Constructor of the Mozmill class. Arguments: runner -- The MozRunner instance to run the application jsbridge_port -- The port the jsbridge server is running on Keyword arguments: jsbridge_timeout -- How long to wait without a jsbridge communication handlers -- pluggable event handlers screenshots_path -- Path where screenshots will be saved """ # the MozRunner self.runner = runner # execution parameters self.debugger = None self.interactive = False # jsbridge parameters self.jsbridge_port = jsbridge_port self.jsbridge_timeout = jsbridge_timeout self.bridge = self.back_channel = None # Report data will end up here self.results = TestResults() # persisted data self.persisted = {} # shutdown parameters self.shutdownMode = {} self.endRunnerCalled = False # list of listeners and handlers self.listeners = [] self.listener_dict = {} # by event type self.global_listeners = [] self.handlers = [] # screenshots data self.persisted['screenshots'] = {} if screenshots_path: path = os.path.abspath(screenshots_path) if not os.path.isdir(path): os.makedirs(path) self.persisted['screenshots']['path'] = screenshots_path or tempfile.mkdtemp() # setup event handlers and register listeners self.setup_listeners() handlers = handlers or list() handlers.append(self.results) self.setup_handlers(handlers) # disable the crashreporter os.environ['MOZ_CRASHREPORTER_NO_REPORT'] = '1'