Skip to content

Commit

Permalink
Merge pull request mozilla#95 from sashakruglov/filters
Browse files Browse the repository at this point in the history
Filters
  • Loading branch information
AlinT committed Jan 28, 2013
2 parents d91483b + 816009e commit 2bdb4e2
Show file tree
Hide file tree
Showing 20 changed files with 210 additions and 195 deletions.
14 changes: 7 additions & 7 deletions pages/base_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def delete_product(self, mozwebqa, product):
manage_products_pg = MozTrapManageProductsPage(mozwebqa)

manage_products_pg.go_to_manage_products_page()
manage_products_pg.filter_products_by_name(name=product['name'])
manage_products_pg.filter_form.filter_by(lookup='name', value=product['name'])
manage_products_pg.delete_product(name=product['name'])

def create_version(self, mozwebqa, product=None):
Expand All @@ -61,7 +61,7 @@ def delete_version(self, mozwebqa, version, delete_product=False):
manage_versions_pg = MozTrapManageVersionsPage(mozwebqa)

manage_versions_pg.go_to_manage_versions_page()
manage_versions_pg.filter_versions_by_name(name=version['name'])
manage_versions_pg.filter_form.filter_by(lookup='version', value=version['name'])
manage_versions_pg.delete_version(name=version['name'], product_name=version['product']['name'])

if delete_product:
Expand All @@ -82,7 +82,7 @@ def create_run(self, mozwebqa, activate=False, product=None, version=None, suite

if activate:
manage_runs_pg = MozTrapManageRunsPage(mozwebqa)
manage_runs_pg.filter_runs_by_name(name=run['name'])
manage_runs_pg.filter_form.filter_by(lookup='name', value=run['name'])
manage_runs_pg.activate_run(name=run['name'])

return run
Expand All @@ -91,7 +91,7 @@ def delete_run(self, mozwebqa, run, delete_version=False, delete_product=False):
manage_runs_pg = MozTrapManageRunsPage(mozwebqa)

manage_runs_pg.go_to_manage_runs_page()
manage_runs_pg.filter_runs_by_name(name=run['name'])
manage_runs_pg.filter_form.filter_by(lookup='name', value=run['name'])
manage_runs_pg.delete_run(name=run['name'])

if delete_version:
Expand All @@ -113,7 +113,7 @@ def delete_suite(self, mozwebqa, suite, delete_product=False):
manage_suites_pg = MozTrapManageSuitesPage(mozwebqa)

manage_suites_pg.go_to_manage_suites_page()
manage_suites_pg.filter_suites_by_name(name=suite['name'])
manage_suites_pg.filter_form.filter_by(lookup='name', value=suite['name'])
manage_suites_pg.delete_suite(name=suite['name'])

if delete_product:
Expand All @@ -138,7 +138,7 @@ def delete_case(self, mozwebqa, case, delete_product=False):
manage_cases_pg = MozTrapManageCasesPage(mozwebqa)

manage_cases_pg.go_to_manage_cases_page()
manage_cases_pg.filter_cases_by_name(name=case['name'])
manage_cases_pg.filter_form.filter_by(lookup='name', value=case['name'])
manage_cases_pg.delete_case(name=case['name'])

if delete_product:
Expand All @@ -157,7 +157,7 @@ def delete_profile(self, mozwebqa, profile):
manage_profiles_pg = MozTrapManageProfilesPage(mozwebqa)

manage_profiles_pg.go_to_manage_profiles_page()
manage_profiles_pg.filter_profiles_by_name(name=profile['name'])
manage_profiles_pg.filter_form.filter_by(lookup='name', value=profile['name'])
manage_profiles_pg.delete_profile(name=profile['name'])
create_profile_pg.go_to_create_profile_page()
create_profile_pg.delete_environment_category(category_name=profile['category'])
Expand Down
2 changes: 1 addition & 1 deletion pages/edit_run_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class MozTrapEditRunPage(MozTrapBasePage):
_submit_locator = (By.CSS_SELECTOR, '#run-edit-form .form-actions > button')

def edit_run(self, run, name=None, product_version=None, desc=None,
start_date=None, end_date=None, reorder_suites=False, series_run=False):
start_date=None, end_date=None, reorder_suites=False, series_run=False):

