test_session.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import requests
  2. from nicegui import app, globals, ui
  3. from .screen import PORT, Screen
  4. def test_session_data_is_stored_in_the_browser(screen: Screen):
  5. @ui.page('/')
  6. def page():
  7. ui.session.get()['count'] = ui.session.get().get('count', 0) + 1
  8. ui.label(ui.session.get()['count'] or 'no session')
  9. @app.get('/session')
  10. def session():
  11. return 'count = ' + str(ui.session.get()['count'])
  12. screen.open('/')
  13. screen.should_contain('1')
  14. screen.open('/')
  15. screen.should_contain('2')
  16. screen.open('/')
  17. screen.should_contain('3')
  18. screen.open('/session')
  19. screen.should_contain('count = 3')
  20. def test_session_storage_supports_asyncio(screen: Screen):
  21. @ui.page('/')
  22. async def page():
  23. ui.session.get()['count'] = ui.session.get().get('count', 0) + 1
  24. await asyncio.sleep(0.5)
  25. ui.label(ui.session.get()['count'] or 'no session')
  26. screen.open('/')
  27. screen.switch_to(1)
  28. screen.open('/')
  29. screen.should_contain('2')
  30. screen.switch_to(0)
  31. screen.open('/')
  32. screen.should_contain('3')
  33. # ui.input('name').bind_value(request.session, 'key')
  34. # screen.open('/')
  35. # screen.find('input').send_keys('some text')
  36. # screen.open('/')
  37. # screen.should_contain('some text')