test_plotly.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import numpy as np
  2. import plotly.graph_objects as go
  3. from nicegui import ui
  4. from .screen import Screen
  5. def test_plotly(screen: Screen):
  6. fig = go.Figure(go.Scatter(x=[1, 2, 3], y=[1, 2, 3], name='Trace 1'))
  7. fig.update_layout(title='Test Figure')
  8. plot = ui.plotly(fig)
  9. ui.button('Add trace', on_click=lambda: (
  10. # test NumPy array support for value arrays
  11. fig.add_trace(go.Scatter(x=np.array([0, 1, 2]), y=np.array([2, 1, 0]), name='Trace 2')),
  12. plot.update()
  13. ))
  14. screen.open('/')
  15. screen.should_contain('Test Figure')
  16. screen.click('Add trace')
  17. screen.should_contain('Trace 1')
  18. screen.should_contain('Trace 2')
  19. def test_replace_plotly(screen: Screen):
  20. with ui.row() as container:
  21. ui.plotly(go.Figure(go.Scatter(x=[1], y=[1], text=['A'], mode='text')))
  22. def replace():
  23. container.clear()
  24. with container:
  25. ui.plotly(go.Figure(go.Scatter(x=[1], y=[1], text=['B'], mode='text')))
  26. ui.button('Replace', on_click=replace)
  27. screen.open('/')
  28. assert screen.find_by_tag('text').text == 'A'
  29. screen.click('Replace')
  30. screen.wait(0.5)
  31. assert screen.find_by_tag('text').text == 'B'
  32. def test_create_dynamically(screen: Screen):
  33. ui.button('Create', on_click=lambda: ui.plotly(go.Figure(go.Scatter(x=[], y=[]))))
  34. screen.open('/')
  35. screen.click('Create')
  36. assert screen.find_by_tag('svg')