if name:
name_field = self.selenium.find_element(*self._name_locator)
Expand Down
18 changes: 5 additions & 13 deletions pages/manage_cases_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from selenium.webdriver.common.by import By

from pages.base_page import MozTrapBasePage
from pages.regions.filter import Filter


class MozTrapManageCasesPage(MozTrapBasePage):
Expand All @@ -15,9 +16,10 @@ class MozTrapManageCasesPage(MozTrapBasePage):

_delete_case_locator = (By.CSS_SELECTOR, '#managecases .itemlist .listitem[data-title="%(case_name)s"] .action-delete')
_case_status_locator = (By.CSS_SELECTOR, '#managecases .itemlist .listitem[data-title="%(case_name)s"] .status-action')
_filter_input_locator = (By.ID, 'text-filter')
_filter_suggestion_locator = (By.CSS_SELECTOR, '#filter .textual .suggest .suggestion[data-type="name"][data-name="%(filter_name)s"]')
_filter_locator = (By.CSS_SELECTOR, '#filterform .filter-group input[data-name="name"][value="%(filter_name)s"]:checked')

@property
def filter_form(self):
return Filter(self.testsetup)

def go_to_manage_cases_page(self):
self.selenium.get(self.base_url + '/manage/cases/')
Expand All @@ -29,16 +31,6 @@ def delete_case(self, name='Test Case'):
self.selenium.find_element(*_delete_locator).click()
self.wait_for_ajax()

def filter_cases_by_name(self, name):
'''
Types the name into the input field and then clicks the item in the search suggestions
'''
_filter_suggestion_locator = (self._filter_suggestion_locator[0], self._filter_suggestion_locator[1] % {'filter_name': name})

self.selenium.find_element(*self._filter_input_locator).send_keys(name)
self.selenium.find_element(*_filter_suggestion_locator).click()
self.wait_for_ajax()

def activate_case(self, name='Test Case'):
_case_status_locator = (self._case_status_locator[0], self._case_status_locator[1] % {'case_name': name})

Expand Down
39 changes: 6 additions & 33 deletions pages/manage_products_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,20 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait

from pages.base_page import MozTrapBasePage
from pages.regions.filter import Filter


class MozTrapManageProductsPage(MozTrapBasePage):

_page_title = 'Manage-Products'

_delete_product_locator = (By.CSS_SELECTOR, '#manageproducts .listitem .controls .action-delete[title="delete %(product_name)s"]')
_filter_input_locator = (By.ID, 'text-filter')
_filter_suggestion_locator = (By.CSS_SELECTOR, '#filter .textual .suggest .suggestion[data-type="name"][data-name="%(filter_name)s"]')
_filter_locator = (By.CSS_SELECTOR, '#filterform .filter-group input[data-name="name"][value="%(filter_name)s"]:checked')
_filter_remove_locator = (By.XPATH, '//label[@class="onoffswitch"][text()="%(filter_name)s"]')
_suggestion_dropdown_locator = (By.CSS_SELECTOR, ".textual .suggest li a")

@property
def filter_form(self):
return Filter(self.testsetup)

def go_to_manage_products_page(self):
self.get_relative_path('/manage/products/')
Expand All @@ -30,29 +29,3 @@ def delete_product(self, name='Test Product'):

self.selenium.find_element(*_delete_locator).click()
self.wait_for_ajax()

def filter_products_by_name(self, name):
_filter_locator = (self._filter_locator[0], self._filter_locator[1] % {'filter_name': name.lower()})
_filter_suggestion_locator = (self._filter_suggestion_locator[0], self._filter_suggestion_locator[1] % {'filter_name': name})

