All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] toaster-tests: remove click on disabled element in test
@ 2016-06-17  9:41 Elliot Smith
  2016-06-17  9:41 ` [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver Elliot Smith
  0 siblings, 1 reply; 8+ messages in thread
From: Elliot Smith @ 2016-06-17  9:41 UTC (permalink / raw)
  To: toaster

On Firefox 47, attempting to click on the "Submit" button in
the test which attempts to create a project with a duplicate name
fails, as the button is not enabled if the name is a duplicate. This
also causes the test to fail.

Remove the call to the click() method which causes the test to fail.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
---
 bitbake/lib/toaster/tests/browser/test_new_project_page.py | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/bitbake/lib/toaster/tests/browser/test_new_project_page.py b/bitbake/lib/toaster/tests/browser/test_new_project_page.py
index 1b038ac..180a690 100644
--- a/bitbake/lib/toaster/tests/browser/test_new_project_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_new_project_page.py
@@ -80,7 +80,7 @@ class TestNewProjectPage(SeleniumTestCase):
         """
         Should not be able to create a new project whose name is the same
         as an existing project
-       """
+        """
 
         project_name = "dupproject"
 
@@ -100,10 +100,6 @@ class TestNewProjectPage(SeleniumTestCase):
         self.assertTrue(("Project names must be unique" in element.text),
                         "Did not find unique project name error message")
 
-        # Try and click it anyway, if it submits we'll have a new project in
-        # the db and assert then
-        self.click("#create-project-button")
-
         self.assertTrue(
             (Project.objects.filter(name=project_name).count() == 1),
-            "New project not found in database")
+            "New project not found in database")
\ No newline at end of file
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
  2016-06-17  9:41 [PATCH 1/2] toaster-tests: remove click on disabled element in test Elliot Smith
@ 2016-06-17  9:41 ` Elliot Smith
  2016-06-17 11:16   ` Michael Wood
  0 siblings, 1 reply; 8+ messages in thread
From: Elliot Smith @ 2016-06-17  9:41 UTC (permalink / raw)
  To: toaster

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@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)
     elif browser == 'ie':
         return webdriver.Ie()
     elif browser == 'phantomjs':
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
  2016-06-17  9:41 ` [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver Elliot Smith
@ 2016-06-17 11:16   ` Michael Wood
  2016-06-17 13:21     ` Smith, Elliot
  0 siblings, 1 reply; 8+ messages in thread
From: Michael Wood @ 2016-06-17 11:16 UTC (permalink / raw)
  To: toaster

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@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':



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
  2016-06-17 11:16   ` Michael Wood
@ 2016-06-17 13:21     ` Smith, Elliot
  2016-06-17 13:39       ` Michael Wood
  0 siblings, 1 reply; 8+ messages in thread
From: Smith, Elliot @ 2016-06-17 13:21 UTC (permalink / raw)
  To: Michael Wood; +Cc: toaster

[-- Attachment #1: Type: text/plain, Size: 3985 bytes --]

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@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@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@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>



-- 
Elliot Smith
Software Engineer
Intel Open Source Technology Centre

[-- Attachment #2: Type: text/html, Size: 5283 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
  2016-06-17 13:21     ` Smith, Elliot
@ 2016-06-17 13:39       ` Michael Wood
  0 siblings, 0 replies; 8+ messages in thread
From: Michael Wood @ 2016-06-17 13:39 UTC (permalink / raw)
  To: Smith, Elliot; +Cc: toaster

This is the traceback with no wires executable and firefox 47 :

(bothpythons) 
michael@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@intel.com 
> <mailto:michael.g.wood@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@intel.com
>         <mailto:elliot.smith@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@yoctoproject.org <mailto:toaster@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.
>



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
  2016-07-20 15:55   ` Michael Wood
@ 2016-07-21  9:20     ` Smith, Elliot
  0 siblings, 0 replies; 8+ messages in thread
From: Smith, Elliot @ 2016-07-21  9:20 UTC (permalink / raw)
  To: Michael Wood; +Cc: bitbake-devel

[-- Attachment #1: Type: text/plain, Size: 4516 bytes --]

On 20 July 2016 at 16:55, Michael Wood <michael.g.wood@intel.com> wrote:

> On 17/06/16 18:52, Michael Wood wrote:
>
>> From: Elliot Smith <elliot.smith@intel.com>
>>
>> For the latest Firefox versions, WebDriver requires a download of a
>> separate binary and an additional capability to be defined on it.
>>
>> Modify our tests so that when "marionette" is set as the browser,
>> this capability is defined on the Firefox driver. Also add a note to the
>> README about the additional installation steps required.
>>
>
Note that I resubmitted a rebased version of these patches, as changes on
toaster-next mean that this version won't apply.

Elliot



>
>> Signed-off-by: Elliot Smith <elliot.smith@intel.com>
>> Signed-off-by: Michael Wood <michael.g.wood@intel.com>
>> ---
>>   lib/toaster/tests/browser/README              | 19 +++++++++++++++++--
>>   lib/toaster/tests/browser/selenium_helpers.py |  5 +++++
>>   2 files changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/toaster/tests/browser/README
>> b/lib/toaster/tests/browser/README
>> index f57154e..969f06c 100644
>> --- a/lib/toaster/tests/browser/README
>> +++ b/lib/toaster/tests/browser/README
>> @@ -24,15 +24,30 @@ 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, you may need to install the Marionette
>> driver,
>> +depending on how new your version of Firefox is. One clue that you need
>> to do
>> +this is if you see an exception like:
>>   -The test case will instantiate a Selenium driver set by the
>> +  selenium.common.exceptions.WebDriverException: Message: The browser
>> +  appears to have exited before we could connect. If you specified
>> +  a log_file in the FirefoxBinary constructor, check it for details.
>> +
>> +See
>> https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver
>> +for installation instructions. Ensure that the Marionette executable
>> (renamed
>> +as wires on Linux or wires.exe on Windows) is on your PATH; and use
>> "marionette"
>> +as the browser string passed via TOASTER_TESTS_BROWSER (see below).
>> +
>> +(Note: The Toaster tests have been checked against Firefox 47 with the
>> +Marionette driver.)
>> +
>> +The test cases will instantiate a Selenium driver set by the
>>   TOASTER_TESTS_BROWSER environment variable, or Chrome if this is not
>> specified.
>>     Available drivers:
>>     * chrome (default)
>>   * firefox
>> +* marionette (for newer Firefoxes)
>>   * ie
>>   * phantomjs
>>   diff --git a/lib/toaster/tests/browser/selenium_helpers.py
>> b/lib/toaster/tests/browser/selenium_helpers.py
>> index 54db2e8..000937f 100644
>> --- a/lib/toaster/tests/browser/selenium_helpers.py
>> +++ b/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
>>   @@ -49,6 +50,10 @@ def create_selenium_driver(browser='chrome'):
>>           )
>>       elif browser == 'firefox':
>>           return webdriver.Firefox()
>> +    elif browser == 'marionette':
>> +        capabilities = DesiredCapabilities.FIREFOX
>> +        capabilities['marionette'] = True
>> +        return webdriver.Firefox(capabilities=capabilities)
>>       elif browser == 'ie':
>>           return webdriver.Ie()
>>       elif browser == 'phantomjs':
>>
>
> Ping on these two patches.
>
> Thanks,
>
> Michael
>
> ---------------------------------------------------------------------
> 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.
>
>


-- 
Elliot Smith
Software Engineer
Intel Open Source Technology Centre

[-- Attachment #2: Type: text/html, Size: 6027 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
  2016-06-17 17:52 ` [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver Michael Wood
@ 2016-07-20 15:55   ` Michael Wood
  2016-07-21  9:20     ` Smith, Elliot
  0 siblings, 1 reply; 8+ messages in thread
From: Michael Wood @ 2016-07-20 15:55 UTC (permalink / raw)
  To: bitbake-devel

On 17/06/16 18:52, Michael Wood wrote:
> From: Elliot Smith <elliot.smith@intel.com>
>
> For the latest Firefox versions, WebDriver requires a download of a
> separate binary and an additional capability to be defined on it.
>
> Modify our tests so that when "marionette" is set as the browser,
> this capability is defined on the Firefox driver. Also add a note to the
> README about the additional installation steps required.
>
> Signed-off-by: Elliot Smith <elliot.smith@intel.com>
> Signed-off-by: Michael Wood <michael.g.wood@intel.com>
> ---
>   lib/toaster/tests/browser/README              | 19 +++++++++++++++++--
>   lib/toaster/tests/browser/selenium_helpers.py |  5 +++++
>   2 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/lib/toaster/tests/browser/README b/lib/toaster/tests/browser/README
> index f57154e..969f06c 100644
> --- a/lib/toaster/tests/browser/README
> +++ b/lib/toaster/tests/browser/README
> @@ -24,15 +24,30 @@ 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, you may need to install the Marionette driver,
> +depending on how new your version of Firefox is. One clue that you need to do
> +this is if you see an exception like:
>   
> -The test case will instantiate a Selenium driver set by the
> +  selenium.common.exceptions.WebDriverException: Message: The browser
> +  appears to have exited before we could connect. If you specified
> +  a log_file in the FirefoxBinary constructor, check it for details.
> +
> +See https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver
> +for installation instructions. Ensure that the Marionette executable (renamed
> +as wires on Linux or wires.exe on Windows) is on your PATH; and use "marionette"
> +as the browser string passed via TOASTER_TESTS_BROWSER (see below).
> +
> +(Note: The Toaster tests have been checked against Firefox 47 with the
> +Marionette driver.)
> +
> +The test cases will instantiate a Selenium driver set by the
>   TOASTER_TESTS_BROWSER environment variable, or Chrome if this is not specified.
>   
>   Available drivers:
>   
>   * chrome (default)
>   * firefox
> +* marionette (for newer Firefoxes)
>   * ie
>   * phantomjs
>   
> diff --git a/lib/toaster/tests/browser/selenium_helpers.py b/lib/toaster/tests/browser/selenium_helpers.py
> index 54db2e8..000937f 100644
> --- a/lib/toaster/tests/browser/selenium_helpers.py
> +++ b/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
>   
> @@ -49,6 +50,10 @@ def create_selenium_driver(browser='chrome'):
>           )
>       elif browser == 'firefox':
>           return webdriver.Firefox()
> +    elif browser == 'marionette':
> +        capabilities = DesiredCapabilities.FIREFOX
> +        capabilities['marionette'] = True
> +        return webdriver.Firefox(capabilities=capabilities)
>       elif browser == 'ie':
>           return webdriver.Ie()
>       elif browser == 'phantomjs':

Ping on these two patches.

Thanks,

Michael


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver
  2016-06-17 17:52 [PATCH 1/2] toaster-tests: remove click on disabled element in test Michael Wood
@ 2016-06-17 17:52 ` Michael Wood
  2016-07-20 15:55   ` Michael Wood
  0 siblings, 1 reply; 8+ messages in thread
From: Michael Wood @ 2016-06-17 17:52 UTC (permalink / raw)
  To: bitbake-devel

From: Elliot Smith <elliot.smith@intel.com>

For the latest Firefox versions, WebDriver requires a download of a
separate binary and an additional capability to be defined on it.

Modify our tests so that when "marionette" is set as the browser,
this capability is defined on the Firefox driver. Also add a note to the
README about the additional installation steps required.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
---
 lib/toaster/tests/browser/README              | 19 +++++++++++++++++--
 lib/toaster/tests/browser/selenium_helpers.py |  5 +++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/lib/toaster/tests/browser/README b/lib/toaster/tests/browser/README
index f57154e..969f06c 100644
--- a/lib/toaster/tests/browser/README
+++ b/lib/toaster/tests/browser/README
@@ -24,15 +24,30 @@ 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, you may need to install the Marionette driver,
+depending on how new your version of Firefox is. One clue that you need to do
+this is if you see an exception like:
 
-The test case will instantiate a Selenium driver set by the
+  selenium.common.exceptions.WebDriverException: Message: The browser
+  appears to have exited before we could connect. If you specified
+  a log_file in the FirefoxBinary constructor, check it for details.
+
+See https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver
+for installation instructions. Ensure that the Marionette executable (renamed
+as wires on Linux or wires.exe on Windows) is on your PATH; and use "marionette"
+as the browser string passed via TOASTER_TESTS_BROWSER (see below).
+
+(Note: The Toaster tests have been checked against Firefox 47 with the
+Marionette driver.)
+
+The test cases will instantiate a Selenium driver set by the
 TOASTER_TESTS_BROWSER environment variable, or Chrome if this is not specified.
 
 Available drivers:
 
 * chrome (default)
 * firefox
+* marionette (for newer Firefoxes)
 * ie
 * phantomjs
 
diff --git a/lib/toaster/tests/browser/selenium_helpers.py b/lib/toaster/tests/browser/selenium_helpers.py
index 54db2e8..000937f 100644
--- a/lib/toaster/tests/browser/selenium_helpers.py
+++ b/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
 
@@ -49,6 +50,10 @@ def create_selenium_driver(browser='chrome'):
         )
     elif browser == 'firefox':
         return webdriver.Firefox()
+    elif browser == 'marionette':
+        capabilities = DesiredCapabilities.FIREFOX
+        capabilities['marionette'] = True
+        return webdriver.Firefox(capabilities=capabilities)
     elif browser == 'ie':
         return webdriver.Ie()
     elif browser == 'phantomjs':
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-07-21  9:20 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-17  9:41 [PATCH 1/2] toaster-tests: remove click on disabled element in test Elliot Smith
2016-06-17  9:41 ` [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver Elliot Smith
2016-06-17 11:16   ` Michael Wood
2016-06-17 13:21     ` Smith, Elliot
2016-06-17 13:39       ` Michael Wood
2016-06-17 17:52 [PATCH 1/2] toaster-tests: remove click on disabled element in test Michael Wood
2016-06-17 17:52 ` [PATCH 2/2] toaster-tests: define capabilities for latest Firefox driver Michael Wood
2016-07-20 15:55   ` Michael Wood
2016-07-21  9:20     ` Smith, Elliot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.