test_auto_context.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 _ 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"')
  33. def test_adding_elements_during_onconnect(screen: Screen):
  34. ui.label('Label 1')
  35. ui.on_connect(lambda: ui.label('Label 2'))
  36. screen.open('/')
  37. screen.should_contain('Label 2')