Migrate visual_regression_test

This commit is contained in:
keisuke-umezawa
2023-06-13 23:22:04 +09:00
parent 0fc9f0126c
commit 2d3959c479
2 changed files with 44 additions and 30 deletions
+17 -13
View File
@@ -1,11 +1,17 @@
import pytest
from playwright.sync_api import sync_playwright
import threading
from typing import Generator
from wsgiref.simple_server import make_server
import optuna
from optuna_dashboard import wsgi
from playwright.sync_api import Browser
from playwright.sync_api import sync_playwright
import pytest
@pytest.fixture(scope="session")
def port() -> int:
return 8081
@pytest.fixture(scope="session")
@@ -180,18 +186,16 @@ def dummy_storage() -> optuna.storages.InMemoryStorage:
return storage
host = "127.0.0.1"
port = 8081
@pytest.fixture(scope='session')
def server(request, dummy_storage):
@pytest.fixture(scope="session")
def server(
request: pytest.FixtureRequest, dummy_storage: optuna.storages.InMemoryStorage, port: int
) -> None:
app = wsgi(dummy_storage)
httpd = make_server(host, port, app)
httpd = make_server("127.0.0.1", port, app)
thread = threading.Thread(target=httpd.serve_forever)
thread.start()
def stop_server():
def stop_server() -> None:
httpd.shutdown()
httpd.server_close()
thread.join()
@@ -199,8 +203,8 @@ def server(request, dummy_storage):
request.addfinalizer(stop_server)
@pytest.fixture(scope='module')
def browser():
@pytest.fixture(scope="module")
def browser() -> Generator[Browser, None, None]:
with sync_playwright() as playwright:
browser = playwright.chromium.launch()
yield browser
+27 -17
View File
@@ -1,25 +1,35 @@
import pytest
from playwright.sync_api import expect
from playwright.sync_api import Page
import os
import optuna
from playwright.sync_api import Browser
def test_first(
dummy_storage: optuna.storages.InMemoryStorage,
server,
browser,
output_dir = "tmp"
width = 1000
height = 3000
def test_take_screenshots_study_list(
server: None,
browser: Browser,
port: int,
) -> None:
print(dummy_storage)
print(id(dummy_storage))
url = f"http://localhost:{port}/dashboard/"
page = browser.new_page(viewport={"width": width, "height": height})
page.goto(url)
page.screenshot(path=os.path.join(output_dir, "study-list.png"))
def test_second(
def test_take_screenshots_studies(
dummy_storage: optuna.storages.InMemoryStorage,
server,
browser,
server: None,
browser: Browser,
port: int,
) -> None:
page = browser.new_page()
page.goto("http://localhost:8081")
print(page.title())
summaries = optuna.get_all_study_summaries(dummy_storage)
study_ids = {s._study_id: s.study_name for s in summaries}
for study_id, study_name in study_ids.items():
url = f"http://localhost:{port}/dashboard/studies/{study_id}"
page = browser.new_page(viewport={"width": width, "height": height})
page.goto(url)
page.screenshot(path=os.path.join(output_dir, f"study-{study_name}.png"))