self.selenium.find_element(*self._filter_input_locator).send_keys(name)
self.selenium.find_element(*_filter_suggestion_locator).click()
WebDriverWait(self.selenium, self.timeout).until(lambda s: self.is_element_visible(*_filter_locator))
self.wait_for_ajax()

def filter_products_by_name_without_mouse(self, name):
_filter_locator = (self._filter_locator[0], self._filter_locator[1] % {'filter_name': name.lower()})
_filter_suggestion_locator = (self._filter_suggestion_locator[0], self._filter_suggestion_locator[1] % {'filter_name': name})

filter_input_locator = self.selenium.find_element(*self._filter_input_locator)
filter_input_locator.send_keys(name)
WebDriverWait(self.selenium, self.timeout).until(lambda s: self.is_element_visible(*self._suggestion_dropdown_locator))
filter_input_locator.send_keys(Keys.RETURN)
WebDriverWait(self.selenium, self.timeout).until(lambda s: self.is_element_visible(*_filter_locator))
self.wait_for_ajax()

def remove_name_filter(self, name):
_filter_remove_locator = (self._filter_remove_locator[0], self._filter_remove_locator[1] % {'filter_name': name.lower()})

self.selenium.find_element(*_filter_remove_locator).click()
WebDriverWait(self.selenium, self.timeout).until(lambda s: not self.is_element_visible(*_filter_remove_locator))
22 changes: 5 additions & 17 deletions pages/manage_profiles_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@
from selenium.webdriver.common.by import By

from pages.base_page import MozTrapBasePage
from pages.regions.filter import Filter


class MozTrapManageProfilesPage(MozTrapBasePage):

_page_title = 'Manage-Environments'

_delete_profile_locator = (By.CSS_SELECTOR, '#manageprofiles .listitem .action-delete[title="delete %(profile_name)s"]')
_filter_input_locator = (By.ID, 'text-filter')
_filter_suggestion_locator = (By.CSS_SELECTOR, '#filter .textual .suggest .suggestion[data-type="name"][data-name="%(filter_name)s"]')
_filter_locator = (By.CSS_SELECTOR, '#filterform .filter-group input[data-name="name"][value="%(filter_name)s"]:checked')

@property
def filter_form(self):
return Filter(self.testsetup)

def go_to_manage_profiles_page(self):
self.selenium.get(self.base_url + '/manage/profiles/')
Expand All @@ -27,17 +29,3 @@ def delete_profile(self, name='Test Profile'):

self.selenium.find_element(*_delete_locator).click()
self.wait_for_ajax()

def filter_profiles_by_name(self, name):
_filter_locator = (self._filter_locator[0], self._filter_locator[1] % {'filter_name': name.lower()})
_filter_suggestion_locator = (self._filter_suggestion_locator[0], self._filter_suggestion_locator[1] % {'filter_name': name})

self.selenium.find_element(*self._filter_input_locator).send_keys(name)
self.selenium.find_element(*_filter_suggestion_locator).click()
self.wait_for_ajax()

def remove_name_filter(self, name):
_filter_locator = (self._filter_locator[0], self._filter_locator[1] % {'filter_name': name.lower()})

self.selenium.find_element(*_filter_locator).click()
self.wait_for_ajax()
49 changes: 5 additions & 44 deletions pages/manage_runs_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.color import Color

from pages.base_page import MozTrapBasePage
from pages.regions.filter import Filter


