diff --git a/.github/workflows/e2e-standalone-tests.yml b/.github/workflows/e2e-standalone-tests.yml index 2de6d6107..49839e4b0 100644 --- a/.github/workflows/e2e-standalone-tests.yml +++ b/.github/workflows/e2e-standalone-tests.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - optuna-version: ['optuna==2.10.0', 'git+https://github.com/optuna/optuna.git'] + optuna-version: ['git+https://github.com/optuna/optuna.git'] steps: - uses: actions/checkout@v3 diff --git a/e2e_tests/test_standalone/test_study_list.py b/e2e_tests/test_standalone/test_study_list.py index b0d4735e4..883a17e78 100644 --- a/e2e_tests/test_standalone/test_study_list.py +++ b/e2e_tests/test_standalone/test_study_list.py @@ -1,3 +1,6 @@ +import os +import tempfile + from playwright.sync_api import Page import pytest @@ -20,3 +23,52 @@ def test_home( title = element.text_content() assert title is not None assert title == "Optuna Dashboard (Wasm ver.)" + + +def test_load_storage( + page: Page, + server_url: str, +) -> None: + study_name = "single-objective" + url = f"{server_url}" + + def create_storage_file(filename: str): + import optuna + + storage = optuna.storages.RDBStorage(f"sqlite:///{filename}") + study = optuna.create_study(study_name=study_name, storage=storage) + + def objective(trial: optuna.Trial) -> float: + x1 = trial.suggest_float("x1", 0, 10) + x2 = trial.suggest_float("x2", 0, 10) + return (x1 - 2) ** 2 + (x2 - 5) ** 2 + + study.optimize(objective, n_trials=100) + + with tempfile.TemporaryDirectory() as dir: + with tempfile.NamedTemporaryFile() as fp: + filename = fp.name + path = os.path.join(dir, filename) + create_storage_file(filename) + page.goto(url) + with page.expect_file_chooser() as fc_info: + page.get_by_role( + "button", + name="Load an Optuna Storage Drag your SQLite3 file here or click to browse.", + ).click() + file_chooser = fc_info.value + file_chooser.set_files(path) + + page.get_by_role("link", name=study_name).click() + + def count_components(page: Page, component_name: str): + component_count = page.evaluate( + f"""() => {{ + const components = document.querySelectorAll('.{component_name}'); + return components.length; + }}""" + ) + return component_count + + count = count_components(page, "MuiCardContent-root") + assert count == 6