Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Local DriverProvider Forked Browser issue returns error code 135 #3772

Closed
bitliner opened this issue Nov 26, 2016 · 11 comments · Fixed by #3787
Closed

Local DriverProvider Forked Browser issue returns error code 135 #3772

bitliner opened this issue Nov 26, 2016 · 11 comments · Fixed by #3787
Assignees

Comments

@bitliner
Copy link

bitliner commented Nov 26, 2016


  • Node Version: v6.9.1
  • Protractor Version: Version 4.0.11
  • Angular Version: 1.5.6
  • Browser(s): Chrome
  • Operating System and Version Mac OS

It throws the following error when tests are finished.

Ran 2 of 56 specs
2 specs, 0 failures, 1 pending spec
Finished in 58.461 seconds
[14:29:47] I/local - Shutting down selenium standalone server.
[14:29:47] E/launcher - Error code: 135
[14:29:47] E/launcher - Error message: ECONNREFUSED connect ECONNREFUSED 192.168.178.66:63460
[14:29:47] E/launcher - Error: ECONNREFUSED connect ECONNREFUSED 192.168.178.66:63460
    at ClientRequest.<anonymous> (/myapp/node_modules/selenium-webdriver/http/index.js:381: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 (/myapp/node_modules/selenium-webdriver/lib/webdriver.js:377:17)
    at WebDriver.quit (/myapp/node_modules/selenium-webdriver/lib/webdriver.js:443:23)
    at /myapp/node_modules/protractor/built/driverProviders/driverProvider.js:59:28
    at ManagedPromise.invokeCallback_ (/myapp/node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (/myapp/node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (/myapp/node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (/myapp/node_modules/selenium-webdriver/lib/promise.js:2820:25)
    at /myapp/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (internal/process/next_tick.js:103:7)
[14:29:47] E/launcher - Process exited with error code 135
make: *** [start_e2e] Error 135

The selenium driver start at:

[14:28:47] I/local - Selenium standalone server started at http://192.168.178.66:63460/wd/hub

A funny part is that I don't set any selenium address int eh configuration file, and it is going to use drivers that are in background that looks like coming from previous run, and I was not aware they were running in the background.

  58620   0.0  0.1  2728048  18996 s000  S     1:34PM   0:00.20 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=26052
myuser         58527   0.0  0.1  2728048  19064 s000  S     1:23PM   0:00.19 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=4153
myuser         58473   0.0  0.1  2728048  19080 s000  S     1:21PM   0:00.20 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=23560
myuser         58418   0.0  0.1  2702104  15180 s000  S     1:17PM   0:00.04 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=14689
myuser         58368   0.0  0.1  2702104  15068 s000  S     1:16PM   0:00.05 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=9237
myuser         58074   0.0  0.0  2702104   1280 s000  S    12:30AM   0:00.04 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=37854
myuser         58015   0.0  0.0  2702104    864 s000  S    12:27AM   0:00.05 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=36433
myuser         57973   0.0  0.0  2702104   1036 s000  S    12:26AM   0:00.06 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=40197
myuser         57485   0.0  0.0  7035788   6164 s000  S    12:24AM   0:06.65 /usr/bin/java -Dwebdriver.chrome.driver=/myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 -jar /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-2.53.1.jar -port 53409
myuser         57433   0.0  0.0  2702104   1032 s000  S    12:21AM   0:00.05 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=31190
myuser         57390   0.0  0.0  2702104   1036 s000  S    12:20AM   0:00.05 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=29690
myuser         56147   0.0  0.0  2702104   1048 s000  S     5:50PM   0:00.14 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=19130
myuser         14776   0.0  0.0  2702104    848 s000  S    Wed01AM   0:00.13 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=23519
myuser         14735   0.0  0.0  2702104    872 s000  S    Wed01AM   0:00.14 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=15109
myuser         14696   0.0  0.0  2702104    852 s000  S    Wed01AM   0:00.13 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=44188
myuser         14650   0.0  0.0  2702104    848 s000  S    Wed01AM   0:00.13 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=28789
myuser         14593   0.0  0.0  2702104    824 s000  S    Wed01AM   0:00.13 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=8508
myuser         14547   0.0  0.0  2702104    824 s000  S    Wed01AM   0:00.13 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=41571
myuser         14487   0.0  0.0  2702104    860 s000  S    Wed01AM   0:00.12 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=37855
myuser         14444   0.0  0.0  2702104    856 s000  S    Wed01AM   0:00.12 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=13811
myuser         14110   0.0  0.0  2702104    872 s000  S    Wed01AM   0:00.12 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=8560
myuser         14071   0.0  0.0  2702104    832 s000  S    Wed01AM   0:00.12 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=25462
myuser         14031   0.0  0.0  2702104    816 s000  S    Wed01AM   0:00.13 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=32134
myuser         13970   0.0  0.0  2702104    844 s000  S    Wed01AM   0:00.12 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=44700
myuser         11743   0.0  0.0  7035788   2896 s000  S    Wed12AM   1:54.41 /usr/bin/java -Dwebdriver.chrome.driver=/myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 -jar /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-2.53.1.jar -port 63382
myuser         11610   0.0  0.0  7048068   3104 s000  S    Wed12AM   2:20.35 /usr/bin/java -Dwebdriver.chrome.driver=/myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 -jar /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-2.53.1.jar -port 50223
myuser          7306   0.0  0.0  7035788   2888 s000  S    Tue01PM   2:16.93 /usr/bin/java -Dwebdriver.chrome.driver=/myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 -jar /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-2.53.1.jar -port 59857
myuser          7278   0.0  0.0  7036076   2912 s000  S    Tue01PM   2:16.53 /usr/bin/java -Dwebdriver.chrome.driver=/myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 -jar /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-2.53.1.jar -port 51591
myuser          6336   0.0  0.0  2720060   1632 s000  S    Tue11AM   0:00.68 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=17258
myuser          6089   0.0  0.0  2719796   1600 s000  S    Tue10AM   0:00.89 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=31638
myuser          5563   0.0  0.0  2720060   1560 s000  S    Tue01AM   0:00.84 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=17327
myuser          3161   0.0  0.0  2719796   1568 s000  S    Mon10PM   0:00.43 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=24737
myuser          3143   0.0  0.0  2719796   1556 s000  S    Mon10PM   0:00.43 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=4915
myuser          2812   0.0  0.0  2702104    840 s000  S    Mon10PM   0:00.26 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=30546
myuser         59447   0.0  0.0  2432804    852 s000  S+    2:36PM   0:00.00 egrep webdriver
myuser         59131   0.0  0.1  2728048  22828 s000  S     2:28PM   0:00.34 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=13253
myuser         58796   0.0  0.1  2728048  20752 s000  S     1:59PM   0:00.20 /myapp/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.25 --port=30501

I never launched all these webdrivers in the background.

It looks like webdriver start is run automatically by protractor, and there is no need anymore for it. But then, those processes are never killed.

@cnishina
Copy link
Contributor

Please follow the template instructions for creating an issue. Please provide a protractor config and an example of what created the stacktrace.

@bitliner
Copy link
Author

@cnishina launching any test causes that issue.

My protractor config is

var config = {
	plugins: [],
	seleniumAddress: process.env.SELENIUM_ADDRESS,
	// specs: require('./specList.js'),
	specs: require('./specList').getAll(),
	framework: 'jasmine2',
	// params: {
	// 	screenshotsBasePath: path.resolve(__dirname, './screenshots')
	// },
	capabilities: {
		browserName: 'chrome',
		'chromeOptions': {
			// Get rid of --ignore-certificate yellow warning
			args: ['--no-sandbox', '--test-type=browser'],
			// Set download path and avoid prompting for download even though
			// this is already the default on Chrome but for completeness
			prefs: {
				'download': {
					'prompt_for_download': false,
					'default_directory': path.resolve(__dirname, './downloads/'),
				},
			},
		}
	},
	// in case it throws  Error: Timed out waiting for Protractor to synchronize with the page after 11 seconds. 
	allScriptsTimeout: 300 * 1000,
	getPageTimeout: 300 * 1000,
	jasmineNodeOpts: {
		defaultTimeoutInterval: 300 * 1000
	},
	onPrepare: function() {

		if (process.env.FAIL_FAST === 'true'){
			jasmine.getEnv().addReporter(failFast.init());	
		}

		

		var SpecReporter = require('jasmine-spec-reporter');
		// add jasmine spec reporter
		jasmine.getEnv().addReporter(new SpecReporter({
			displayStacktrace: true
		}));
		// FsCleaner.cleanScreenshotsFolder();
		// FsCleaner.cleanDownloadFolder();
	},
	afterLaunch: function() {
		if (process.env.FAIL_FAST === 'true'){
			failFast.clean(); // Cleans up the "fail file" (see below) 
		}
	}

};

if (process.env.FAIL_FAST === 'true') {
	config.plugins.push({
		package: 'protractor-fail-fast'
	});
}

exports.config = config;

Note that I don't set the variable SELENIUM_ADDRESS.

It looks like to starts a driver by itself, but at the end it is not able to shut it down.

@cnishina
Copy link
Contributor

cnishina commented Nov 29, 2016

You still need webdriver-manager start to start a selenium server; however, if one is already running in the background, you do not need it. It does look unusual to have that many servers / drivers running in the background. I'd suggest stopping a few of them and figure out what is creating these selenium standalone server / chromedrivers to run.

Also, after stopping those instances, I would recommend just using webdriver-manager start and set your seleniumAddress to http://127.0.0.1:4444/wd/hub to rule out the current setup as the issue.

Since this appears to be more of a setup question, I'm going to close this. Please ask your support questions on StackOverflow, Google Group discussion list, or Gitter. For more information please reference https://github.com/angular/protractor/blob/master/CONTRIBUTING.md#questions

Thank you!

@bitliner
Copy link
Author

bitliner commented Nov 30, 2016

@cnishina, I think It is protractor that launches all those selenium drivers.

It looks like It has a mechanism to instantiate the driver but not to shut it down.

I consider it a bug, my expectation were that an error was thrown if web-driver was not manually launched by me. Or, if you are adding automatic creation of the webdriver, I expect that protractor shuts it down correctly.

If you see the error, it is quite explicit. It comes from protractor.

@cnishina
Copy link
Contributor

According to your config, Protractor is using the selenium address which means you have already started the selenium standalone server. I would suggest trying out my suggestions above.

@bitliner
Copy link
Author

bitliner commented Nov 30, 2016

My selenium address is undefined. So protractor generates it dynamically every time (on a different port) I start protractor.

@cnishina
Copy link
Contributor

cnishina commented Dec 1, 2016

One more question: are you forking the browser?

@bitliner
Copy link
Author

bitliner commented Dec 1, 2016

Yes, but on in the all tests. This happens at the startup of protractor, when there are not yet 2 browsers.

@cnishina
Copy link
Contributor

cnishina commented Dec 1, 2016

So I am able to reproduce this via driverProviders/local.

@cnishina
Copy link
Contributor

cnishina commented Dec 1, 2016

@bitliner I would recommend using webdriver-manager start and direct your calls to http://127.0.0.1:4444/wd/hub. This appears to be working.

@cnishina
Copy link
Contributor

cnishina commented Dec 1, 2016

So there's several things going on with this:

  1. on forked instances of browser, the error code is 135
  2. on this.server_.stop(), the chromedriver instance continues to run. See https://github.com/angular/protractor/blob/master/lib/driverProviders/local.ts#L130. Also looked into our code at v3.2.1 when this file was still JavaScript to see if there were any differences during the migration. See https://github.com/angular/protractor/blob/3.2.1/lib/driverProviders/local.js.

For part 1: This is my current stack trace on PR #3766 when using local.

  describe('for forked browsers', function() {
    // ensure that we can run EC on forked browser instances
    it('should have alertIsPresent', function() {
      var browser2 = browser.forkNewDriverInstance();
      browser2.get('index.html#/form');
      var EC2 = browser2.ExpectedConditions;
      var alertIsPresent = EC2.alertIsPresent();
      expect(alertIsPresent.call()).toBe(false);

      var alertButton = browser2.$('#alertbutton');
      alertButton.click();
      browser2.wait(EC2.alertIsPresent(), 1000);

      browser2.switchTo().alert().accept();
    });
  });
[18:02:43] E/launcher - Error code: 135
[18:02:43] E/launcher - Error message: ECONNREFUSED connect ECONNREFUSED 192.168.2.100:54367
[18:02:43] E/launcher - Error: ECONNREFUSED connect ECONNREFUSED 192.168.2.100:54367
    at ClientRequest.<anonymous> (/Users/cnishina/src/protractor/node_modules/selenium-webdriver/http/index.js:381: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/cnishina/src/protractor/node_modules/selenium-webdriver/lib/webdriver.js:377:17)
    at WebDriver.quit (/Users/cnishina/src/protractor/node_modules/selenium-webdriver/lib/webdriver.js:443:23)
    at /Users/cnishina/src/protractor/built/driverProviders/driverProvider.js:59:28
    at ManagedPromise.invokeCallback_ (/Users/cnishina/src/protractor/node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (/Users/cnishina/src/protractor/node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (/Users/cnishina/src/protractor/node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (/Users/cnishina/src/protractor/node_modules/selenium-webdriver/lib/promise.js:2820:25)
    at /Users/cnishina/src/protractor/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (internal/process/next_tick.js:103:7)
[18:02:43] E/launcher - Process exited with error code 135

@cnishina cnishina changed the title Tests end with Error code: 135 Local DriverProvider Forked Browser issue and ChromeDriver not shutting down. Dec 1, 2016
@cnishina cnishina changed the title Local DriverProvider Forked Browser issue and ChromeDriver not shutting down. Local DriverProvider Forked Browser issue returns error code 135 Dec 1, 2016
@cnishina cnishina self-assigned this Dec 1, 2016
cnishina added a commit to cnishina/protractor that referenced this issue Dec 2, 2016
- fix driver provider quit session to not throw error and quit
- should fix sauce labs test, enabling expected conditions test with forked instance
- checked that chromedriver does not persist in the background
- add local driver test with forked instance to test suite
- organize attach session and local specs to driverProviders directory

closes angular#3780, closes angular#3779, closes angular#3772
cnishina added a commit to cnishina/protractor that referenced this issue Dec 2, 2016
- fix driver provider quit session to not throw error and quit
- should fix sauce labs test, enabling expected conditions test with forked instance
- checked that chromedriver does not persist in the background
- add local driver test with forked instance to test suite
- organize attach session and local specs to driverProviders directory

closes angular#3780, closes angular#3779, closes angular#3772
sjelin pushed a commit that referenced this issue Dec 3, 2016
…3787)

- fix driver provider quit session to not throw error and quit
- should fix sauce labs test, enabling expected conditions test with forked instance
- checked that chromedriver does not persist in the background
- add local driver test with forked instance to test suite
- organize attach session and local specs to driverProviders directory

closes #3780, closes #3779, closes #3772
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants