test_auto_context.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import asyncio
  2. from nicegui import ui
  3. from .screen import Screen
  4. def test_adding_element_to_shared_index_page(screen: Screen):
  5. ui.button('add label', on_click=lambda: ui.label('added'))
  6. screen.open('/')
  7. screen.click('add label')
  8. screen.should_contain('added')
  9. def test_adding_element_to_private_page(screen: Screen):
  10. @ui.page('/')
  11. def page():
  12. ui.button('add label', on_click=lambda: ui.label('added'))
  13. screen.open('/')
  14. screen.click('add label')
  15. screen.should_contain('added')
  16. def test_adding_elements_with_async_await(screen: Screen):
  17. async def add_a():
  18. await asyncio.sleep(0.1)
  19. ui.label('A')
  20. async def add_b():
  21. await asyncio.sleep(0.1)
  22. ui.label('B')
  23. with ui.card():
  24. ui.timer(1.0, add_a, once=True)
  25. with ui.card():
  26. ui.timer(1.1, add_b, once=True)
  27. screen.open('/')
  28. for i in range(100):
  29. if 'card\n A\ncard\n B' in screen.render_content():
  30. return
  31. screen.wait(0.1)
  32. raise AssertionError(f'{screen.render_content()} should show cards with "A" and "B"')