Files
odysseus/tests/test_cookbook_download_toast_duration.py
lekt8 77b63ed942 Keep Cookbook download-failure toasts visible long enough to read (#1412)
The Cookbook download path showed its error toasts with the default ~1.2s
duration, so an actionable message like "tmux is required for Cookbook
background downloads/serves … install it with your OS package manager" vanished
before it could be read (issue #1355). The serve path already uses multi-second
durations.

Give the three "Download failed" toasts a 9s duration to match.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 03:48:25 +09:00

28 lines
1.2 KiB
Python

"""Regression guard for issue #1355 — the Cookbook *download* error toast used
the default ~1.2s duration, so an actionable message like "tmux is required …"
vanished before it could be read. The serve path already used multi-second
durations; the download-failure toasts now match.
cookbookDownload.js pulls in browser globals so it can't run under node; this
guards the durations at the source level.
"""
import re
from pathlib import Path
SRC = Path(__file__).resolve().parent.parent / "static/js/cookbookDownload.js"
_MIN_MS = 5000
def test_download_failure_toasts_stay_visible():
# Each download-failure toast is a single line; assert each carries an
# explicit duration >= _MIN_MS so the actionable error stays readable.
lines = [
ln for ln in SRC.read_text(encoding="utf-8").splitlines()
if "showToast(" in ln and "Download failed:" in ln
]
assert lines, "expected at least one 'Download failed' showToast call"
for ln in lines:
m = re.search(r",\s*(\d{3,})\s*\)\s*;?\s*$", ln)
assert m, f"download-failure toast has no explicit duration: {ln.strip()}"
assert int(m.group(1)) >= _MIN_MS, f"duration too short to read: {ln.strip()}"