def test_filter_tasks(): browser.open('https://todomvc4tasj.herokuapp.com') clear_completed_js_loaded = "return $._data($('#clear-completed').get(0), 'events').hasOwnProperty('click')" browser.wait_to( have.js_returned(True, clear_completed_js_loaded), timeout=config.timeout * 3, ) browser.element('#new-todo').set_value('a').press_enter() browser.element('#new-todo').set_value('b').press_enter() browser.element('#new-todo').set_value('c').press_enter() browser.all('#todo-list li').should(have.exact_texts('a', 'b', 'c')) browser.all('#todo-list li').element_by( have.exact_text('b')).element('.toggle').click() browser.element(by.link_text('Active')).click() browser.all('#todo-list li').filtered_by(be.visible).should( have.exact_texts('a', 'c')) browser.element(by.link_text('Completed')).click() browser.all('#todo-list li').filtered_by(be.visible).should( have.exact_texts('b')) browser.element(by.link_text('All')).click() browser.all('#todo-list li').filtered_by(be.visible).should( have.exact_texts('a', 'b', 'c'))
def test_complete_todo(): browser.open('http://todomvc.com/examples/emberjs/') browser.element('#new-todo').type('a').press_enter() browser.element('#new-todo').type('b').press_enter() browser.element('#new-todo').type('c').press_enter() browser.all('#todo-list>li').should(have.exact_texts('a', 'b', 'c')) browser.element('#todo-list>li:nth-of-type(2) .toggle').click() browser.all('#todo-list>li.completed').should(have.exact_texts('b')) browser.all('#todo-list>li:not(.completed)').should( have.exact_texts('a', 'c'))
def test_add_todo_3_at_new_page_in_fresh_browser(web): Settings.reset_driver = True assert Settings.reset_driver web.open('https://todomvc.com/examples/emberjs/') assert not Settings.reset_driver web.element('#new-todo').type('c').press_enter() web.all('#todo-list>li').should(have.exact_texts('c'))
def test_completed_tasks(): browser.element('[id="new-todo"]').type('a').press_enter() browser.element('[id="new-todo"]').type('b').press_enter() browser.element('[id="new-todo"]').type('c').press_enter() browser.all('#todo-list>li').should(have.exact_texts('a', 'b', 'c')) browser.element('#todo-list>li:nth-child(2) .toggle').click() browser.element('#todo-list>li:nth-child(2)').should( have.css_class('completed')) browser.element('#todo-list>li:nth-child(1)').should( have.no.css_class('completed')) browser.element('#todo-list>li:nth-child(3)').should( have.no.css_class('completed'))
def test_complete_task(): # browser.config.driver = # browser.config.hook_wait_failure=\ # lambda error: TimeoutException(error.msg.replace('file://', '')) # browser.config.timeout = 6 # browser.config.save_screenshot_on_failure = False # browser.config.save_page_source_on_failure = False browser.open('http://todomvc.com/examples/emberjs/') browser.element('#new-todo').type('a').press_enter() browser.element('#new-todo').type('b').press_enter() browser.element('#new-todo').type('c').press_enter() # browser.element('#new-todo').with_(Config(timeout=2)).should(have.value('foo')) browser.all('#todo-list>li').should(have.exact_texts('a', 'b', 'c')) browser.all('#todo-list>li').element_by(have.exact_text('b'))\ .element('.toggle').click() browser.all('#todo-list>li').filtered_by(have.css_class('completed'))\ .should(have.exact_texts('b')) browser.all('#todo-list>li').filtered_by(have.no.css_class('completed'))\ .should(have.exact_texts('a', 'c'))
from selene import have from selene.support.shared import browser # Arrange browser.open('http://todomvc.com/examples/emberjs/') # Act browser.element('[id="new-todo"]').type('listen lesson').press_enter() browser.element('[id="new-todo"]').type('have a rest').press_enter() browser.element('[id="new-todo"]').type('do homework').press_enter() # Assert browser.all('[id="todo-list"] li').should( have.exact_texts('listen lesson', 'have a rest', 'do homework'))
def todos_should_be(self, *with_texts): self.todos.should(have.exact_texts(*with_texts))
def test_add_todo_4_at_same_page(web): web.element('#new-todo').type('d').press_enter() web.all('#todo-list>li').should(have.exact_texts('c', 'd'))
def active_todos_should_be(self, *names: str): self.todos.filtered_by(have.css_class('active'))\ .should(have.exact_texts(*names)) return self
def list_should_be(self, *names: str): self.todos.should(have.exact_texts(*names)) return self
def todos_should_be(*with_texts): todos.should(have.exact_texts(*with_texts))
def should_have_active(self, *todos: str): self.todo_list.filtered_by(be_completed.not_)\ .should(have.exact_texts(*todos)) return self
def assert_todos(*texts): todo_list.should(have.exact_texts(*texts))
def assert_todos(*names) -> None: todos.should(have.exact_texts(*names))
def test_add_tasks(): browser.element('#new-todo').type('a').press_enter() browser.element('#new-todo').type('b').press_enter() browser.element('#new-todo').type('c').press_enter() browser.all('#todo-list .view').should( have.size(3) and have.exact_texts('a', 'b', 'c'))
def test_check_active_tasks(): browser.all('#todo-list [class=ember-view] .view').should( have.size(2) and have.exact_texts('a', 'c'))
def test_check_completted_tasks(): browser.all('#todo-list .completed .view').should( have.size(1) and have.exact_texts('b'))
def assert_list(*tasks: str): todo_list.should(have.exact_texts(*tasks))
def todos_should_be(self, *texts): todo_list.should(have.exact_texts(*texts)) return self
def should_be(self, *texts): self._elements().should(have.exact_texts(*texts))
def should_have(self, *todos: str): self.todo_list.should(have.exact_texts(*todos)) return self
def should_have_completed(self, *todos: str): self._list.filtered_by(have.css_class('completed')).should( have.exact_texts(*todos)) return self
def should_have(*todos: str): todo_list.should(have.exact_texts(*todos))
def should_have_active(self, *todos: str): self._list.filtered_by(have.css_class('active')).should( have.exact_texts(*todos)) return self
def should_have_completed(self, *todos: str): self.list_.filtered_by(be_completed).should(have.exact_texts(*todos)) return self
from selene import have from selene.support.shared import browser from selene.support.shared.jquery_style import s, ss # ARRANGE browser.config.hold_browser_open = True browser.open('http://todomvc.com/examples/emberjs/') # ACTS s('[id="new-todo"]').type('Listen Lesson').press_enter() s('[id="new-todo"]').type('Listen Book').press_enter() s('[id="new-todo"]').type('Watch TV').press_enter() # ASSERT ss('[id="todo-list"] li').should( have.exact_texts('Listen Lesson.', 'Listen Book', 'Watch TV'))
def completed_todos_should_be(self, *names: str): self.todos.filtered_by(have.css_class('completed'))\ .should(have.exact_texts(*names)) return self
from selene import have from selene.support.shared import browser browser.config.hold_browser_open = True browser.open("http://todomvc4tasj.herokuapp.com/") browser.should(have.js_returned(True, "return $._data($('#clear-completed')[0], 'events').hasOwnProperty('click')")) # Add browser.element('#new-todo').type('a').press_enter() browser.element('#new-todo').type('b').press_enter() browser.element('#new-todo').type('c').press_enter() browser.all('#todo-list>li').should(have.exact_texts('a', 'b', 'c')) # Edit browser.all('#todo-list>li').element_by(have.exact_text('b')).double_click() browser.all('#todo-list>li').element_by(have.css_class('editing')).element('.edit').type(' edited').press_enter() # Complete & Clear browser.all('#todo-list>li').element_by(have.exact_text('b edited')).element('.toggle').click() browser.element('#clear-completed').click() browser.all('#todo-list>li').should(have.exact_texts('a', 'c')) # Cancel Edit browser.all('#todo-list>li').element_by(have.exact_text('c')).double_click() browser.all('#todo-list>li').element_by(have.css_class('editing')).element('.edit').type('to be canceled').press_escape() # Delete browser.all('#todo-list>li').element_by(have.exact_text('c')).hover().element('.destroy').click() browser.all('#todo-list>li').should(have.exact_text('a'))
def should_be_completed(self, *todos: str): self.todo_list.filtered_by(completed) \ .should(have.exact_texts(*todos)) return self
def test_add_todo_1(web): web.open('https://todomvc.com/examples/emberjs/') web.element('#new-todo').type('a').press_enter() web.all('#todo-list>li').should(have.exact_texts('a'))