test_pages.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. from uuid import uuid4
  2. from nicegui import ui
  3. from .user import User
  4. def test_title(user: User):
  5. @ui.page('/', title='My Custom Title')
  6. def page():
  7. ui.label('some content')
  8. user.open('/')
  9. user.should_see('My Custom Title')
  10. def test_route_with_custom_path(user: User):
  11. @ui.page('/test_route')
  12. def page():
  13. ui.label('page with custom path')
  14. user.open('/test_route')
  15. user.should_see('page with custom path')
  16. def test_auto_index_page_with_link_to_subpage(user: User):
  17. ui.link('link to subpage', '/subpage')
  18. @ui.page('/subpage')
  19. def page():
  20. ui.label('the subpage')
  21. user.open('/')
  22. user.click('link to subpage')
  23. user.should_see('the subpage')
  24. def test_link_to_page_by_passing_function(user: User):
  25. @ui.page('/subpage')
  26. def page():
  27. ui.label('the subpage')
  28. ui.link('link to subpage', page)
  29. user.open('/')
  30. user.click('link to subpage')
  31. user.should_see('the subpage')
  32. def test_creating_new_page_after_startup(user: User):
  33. user.start_server()
  34. @ui.page('/late_page')
  35. def page():
  36. ui.label('page created after startup')
  37. user.open('/late_page')
  38. user.should_see('page created after startup')
  39. def test_automatic_loading_of_joystick_dependency(user: User):
  40. @ui.page('/')
  41. def page():
  42. ui.joystick()
  43. user.open('/')
  44. srcs = user.get_attributes('script', 'src')
  45. assert any(s.endswith('joystick.js') for s in srcs)
  46. assert any(s.endswith('nipplejs.min.js') for s in srcs)
  47. def test_automatic_loading_of_keyboard_dependency_before_startup(user: User):
  48. @ui.page('/')
  49. def page():
  50. ui.keyboard()
  51. user.open('/')
  52. assert any(s.endswith('keyboard.js') for s in user.get_attributes('script', 'src'))
  53. user.sleep(2) # NOTE we need to sleep here so the js timeout error is printed (start pytest with -s to see it)
  54. def test_automatic_loading_of_keyboard_dependency_after_startup(user: User):
  55. @ui.page('/')
  56. def page():
  57. ui.button('activate keyboard', on_click=lambda: ui.keyboard())
  58. user.open('/')
  59. assert not any(s.endswith('keyboard.js') for s in user.get_attributes('script', 'src'))
  60. user.click('activate keyboard')
  61. assert any(s.endswith('keyboard.js') for s in user.get_attributes('script', 'src'))
  62. user.sleep(2) # NOTE we need to sleep here so the js timeout error is printed (start pytest with -s to see it)
  63. def test_shared_and_individual_pages(user: User):
  64. @ui.page('/individual_page')
  65. def individual_page():
  66. ui.label(f'individual page with uuid {uuid4()}')
  67. @ ui.page('/shared_page', shared=True)
  68. def shared_page():
  69. ui.label(f'shared page with uuid {uuid4()}')
  70. user.open('/shared_page')
  71. uuid1 = user.find('shared page').text.split()[-1]
  72. user.open('/shared_page')
  73. uuid2 = user.find('shared page').text.split()[-1]
  74. assert uuid1 == uuid2
  75. user.open('/individual_page')
  76. uuid1 = user.find('individual page').text.split()[-1]
  77. user.open('/individual_page')
  78. uuid2 = user.find('individual page').text.split()[-1]
  79. assert uuid1 != uuid2