So my preferred option here would be to use the UI to complete the FTE steps. The JavaScript being used here is not part of an API and therefore may change. For this to work, we should probably remove all local indexedDB databases in setUp so we restore defaults.

To answer this specific issue regarded deferred scripts, you should only need to wait for the variable to be available. Something like the following would be one way to do this (not tested):

    self.marionette.execute_async_script("""
    waitFor(
      function () { window.wrappedJSObject.ConfigManager.setOption({ fte: false }); marionetteScriptFinished(); },
      function () { return window.wrappedJSObject.ConfigManager; });"""