dequelabs / axe-cli

[Deprecated] A command-line interface for the aXe accessibility testing engine
Mozilla Public License 2.0
430 stars 44 forks source link

Determine what is causing the NoSuchSessionError in Firefox #3

Closed marcysutton closed 7 years ago

marcysutton commented 7 years ago

I get a Selenium NoSuchSessionError on every site I check with the default browser (Firefox) but @WilcoFiers doesn't. It isn't immediately obvious what is causing it as I have the latest geckodriver (1.11) and Selenium Webdriver 3.0.1.

I was able to trace it to the driver.quit() call in axe-test-urls.js. If I comment out that line, it does not throw the error. If I log the error, I get the result below. I don't have any other servers running and there is no activity registered on port 4444.

Here is the stack trace, I shortened the violation stuff for brevity:


01:50 PM /Users/marcysutton/Sites/Deque/axe-cli (master *+$=)> node index.js overheid.nl
Running axe-core 2.0.7 in phantomjs

Testing http://overheid.nl ... please wait, this may take a minute.

  Violation of "color-contrast" with 4 occurrences!

4 Accessibility issues detected.

Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:4444
    at ClientRequest.<anonymous> (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/http/index.js:238:15)
    at emitOne (events.js:96:13)
    at ClientRequest.emit (events.js:188:7)
    at Socket.socketErrorListener (_http_client.js:310:9)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at emitErrorNT (net.js:1276:8)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
From: Task: WebDriver.quit()
    at WebDriver.schedule (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/webdriver.js:816:17)
    at WebDriver.quit (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/webdriver.js:849:23)
    at stopDriver (/Users/marcysutton/Sites/Deque/axe-cli/lib/webdriver.js:33:16)
    at testPages (/Users/marcysutton/Sites/Deque/axe-cli/lib/axe-test-urls.js:20:3)
    at /Users/marcysutton/Sites/Deque/axe-cli/lib/axe-test-urls.js:71:5
    at ManagedPromise.invokeCallback_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:1366:14)
    at TaskQueue.execute_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2970:14)
    at TaskQueue.executeNext_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2953:27)
    at asyncRun (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2813:27)
    at /Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:676:7

/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2517
        throw error;
        ^

NoSuchSessionError: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used.
    at WebDriverError (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/error.js:27:5)
    at NoSuchSessionError (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/error.js:122:5)
    at session_.flow_.promise (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/webdriver.js:856:16)
    at new ManagedPromise (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:1067:7)
    at ControlFlow.promise (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2396:12)
    at promise.finally (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/webdriver.js:855:34)
    at /Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:1594:12
    at ManagedPromise.invokeCallback_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:1366:14)
    at TaskQueue.execute_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2970:14)
    at TaskQueue.executeNext_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2953:27)
From: Task: WebDriver.quit()
    at WebDriver.schedule (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/webdriver.js:816:17)
    at WebDriver.quit (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/webdriver.js:849:23)
    at driver.get.then.then.then.catch (/Users/marcysutton/Sites/Deque/axe-cli/lib/axe-test-urls.js:78:11)
    at ManagedPromise.invokeCallback_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:1366:14)
    at TaskQueue.execute_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2970:14)
    at TaskQueue.executeNext_ (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2953:27)
    at asyncRun (/Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:2813:27)
    at /Users/marcysutton/Sites/Deque/axe-cli/node_modules/selenium-webdriver/lib/promise.js:676:7
    at process._tickCallback (internal/process/next_tick.js:103:7)```
marcysutton commented 7 years ago

I found out more about this issue: it throws when you use the default of PhantomJS, but without the call to config.driver.quit(); in lib/webdriver.js, axe-cli leaves stale browser instances open when the tests complete. Need to find a setup that preserves both drivers.