test_log.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from nicegui import ui
  2. from nicegui.testing import Screen
  3. def test_log(screen: Screen):
  4. log = ui.log(max_lines=3)
  5. log.push('A')
  6. log.push('B')
  7. log.push('C')
  8. log.push('D')
  9. screen.open('/')
  10. assert screen.find_element(log).text == 'B\nC\nD'
  11. log.clear()
  12. screen.wait(0.5)
  13. assert screen.find_element(log).text == ''
  14. def test_log_with_newlines(screen: Screen):
  15. log = ui.log(max_lines=3)
  16. log.push('A')
  17. log.push('B')
  18. log.push('C\nD')
  19. screen.open('/')
  20. assert screen.find_element(log).text == 'B\nC\nD'
  21. def test_replace_log(screen: Screen):
  22. with ui.row() as container:
  23. ui.log().push('A')
  24. def replace():
  25. container.clear()
  26. with container:
  27. ui.log().push('B')
  28. ui.button('Replace', on_click=replace)
  29. screen.open('/')
  30. screen.should_contain('A')
  31. screen.click('Replace')
  32. screen.should_contain('B')
  33. screen.should_not_contain('A')
  34. def test_special_characters(screen: Screen):
  35. log = ui.log()
  36. log.push('50%')
  37. ui.button('push', on_click=lambda: log.push('100%'))
  38. screen.open('/')
  39. screen.should_contain('50%')
  40. screen.click('push')
  41. screen.should_contain('100%')
  42. def test_line_duplication_bug_906(screen: Screen):
  43. ui.button('Log', on_click=lambda: ui.log().push('Hi!'))
  44. screen.open('/')
  45. screen.click('Log')
  46. screen.should_contain('Hi!')
  47. screen.should_not_contain('Hi!\nHi!')
  48. def test_another_duplication_bug_1173(screen: Screen):
  49. log1 = ui.log()
  50. def test():
  51. log1.push('A')
  52. log2 = ui.log()
  53. log2.push('C')
  54. log2.push('D')
  55. ui.button('test', on_click=test)
  56. screen.open('/')
  57. screen.click('test')
  58. screen.should_contain('A')
  59. screen.should_contain('C\nD')
  60. screen.should_not_contain('C\nD\nC\nD')