diff --git a/aw_watcher_window/macos.swift b/aw_watcher_window/macos.swift index 961a846..9eb97df 100644 --- a/aw_watcher_window/macos.swift +++ b/aw_watcher_window/macos.swift @@ -138,9 +138,12 @@ let researchBrowserApps = Set([ "google-chrome-unstable", "chromium", "chromium-browser", + "chromium.exe", "brave browser", "brave", "brave-browser", + "arc", + "arc browser", "firefox", "firefox developer edition", "firefox-esr", @@ -151,6 +154,8 @@ let researchBrowserApps = Set([ "microsoft-edge-beta", "microsoft-edge-dev", "opera", + "vivaldi", + "vivaldi.exe", "chrome.exe", "brave.exe", "firefox.exe", diff --git a/aw_watcher_window/research_filter.py b/aw_watcher_window/research_filter.py index e3c7189..756ffe8 100644 --- a/aw_watcher_window/research_filter.py +++ b/aw_watcher_window/research_filter.py @@ -33,9 +33,12 @@ "google-chrome-unstable", "chromium", "chromium-browser", + "chromium.exe", "brave browser", "brave", "brave-browser", + "arc", + "arc browser", "firefox", "firefox developer edition", "firefox-esr", @@ -46,6 +49,8 @@ "microsoft-edge-beta", "microsoft-edge-dev", "opera", + "vivaldi", + "vivaldi.exe", "chrome.exe", "brave.exe", "firefox.exe", diff --git a/tests/test_research_filter.py b/tests/test_research_filter.py index 41c50ac..c6b7fa7 100644 --- a/tests/test_research_filter.py +++ b/tests/test_research_filter.py @@ -1,6 +1,8 @@ """Tests for aw-watcher-window Research Edition filter.""" +import re import unittest +from pathlib import Path from aw_watcher_window.research_filter import ( BROWSER_APPS, @@ -41,6 +43,17 @@ def test_non_browsers(self): for app in ("Slack", "Terminal", "iTerm2", "Code", "zoom.us", ""): self.assertFalse(is_browser(app), f"{app!r} should not be a browser") + def test_python_and_swift_browser_aliases_match(self): + swift = (Path(__file__).parents[1] / "aw_watcher_window" / "macos.swift").read_text() + match = re.search( + r"let\s+researchBrowserApps\s*=\s*Set\s*\(\s*\[(?P.*?)\]\s*\)", + swift, + re.DOTALL, + ) + self.assertIsNotNone(match) + swift_browser_apps = set(re.findall(r'"([^"]+)"', match.group("entries"))) + self.assertEqual(swift_browser_apps, BROWSER_APPS) + class TestClassifyTitle(unittest.TestCase): CATEGORY_MAP = { @@ -191,6 +204,17 @@ def test_linux_browser_wm_class_title_classified(self): self.assertEqual(result["app"], app) self.assertEqual(result["title"], "Youtube") + def test_original_classifier_browser_aliases_are_classified(self): + for app in ("Arc", "Arc Browser", "Vivaldi", "Vivaldi.exe", "Chromium.exe"): + with self.subTest(app=app): + window = { + "app": app, + "title": "New Tab", + "url": "https://youtube.com/watch?v=private", + } + result = transform(window, self.CATEGORY_MAP) + self.assertEqual(result, {"app": app, "title": "Youtube"}) + def test_input_not_mutated(self): window = {"app": "Chrome", "title": "YouTube - Chrome"} original = dict(window)