casper.test.begin('tree', 22, function (test) { casper .start('../../examples/tree/index.html') .then(function () { test.assertElementCount('.item', 12) test.assertElementCount('.item > ul', 4) test.assertNotVisible('#demo li ul') test.assertSelectorHasText('#demo li div span', '[+]') }) .thenClick('.bold', function () { test.assertVisible('#demo ul') test.assertSelectorHasText('#demo li div span', '[-]') test.assertSelectorHasText('#demo ul > .item:nth-child(1)', 'hello') test.assertSelectorHasText('#demo ul > .item:nth-child(2)', 'wat') test.assertSelectorHasText('#demo ul > .item:nth-child(3)', 'child folder') test.assertSelectorHasText('#demo ul > .item:nth-child(3)', '[+]') test.assertEval(function () { return document.querySelector('#demo li ul').children.length === 4 }) }) .thenClick('#demo ul .bold', function () { test.assertVisible('#demo ul ul') test.assertSelectorHasText('#demo ul > .item:nth-child(3)', '[-]') test.assertEval(function () { return document.querySelector('#demo ul ul').children.length === 5 }) }) .thenClick('.bold', function () { test.assertNotVisible('#demo ul') test.assertSelectorHasText('#demo li div span', '[+]') }) .thenClick('.bold', function () { test.assertVisible('#demo ul') test.assertSelectorHasText('#demo li div span', '[-]') }) .then(function () { casper.mouseEvent('dblclick', '#demo ul > .item div') }) .then(function () { test.assertElementCount('.item', 13) test.assertElementCount('.item > ul', 5) test.assertSelectorHasText('#demo ul > .item:nth-child(1)', '[-]') test.assertEval(function () { var firstItem = document.querySelector('#demo ul > .item:nth-child(1)') var ul = firstItem.querySelector('ul') return ul.children.length === 2 }) }) // run .run(function () { test.done() }) })