test_notification.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from nicegui import ui
  2. from nicegui.testing import Screen
  3. def test_notification(screen: Screen):
  4. ui.button('Notify', on_click=lambda: ui.notification('Hi!'))
  5. screen.open('/')
  6. screen.click('Notify')
  7. screen.should_contain('Hi!')
  8. def test_close_button(screen: Screen):
  9. b = ui.button('Notify', on_click=lambda: ui.notification('Hi!', timeout=None, close_button=True))
  10. screen.open('/')
  11. screen.click('Notify')
  12. screen.should_contain('Hi!')
  13. assert len(b.client.layout.default_slot.children) == 2
  14. screen.wait_for('Close')
  15. screen.wait(0.1) # NOTE: wait for button to become clickable
  16. screen.click('Close')
  17. screen.wait(1.5)
  18. screen.should_not_contain('Hi!')
  19. assert len(b.client.layout.default_slot.children) == 1
  20. def test_dismiss(screen: Screen):
  21. n = ui.notification('Hi!', timeout=None)
  22. b = ui.button('Dismiss', on_click=n.dismiss)
  23. screen.open('/')
  24. screen.should_contain('Hi!')
  25. assert len(b.client.layout.default_slot.children) == 2
  26. screen.wait(1)
  27. screen.click('Dismiss')
  28. screen.wait(1.5)
  29. screen.should_not_contain('Hi!')
  30. assert len(b.client.layout.default_slot.children) == 1
  31. def test_no_reset_by_other_notifications(screen: Screen):
  32. # see #4373
  33. ui.button('Button A', on_click=lambda: ui.notification('Notification A', timeout=1.0))
  34. ui.button('Button B', on_click=lambda: ui.notification('Notification B', timeout=1.0))
  35. ui.button('Button C', on_click=lambda: ui.notification('Notification C', timeout=1.0))
  36. ui.button('Button D', on_click=lambda: ui.notification('Notification D', timeout=1.0))
  37. screen.open('/')
  38. screen.click('Button A')
  39. screen.wait(1)
  40. screen.click('Button B')
  41. screen.wait(1)
  42. screen.click('Button C')
  43. screen.wait(1)
  44. screen.click('Button D')
  45. screen.should_contain('Notification D')
  46. screen.should_not_contain('Notification A')