diff --git a/common/components/filters.py b/common/components/filters.py index 7134125..f1de3c7 100644 --- a/common/components/filters.py +++ b/common/components/filters.py @@ -1495,16 +1495,19 @@ def _playevent_fields(existing: dict) -> list: ), ], ), - RangeSlider( - label="Days to Finish", - input_name_prefix="filter-days-to-finish", - min_value=days_min, - max_value=days_max, - range_min=0, - range_max=365, - step="1", - min_placeholder="e.g. 1", - max_placeholder="e.g. 30", + _filter_field( + "Days to Finish", + RangeSlider( + label="Days to Finish", + input_name_prefix="filter-days-to-finish", + min_value=days_min, + max_value=days_max, + range_min=0, + range_max=365, + step="1", + min_placeholder="e.g. 1", + max_placeholder="e.g. 30", + ), ), ] return fields diff --git a/tests/test_filter_bars.py b/tests/test_filter_bars.py index 3e80944..70b78a4 100644 --- a/tests/test_filter_bars.py +++ b/tests/test_filter_bars.py @@ -223,6 +223,19 @@ class FilterBarRenderingTest(TestCase): ) self._assert_shell(html, "/presets/playevents/list", "/presets/playevents/save") + def test_playevent_filter_bar_labels_days_to_finish_slider(self): + """The Days to Finish range slider must be wrapped in a labelled field — + RangeSlider does not render its own label, so a bare slider shows none.""" + from common.components import PlayEventFilterBar + + html = str( + PlayEventFilterBar( + filter_json="", preset_list_url="/l", preset_save_url="/s" + ) + ) + self.assertIn("Days to Finish", html) + self.assertNoEscapedTags(html) + def test_game_filter_bar_has_new_widgets(self): """The expanded games FilterBar exposes platform_group, device, playevent_note, purchase_type / purchase_ownership_type, plus count and aggregate-playtime