class MozTrapManageRunsPage(MozTrapBasePage):
Expand All @@ -20,16 +20,10 @@ class MozTrapManageRunsPage(MozTrapBasePage):
_run_draft_locator = (By.CSS_SELECTOR, '#manageruns .itemlist .listitem[data-title="%(run_name)s"] .status-action.draft')
_run_status_locator = (By.CSS_SELECTOR, '#manageruns .itemlist .listitem[data-title="%(run_name)s"] .status-title')
_edit_run_locator = (By.CSS_SELECTOR, '#manageruns .itemlist .listitem[data-title="%(run_name)s"] .edit-link')
_filter_input_locator = (By.ID, 'text-filter')
_filter_suggestion_by_name_locator = (By.CSS_SELECTOR,
'#filter .textual .suggest .suggestion[data-type="name"][data-name="%(filter_name)s"]')
_filter_suggestion_by_product_version_locator = (By.CSS_SELECTOR,
'#filter .textual .suggest .suggestion[data-type="productversion"][data-name="%(filter_name)s"]')
_filter_locator = (By.CSS_SELECTOR,
'#filterform .filter-group input[data-name="name"][value="%(filter_name)s"]:checked')
_pin_filter_button_locator = (By.CSS_SELECTOR,
'#filterform input[data-name="productversion"]:checked + .onoff .pinswitch')
_pinned_filter_locator = (By.CSS_SELECTOR, '#filterform .onoff.pinned')

@property
def filter_form(self):
return Filter(self.testsetup)

def go_to_manage_runs_page(self):
self.selenium.get(self.base_url + '/manage/runs/')
Expand All @@ -46,30 +40,6 @@ def delete_run(self, name='Test Run'):
self.selenium.find_element(*_delete_locator).click()
self.wait_for_ajax()

def filter_runs_by_name(self, name):
_filter_suggestion_locator = (
self._filter_suggestion_by_name_locator[0],
self._filter_suggestion_by_name_locator[1] % {'filter_name': name})

self.selenium.find_element(*self._filter_input_locator).send_keys(name)
self.selenium.find_element(*_filter_suggestion_locator).click()
self.wait_for_ajax()

def filter_runs_by_product_version(self, product_version):
_filter_suggestion_locator = (
self._filter_suggestion_by_product_version_locator[0],
self._filter_suggestion_by_product_version_locator[1] % {'filter_name': product_version})

self.selenium.find_element(*self._filter_input_locator).send_keys(product_version)
self.selenium.find_element(*_filter_suggestion_locator).click()
self.wait_for_ajax()

def remove_name_filter(self, name):
_filter_locator = (self._filter_locator[0], self._filter_locator[1] % {'filter_name': name.lower()})

self.selenium.find_element(*self._filter_locator).click()
self.wait_for_ajax()

def activate_run(self, name='Test Run'):
_run_activate_locator = (self._run_activate_locator[0], self._run_activate_locator[1] % {'run_name': name})
_run_status_locator = (self._run_status_locator[0], self._run_status_locator[1] % {'run_name': name})
Expand All @@ -94,12 +64,3 @@ def go_to_edit_run_page(self, name='Test Run'):
self.selenium.find_element(*_edit_run_locator).click()
from pages.edit_run_page import MozTrapEditRunPage
return MozTrapEditRunPage(self.testsetup)

def pin_product_version(self):
self.selenium.find_element(*self._pin_filter_button_locator).click()

@property
def pinned_filter_color(self, coding='hex'):
pinned_filter = self.selenium.find_element(*self._pinned_filter_locator)
color = pinned_filter.value_of_css_property('background-color')
return getattr(Color.from_string(color), coding)
15 changes: 5 additions & 10 deletions pages/manage_suites_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from selenium.webdriver.common.by import By

from pages.base_page import MozTrapBasePage
from pages.regions.filter import Filter


class MozTrapManageSuitesPage(MozTrapBasePage):
Expand All @@ -16,9 +17,10 @@ class MozTrapManageSuitesPage(MozTrapBasePage):
_delete_suite_locator = (By.CSS_SELECTOR, '#managesuites .itemlist .listitem[data-title="%(suite_name)s"] .action-delete')
_suite_status_locator = (By.CSS_SELECTOR, '#managesuites .itemlist .listitem[data-title="%(suite_name)s"] .status-action')
_view_cases_locator = ((By.CSS_SELECTOR, '#managesuites .itemlist .listitem[data-title="%(suite_name)s"] .casecount .drill-link'))
_filter_input_locator = (By.ID, 'text-filter')
_filter_suggestion_locator = (By.CSS_SELECTOR, '#filter .textual .suggest .suggestion[data-type="name"][data-name="%(filter_name)s"]')
_filter_locator = (By.CSS_SELECTOR, '#filterform .filter-group input[data-name="name"][value="%(filter_name)s"]:checked')

