Skip to content

Commit daa476f

Browse files
authored
Merge pull request #989 from porink0424/issue462-zwl-s
Fix e2e tests
2 parents 3c2c555 + 43fcf55 commit daa476f

File tree

2 files changed

+55
-49
lines changed

2 files changed

+55
-49
lines changed

e2e_tests/test_dashboard/visual_regression_test.py

Lines changed: 51 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ def run_single_trial_objective_study(storage: optuna.storages.InMemoryStorage) -
3838
study = optuna.create_study(study_name="single-trial", storage=storage, sampler=sampler)
3939

4040
def objective(trial: optuna.Trial) -> float:
41-
x1 = trial.suggest_float("x1", 0, 10)
42-
x2 = trial.suggest_float("x2", 0, 10)
43-
return (x1 - 2) ** 2 + (x2 - 5) ** 2
41+
x = trial.suggest_float("x", -100, 100)
42+
y = trial.suggest_categorical("y", [-1, 0, 1])
43+
return x**2 + y
4444

45-
study.optimize(objective, n_trials=1)
45+
study.optimize(objective, n_trials=20)
4646
return study
4747

4848

@@ -169,20 +169,22 @@ def test_study_list(
169169
run_study: Callable[[optuna.storages.InMemoryStorage], optuna.Study],
170170
) -> None:
171171
study = run_study(storage)
172-
173172
study_id = study._study_id
174-
study_name = study.study_name
175-
173+
errors = []
174+
page.on(
175+
"console", lambda message: errors.append(message.text) if message.type == "error" else None
176+
)
176177
page.goto(server_url)
177178
page.click(f"a[href='/dashboard/studies/{study_id}']")
178179

179-
page.wait_for_selector(".MuiTypography-body1")
180-
element = page.query_selector(".MuiTypography-body1")
181-
assert element is not None
180+
# TODO(porink0424): Temporary sleep to wait for the page to load.
181+
# This should be replaced with a more robust solution,
182+
# such as capturing logs when rendering graphs.
183+
import time
184+
185+
time.sleep(10)
182186

183-
title = element.text_content()
184-
assert title is not None
185-
assert study_name in title
187+
assert len(errors) == 0
186188

187189

188190
@parameterize_studies
@@ -194,20 +196,20 @@ def test_study_analytics(
194196
) -> None:
195197
study = run_study(storage)
196198
study_id = study._study_id
197-
study_name = study.study_name
198199
url = f"{server_url}/studies/{study_id}"
199-
200-
page.on("console", lambda msg: print(f"error: {msg.text}") if msg.type == "error" else None)
200+
errors = []
201+
page.on(
202+
"console", lambda message: errors.append(message.text) if message.type == "error" else None
203+
)
201204
page.goto(url)
202205
page.click(f"a[href='/dashboard/studies/{study_id}/analytics']")
203206

204-
page.wait_for_selector(".MuiTypography-body1", timeout=60 * 1000)
205-
element = page.query_selector(".MuiTypography-body1")
206-
assert element is not None
207+
# TODO(porink0424): Same as above.
208+
import time
209+
210+
time.sleep(10)
207211

208-
title = element.text_content()
209-
assert title is not None
210-
assert study_name in title
212+
assert len(errors) == 0
211213

212214

213215
@parameterize_studies
@@ -218,21 +220,21 @@ def test_trial_list(
218220
run_study: Callable[[optuna.storages.InMemoryStorage], optuna.Study],
219221
) -> None:
220222
study = run_study(storage)
221-
222223
study_id = study._study_id
223-
study_name = study.study_name
224224
url = f"{server_url}/studies/{study_id}"
225-
225+
errors = []
226+
page.on(
227+
"console", lambda message: errors.append(message.text) if message.type == "error" else None
228+
)
226229
page.goto(url)
227230
page.click(f"a[href='/dashboard/studies/{study_id}/trials']")
228231

229-
page.wait_for_selector(".MuiTypography-body1")
230-
element = page.query_selector(".MuiTypography-body1")
231-
assert element is not None
232+
# TODO(porink0424): Same as above.
233+
import time
234+
235+
time.sleep(10)
232236

233-
title = element.text_content()
234-
assert title is not None
235-
assert study_name in title
237+
assert len(errors) == 0
236238

237239

238240
@parameterize_studies
@@ -243,21 +245,21 @@ def test_trial_table(
243245
run_study: Callable[[optuna.storages.InMemoryStorage], optuna.Study],
244246
) -> None:
245247
study = run_study(storage)
246-
247248
study_id = study._study_id
248-
study_name = study.study_name
249249
url = f"{server_url}/studies/{study_id}"
250-
250+
errors = []
251+
page.on(
252+
"console", lambda message: errors.append(message.text) if message.type == "error" else None
253+
)
251254
page.goto(url)
252255
page.click(f"a[href='/dashboard/studies/{study_id}/trialTable']")
253256

254-
page.wait_for_selector(".MuiTypography-body1")
255-
element = page.query_selector(".MuiTypography-body1")
256-
assert element is not None
257+
# TODO(porink0424): Same as above.
258+
import time
257259

258-
title = element.text_content()
259-
assert title is not None
260-
assert study_name in title
260+
time.sleep(10)
261+
262+
assert len(errors) == 0
261263

262264

263265
@parameterize_studies
@@ -268,18 +270,18 @@ def test_trial_note(
268270
run_study: Callable[[optuna.storages.InMemoryStorage], optuna.Study],
269271
) -> None:
270272
study = run_study(storage)
271-
272273
study_id = study._study_id
273-
study_name = study.study_name
274274
url = f"{server_url}/studies/{study_id}"
275-
275+
errors = []
276+
page.on(
277+
"console", lambda message: errors.append(message.text) if message.type == "error" else None
278+
)
276279
page.goto(url)
277-
page.wait_for_selector(".MuiTypography-body1")
278280
page.click(f"a[href='/dashboard/studies/{study_id}/note']")
279281

280-
element = page.query_selector(".MuiTypography-body1")
281-
assert element is not None
282+
# TODO(porink0424): Same as above.
283+
import time
284+
285+
time.sleep(10)
282286

283-
title = element.text_content()
284-
assert title is not None
285-
assert study_name in title
287+
assert len(errors) == 0

e2e_tests/utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from optuna_dashboard._cached_extra_study_property import cached_extra_study_property_cache
2+
from optuna_dashboard._cached_extra_study_property import cached_extra_study_property_cache_lock
13
from optuna_dashboard._storage import trials_cache
24
from optuna_dashboard._storage import trials_cache_lock
35
from optuna_dashboard._storage import trials_last_fetched_at
@@ -8,6 +10,8 @@ def clear_inmemory_cache() -> None:
810
with trials_cache_lock:
911
trials_cache.clear()
1012
trials_last_fetched_at.clear()
13+
with cached_extra_study_property_cache_lock:
14+
cached_extra_study_property_cache.clear()
1115

1216

1317
def count_components(page: Page, component_name: str):

0 commit comments

Comments
 (0)