[Toaster] [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
Michael Wood
michael.g.wood at intel.com
Fri Jun 17 06:39:23 PDT 2016
This is the traceback with no wires executable and firefox 47 :
(bothpythons)
michael at orion:~/dev/yocto/poky/bitbake/lib/toaster(toaster-next %)$
TOASTER_TESTS_BROWSER=firefox ./manage.py test tests.browser --failfast
Creating test database for alias 'default'...
EException ignored in: <bound method Service.__del__ of
<selenium.webdriver.firefox.service.Service object at 0x7f8558fb36a0>>
Traceback (most recent call last):
File
"/home/michael/dev/yocto/poky/bothpythons/local/lib/python3.5/site-packages/selenium/webdriver/common/service.py",
line 162, in __del__
self.stop()
File
"/home/michael/dev/yocto/poky/bothpythons/local/lib/python3.5/site-packages/selenium/webdriver/common/service.py",
line 134, in stop
if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
======================================================================
ERROR: setUpClass (tests.browser.test_all_builds_page.TestAllBuildsPage)
----------------------------------------------------------------------
Traceback (most recent call last):
File
"/home/michael/dev/yocto/poky/bothpythons/local/lib/python3.5/site-packages/selenium/webdriver/common/service.py",
line 62, in start
stdout=self.log_file, stderr=self.log_file)
File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1541, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'wires'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File
"/home/michael/dev/yocto/poky/bitbake/lib/toaster/tests/browser/selenium_helpers.py",
line 135, in setUpClass
cls.driver = create_selenium_driver()
File
"/home/michael/dev/yocto/poky/bitbake/lib/toaster/tests/browser/selenium_helpers.py",
line 54, in create_selenium_driver
return webdriver.Firefox(capabilities=capabilities)
File
"/home/michael/dev/yocto/poky/bothpythons/local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py",
line 66, in __init__
self.service.start()
File
"/home/michael/dev/yocto/poky/bothpythons/local/lib/python3.5/site-packages/selenium/webdriver/common/service.py",
line 69, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'wires'
executable needs to be in PATH.
Michael
On 17/06/16 14:21, Smith, Elliot wrote:
> Surely setting the capabilities to marionette=true will not make a
> difference with older versions of Firefox? I tried setting a spurious
> capability with Firefox 47 and it was just ignored; I assumed that the
> 'marionette' capability would equally be ignored by older Firefoxes.
>
> I can get an older version of Firefox and test this assumption if you
> think it's critical.
>
> Elliot
>
> On 17 June 2016 at 12:16, Michael Wood <michael.g.wood at intel.com
> <mailto:michael.g.wood at intel.com>> wrote:
>
> On 17/06/16 10:41, Elliot Smith wrote:
>
> The Firefox 47 WebDriver requires a download of a separate binary
> and an additional capability to be defined on the driver.
>
> Modify our tests so that when Firefox 47 is set as the browser
> for the tests, this capability is defined. Also add a note to the
> README about the additional installation steps required.
>
> Signed-off-by: Elliot Smith <elliot.smith at intel.com
> <mailto:elliot.smith at intel.com>>
> ---
> bitbake/lib/toaster/tests/browser/README | 9 ++++++++-
> bitbake/lib/toaster/tests/browser/selenium_helpers.py | 5 ++++-
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/bitbake/lib/toaster/tests/browser/README
> b/bitbake/lib/toaster/tests/browser/README
> index f57154e..43e14c5 100644
> --- a/bitbake/lib/toaster/tests/browser/README
> +++ b/bitbake/lib/toaster/tests/browser/README
> @@ -24,7 +24,14 @@ To run tests against PhantomJS (headless):
> * On *nix systems, put phantomjs on PATH
> * Not tested on Windows
> -Firefox should work without requiring additional software
> to be installed.
> +To run tests against Firefox:
> +
> +* Firefox versions 46 or earlier should work without
> requiring additional
> +software to be installed.
> +* Firefox version 47 requires manual installation of the
> Marionette driver;
> +see
> https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver.
> +Ensure that the Marionette executable (wires on Linux,
> wires.exe on Windows)
> +is on your PATH.
> The test case will instantiate a Selenium driver set by the
> TOASTER_TESTS_BROWSER environment variable, or Chrome if
> this is not specified.
> diff --git
> a/bitbake/lib/toaster/tests/browser/selenium_helpers.py
> b/bitbake/lib/toaster/tests/browser/selenium_helpers.py
> index 54db2e8..f3bb1a3 100644
> --- a/bitbake/lib/toaster/tests/browser/selenium_helpers.py
> +++ b/bitbake/lib/toaster/tests/browser/selenium_helpers.py
> @@ -34,6 +34,7 @@ import time
> from django.contrib.staticfiles.testing import
> StaticLiveServerTestCase
> from selenium import webdriver
> from selenium.webdriver.support.ui import WebDriverWait
> +from selenium.webdriver.common.desired_capabilities import
> DesiredCapabilities
> from selenium.common.exceptions import NoSuchElementException, \
> StaleElementReferenceException, TimeoutException
> @@ -48,7 +49,9 @@ def create_selenium_driver(browser='chrome'):
> service_args=["--verbose",
> "--log-path=selenium.log"]
> )
> elif browser == 'firefox':
> - return webdriver.Firefox()
> + capabilities = DesiredCapabilities.FIREFOX
> + capabilities['marionette'] = True
> + return webdriver.Firefox(capabilities=capabilities)
>
>
> This will force the use of the marionette/geckodriver/wires for
> all versions of firefox (apparently it works with v45 onwards) too
> so, either we need to switch those capabilities depending on the
> version of firefox we find or we will need to clarify that you'll
> always need this external driver.
>
>
> elif browser == 'ie':
> return webdriver.Ie()
> elif browser == 'phantomjs':
>
>
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org <mailto:toaster at yoctoproject.org>
> https://lists.yoctoproject.org/listinfo/toaster
>
>
>
>
> --
> Elliot Smith
> Software Engineer
> Intel Open Source Technology Centre
>
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
More information about the toaster
mailing list