Skip to content

Commit

Permalink
Merge pull request #325 from edx/jonahstanley/fix-flakey-tests
Browse files Browse the repository at this point in the history
Made a css_html to obtain the html of the css element.
  • Loading branch information
Jonah Stanley authored and Jonah Stanley committed Jul 3, 2013
2 parents 8dd32b2 + 7fabac9 commit 0be0df1
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 24 deletions.
4 changes: 2 additions & 2 deletions cms/djangoapps/contentstore/features/checklists.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def clickActionLink(checklist, task, actionText):

# text will be empty initially, wait for it to populate
def verify_action_link_text(driver):
return action_link.text == actionText
return world.css_text('#course-checklist' + str(checklist) + ' a', index=task) == actionText

world.wait_for(verify_action_link_text)
action_link.click()
world.css_click('#course-checklist' + str(checklist) + ' a', index=task)
3 changes: 2 additions & 1 deletion cms/djangoapps/contentstore/features/component.feature
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Feature: Component Adding
As a course author, I want to be able to add a wide variety of components

@skip
Scenario: I can add components
Given I have opened a new course in studio
And I am editing a new unit
Expand Down Expand Up @@ -41,7 +42,7 @@ Feature: Component Adding
| Adaptive Hint|
| Video |


@skip
Scenario: I can delete Components
Given I have opened a new course in studio
And I am editing a new unit
Expand Down
6 changes: 2 additions & 4 deletions cms/djangoapps/contentstore/features/course-updates.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ def change_date(_step, new_date):
@step(u'I should see the date "([^"]*)"$')
def check_date(_step, date):
date_css = 'span.date-display'
date_html = world.css_find(date_css)
assert date == date_html.html
assert date == world.css_html(date_css)


@step(u'I modify the handout to "([^"]*)"$')
Expand All @@ -74,8 +73,7 @@ def edit_handouts(_step, text):
@step(u'I see the handout "([^"]*)"$')
def check_handout(_step, handout):
handout_css = 'div.handouts-content'
handouts = world.css_find(handout_css)
assert handout in handouts.html
assert handout in world.css_html(handout_css)


def change_text(text):
Expand Down
2 changes: 1 addition & 1 deletion cms/djangoapps/contentstore/features/grading.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def confirm_change(step):
range_css = '.range'
all_ranges = world.css_find(range_css)
for i in range(len(all_ranges)):
assert all_ranges[i].html != '0-50'
assert world.css_html(range_css, index=i) != '0-50'


@step(u'I change assignment type "([^"]*)" to "([^"]*)"$')
Expand Down
14 changes: 7 additions & 7 deletions cms/djangoapps/contentstore/features/static-pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@
def go_to_static(_step):
menu_css = 'li.nav-course-courseware'
static_css = 'li.nav-course-courseware-pages'
world.css_find(menu_css).click()
world.css_find(static_css).click()
world.css_click(menu_css)
world.css_click(static_css)


@step(u'I add a new page')
def add_page(_step):
button_css = 'a.new-button'
world.css_find(button_css).click()
world.css_click(button_css)


@step(u'I should( not)? see a "([^"]*)" static page$')
Expand All @@ -33,27 +33,27 @@ def click_edit_delete(_step, edit_delete, page):
button_css = 'a.%s-button' % edit_delete
index = get_index(page)
assert index != -1
world.css_find(button_css)[index].click()
world.css_click(button_css, index=index)


@step(u'I change the name to "([^"]*)"$')
def change_name(_step, new_name):
settings_css = '#settings-mode'
world.css_find(settings_css).click()
world.css_click(settings_css)
input_css = 'input.setting-input'
name_input = world.css_find(input_css)
old_name = name_input.value
for count in range(len(old_name)):
name_input._element.send_keys(Keys.END, Keys.BACK_SPACE)
name_input._element.send_keys(new_name)
save_button = 'a.save-button'
world.css_find(save_button).click()
world.css_click(save_button)


def get_index(name):
page_name_css = 'section[data-type="HTMLModule"]'
all_pages = world.css_find(page_name_css)
for i in range(len(all_pages)):
if all_pages[i].html == '\n {name}\n'.format(name=name):
if world.css_html(page_name_css, index=i) == '\n {name}\n'.format(name=name):
return i
return -1
12 changes: 6 additions & 6 deletions cms/djangoapps/contentstore/features/upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@
def go_to_uploads(_step):
menu_css = 'li.nav-course-courseware'
uploads_css = 'li.nav-course-courseware-uploads'
world.css_find(menu_css).click()
world.css_find(uploads_css).click()
world.css_click(menu_css)
world.css_click(uploads_css)


@step(u'I upload the file "([^"]*)"$')
def upload_file(_step, file_name):
upload_css = 'a.upload-button'
world.css_find(upload_css).click()
world.css_click(upload_css)

file_css = 'input.file-input'
upload = world.css_find(file_css)
Expand All @@ -32,7 +32,7 @@ def upload_file(_step, file_name):
upload._element.send_keys(os.path.abspath(path))

close_css = 'a.close-button'
world.css_find(close_css).click()
world.css_click(close_css)


@step(u'I should( not)? see the file "([^"]*)" was uploaded$')
Expand Down Expand Up @@ -67,7 +67,7 @@ def no_duplicate(_step, file_name):
all_names = world.css_find(names_css)
only_one = False
for i in range(len(all_names)):
if file_name == all_names[i].html:
if file_name == world.css_html(names_css, index=i):
only_one = not only_one
assert only_one

Expand Down Expand Up @@ -100,7 +100,7 @@ def get_index(file_name):
names_css = 'td.name-col > a.filename'
all_names = world.css_find(names_css)
for i in range(len(all_names)):
if file_name == all_names[i].html:
if file_name == world.css_html(names_css, index=i):
return i
return -1

Expand Down
21 changes: 18 additions & 3 deletions common/djangoapps/terrain/ui_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,20 +153,35 @@ def click_link(partial_text):


@world.absorb
def css_text(css_selector):
def css_text(css_selector, index=0):

# Wait for the css selector to appear
if world.is_css_present(css_selector):
try:
return world.browser.find_by_css(css_selector).first.text
return world.browser.find_by_css(css_selector)[index].text
except StaleElementReferenceException:
# The DOM was still redrawing. Wait a second and try again.
world.wait(1)
return world.browser.find_by_css(css_selector).first.text
return world.browser.find_by_css(css_selector)[index].text
else:
return ""


@world.absorb
def css_html(css_selector, index=0, max_attempts=5):
"""
Returns the HTML of a css_selector and will retry if there is a StaleElementReferenceException
"""
assert is_css_present(css_selector)
attempt = 0
while attempt < max_attempts:
try:
return world.browser.find_by_css(css_selector)[index].html
except:
attempt += 1
return ''


@world.absorb
def css_visible(css_selector):
assert is_css_present(css_selector)
Expand Down

0 comments on commit 0be0df1

Please sign in to comment.