Why does web-component-tester time out in flight mode?

烈酒焚心 提交于 2019-12-24 22:13:57

问题


I've got a basic web-component-tester project which works fine when I'm online.

If I switch to flight mode, it seems to fail to connect to Selenium, and instead gives a largely useless error message after about 60s delay: "Error: Unable to connect to selenium".

Edit 2: I've narrowed the problem down in the following question, but I'd still like to know how to avoid it with web-component-tester:

  • Why does NodeJS request() fail on localhost in flight mode, but not 127.0.0.1? (Windows 10)

Edit: After some digging, it's something to do with DNS resolver somewhere beneath selenium-standalone failing while in flight mode, and not a lot to do with web-component-tester.

After inserting some debug logging into selenium-standalone, I tracked down the failure point to the check for whether Selenium is running. When online, this works fine, but when offline I get:

// check-started.js, logging the error inside the request() call:
Error: getaddrinfo ENOENT localhost:60435
    at Object.exports._errnoException (util.js:1022:11)
    at errnoException (dns.js:33:15)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)

The following seem to describe similar situations, but I don't see how to persuade selenium-standalone nor web-component-tester to specify an IP address family to even try the suggested solutions:

  • https://github.com/nodejs/node/issues/4825
  • https://github.com/nodejs/node/issues/10290
  • node.js http.request and ipv6 vs ipv4

My original text is below.

The full error log and wct.conf.json are below. I can supply package.json and bower.json too if it would help.

I'm on Windows 10.

wct.conf.json:

{
  "verbose": true,
  "plugins": {
    "local": {
      "skipSeleniumInstall": true,
      "browsers": ["chrome"]
    },
    "sauce": {
      "disabled": true
    }
  }
}

error log:

> color-curve@0.0.1 test C:\Users\Dave\projects\infinity-components\color-curve
> standard "**/*.html" && wct -l chrome

step: loadPlugins
step: configure
hook: configure
Expanded local browsers: [ 'chrome' ] into capabilities: [ { browserName: 'chrome',
    version: '60',
    chromeOptions: 
     { binary: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
       args: [Object] } } ]
configuration: { suites: [ 'test/index.html' ],
  verbose: true,
  quiet: false,
  expanded: false,
  testTimeout: 90000,
  persistent: false,
  extraScripts: [],
  clientOptions: { root: '/components/', verbose: true },
  compile: 'auto',
  activeBrowsers: [ { browserName: 'chrome', version: '60', chromeOptions: [Object] } ],
  browserOptions: {},
  plugins: 
   { local: 
      { disabled: false,
        skipSeleniumInstall: true,
        browsers: [Object],
        seleniumArgs: [] },
     sauce: { disabled: true } },
  registerHooks: [Function: registerHooks],
  enforceJsonConf: false,
  webserver: 
   { hostname: 'localhost',
     _generatedIndexContent: '<!doctype html>\n<html>\n  <head>\n    <meta charset="utf-8">\n    <script>WCT = {"root":"/components/","verbose":true};</script>\n    <script>window.__generatedByWct = true;</script>\n    <script src="../web-component-tester/browser.js"></script>\n\n    <script src="../web-component-tester/data/a11ySuite.js"></script>\n</head>\n  <body>\n    <script>\n      WCT.loadSuites(["test/index.html"]);\n    </script>\n  </body>\n</html>\n' },
  root: 'C:\\Users\\Dave\\projects\\infinity-components\\color-curve',
  _: [],
  origSuites: [ 'test/' ] }
hook: prepare
hook: prepare:selenium
Starting Selenium server for local browsers
INFO - Selenium build info: version: '3.0.1', revision: '1969d75'
INFO - Launching a standalone Selenium Server
INFO::main: Logging initialized @222ms
INFO - Driver class not found: com.opera.core.systems.OperaDriver
INFO - Driver provider com.opera.core.systems.OperaDriver registration is skipped:
Unable to create new instances on this machine.
INFO - Driver class not found: com.opera.core.systems.OperaDriver
INFO - Driver provider com.opera.core.systems.OperaDriver is not registered
INFO - Driver provider org.openqa.selenium.safari.SafariDriver registration is skipped:
 registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform WIN10
INFO:osjs.Server:main: jetty-9.2.15.v20160210
INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@100fc185{/,null,AVAILABLE}
INFO:osjs.ServerConnector:main: Started ServerConnector@2922e2bb{HTTP/1.1}{0.0.0.0:51126}
INFO:osjs.Server:main: Started @419ms
INFO - Selenium Server is up and running
INFO - Selenium build info: version: '3.0.1', revision: '1969d75'
INFO - Launching a standalone Selenium Server
INFO::main: Logging initialized @222ms
INFO - Driver class not found: com.opera.core.systems.OperaDriver
INFO - Driver provider com.opera.core.systems.OperaDriver registration is skipped:
Unable to create new instances on this machine.
INFO - Driver class not found: com.opera.core.systems.OperaDriver
INFO - Driver provider com.opera.core.systems.OperaDriver is not registered
INFO - Driver provider org.openqa.selenium.safari.SafariDriver registration is skipped:
 registration capabilities Capabilities [{browserName=safari, version=, platform=MAC}] does not match the current platform WIN10
INFO:osjs.Server:main: jetty-9.2.15.v20160210
INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@100fc185{/,null,AVAILABLE}
INFO:osjs.ServerConnector:main: Started ServerConnector@2922e2bb{HTTP/1.1}{0.0.0.0:51126}
INFO:osjs.Server:main: Started @419ms
INFO - Selenium Server is up and running

Error: Unable to connect to selenium

来源:https://stackoverflow.com/questions/45715485/why-does-web-component-tester-time-out-in-flight-mode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!