From a988ef2be594d1e9ef971e28d26249f8e89beaf3 Mon Sep 17 00:00:00 2001 From: Luca Foppiano Date: Tue, 5 Mar 2024 19:39:17 +0900 Subject: [PATCH] extend tests to cover all combination of parameters (width, height, rendering) --- tests/__init__.py | 3 + ...ample_embed.py => example_embed_height.py} | 4 +- tests/streamlit_apps/example_embed_no_args.py | 10 ++++ tests/streamlit_apps/example_embed_width.py | 10 ++++ .../example_embed_width_height.py | 10 ++++ ...ple_iframe.py => example_iframe_height.py} | 4 +- .../streamlit_apps/example_iframe_no_args.py | 10 ++++ tests/streamlit_apps/example_iframe_width.py | 10 ++++ .../example_iframe_width_height.py | 10 ++++ tests/streamlit_apps/example_unwrap_height.py | 10 ++++ ...e_no_args.py => example_unwrap_no_args.py} | 4 +- tests/streamlit_apps/example_unwrap_width.py | 10 ++++ ...args.py => example_unwrap_width_height.py} | 4 +- ...template_embed.py => test_embed_height.py} | 8 +-- tests/test_embed_no_args.py | 58 ++++++++++++++++++ tests/test_embed_width.py | 58 ++++++++++++++++++ tests/test_embed_width_height.py | 59 +++++++++++++++++++ ...mplate_iframe.py => test_iframe_height.py} | 8 +-- tests/test_iframe_no_args.py | 58 ++++++++++++++++++ tests/test_iframe_width.py | 58 ++++++++++++++++++ tests/test_iframe_width_height.py | 58 ++++++++++++++++++ tests/test_unwrap_height.py | 53 +++++++++++++++++ ...late_no_args.py => test_unwrap_no_args.py} | 8 +-- ..._template_args.py => test_unwrap_width.py} | 8 +-- tests/test_unwrap_width_height.py | 53 +++++++++++++++++ 25 files changed, 558 insertions(+), 28 deletions(-) rename tests/streamlit_apps/{example_embed.py => example_embed_height.py} (63%) create mode 100644 tests/streamlit_apps/example_embed_no_args.py create mode 100644 tests/streamlit_apps/example_embed_width.py create mode 100644 tests/streamlit_apps/example_embed_width_height.py rename tests/streamlit_apps/{example_iframe.py => example_iframe_height.py} (63%) create mode 100644 tests/streamlit_apps/example_iframe_no_args.py create mode 100644 tests/streamlit_apps/example_iframe_width.py create mode 100644 tests/streamlit_apps/example_iframe_width_height.py create mode 100644 tests/streamlit_apps/example_unwrap_height.py rename tests/streamlit_apps/{example_no_args.py => example_unwrap_no_args.py} (58%) create mode 100644 tests/streamlit_apps/example_unwrap_width.py rename tests/streamlit_apps/{example_args.py => example_unwrap_width_height.py} (62%) rename tests/{test_template_embed.py => test_embed_height.py} (89%) create mode 100644 tests/test_embed_no_args.py create mode 100644 tests/test_embed_width.py create mode 100644 tests/test_embed_width_height.py rename tests/{test_template_iframe.py => test_iframe_height.py} (92%) create mode 100644 tests/test_iframe_no_args.py create mode 100644 tests/test_iframe_width.py create mode 100644 tests/test_iframe_width_height.py create mode 100644 tests/test_unwrap_height.py rename tests/{test_template_no_args.py => test_unwrap_no_args.py} (95%) rename tests/{test_template_args.py => test_unwrap_width.py} (89%) create mode 100644 tests/test_unwrap_width_height.py diff --git a/tests/__init__.py b/tests/__init__.py index e69de29b..d24c2242 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -0,0 +1,3 @@ +from pathlib import Path + +ROOT_DIRECTORY = Path(__file__).parent.parent.absolute() \ No newline at end of file diff --git a/tests/streamlit_apps/example_embed.py b/tests/streamlit_apps/example_embed_height.py similarity index 63% rename from tests/streamlit_apps/example_embed.py rename to tests/streamlit_apps/example_embed_height.py index 2bcfa03f..6bc00814 100644 --- a/tests/streamlit_apps/example_embed.py +++ b/tests/streamlit_apps/example_embed_height.py @@ -3,8 +3,8 @@ import streamlit as st from streamlit_pdf_viewer import pdf_viewer -from tests.test_template_args import ROOT_DIRECTORY +from tests import ROOT_DIRECTORY -st.subheader("Test PDF Viewer using legacy embed") +st.subheader("Test PDF Viewer using legacy embed with specified height") pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_embed', height=500) diff --git a/tests/streamlit_apps/example_embed_no_args.py b/tests/streamlit_apps/example_embed_no_args.py new file mode 100644 index 00000000..a05b8d13 --- /dev/null +++ b/tests/streamlit_apps/example_embed_no_args.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st + +from streamlit_pdf_viewer import pdf_viewer +from tests import ROOT_DIRECTORY + +st.subheader("Test PDF Viewer using legacy embed with no args") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_embed') diff --git a/tests/streamlit_apps/example_embed_width.py b/tests/streamlit_apps/example_embed_width.py new file mode 100644 index 00000000..d2849c5d --- /dev/null +++ b/tests/streamlit_apps/example_embed_width.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st + +from streamlit_pdf_viewer import pdf_viewer +from tests import ROOT_DIRECTORY + +st.subheader("Test PDF Viewer using legacy embed with specified width") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_embed', width=500) diff --git a/tests/streamlit_apps/example_embed_width_height.py b/tests/streamlit_apps/example_embed_width_height.py new file mode 100644 index 00000000..c20afc3d --- /dev/null +++ b/tests/streamlit_apps/example_embed_width_height.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st + +from streamlit_pdf_viewer import pdf_viewer +from tests import ROOT_DIRECTORY + +st.subheader("Test PDF Viewer using legacy embed with specified width and height") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_embed', width=600, height=500) diff --git a/tests/streamlit_apps/example_iframe.py b/tests/streamlit_apps/example_iframe_height.py similarity index 63% rename from tests/streamlit_apps/example_iframe.py rename to tests/streamlit_apps/example_iframe_height.py index 9616f217..50619aeb 100644 --- a/tests/streamlit_apps/example_iframe.py +++ b/tests/streamlit_apps/example_iframe_height.py @@ -3,8 +3,8 @@ import streamlit as st from streamlit_pdf_viewer import pdf_viewer -from tests.test_template_args import ROOT_DIRECTORY +from tests import ROOT_DIRECTORY -st.subheader("Test PDF Viewer using legacy iframe") +st.subheader("Test PDF Viewer using legacy iframe with specified height") pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_iframe', height=500) diff --git a/tests/streamlit_apps/example_iframe_no_args.py b/tests/streamlit_apps/example_iframe_no_args.py new file mode 100644 index 00000000..131a78cf --- /dev/null +++ b/tests/streamlit_apps/example_iframe_no_args.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st + +from streamlit_pdf_viewer import pdf_viewer +from tests import ROOT_DIRECTORY + +st.subheader("Test PDF Viewer using legacy iframe with no args") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_iframe') diff --git a/tests/streamlit_apps/example_iframe_width.py b/tests/streamlit_apps/example_iframe_width.py new file mode 100644 index 00000000..51c589cf --- /dev/null +++ b/tests/streamlit_apps/example_iframe_width.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st + +from streamlit_pdf_viewer import pdf_viewer +from tests import ROOT_DIRECTORY + +st.subheader("Test PDF Viewer using legacy iframe with specified width") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_iframe', width=500) diff --git a/tests/streamlit_apps/example_iframe_width_height.py b/tests/streamlit_apps/example_iframe_width_height.py new file mode 100644 index 00000000..bdf60e67 --- /dev/null +++ b/tests/streamlit_apps/example_iframe_width_height.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st + +from streamlit_pdf_viewer import pdf_viewer +from tests import ROOT_DIRECTORY + +st.subheader("Test PDF Viewer using legacy iframe with specified width and height") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), rendering='legacy_iframe', width=700, height=500) diff --git a/tests/streamlit_apps/example_unwrap_height.py b/tests/streamlit_apps/example_unwrap_height.py new file mode 100644 index 00000000..c91557ef --- /dev/null +++ b/tests/streamlit_apps/example_unwrap_height.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st + +from streamlit_pdf_viewer import pdf_viewer +from tests import ROOT_DIRECTORY + +st.subheader("Test PDF Viewer with specified height") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), height=300) diff --git a/tests/streamlit_apps/example_no_args.py b/tests/streamlit_apps/example_unwrap_no_args.py similarity index 58% rename from tests/streamlit_apps/example_no_args.py rename to tests/streamlit_apps/example_unwrap_no_args.py index a054b21a..f3d297d4 100644 --- a/tests/streamlit_apps/example_no_args.py +++ b/tests/streamlit_apps/example_unwrap_no_args.py @@ -3,8 +3,8 @@ import streamlit as st from streamlit_pdf_viewer import pdf_viewer -from tests.test_template_args import ROOT_DIRECTORY +from tests import ROOT_DIRECTORY -st.subheader("Test PDF Viewer with no arguments") +st.subheader("Test PDF Viewer with no args") pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf")) diff --git a/tests/streamlit_apps/example_unwrap_width.py b/tests/streamlit_apps/example_unwrap_width.py new file mode 100644 index 00000000..5d159a5c --- /dev/null +++ b/tests/streamlit_apps/example_unwrap_width.py @@ -0,0 +1,10 @@ +import os + +import streamlit as st +from tests import ROOT_DIRECTORY + +from streamlit_pdf_viewer import pdf_viewer + +st.subheader("Test PDF Viewer with arguments with specified width") + +pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), width=400) diff --git a/tests/streamlit_apps/example_args.py b/tests/streamlit_apps/example_unwrap_width_height.py similarity index 62% rename from tests/streamlit_apps/example_args.py rename to tests/streamlit_apps/example_unwrap_width_height.py index 474be135..c32ec30c 100644 --- a/tests/streamlit_apps/example_args.py +++ b/tests/streamlit_apps/example_unwrap_width_height.py @@ -3,8 +3,8 @@ import streamlit as st from streamlit_pdf_viewer import pdf_viewer -from tests.test_template_no_args import ROOT_DIRECTORY +from tests import ROOT_DIRECTORY -st.subheader("Test PDF Viewer with arguments") +st.subheader("Test PDF Viewer with specified width and height") pdf_viewer(os.path.join(ROOT_DIRECTORY, "resources/test.pdf"), width=400, height=300) diff --git a/tests/test_template_embed.py b/tests/test_embed_height.py similarity index 89% rename from tests/test_template_embed.py rename to tests/test_embed_height.py index 0658099a..a9618498 100644 --- a/tests/test_template_embed.py +++ b/tests/test_embed_height.py @@ -1,15 +1,13 @@ import os from pathlib import Path -from time import sleep import pytest - from playwright.sync_api import Page, expect +from tests import ROOT_DIRECTORY from tests.e2e_utils import StreamlitRunner -ROOT_DIRECTORY = Path(__file__).parent.parent.absolute() -BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_embed.py") +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_embed_height.py") @pytest.fixture(scope="session") @@ -36,7 +34,7 @@ def go_to_app(page: Page, streamlit_app: StreamlitRunner): def test_should_render_template_check_container_size(page: Page): - expect(page.get_by_text("Test PDF Viewer using legacy embed")).to_be_visible() + expect(page.get_by_text("Test PDF Viewer using legacy embed with specified height")).to_be_visible() iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) expect(iframe_component).to_be_visible() diff --git a/tests/test_embed_no_args.py b/tests/test_embed_no_args.py new file mode 100644 index 00000000..5bd4df52 --- /dev/null +++ b/tests/test_embed_no_args.py @@ -0,0 +1,58 @@ +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_embed_no_args.py") + + +@pytest.fixture(scope="session") +def browser_type_launch_args(browser_type_launch_args): + return { + **browser_type_launch_args, + "firefox_user_prefs": { + "pdfjs.disabled": False, + } + } + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer using legacy embed with no args")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]') + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 400 + assert b_box['height'] > 0 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).not_to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden() \ No newline at end of file diff --git a/tests/test_embed_width.py b/tests/test_embed_width.py new file mode 100644 index 00000000..938356df --- /dev/null +++ b/tests/test_embed_width.py @@ -0,0 +1,58 @@ +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_embed_width.py") + + +@pytest.fixture(scope="session") +def browser_type_launch_args(browser_type_launch_args): + return { + **browser_type_launch_args, + "firefox_user_prefs": { + "pdfjs.disabled": False, + } + } + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer using legacy embed with specified width")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]') + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 400 + assert b_box['height'] > 0 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).not_to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden() \ No newline at end of file diff --git a/tests/test_embed_width_height.py b/tests/test_embed_width_height.py new file mode 100644 index 00000000..2dbfe29c --- /dev/null +++ b/tests/test_embed_width_height.py @@ -0,0 +1,59 @@ +import math +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_embed_width_height.py") + + +@pytest.fixture(scope="session") +def browser_type_launch_args(browser_type_launch_args): + return { + **browser_type_launch_args, + "firefox_user_prefs": { + "pdfjs.disabled": False, + } + } + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer using legacy embed with specified width and height")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]') + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 600 + assert math.floor(b_box['height']) == 500 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).not_to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden() \ No newline at end of file diff --git a/tests/test_template_iframe.py b/tests/test_iframe_height.py similarity index 92% rename from tests/test_template_iframe.py rename to tests/test_iframe_height.py index 05c841b7..6db6e738 100644 --- a/tests/test_template_iframe.py +++ b/tests/test_iframe_height.py @@ -1,15 +1,13 @@ import os from pathlib import Path -from time import sleep import pytest - from playwright.sync_api import Page, expect +from tests import ROOT_DIRECTORY from tests.e2e_utils import StreamlitRunner -ROOT_DIRECTORY = Path(__file__).parent.parent.absolute() -BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_iframe.py") +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_iframe_height.py") @pytest.fixture(scope="session") @@ -36,7 +34,7 @@ def go_to_app(page: Page, streamlit_app: StreamlitRunner): def test_should_render_template_check_container_size(page: Page): - expect(page.get_by_text("Test PDF Viewer using legacy iframe")).to_be_visible() + expect(page.get_by_text("Test PDF Viewer using legacy iframe with specified height")).to_be_visible() iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) expect(iframe_component).to_be_visible() diff --git a/tests/test_iframe_no_args.py b/tests/test_iframe_no_args.py new file mode 100644 index 00000000..cd68336d --- /dev/null +++ b/tests/test_iframe_no_args.py @@ -0,0 +1,58 @@ +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_iframe_no_args.py") + + +@pytest.fixture(scope="session") +def browser_type_launch_args(browser_type_launch_args): + return { + **browser_type_launch_args, + "firefox_user_prefs": { + "pdfjs.disabled": False, + } + } + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer using legacy iframe with no args")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]') + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 700 + assert b_box['height'] > 0 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).not_to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden() diff --git a/tests/test_iframe_width.py b/tests/test_iframe_width.py new file mode 100644 index 00000000..37510876 --- /dev/null +++ b/tests/test_iframe_width.py @@ -0,0 +1,58 @@ +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_iframe_width.py") + + +@pytest.fixture(scope="session") +def browser_type_launch_args(browser_type_launch_args): + return { + **browser_type_launch_args, + "firefox_user_prefs": { + "pdfjs.disabled": False, + } + } + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer using legacy iframe with specified width")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]') + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 700 + assert b_box['height'] > 0 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).not_to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden() diff --git a/tests/test_iframe_width_height.py b/tests/test_iframe_width_height.py new file mode 100644 index 00000000..cb6982bb --- /dev/null +++ b/tests/test_iframe_width_height.py @@ -0,0 +1,58 @@ +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_iframe_width_height.py") + + +@pytest.fixture(scope="session") +def browser_type_launch_args(browser_type_launch_args): + return { + **browser_type_launch_args, + "firefox_user_prefs": { + "pdfjs.disabled": False, + } + } + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer using legacy iframe with specified width and height")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]') + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 700 + assert b_box['height'] > 0 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).not_to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden() diff --git a/tests/test_unwrap_height.py b/tests/test_unwrap_height.py new file mode 100644 index 00000000..42c583bc --- /dev/null +++ b/tests/test_unwrap_height.py @@ -0,0 +1,53 @@ +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_unwrap_height.py") + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer with specified height")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 700 + assert b_box['height'] == 300 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).to_be_visible() + + canvas_list = pdf_viewer.locator("canvas").all() + assert len(canvas_list) == 8 + for canvas in canvas_list: + expect(canvas).to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden() diff --git a/tests/test_template_no_args.py b/tests/test_unwrap_no_args.py similarity index 95% rename from tests/test_template_no_args.py rename to tests/test_unwrap_no_args.py index dcf471a2..e0324715 100644 --- a/tests/test_template_no_args.py +++ b/tests/test_unwrap_no_args.py @@ -1,15 +1,13 @@ import os from pathlib import Path -from time import sleep import pytest - from playwright.sync_api import Page, expect +from tests import ROOT_DIRECTORY from tests.e2e_utils import StreamlitRunner -ROOT_DIRECTORY = Path(__file__).parent.parent.absolute() -BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_no_args.py") +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_unwrap_no_args.py") @pytest.fixture(autouse=True, scope="module") @@ -26,7 +24,7 @@ def go_to_app(page: Page, streamlit_app: StreamlitRunner): def test_should_render_template_check_container_size(page: Page): - expect(page.get_by_text("Test PDF Viewer with no arguments")).to_be_visible() + expect(page.get_by_text("Test PDF Viewer with no args")).to_be_visible() iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) expect(iframe_component).to_be_visible() diff --git a/tests/test_template_args.py b/tests/test_unwrap_width.py similarity index 89% rename from tests/test_template_args.py rename to tests/test_unwrap_width.py index 39eef5e5..cdb43435 100644 --- a/tests/test_template_args.py +++ b/tests/test_unwrap_width.py @@ -1,15 +1,13 @@ import os from pathlib import Path -from time import sleep import pytest - from playwright.sync_api import Page, expect +from tests import ROOT_DIRECTORY from tests.e2e_utils import StreamlitRunner -ROOT_DIRECTORY = Path(__file__).parent.parent.absolute() -BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_args.py") +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_unwrap_width.py") @pytest.fixture(autouse=True, scope="module") @@ -26,7 +24,7 @@ def go_to_app(page: Page, streamlit_app: StreamlitRunner): def test_should_render_template_check_container_size(page: Page): - expect(page.get_by_text("Test PDF Viewer with arguments")).to_be_visible() + expect(page.get_by_text("Test PDF Viewer with specified width")).to_be_visible() iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) expect(iframe_component).to_be_visible() diff --git a/tests/test_unwrap_width_height.py b/tests/test_unwrap_width_height.py new file mode 100644 index 00000000..2facbaae --- /dev/null +++ b/tests/test_unwrap_width_height.py @@ -0,0 +1,53 @@ +import os +from pathlib import Path + +import pytest +from playwright.sync_api import Page, expect + +from tests import ROOT_DIRECTORY +from tests.e2e_utils import StreamlitRunner + +BASIC_EXAMPLE_FILE = os.path.join(ROOT_DIRECTORY, "tests", "streamlit_apps", "example_unwrap_width_height.py") + + +@pytest.fixture(autouse=True, scope="module") +def streamlit_app(): + with StreamlitRunner(Path(BASIC_EXAMPLE_FILE)) as runner: + yield runner + + +@pytest.fixture(autouse=True, scope="function") +def go_to_app(page: Page, streamlit_app: StreamlitRunner): + page.goto(streamlit_app.server_url) + # Wait for app to load + page.get_by_role("img", name="Running...").is_hidden() + + +def test_should_render_template_check_container_size(page: Page): + expect(page.get_by_text("Test PDF Viewer with specified width and height")).to_be_visible() + + iframe_component = page.locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + expect(iframe_component).to_be_visible() + + iframe_box = iframe_component.bounding_box() + assert iframe_box['width'] > 0 + assert iframe_box['height'] > 0 + + iframe_frame = page.frame_locator('iframe[title="streamlit_pdf_viewer.streamlit_pdf_viewer"]').nth(0) + pdf_container = iframe_frame.locator('div[id="pdfContainer"]') + expect(pdf_container).to_be_visible() + + b_box = pdf_container.bounding_box() + assert b_box['width'] == 400 + assert b_box['height'] == 300 + + pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]') + expect(pdf_viewer).to_be_visible() + + canvas_list = pdf_viewer.locator("canvas").all() + assert len(canvas_list) == 8 + for canvas in canvas_list: + expect(canvas).to_be_visible() + + annotations_locator = page.locator('div[id="pdfAnnotations"]').nth(0) + expect(annotations_locator).to_be_hidden()