@@ -98,62 +98,13 @@ def test_login_rejects_invalid_browser(self, runner):
9898
9999 assert result .exit_code != 0
100100
101- def test_login_msedge_skips_chromium_install (self , runner , tmp_path ):
102- """Test --browser msedge skips _ensure_chromium_installed."""
103- with (
104- patch ("notebooklm.cli.session._ensure_chromium_installed" ) as mock_ensure ,
105- patch ("playwright.sync_api.sync_playwright" ) as mock_pw ,
106- patch (
107- "notebooklm.cli.session.get_storage_path" , return_value = tmp_path / "storage.json"
108- ),
109- patch (
110- "notebooklm.cli.session.get_browser_profile_dir" ,
111- return_value = tmp_path / "profile" ,
112- ),
113- patch ("notebooklm.cli.session._sync_server_language_to_config" ),
114- patch ("builtins.input" , return_value = "" ),
115- ):
116- mock_context = MagicMock ()
117- mock_page = MagicMock ()
118- mock_page .url = "https://notebooklm.google.com/"
119- mock_context .pages = [mock_page ]
120- mock_pw .return_value .__enter__ .return_value .chromium .launch_persistent_context .return_value = mock_context
121-
122- runner .invoke (cli , ["login" , "--browser" , "msedge" ])
123-
124- mock_ensure .assert_not_called ()
125-
126- def test_login_msedge_passes_channel_param (self , runner , tmp_path ):
127- """Test --browser msedge passes channel='msedge' to launch_persistent_context."""
128- with (
129- patch ("notebooklm.cli.session._ensure_chromium_installed" ),
130- patch ("playwright.sync_api.sync_playwright" ) as mock_pw ,
131- patch (
132- "notebooklm.cli.session.get_storage_path" , return_value = tmp_path / "storage.json"
133- ),
134- patch (
135- "notebooklm.cli.session.get_browser_profile_dir" ,
136- return_value = tmp_path / "profile" ,
137- ),
138- patch ("notebooklm.cli.session._sync_server_language_to_config" ),
139- patch ("builtins.input" , return_value = "" ),
140- ):
141- mock_context = MagicMock ()
142- mock_page = MagicMock ()
143- mock_page .url = "https://notebooklm.google.com/"
144- mock_context .pages = [mock_page ]
145- mock_launch = (
146- mock_pw .return_value .__enter__ .return_value .chromium .launch_persistent_context
147- )
148- mock_launch .return_value = mock_context
149-
150- runner .invoke (cli , ["login" , "--browser" , "msedge" ])
151-
152- call_kwargs = mock_launch .call_args [1 ]
153- assert call_kwargs .get ("channel" ) == "msedge"
101+ @pytest .fixture
102+ def mock_login_browser (self , tmp_path ):
103+ """Mock Playwright browser launch for login --browser tests.
154104
155- def test_login_chromium_default_no_channel (self , runner , tmp_path ):
156- """Test default chromium does not pass channel and calls _ensure_chromium_installed."""
105+ Yields (mock_ensure, mock_launch) for assertions on chromium install
106+ check and launch_persistent_context kwargs.
107+ """
157108 with (
158109 patch ("notebooklm.cli.session._ensure_chromium_installed" ) as mock_ensure ,
159110 patch ("playwright.sync_api.sync_playwright" ) as mock_pw ,
@@ -176,11 +127,26 @@ def test_login_chromium_default_no_channel(self, runner, tmp_path):
176127 )
177128 mock_launch .return_value = mock_context
178129
179- runner .invoke (cli , ["login" , "--browser" , "chromium" ])
130+ yield mock_ensure , mock_launch
131+
132+ def test_login_msedge_skips_chromium_install (self , runner , mock_login_browser ):
133+ """Test --browser msedge skips _ensure_chromium_installed."""
134+ mock_ensure , _ = mock_login_browser
135+ runner .invoke (cli , ["login" , "--browser" , "msedge" ])
136+ mock_ensure .assert_not_called ()
180137
138+ def test_login_msedge_passes_channel_param (self , runner , mock_login_browser ):
139+ """Test --browser msedge passes channel='msedge' to launch_persistent_context."""
140+ _ , mock_launch = mock_login_browser
141+ runner .invoke (cli , ["login" , "--browser" , "msedge" ])
142+ assert mock_launch .call_args [1 ].get ("channel" ) == "msedge"
143+
144+ def test_login_chromium_default_no_channel (self , runner , mock_login_browser ):
145+ """Test default chromium calls _ensure_chromium_installed and has no channel."""
146+ mock_ensure , mock_launch = mock_login_browser
147+ runner .invoke (cli , ["login" , "--browser" , "chromium" ])
181148 mock_ensure .assert_called_once ()
182- call_kwargs = mock_launch .call_args [1 ]
183- assert "channel" not in call_kwargs
149+ assert "channel" not in mock_launch .call_args [1 ]
184150
185151
186152# =============================================================================
0 commit comments