from datetime import datetime from nicegui import ui from .screen import Screen def test_executing_javascript(screen: Screen): async def set_title(): await ui.run_javascript('document.title = "A New Title"') ui.button('change title', on_click=set_title) screen.open('/') screen.selenium.title == 'NiceGUI' screen.click('change title') screen.selenium.title == 'A New Title' screen.selenium.title != 'NiceGUI' def test_retrieving_content_from_javascript(screen: Screen): async def write_time(): response = await ui.await_javascript('Date.now()') ui.label(f'Browser time: {response}') ui.button('write time', on_click=write_time) screen.open('/') screen.click('write time') label = screen.find('Browser time').text jstime = datetime.fromtimestamp(int(label.split(': ')[1])/1000) assert abs((datetime.now() - jstime).total_seconds()) < 1, f'{jstime} should be close to now'