test_interactive_image.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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