test_dialog.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from typing import List
  2. from selenium.webdriver.common.action_chains import ActionChains
  3. from selenium.webdriver.common.keys import Keys
  4. from nicegui import ui
  5. from .screen import Screen
  6. def test_open_close_dialog(screen: Screen):
  7. with ui.dialog() as d, ui.card():
  8. ui.label('Content')
  9. ui.button('Close', on_click=d.close)
  10. ui.button('Open', on_click=d.open)
  11. screen.open('/')
  12. screen.should_not_contain('Content')
  13. screen.click('Open')
  14. screen.wait(0.5)
  15. screen.should_contain('Content')
  16. screen.click('Close')
  17. screen.wait(0.5)
  18. screen.should_not_contain('Content')
  19. def test_await_dialog(screen: Screen):
  20. with ui.dialog() as dialog, ui.card():
  21. ui.label('Are you sure?')
  22. with ui.row():
  23. ui.button('Yes', on_click=lambda: dialog.submit('Yes'))
  24. ui.button('No', on_click=lambda: dialog.submit('No'))
  25. async def show() -> None:
  26. results.append(await dialog)
  27. results: List[str] = []
  28. ui.button('Open', on_click=show)
  29. screen.open('/')
  30. screen.click('Open')
  31. screen.click('Yes')
  32. screen.click('Open')
  33. screen.click('No')
  34. screen.click('Open')
  35. ActionChains(screen.selenium).send_keys(Keys.ESCAPE).perform()
  36. screen.wait(0.5)
  37. assert results == ['Yes', 'No', None]