test_interactive_image.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import pytest
  2. from nicegui import Client, ui
  3. from .screen import Screen
  4. def test_set_source_in_tab(screen: Screen):
  5. """https://github.com/zauberzeug/nicegui/issues/488"""
  6. @ui.page('/')
  7. async def page(client: Client):
  8. with ui.tabs() as tabs:
  9. ui.tab('A')
  10. ui.tab('B')
  11. with ui.tab_panels(tabs, value='A'):
  12. with ui.tab_panel('A'):
  13. ui.label('Tab A')
  14. img = ui.interactive_image()
  15. with ui.tab_panel('B'):
  16. ui.label('Tab B')
  17. await client.connected()
  18. img.set_source('https://nicegui.io/logo.png')
  19. screen.open('/')
  20. screen.wait(0.5)
  21. assert screen.find_by_tag('img').get_attribute('src') == 'https://nicegui.io/logo.png'
  22. screen.click('B')
  23. screen.wait(0.5)
  24. screen.click('A')
  25. assert screen.find_by_tag('img').get_attribute('src') == 'https://nicegui.io/logo.png'
  26. @pytest.mark.parametrize('cross, number_of_lines', [(True, 2), (False, 0)])
  27. def test_with_cross(screen: Screen, cross: bool, number_of_lines: int):
  28. ii = ui.interactive_image('https://nicegui.io/logo.png', cross=cross)
  29. ii.content = f'<circle cx="100" cy="100" r="15" fill="none" stroke="red" stroke-width="4" />'
  30. screen.open('/')
  31. screen.find_by_tag('svg')
  32. with screen.implicitly_wait(0.5):
  33. assert len(screen.find_all_by_tag('line')) == number_of_lines
  34. assert len(screen.find_all_by_tag('circle')) == 1
  35. def test_replace_interactive_image(screen: Screen):
  36. with ui.row() as container:
  37. ui.interactive_image('https://picsum.photos/id/29/640/360')
  38. def replace():
  39. container.clear()
  40. with container:
  41. ui.interactive_image('https://picsum.photos/id/30/640/360')
  42. ui.button('Replace', on_click=replace)
  43. screen.open('/')
  44. assert screen.find_by_tag('img').get_attribute('src').endswith('id/29/640/360')
  45. screen.click('Replace')
  46. screen.wait(0.5)
  47. assert screen.find_by_tag('img').get_attribute('src').endswith('id/30/640/360')