1
0

test_pages.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import asyncio
  2. from uuid import uuid4
  3. from nicegui import task_logger, ui
  4. from .user import User
  5. def test_page(user: User):
  6. @ui.page('/')
  7. def page():
  8. ui.label('Hello, world!')
  9. user.open('/')
  10. user.should_see('NiceGUI')
  11. user.should_see('Hello, world!')
  12. def test_shared_page(user: User):
  13. @ui.page('/', shared=True)
  14. def page():
  15. ui.label('Hello, world!')
  16. user.open('/')
  17. user.should_see('NiceGUI')
  18. user.should_see('Hello, world!')
  19. def test_auto_index_page(user: User):
  20. ui.label('Hello, world!')
  21. user.open('/')
  22. user.should_see('NiceGUI')
  23. user.should_see('Hello, world!')
  24. def test_custom_title(user: User):
  25. @ui.page('/', title='My Custom Title')
  26. def page():
  27. ui.label('Hello, world!')
  28. user.open('/')
  29. user.should_see('My Custom Title')
  30. user.should_see('Hello, world!')
  31. def test_route_with_custom_path(user: User):
  32. @ui.page('/test_route')
  33. def page():
  34. ui.label('page with custom path')
  35. user.open('/test_route')
  36. user.should_see('page with custom path')
  37. def test_auto_index_page_with_link_to_subpage(user: User):
  38. ui.link('link to subpage', '/subpage')
  39. @ui.page('/subpage')
  40. def page():
  41. ui.label('the subpage')
  42. user.open('/')
  43. user.click('link to subpage')
  44. user.should_see('the subpage')
  45. def test_link_to_page_by_passing_function(user: User):
  46. @ui.page('/subpage')
  47. def page():
  48. ui.label('the subpage')
  49. ui.link('link to subpage', page)
  50. user.open('/')
  51. user.click('link to subpage')
  52. user.should_see('the subpage')
  53. def test_creating_new_page_after_startup(user: User):
  54. user.start_server()
  55. @ui.page('/late_page')
  56. def page():
  57. ui.label('page created after startup')
  58. user.open('/late_page')
  59. user.should_see('page created after startup')
  60. def test_shared_and_individual_pages(user: User):
  61. @ui.page('/individual_page')
  62. def individual_page():
  63. ui.label(f'individual page with uuid {uuid4()}')
  64. @ ui.page('/shared_page', shared=True)
  65. def shared_page():
  66. ui.label(f'shared page with uuid {uuid4()}')
  67. user.open('/shared_page')
  68. uuid1 = user.find('shared page').text.split()[-1]
  69. user.open('/shared_page')
  70. uuid2 = user.find('shared page').text.split()[-1]
  71. assert uuid1 == uuid2
  72. user.open('/individual_page')
  73. uuid1 = user.find('individual page').text.split()[-1]
  74. user.open('/individual_page')
  75. uuid2 = user.find('individual page').text.split()[-1]
  76. assert uuid1 != uuid2
  77. def test_on_page_ready_event(user: User):
  78. '''This feature was introduced to fix #50; see https://github.com/zauberzeug/nicegui/issues/50#issuecomment-1210962617.'''
  79. async def load():
  80. label.text = 'loading...'
  81. # NOTE we can not use asyncio.create_task() here because we are on a different thread than the nicegui event loop
  82. task_logger.create_task(takes_a_while())
  83. async def takes_a_while():
  84. await asyncio.sleep(0.1)
  85. label.text = 'delayed data has been loaded'
  86. @ui.page('/', on_page_ready=load)
  87. def page():
  88. global label
  89. label = ui.label()
  90. user.open('/')
  91. user.sleep(0.2)
  92. user.should_see('delayed data has been loaded')