test_scene_view.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from typing import Optional
  2. import numpy as np
  3. from nicegui import ui
  4. from nicegui.testing import Screen
  5. def test_create_dynamically(screen: Screen):
  6. scene = ui.scene()
  7. scene_view: Optional[ui.scene_view] = None
  8. def create():
  9. nonlocal scene_view
  10. scene_view = ui.scene_view(scene)
  11. ui.button('Create', on_click=create)
  12. screen.open('/')
  13. screen.click('Create')
  14. screen.wait(0.5)
  15. assert scene_view is not None
  16. assert screen.selenium.execute_script(f'return getElement({scene_view.id}).scene == getElement({scene.id}).scene')
  17. def test_object_creation_via_context(screen: Screen):
  18. with ui.scene() as scene:
  19. scene.box()
  20. scene_view = ui.scene_view(scene)
  21. screen.open('/')
  22. screen.wait(1)
  23. assert screen.selenium.execute_script(f'return getElement({scene_view.id}).scene == getElement({scene.id}).scene')
  24. def test_camera_move(screen: Screen):
  25. with ui.scene() as scene:
  26. scene.box()
  27. scene_view = ui.scene_view(scene)
  28. screen.open('/')
  29. screen.wait(0.5)
  30. scene_view.move_camera(x=1, y=2, z=3, look_at_x=4, look_at_y=5, look_at_z=6, up_x=7, up_y=8, up_z=9, duration=0.0)
  31. screen.wait(1)
  32. position = screen.selenium.execute_script(f'return getElement({scene_view.id}).camera_tween._object')
  33. assert np.allclose(position, [1, 2, 3, 7, 8, 9, 4, 5, 6])