From 2b731b70d534803d8b6d0e9683fa837c65ba0e0b Mon Sep 17 00:00:00 2001 From: Ben Patterson Date: Wed, 13 Jan 2016 17:51:01 -0500 Subject: [PATCH 1/3] Fix flaky condition only appearing in newer firefox versions. --- common/test/acceptance/pages/studio/overview.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/test/acceptance/pages/studio/overview.py b/common/test/acceptance/pages/studio/overview.py index 14c6b1b0d8..6bfee8e7b7 100644 --- a/common/test/acceptance/pages/studio/overview.py +++ b/common/test/acceptance/pages/studio/overview.py @@ -6,6 +6,7 @@ import datetime from bok_choy.page_object import PageObject from bok_choy.promise import EmptyPromise +from selenium.webdriver import ActionChains from selenium.webdriver.support.ui import Select from selenium.webdriver.common.keys import Keys @@ -254,12 +255,17 @@ class CourseOutlineContainer(CourseOutlineItem): """ Returns whether or not this subsection is expanded. """ + self.wait_for_element_presence( + self._bounded_selector(self.ADD_BUTTON_SELECTOR), 'Toggle control is present' + ) add_button = self.q(css=self._bounded_selector(self.ADD_BUTTON_SELECTOR)).first.results return add_button and add_button[0].is_displayed() currently_expanded = subsection_expanded() - self.q(css=self._bounded_selector('.ui-toggle-expansion i')).first.click() + # Need to click slightly off-center in order for the click to be recognized. + ele = self.browser.find_element_by_css_selector(self._bounded_selector('.ui-toggle-expansion i')) + ActionChains(self.browser).move_to_element_with_offset(ele, 1, 1).click().perform() self.wait_for_element_presence(self._bounded_selector(self.ADD_BUTTON_SELECTOR), 'Subsection is expanded') EmptyPromise( From 29e4ba95e1f13c182cf11f0a851bf764a0a17bd9 Mon Sep 17 00:00:00 2001 From: Ben Patterson Date: Thu, 14 Jan 2016 17:03:23 -0500 Subject: [PATCH 2/3] Special condition needed for newer firefox version. On the older firefox version (28), the offset approach fails. This update is being made as part of an effort to upgrade to firefox 42 incrementally. So we are including logic for Firefox 28 vs 42 that we can remove after the upgrade. --- common/test/acceptance/pages/studio/overview.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/common/test/acceptance/pages/studio/overview.py b/common/test/acceptance/pages/studio/overview.py index 6bfee8e7b7..21c0c826bc 100644 --- a/common/test/acceptance/pages/studio/overview.py +++ b/common/test/acceptance/pages/studio/overview.py @@ -263,9 +263,14 @@ class CourseOutlineContainer(CourseOutlineItem): currently_expanded = subsection_expanded() - # Need to click slightly off-center in order for the click to be recognized. - ele = self.browser.find_element_by_css_selector(self._bounded_selector('.ui-toggle-expansion i')) - ActionChains(self.browser).move_to_element_with_offset(ele, 1, 1).click().perform() + # TODO: Special offset needed for newer firefox version. This was only tested with Firefox 42. + firefox_version = float(self.browser.capabilities['version']) + if firefox_version >= 42: + # Need to click slightly off-center in order for the click to be recognized. + ele = self.browser.find_element_by_css_selector(self._bounded_selector('.ui-toggle-expansion i')) + ActionChains(self.browser).move_to_element_with_offset(ele, 1, 1).click().perform() + else: + self.q(css=self._bounded_selector('.ui-toggle-expansion i')).first.click() self.wait_for_element_presence(self._bounded_selector(self.ADD_BUTTON_SELECTOR), 'Subsection is expanded') EmptyPromise( From ebcafcc103bb8d2a38d008c3bc37a94e4dbe6210 Mon Sep 17 00:00:00 2001 From: Ben Patterson Date: Thu, 14 Jan 2016 19:10:04 -0500 Subject: [PATCH 3/3] Better location. --- common/test/acceptance/pages/studio/overview.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/common/test/acceptance/pages/studio/overview.py b/common/test/acceptance/pages/studio/overview.py index 21c0c826bc..2eba3d0e06 100644 --- a/common/test/acceptance/pages/studio/overview.py +++ b/common/test/acceptance/pages/studio/overview.py @@ -263,14 +263,9 @@ class CourseOutlineContainer(CourseOutlineItem): currently_expanded = subsection_expanded() - # TODO: Special offset needed for newer firefox version. This was only tested with Firefox 42. - firefox_version = float(self.browser.capabilities['version']) - if firefox_version >= 42: - # Need to click slightly off-center in order for the click to be recognized. - ele = self.browser.find_element_by_css_selector(self._bounded_selector('.ui-toggle-expansion i')) - ActionChains(self.browser).move_to_element_with_offset(ele, 1, 1).click().perform() - else: - self.q(css=self._bounded_selector('.ui-toggle-expansion i')).first.click() + # Need to click slightly off-center in order for the click to be recognized. + ele = self.browser.find_element_by_css_selector(self._bounded_selector('.ui-toggle-expansion i')) + ActionChains(self.browser).move_to_element_with_offset(ele, 4, 4).click().perform() self.wait_for_element_presence(self._bounded_selector(self.ADD_BUTTON_SELECTOR), 'Subsection is expanded') EmptyPromise(