You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

167 lines
5.2 KiB

module.exports = {
'todomvc': function (browser) {
browser
.url('http://localhost:8080/examples/todomvc/#test')
.waitForElementVisible('.todoapp', 1000)
.assert.notVisible('.main')
.assert.notVisible('.footer')
.assert.count('.filters .selected', 1)
.assert.evaluate(function () {
return document.querySelector('.filters .selected').textContent === 'All'
})
createNewItem('test')
.assert.count('.todo', 1)
.assert.notVisible('.todo .edit')
.assert.containsText('.todo label', 'test')
.assert.containsText('.todo-count strong', '1')
.assert.checked('.todo .toggle', false)
.assert.visible('.main')
.assert.visible('.footer')
.assert.notVisible('.clear-completed')
.assert.value('.new-todo', '')
createNewItem('test2')
.assert.count('.todo', 2)
.assert.containsText('.todo:nth-child(2) label', 'test2')
.assert.containsText('.todo-count strong', '2')
// toggle
browser
.click('.todo .toggle')
.assert.count('.todo.completed', 1)
.assert.cssClassPresent('.todo:nth-child(1)', 'completed')
.assert.containsText('.todo-count strong', '1')
.assert.visible('.clear-completed')
createNewItem('test3')
.assert.count('.todo', 3)
.assert.containsText('.todo:nth-child(3) label', 'test3')
.assert.containsText('.todo-count strong', '2')
createNewItem('test4')
createNewItem('test5')
.assert.count('.todo', 5)
.assert.containsText('.todo-count strong', '4')
// toggle more
browser
.click('.todo:nth-child(4) .toggle')
.click('.todo:nth-child(5) .toggle')
.assert.count('.todo.completed', 3)
.assert.containsText('.todo-count strong', '2')
// remove
removeItemAt(1)
.assert.count('.todo', 4)
.assert.count('.todo.completed', 2)
.assert.containsText('.todo-count strong', '2')
removeItemAt(2)
.assert.count('.todo', 3)
.assert.count('.todo.completed', 2)
.assert.containsText('.todo-count strong', '1')
// remove all
browser
.click('.clear-completed')
.assert.count('.todo', 1)
.assert.containsText('.todo label', 'test2')
.assert.count('.todo.completed', 0)
.assert.containsText('.todo-count strong', '1')
.assert.notVisible('.clear-completed')
// prepare to test filters
createNewItem('test')
createNewItem('test')
.click('.todo:nth-child(2) .toggle')
.click('.todo:nth-child(3) .toggle')
// active filter
browser
.click('.filters li:nth-child(2) a')
.assert.count('.todo', 1)
.assert.count('.todo.completed', 0)
// add item with filter active
createNewItem('test')
.assert.count('.todo', 2)
// complted filter
browser.click('.filters li:nth-child(3) a')
.assert.count('.todo', 2)
.assert.count('.todo.completed', 2)
// filter on page load
browser.url('http://localhost:8080/examples/todomvc/#active')
.assert.count('.todo', 2)
.assert.count('.todo.completed', 0)
.assert.containsText('.todo-count strong', '2')
// completed on page load
browser.url('http://localhost:8080/examples/todomvc/#completed')
.assert.count('.todo', 2)
.assert.count('.todo.completed', 2)
.assert.containsText('.todo-count strong', '2')
// toggling with filter active
browser
.click('.todo .toggle')
.assert.count('.todo', 1)
.click('.filters li:nth-child(2) a')
.assert.count('.todo', 3)
.click('.todo .toggle')
.assert.count('.todo', 2)
// editing triggered by blur
browser
.click('.filters li:nth-child(1) a')
.dblClick('.todo:nth-child(1) label')
.assert.count('.todo.editing', 1)
.assert.focused('.todo:nth-child(1) .edit')
.clearValue('.todo:nth-child(1) .edit')
.setValue('.todo:nth-child(1) .edit', 'edited!')
.click('footer') // blur
.assert.count('.todo.editing', 0)
.assert.containsText('.todo:nth-child(1) label', 'edited!')
// editing triggered by enter
browser
.dblClick('.todo label')
.enterValue('.todo:nth-child(1) .edit', 'edited again!')
.assert.count('.todo.editing', 0)
.assert.containsText('.todo:nth-child(1) label', 'edited again!')
// cancel
browser
.dblClick('.todo label')
.clearValue('.todo:nth-child(1) .edit')
.setValue('.todo:nth-child(1) .edit', 'edited!')
.trigger('.todo:nth-child(1) .edit', 'keyup', 27)
.assert.count('.todo.editing', 0)
.assert.containsText('.todo:nth-child(1) label', 'edited again!')
// empty value should remove
browser
.dblClick('.todo label')
.enterValue('.todo:nth-child(1) .edit', ' ')
.assert.count('.todo', 3)
// toggle all
browser
.click('.toggle-all')
.assert.count('.todo.completed', 3)
.click('.toggle-all')
.assert.count('.todo:not(.completed)', 3)
.end()
function createNewItem (text) {
return browser.enterValue('.new-todo', text)
}
function removeItemAt (n) {
return browser
.moveToElement('.todo:nth-child(' + n + ')', 10, 10)
.click('.todo:nth-child(' + n + ') .destroy')
}
}
}