Marionette Screenshot Functions with Wires is hanging Firefox

RESOLVED FIXED

Status

defect
RESOLVED FIXED
4 years ago
4 years ago

People

(Reporter: joshin4colours, Unassigned)

Tracking

({pi-marionette-server})

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [marionette=1.0])

Attachments

(1 attachment)

Reporter

Description

4 years ago
User Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Build ID: 20150807085045

Steps to reproduce:

I ran the following tests using py.test and Python 2.7.6  with Firefox Developer Edition 41.0a2 (2015-08-06) on a Win 8.1 machine: 

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep

import unittest

class TestScreenshots(unittest.TestCase):
		
	def test_file(self):
		firefox_capabilities = DesiredCapabilities.FIREFOX
		firefox_capabilities['marionette'] = True
		firefox_capabilities['binary'] = 'C:\\Program Files (x86)\\Firefox Developer Edition\\firefox.exe'
		
		driver = webdriver.Firefox(capabilities=firefox_capabilities)
		
		driver.get('http://the-internet.herokuapp.com/')
	
		sleep(5)
		driver.get_screenshot_as_file('shot_basic.png')
		sleep(5)
		
		driver.quit()

	def test_png(self):
		firefox_capabilities = DesiredCapabilities.FIREFOX
		firefox_capabilities['marionette'] = True
		firefox_capabilities['binary'] = 'C:\\Program Files (x86)\\Firefox Developer Edition\\firefox.exe'
		
		driver = webdriver.Firefox(capabilities=firefox_capabilities)
		
		driver.get('http://the-internet.herokuapp.com/')
	
		sleep(5)
		sc = driver.get_screenshot_as_png()
		sleep(5)
		
		driver.quit()

	def test_base64(self):
		firefox_capabilities = DesiredCapabilities.FIREFOX
		firefox_capabilities['marionette'] = True
		firefox_capabilities['binary'] = 'C:\\Program Files (x86)\\Firefox Developer Edition\\firefox.exe'
		
		driver = webdriver.Firefox(capabilities=firefox_capabilities)
		
		driver.get('http://the-internet.herokuapp.com/')
	
		sleep(5)
		sc = driver.get_screenshot_as_base64()
		assert Type(sc) is 'string'
		
		driver.quit()


Actual results:

Running these tests, both test_base64 and test_file crash Firefox Dev Edition at the take_screenshot steps. Firefox hangs, then must be manually aborted, causing py.test to stop. In these cases, the stack trace is the same as the attached test result. 


Expected results:

The tests should've executed cleanly and presumably a screenshot file or string would have been created.
Whiteboard: [marionette=1.0]
I have been able to recreate this on OSX easily.

Interestingly the browser doesnt appear to hang when using Marionette directly (not with Wires). The marionette screenshot tests whip through. There is no coverage in the Selenium python tree so will be adding tests there now to help debug the issue
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: Marionette Screenshot Functions with Wires on Windows is Crashing Firefox → Marionette Screenshot Functions with Wires is hanging Firefox
I think this might be related to the size of the packet that is sent back to wires. Using a page bigger than the view port with Wires it hangs however with a small page, like the ones used on the marionette test suite, it passes.

Using the bigger page on direct marionette (with marionette transport) it passes.
landed some tests in the selenium master.

James, can you see if my hypothesis is correct that Wires is struggling with packet size? Or tell me the best way to debug wires for this?
Flags: needinfo?(james)
Can you show me the log you are getting? When I ran it it looked as though the tests were succeeding, but something was hanging later in shutdown.
Flags: needinfo?(james)
I think that the issue is related to Selenium holding onto the output from stdout/strerr. Since Marionette/Wires can be verbose it hit the threshold very quickly.

I think this is fixed in https://github.com/SeleniumHQ/selenium/commit/bea95161369afad41b09f3e1892c8aaf8f283d82

At least I am not hitting the issue any more locally.
This issue has now cleared up so closing as it was a selenium issue
Status: NEW → RESOLVED
Last Resolved: 4 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.