title: Run Selenium (v3.4.0) tests on older versions of Firefox (v41.0)
body: <p>after some lost hours browsing internet, I'm not able to find the solution. I'm currently trying to test my app on older versions of Firefox (here, v41.0) for some reasons. I'm passing by a <a href="https://hub.docker.com/r/selenium/hub/" rel="nofollow noreferrer">docker image of Selenium</a> for the hub (v3.4.0) and a <a href="https://hub.docker.com/r/selenium/node-firefox/" rel="nofollow noreferrer">docker image for the Firefox</a> node (v41.0).</p>
  
  <p>I know that for older versions of Firefox, Geckodriver, isn't compatible but it seems having a solution using </p>
  
  <pre><code>{ "marionette": true }
  </code></pre>
  
  <p>The Firefox node is perfectly connecting to the grid. I can connect to it using <code>docker exec -it &lt;container-id&gt; bash</code> but the issue appears while running the test.</p>
  
  <p>I'm still trying to find it but I'm blocked. Here the code of the Dockerfile: hub.docker.com/r/selenium/node-firefox/~/dockerfile/  for the Firefox node and here is the code for the test (using MochaJS).</p>
  
  <pre><code>test.it("should redirect to Google with FIREFOX 41.0", () =&gt; {
  
      var firefoxCap = Capabilities.firefox();
      firefoxCap.set('marionette', true);
  
      driver = new webdriver.Builder()
          .usingServer(CONSTANTS.SELENIUM_HUB)
          .withCapabilities(firefoxCap)
          .build();
  
      driver.get(CONSTANTS.GOOGLE_URL);
      driver.wait(until.titleIs(CONSTANTS.GOOGLE_TITLE));
      driver.wait(until.elementLocated(By.name(CONSTANTS.GOOGLE_SEARCH_KEY))).sendKeys(CONSTANTS.GOOGLE_SEARCH_VALUE);
      driver.findElement(By.name(CONSTANTS.GOOGLE_SEARCH_BUTTON_NAME)).click();
      driver.wait(until.titleIs(CONSTANTS.GOOGLE_SEARCH_TITLE));
      driver.wait(until.elementLocated(By.tagName(CONSTANTS.GOOGLE_RES_LINK))).click();
      driver.wait(until.titleIs(CONSTANTS.GOOGLE_TITLE));
      driver.quit();
  });
  </code></pre>
  
  <p>Here the logs</p>
  
  <pre><code>~/dev/selenium-grids/src$ mocha --timeout 30000 tests.js 
  Starting the tests...
  
  
    Work with REMOTE URL
      1) should redirect to Google with FIREFOX 41.0
  
  
    0 passing (6s)
    1 failing
  
    1) Work with REMOTE URL should redirect to Google with FIREFOX 41.0:
       WebDriverError: Missing 'marionetteProtocol' field in handshake
  Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
  System info: host: 'd4b3266d29f4', ip: '172.17.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-87-generic', java.version: '1.8.0_131'
  Driver info: driver.version: FirefoxDriver
  remote stacktrace: stack backtrace:
     0:           0x5787ed - backtrace::backtrace::trace::h59229d13f6a8837d
     1:           0x578942 - backtrace::capture::Backtrace::new::h23089c033eded8f0
     2:           0x450aec - geckodriver::marionette::MarionetteHandler::create_connection::h6f7058fccafe4367
     3:           0x425c32 - &lt;webdriver::server::Dispatcher&lt;T, U&gt;&gt;::run::h8f5348b8f5f7c053
     4:           0x40b22c - std::panicking::try::do_call::hb67c6fb6bcd96195
     5:           0x5dc20a - panic_unwind::__rust_maybe_catch_panic
                          at /checkout/src/libpanic_unwind/lib.rs:98
     6:           0x41b943 - &lt;F as alloc::boxed::FnBox&lt;A&gt;&gt;::call_box::h4100941edc372034
     7:           0x5d48a4 - alloc::boxed::{{impl}}::call_once&lt;(),()&gt;
                          at /checkout/src/liballoc/boxed.rs:650
                           - std::sys_common::thread::start_thread
                          at /checkout/src/libstd/sys_common/thread.rs:21
                           - std::sys::imp::thread::{{impl}}::new::thread_start
                          at /checkout/src/libstd/sys/unix/thread.rs:84
        at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:517:15)
        at parseHttpResponse (node_modules/selenium-webdriver/lib/http.js:509:13)
        at doSend.then.response (node_modules/selenium-webdriver/lib/http.js:441:30)
        at &lt;anonymous&gt;
        at process._tickCallback (internal/process/next_tick.js:169:7)
    From: Task: WebDriver.createSession()
        at Function.createSession (node_modules/selenium-webdriver/lib/webdriver.js:777:24)
        at Function.createSession (node_modules/selenium-webdriver/firefox/index.js:667:55)
        at createDriver (node_modules/selenium-webdriver/index.js:167:33)
        at Builder.build (node_modules/selenium-webdriver/index.js:629:16)
        at Context.test.it (tests_web.js:64:14)
        at runTest (node_modules/selenium-webdriver/testing/index.js:164:22)
        at node_modules/selenium-webdriver/testing/index.js:185:16
        at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1085:7)
        at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:184:14)
        at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:3092:14)
        at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:3075:27)
        at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2982:25)
        at node_modules/selenium-webdriver/lib/promise.js:676:7
        at &lt;anonymous&gt;
    From: Task: Work with REMOTE URL should redirect to Google with FIREFOX 41.0
        at Context.ret (node_modules/selenium-webdriver/testing/index.js:183:10)
  
  
  
  Closing the tests
  </code></pre>
  
  <p>When googling the issue because "Google is your friend", the only responses are "Update your Firefox versions" or "Downgrade your Selenium version" but I can't. Can someone explain me how to make it work? Even a workaround would be accepted.</p>
  
  <p>Thanks</p>