All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2][v2] toaster-tests: remove click on disabled element in test
@ 2016-06-17 15:49 Elliot Smith
  2016-06-17 15:49 ` [PATCH 2/2][v2] toaster-tests: define capabilities for latest Firefox driver Elliot Smith
  0 siblings, 1 reply; 3+ messages in thread
From: Elliot Smith @ 2016-06-17 15:49 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] 3+ messages in thread

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

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>
---
 bitbake/lib/toaster/tests/browser/README              | 19 +++++++++++++++++--
 bitbake/lib/toaster/tests/browser/selenium_helpers.py |  5 +++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/bitbake/lib/toaster/tests/browser/README b/bitbake/lib/toaster/tests/browser/README
index f57154e..969f06c 100644
--- a/bitbake/lib/toaster/tests/browser/README
+++ b/bitbake/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/bitbake/lib/toaster/tests/browser/selenium_helpers.py b/bitbake/lib/toaster/tests/browser/selenium_helpers.py
index 54db2e8..000937f 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
 
@@ -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] 3+ messages in thread

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

Thanks verified both setups firefox <47 and firefox 47 + 
wires/geckodriver. Patches applied to toaster-next and sent upstream to 
bitbake-devel.

On 17/06/16 16:49, Elliot Smith wrote:
> 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>
> ---
>   bitbake/lib/toaster/tests/browser/README              | 19 +++++++++++++++++--
>   bitbake/lib/toaster/tests/browser/selenium_helpers.py |  5 +++++
>   2 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/bitbake/lib/toaster/tests/browser/README b/bitbake/lib/toaster/tests/browser/README
> index f57154e..969f06c 100644
> --- a/bitbake/lib/toaster/tests/browser/README
> +++ b/bitbake/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/bitbake/lib/toaster/tests/browser/selenium_helpers.py b/bitbake/lib/toaster/tests/browser/selenium_helpers.py
> index 54db2e8..000937f 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
>   
> @@ -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':



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

end of thread, other threads:[~2016-06-17 17:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-17 15:49 [PATCH 1/2][v2] toaster-tests: remove click on disabled element in test Elliot Smith
2016-06-17 15:49 ` [PATCH 2/2][v2] toaster-tests: define capabilities for latest Firefox driver Elliot Smith
2016-06-17 17:53   ` Michael Wood

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.