diff --git a/muxplex/tests/test_frontend_html.py b/muxplex/tests/test_frontend_html.py
index 72988ba..f57e675 100644
--- a/muxplex/tests/test_frontend_html.py
+++ b/muxplex/tests/test_frontend_html.py
@@ -204,7 +204,9 @@ def test_html_session_sidebar_structure() -> None:
assert sidebar_header is not None, "Missing .sidebar-header inside #session-sidebar"
# #sidebar-view-dropdown (replaces old .sidebar-title)
sidebar_dropdown = sidebar_header.find(id="sidebar-view-dropdown")
- assert sidebar_dropdown is not None, "Missing #sidebar-view-dropdown inside .sidebar-header"
+ assert sidebar_dropdown is not None, (
+ "Missing #sidebar-view-dropdown inside .sidebar-header"
+ )
# #sidebar-collapse-btn
collapse_btn = sidebar_header.find(id="sidebar-collapse-btn")
assert collapse_btn is not None, (
@@ -715,9 +717,7 @@ def test_html_notifications_panel_has_notification_status_text() -> None:
)
assert sessions_panel is not None, "Missing sessions settings-panel"
el = sessions_panel.find(id="notification-status-text")
- assert el is not None, (
- "Missing #notification-status-text inside sessions panel"
- )
+ assert el is not None, "Missing #notification-status-text inside sessions panel"
classes = el.get("class") or []
assert "settings-status-text" in classes, (
f"#notification-status-text must have class 'settings-status-text', has: {classes}"
@@ -734,9 +734,7 @@ def test_html_notifications_panel_has_request_btn() -> None:
)
assert sessions_panel is not None, "Missing sessions settings-panel"
el = sessions_panel.find(id="notification-request-btn")
- assert el is not None, (
- "Missing #notification-request-btn inside sessions panel"
- )
+ assert el is not None, "Missing #notification-request-btn inside sessions panel"
classes = el.get("class") or []
assert "settings-action-btn" in classes, (
f"#notification-request-btn must have class 'settings-action-btn', has: {classes}"
@@ -1367,9 +1365,7 @@ def test_html_settings_remote_instance_key_input() -> None:
devices_panel = soup.find("div", attrs={"data-tab": "devices"})
assert devices_panel is not None, "Missing devices panel (data-tab='devices')"
el = devices_panel.find(id="setting-remote-instances")
- assert el is not None, (
- "Missing #setting-remote-instances inside devices panel"
- )
+ assert el is not None, "Missing #setting-remote-instances inside devices panel"
# ============================================================
@@ -1398,9 +1394,9 @@ def test_html_loads_web_links_addon() -> None:
def test_html_loads_search_addon() -> None:
"""index.html must load the xterm-addon-search CDN script."""
html = read_html()
- assert "search" in html.lower() and "addon" in html.lower() and "xterm" in html.lower(), (
- "Must load xterm-addon-search from CDN"
- )
+ assert (
+ "search" in html.lower() and "addon" in html.lower() and "xterm" in html.lower()
+ ), "Must load xterm-addon-search from CDN"
def test_html_loads_image_addon() -> None:
@@ -1520,3 +1516,19 @@ def test_sidebar_view_dropdown_menu_exists() -> None:
soup = _SOUP
menu = soup.find(id="sidebar-view-dropdown-menu")
assert menu is not None, "Missing #sidebar-view-dropdown-menu"
+
+
+# ============================================================
+# Remove filtered gridViewMode rendering code (task-11)
+# ============================================================
+
+
+def test_no_filtered_option_in_view_mode_select() -> None:
+ """No 'Filtered' option in view mode select."""
+ select = _SOUP.find(id="setting-view-mode")
+ assert select is not None, "Missing #setting-view-mode select"
+ options = select.find_all("option")
+ values = [o.get("value") for o in options]
+ assert "filtered" not in values, (
+ "View mode select must not contain a 'filtered' option (removed in task-11)"
+ )
diff --git a/muxplex/tests/test_frontend_js.py b/muxplex/tests/test_frontend_js.py
index 72453f0..137ae8d 100644
--- a/muxplex/tests/test_frontend_js.py
+++ b/muxplex/tests/test_frontend_js.py
@@ -3149,9 +3149,7 @@ def test_toggle_view_dropdown_function_exists() -> None:
def test_switch_view_function_exists() -> None:
"""switchView function must exist in app.js."""
- assert "function switchView" in _JS, (
- "switchView must be defined in app.js"
- )
+ assert "function switchView" in _JS, "switchView must be defined in app.js"
def test_switch_view_patches_state() -> None:
@@ -3182,9 +3180,7 @@ def test_handle_global_keydown_has_backtick_handler() -> None:
assert match, "handleGlobalKeydown function not found"
body = match.group(1)
has_backtick = (
- "Backquote" in body
- or "e.key === '`'" in body
- or 'e.key === "`"' in body
+ "Backquote" in body or "e.key === '`'" in body or 'e.key === "`"' in body
)
assert has_backtick, (
"handleGlobalKeydown must handle backtick/Backquote key to toggle view dropdown"
@@ -3206,9 +3202,7 @@ def test_handle_global_keydown_has_number_key_shortcuts() -> None:
assert "switchView" in body, (
"handleGlobalKeydown must call switchView for number keys 1–9"
)
- has_number_handling = (
- "Digit" in body or "parseInt" in body
- )
+ has_number_handling = "Digit" in body or "parseInt" in body
assert has_number_handling, (
"handleGlobalKeydown must handle number key codes (e.g. e.code.startsWith('Digit'))"
)
@@ -3258,9 +3252,7 @@ def test_show_new_view_input_patches_settings() -> None:
assert "/api/settings" in body, (
"showNewViewInput must PATCH /api/settings with the updated views"
)
- assert "views" in body, (
- "showNewViewInput must include 'views' in the PATCH body"
- )
+ assert "views" in body, "showNewViewInput must include 'views' in the PATCH body"
# ============================================================
@@ -3273,3 +3265,22 @@ def test_render_views_settings_tab_function_exists() -> None:
assert "function renderViewsSettingsTab" in _JS, (
"renderViewsSettingsTab must be defined in app.js"
)
+
+
+# ============================================================
+# Remove filtered gridViewMode rendering code (task-11)
+# ============================================================
+
+
+def test_no_active_filter_device_in_render_grid() -> None:
+ """renderGrid must not reference _activeFilterDevice."""
+ match = re.search(
+ r"function renderGrid\(sessions\)\s*\{(.*?)(?=\n// -------|\n// =======)",
+ _JS,
+ re.DOTALL,
+ )
+ assert match, "renderGrid function not found"
+ body = match.group(1)
+ assert "_activeFilterDevice" not in body, (
+ "renderGrid must not reference _activeFilterDevice (filtered mode removed)"
+ )