test_javascript.py 960 B

12345678910111213141516171819202122232425262728293031
  1. from datetime import datetime
  2. from nicegui import ui
  3. from .screen import Screen
  4. def test_executing_javascript(screen: Screen):
  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. screen.open('/')
  9. screen.selenium.title == 'NiceGUI'
  10. screen.click('change title')
  11. screen.selenium.title == 'A New Title'
  12. screen.selenium.title != 'NiceGUI'
  13. def test_retrieving_content_from_javascript(screen: Screen):
  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. screen.open('/')
  19. screen.click('write time')
  20. label = screen.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'