tree.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. module.exports = {
  2. 'tree': function (browser) {
  3. browser
  4. .url('http://localhost:8080/examples/tree/')
  5. .waitForElementVisible('li', 1000)
  6. .assert.count('.item', 12)
  7. .assert.count('.add', 4)
  8. .assert.count('.item > ul', 4)
  9. .assert.notVisible('#demo li ul')
  10. .assert.containsText('#demo li div span', '[+]')
  11. // expand root
  12. .click('.bold')
  13. .assert.visible('#demo ul')
  14. .assert.evaluate(function () {
  15. return document.querySelector('#demo li ul').children.length === 4
  16. })
  17. .assert.containsText('#demo li div span', '[-]')
  18. .assert.containsText('#demo > .item > ul > .item:nth-child(1)', 'hello')
  19. .assert.containsText('#demo > .item > ul > .item:nth-child(2)', 'wat')
  20. .assert.containsText('#demo > .item > ul > .item:nth-child(3)', 'child folder')
  21. .assert.containsText('#demo > .item > ul > .item:nth-child(3)', '[+]')
  22. // add items to root
  23. .click('#demo > .item > ul > .add')
  24. .assert.evaluate(function () {
  25. return document.querySelector('#demo li ul').children.length === 5
  26. })
  27. .assert.containsText('#demo > .item > ul > .item:nth-child(1)', 'hello')
  28. .assert.containsText('#demo > .item > ul > .item:nth-child(2)', 'wat')
  29. .assert.containsText('#demo > .item > ul > .item:nth-child(3)', 'child folder')
  30. .assert.containsText('#demo > .item > ul > .item:nth-child(3)', '[+]')
  31. .assert.containsText('#demo > .item > ul > .item:nth-child(4)', 'new stuff')
  32. // add another item
  33. .click('#demo > .item > ul > .add')
  34. .assert.evaluate(function () {
  35. return document.querySelector('#demo li ul').children.length === 6
  36. })
  37. .assert.containsText('#demo > .item > ul > .item:nth-child(1)', 'hello')
  38. .assert.containsText('#demo > .item > ul > .item:nth-child(2)', 'wat')
  39. .assert.containsText('#demo > .item > ul > .item:nth-child(3)', 'child folder')
  40. .assert.containsText('#demo > .item > ul > .item:nth-child(3)', '[+]')
  41. .assert.containsText('#demo > .item > ul > .item:nth-child(4)', 'new stuff')
  42. .assert.containsText('#demo > .item > ul > .item:nth-child(5)', 'new stuff')
  43. .click('#demo ul .bold')
  44. .assert.visible('#demo ul ul')
  45. .assert.containsText('#demo ul > .item:nth-child(3)', '[-]')
  46. .assert.evaluate(function () {
  47. return document.querySelector('#demo ul ul').children.length === 5
  48. })
  49. .click('.bold')
  50. .assert.notVisible('#demo ul')
  51. .assert.containsText('#demo li div span', '[+]')
  52. .click('.bold')
  53. .assert.visible('#demo ul')
  54. .assert.containsText('#demo li div span', '[-]')
  55. .dblClick('#demo ul > .item div')
  56. .assert.count('.item', 15)
  57. .assert.count('.item > ul', 5)
  58. .assert.containsText('#demo ul > .item:nth-child(1)', '[-]')
  59. .assert.evaluate(function () {
  60. const firstItem = document.querySelector('#demo ul > .item:nth-child(1)')
  61. const ul = firstItem.querySelector('ul')
  62. return ul.children.length === 2
  63. })
  64. .end()
  65. }
  66. }