test_image.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import time
  2. from pathlib import Path
  3. from nicegui import ui
  4. from .screen import Screen
  5. example_file = str(Path(__file__).resolve().parent / '../examples/slideshow/slides/slide1.jpg')
  6. def test_base64_image(screen: Screen):
  7. data = ('data:image/png;base64,'
  8. 'iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAEHElEQVRo'
  9. 'ge2ZXUxbZRjHf6enH3QtBQ7paIFlMO2AMXTGqZE40bCpiRdzF06Nsu3O6G68MH5MnYkk3vhx4cWCJppF'
  10. 'lvgZ74wXbsZdLCYaQMeWUWM30EJZgVM+WtpS2uNFoQzTU3pKu2O0v8v38//Pe57ned8cKFOmTBk9EVR7'
  11. 'vrxsRlJ6gR7AfdMUrWcC6EcWTnK4fSnbAKPqVEl5C3ipRMLypR54GUkBeCXbAEOOyUdKoahAjqp15DKg'
  12. '12eTDZdaRy4DN43p+1s55HTwVF0Vk/taNM3V3UCDxUStSWQ4HKPDXsFwOK5pvm4GTILADquZbslGPKUA'
  13. 'sNdRwXg8wQ6rOe911NPo2UvKplXmYOcWM957Par9wrnL6xv2786qVbcT8EUTSOdH+Co4T//kLE0Xfgfg'
  14. 'wcFRpPMjea+jm4GkohBaTuKxmhlaiNFoMZFS4Jf5KKHlZN7rqBeyEvPF7kYO11UBsKdyLUuGH2jjNV+Q'
  15. 't0en8lpHtxN41RfkyUt+APYPjfJNcJ7v5TB7f77KJxOhvNfRzcDVaPpqM51Ick6O4DQbuTC7yMBClMml'
  16. '5bzX0bUOdNgtXAzHAGi3WRiOaKsBoGMa1cy/LY0Wi7IBvfl/GhCAJ+qq+HbPdgL7Whi8+5YN59zjsOLr'
  17. '9ODr9PB6s7OQbbOiuRI7jAa+7tjGAcmeaQtukLdNgsBHbfWZW2atSdS6rSqaDAjAp7saOSDZSSoKpwOz'
  18. 'nJmcw7uYO3+/uL2W2+wVm9GpiiYD3ZKNg85KAI57A3w4vnHJv9Vq5o1mJ9FUCqMgYBLUS08haIqBY+4a'
  19. 'AK5E4lyJxDnV4ub0rgaOuasRswgTgL7WeqwGA73XpjIPl2Ki6QQ6q6wAbDUb+fHO5kwZP+qu5qDTwaGL'
  20. 'f64bf8RdTbdkYzgc492xGU40FS94V9F0Ai5L2q9kEunzyxz3BhhYiALwmLOSh24IbKfZyHseFykFnh0J'
  21. 'kFBKczPRZMBqSA//eCLE894Ap/wyDw+NsZhMAWTiA+B9Tx21JpG+cZmf5haLKHk9mgysCp1bTmXaZhJJ'
  22. 'vIvpq3HTSpq83V7BM65qAHrc1chdrchdrdjE9HbPNUjIXa2bV49GA6tC22yWTJsoCLhXPq3ZRHKlbW1O'
  23. 'pWigxihSYxQzMWMxCNQYi1MLNAXxZ9fnuKOygkckO0+7qjgrR3hhWy0uc3qZ72bCAPwWjmd9mPvv28kW'
  24. '0UDfuMyJP4JFkK/RwAd/zfD4Vgd3OaycaW9c1/dDKMLn1+eAtQf7P1kN41gqe38haPqE4imF7sFR3hmb'
  25. 'ZiyWIKEo+KJL9F6b4tFfx1jeINMMLcQYWIjijyU2JfpG/tMvsokSSSkAYVytJ5eB/hIoKQxBUdWiHsSy'
  26. 'cHLlz0gP6T8lepD+xTQjvKnT/mXKlCmzAX8Dl7JCqRHaepQAAAAASUVORK5CYII=')
  27. ui.image(data).style('width: 50px;')
  28. screen.open('/')
  29. screen.wait(0.2)
  30. image = screen.find_by_class('q-img__image')
  31. assert 'data:image/png;base64,iVB' in image.get_attribute('src')
  32. def test_setting_local_file(screen: Screen):
  33. ui.image(example_file)
  34. screen.open('/')
  35. image = screen.find_by_class('q-img__image')
  36. deadline = time.time() + 2
  37. while time.time() < deadline:
  38. js = 'return arguments[0].naturalWidth > 0 && arguments[0].naturalHeight > 0'
  39. if screen.selenium.execute_script(js, image):
  40. break
  41. else:
  42. assert False, 'image not loaded'
  43. def test_binding_local_file(screen: Screen):
  44. images = {'one': example_file}
  45. ui.image().bind_source_from(images, 'one')
  46. screen.open('/')
  47. image = screen.find_by_class('q-img__image')
  48. deadline = time.time() + 2
  49. while time.time() < deadline:
  50. js = 'return arguments[0].naturalWidth > 0 && arguments[0].naturalHeight > 0'
  51. if screen.selenium.execute_script(js, image):
  52. break
  53. else:
  54. assert False, 'image not loaded'
  55. def test_set_source_with_local_file(screen: Screen):
  56. ui.image().set_source(example_file)
  57. screen.open('/')
  58. image = screen.find_by_class('q-img__image')
  59. deadline = time.time() + 2
  60. while time.time() < deadline:
  61. js = 'return arguments[0].naturalWidth > 0 && arguments[0].naturalHeight > 0'
  62. if screen.selenium.execute_script(js, image):
  63. break
  64. else:
  65. assert False, 'image not loaded'
  66. screen.wait(0.2)