# tmp_path fixture: # https://docs.pytest.org/en/6.2.x/tmpdir.html from pathlib import Path import pytest from icecream import ic # type: ignore from playwright.sync_api import BrowserContext, expect from pytest_abra import BaseUrl from pytest_abra.html_helper import merge_html_reports @pytest.fixture(scope="session") def session_tmp_path(tmp_path_factory: pytest.TempPathFactory) -> Path: return tmp_path_factory.mktemp("html_test") @pytest.fixture(scope="session") def html_file(session_tmp_path: Path) -> Path: """combines all generated pytest html reports into one""" in_dir_path = Path(__file__).parent / "assets" / "html_merge" in_dir_path = in_dir_path.resolve() ic(in_dir_path) html_file = session_tmp_path / "test.html" merge_html_reports(in_dir_path.as_posix(), html_file.as_posix(), "combined.html") return html_file def test_merge_html(html_file: Path): assert html_file.is_file() assert html_file.parent.is_dir() assert next(html_file.parent.glob("*")) # @pytest.mark.slow # def test_check_result_with_playwright(html_file: Path, context: BrowserContext): # assert html_file.is_file() # file_url = BaseUrl(netloc=html_file.as_posix(), scheme="file").get() # page = context.new_page() # page.goto(file_url) # # check if combined is correct # expect(page.get_by_text("2 Passed,")).to_be_visible() # expect(page.get_by_text("2 Failed,")).to_be_visible() # expect(page.get_by_text("tests ran in 12.946 seconds")).to_be_visible() # # check if heading is correct # expect(page.get_by_role("heading", name="combined.html")).to_be_visible() # # check if traceback is included # expect(page.get_by_text("E AssertionError: One or more")).to_be_visible() # # check if asset works # with page.expect_popup() as page1_info: # page.get_by_role("link", name="Authentik Blueprint Status").click() # page1 = page1_info.value # # see if content of txt file is correct # expect(page1.get_by_text("failed")).to_be_visible() def test_demo(context: BrowserContext): assert True