@property
def filter_form(self):
return Filter(self.testsetup)

def go_to_manage_suites_page(self):
self.selenium.get(self.base_url + '/manage/suites/')
Expand All @@ -30,13 +32,6 @@ def delete_suite(self, name='Test Suite'):
self.selenium.find_element(*_delete_locator).click()
self.wait_for_ajax()

def filter_suites_by_name(self, name):
_filter_suggestion_locator = (self._filter_suggestion_locator[0], self._filter_suggestion_locator[1] % {'filter_name': name})

self.selenium.find_element(*self._filter_input_locator).send_keys(name)
self.selenium.find_element(*_filter_suggestion_locator).click()
self.wait_for_ajax()

def activate_suite(self, name='Test Suite'):
_suite_status_locator = (self._suite_status_locator[0], self._suite_status_locator[1] % {'suite_name': name})

Expand Down
25 changes: 5 additions & 20 deletions pages/manage_versions_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

from pages.base_page import MozTrapBasePage
from pages.regions.filter import Filter


class MozTrapManageVersionsPage(MozTrapBasePage):
Expand All @@ -18,9 +18,10 @@ class MozTrapManageVersionsPage(MozTrapBasePage):
_version_homepage_locator = (By.CSS_SELECTOR, '.runsdrill .runsfinder .productversions .colcontent .title[title="%(version_name)s"][data-product="%(product_name)s"])')
_delete_version_locator = (By.CSS_SELECTOR, '#manageproductversions .listitem .action-delete[title="delete %(product_name)s %(version_name)s"]')
_clone_version_locator = (By.CSS_SELECTOR, '#manageproductversions .listitem .action-clone[title="clone %(product_name)s %(version_name)s"]')
_filter_input_locator = (By.ID, 'text-filter')
_filter_suggestion_locator = (By.CSS_SELECTOR, '#filter .textual .suggest .suggestion[data-type="version"][data-name="%(filter_name)s"]')
_filter_locator = (By.CSS_SELECTOR, '#filterform .filter-group input[data-name="version"][value="%(filter_name)s"]:checked + span label')

@property
def filter_form(self):
return Filter(self.testsetup)

def go_to_manage_versions_page(self):
self.get_relative_path('/manage/productversions/')
Expand All @@ -32,22 +33,6 @@ def delete_version(self, name='Test Version', product_name='Test Product'):
self.selenium.find_element(*_delete_locator).click()
self.wait_for_ajax()

def filter_versions_by_name(self, name):
_filter_locator = (self._filter_locator[0], self._filter_locator[1] % {'filter_name': name.lower()})
_filter_suggestion_locator = (self._filter_suggestion_locator[0], self._filter_suggestion_locator[1] % {'filter_name': name})

self.selenium.find_element(*self._filter_input_locator).send_keys(name)
WebDriverWait(self.selenium, self.timeout).until(lambda s: self.is_element_visible(*_filter_suggestion_locator))
self.selenium.find_element(*_filter_suggestion_locator).click()
WebDriverWait(self.selenium, self.timeout).until(lambda s: self.is_element_visible(*_filter_locator))
self.wait_for_ajax()

def remove_name_filter(self, name):
_filter_locator = (self._filter_locator[0], self._filter_locator[1] % {'filter_name': name.lower()})

self.selenium.find_element(*_filter_locator).click()
self.wait_for_ajax()

def clone_version(self, name='Test Version', product_name='Test Product'):
_clone_version_locator = (self._clone_version_locator[0], self._clone_version_locator[1] % {'product_name': product_name, 'version_name': name})
cloned_version = {}
Expand Down
Loading

0 comments on commit 2bdb4e2

Please sign in to comment.