@@ -71,6 +71,7 @@ def test_api_key_settings(mock_page: Page, running_server: str):
7171@pytest .mark .frontend
7272def test_custom_model_headers_own_their_capsule_shape (mock_page : Page , running_server : str ):
7373 """Collapsed custom-model headers must not borrow rounded corners from a wrapper."""
74+ mock_page .set_viewport_size ({"width" : 1280 , "height" : 1200 })
7475 mock_page .add_init_script ("window.localStorage.setItem('neko_tutorial_settings', 'seen')" )
7576 mock_page .goto (f"{ running_server } /api_key" )
7677
@@ -129,6 +130,46 @@ def test_custom_model_headers_own_their_capsule_shape(mock_page: Page, running_s
129130 "overflow" : "visible" ,
130131 }
131132
133+ mock_page .wait_for_selector (
134+ "#conversationModelProvider option" ,
135+ state = "attached" ,
136+ timeout = 10000 ,
137+ )
138+ mock_page .evaluate ("""
139+ () => {
140+ document.getElementById('custom-api-options').style.display = 'block';
141+ document.getElementById('custom-api-container').style.display = 'grid';
142+ document.getElementById('conversation-model-content')
143+ .closest('.model-config-container').style.display = 'block';
144+ }
145+ """ )
146+ provider_trigger = mock_page .locator ("#conversationModelProvider-dropdown-trigger" )
147+ provider_menu = mock_page .locator ("#conversationModelProvider-menu" )
148+ provider_trigger .click ()
149+ expect (provider_menu ).to_be_visible ()
150+
151+ dropdown_geometry = mock_page .evaluate ("""
152+ () => {
153+ const content = document.getElementById('conversation-model-content');
154+ const menu = document.getElementById('conversationModelProvider-menu');
155+ const contentRect = content.getBoundingClientRect();
156+ const menuRect = menu.getBoundingClientRect();
157+ const probeX = menuRect.left + (menuRect.width / 2);
158+ const probeY = Math.min(menuRect.bottom - 2, contentRect.bottom + 4);
159+ const hit = document.elementFromPoint(probeX, probeY);
160+
161+ return {
162+ contentBottom: contentRect.bottom,
163+ menuBottom: menuRect.bottom,
164+ menuExtendsPastContent: menuRect.bottom > contentRect.bottom,
165+ exposedMenuPointIsVisible: !!(hit && menu.contains(hit)),
166+ };
167+ }
168+ """ )
169+
170+ assert dropdown_geometry ["menuExtendsPastContent" ] is True
171+ assert dropdown_geometry ["exposedMenuPointIsVisible" ] is True
172+
132173
133174@pytest .mark .frontend
134175def test_custom_model_grid_uses_two_columns_and_full_width_expansion (
0 commit comments