test_javascript.py 932 B

12345678910111213141516171819202122232425262728293031
  1. from datetime import datetime
  2. from nicegui import ui
  3. from .user import User
  4. def test_executing_javascript(user: User):
  5. async def set_title():
  6. await ui.run_javascript('document.title = "A New Title"')
  7. ui.button('change title', on_click=set_title)
  8. user.open('/')
  9. user.selenium.title == 'NiceGUI'
  10. user.click('change title')
  11. user.selenium.title == 'A New Title'
  12. user.selenium.title != 'NiceGUI'
  13. def test_retrieving_content_from_javascript(user: User):
  14. async def write_time():
  15. response = await ui.await_javascript('Date.now()')
  16. ui.label(f'Browser time: {response}')
  17. ui.button('write time', on_click=write_time)
  18. user.open('/')
  19. user.click('write time')
  20. label = user.find('Browser time').text
  21. jstime = datetime.fromtimestamp(int(label.split(': ')[1])/1000)
  22. assert abs((datetime.now() - jstime).total_seconds()) < 1, f'{jstime} should be close to now'