[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