@@ -225,37 +225,60 @@ def test_set_geolocation_override_with_error(driver, pages):
225225 assert "error" in result , f"Expected geolocation error, got: { result } "
226226
227227
228- def test_set_locale_override_with_contexts (driver , pages ):
228+ @pytest .mark .parametrize (
229+ "locale,expected_locale" ,
230+ [
231+ # Locale with Unicode extension keyword for collation.
232+ ("de-DE-u-co-phonebk" , "de-DE" ),
233+ # Lowercase language and region.
234+ ("fr-ca" , "fr-CA" ),
235+ # Uppercase language and region (should be normalized by Intl.Locale).
236+ ("FR-CA" , "fr-CA" ),
237+ # Mixed case language and region (should be normalized by Intl.Locale).
238+ ("fR-cA" , "fr-CA" ),
239+ # Locale with transform extension (simple case).
240+ ("en-t-zh" , "en" ),
241+ ],
242+ )
243+ def test_set_locale_override_with_contexts (driver , pages , locale , expected_locale ):
229244 """Test setting locale override with browsing contexts."""
230245 context_id = driver .current_window_handle
231246
232- # Set locale override to French
233- test_locale = "fr-FR"
234- driver .emulation .set_locale_override (locale = test_locale , contexts = [context_id ])
247+ driver .emulation .set_locale_override (locale = locale , contexts = [context_id ])
235248
236249 driver .browsing_context .navigate (context_id , pages .url ("formPage.html" ), wait = "complete" )
237250
238251 current_locale = get_browser_locale (driver )
239- assert current_locale == test_locale , f"Expected locale { test_locale } , got { current_locale } "
240-
241-
242- def test_set_locale_override_with_user_contexts (driver , pages ):
252+ assert current_locale == expected_locale , f"Expected locale { expected_locale } , got { current_locale } "
253+
254+
255+ @pytest .mark .parametrize (
256+ "value" ,
257+ [
258+ # Simple language code (2-letter).
259+ "en" ,
260+ # Language and region (both 2-letter).
261+ "en-US" ,
262+ # Language and script (4-letter).
263+ "sr-Latn" ,
264+ # Language, script, and region.
265+ "zh-Hans-CN" ,
266+ ],
267+ )
268+ def test_set_locale_override_with_user_contexts (driver , pages , value ):
243269 """Test setting locale override with user contexts."""
244270 user_context = driver .browser .create_user_context ()
245271
246272 context_id = driver .browsing_context .create (type = WindowTypes .TAB , user_context = user_context )
247273
248274 driver .switch_to .window (context_id )
249275
250- # Set locale override to Spanish
251- test_locale = "es-ES"
252- driver .emulation .set_locale_override (locale = test_locale , user_contexts = [user_context ])
276+ driver .emulation .set_locale_override (locale = value , user_contexts = [user_context ])
253277
254- url = pages .url ("formPage.html" )
255- driver .browsing_context .navigate (context_id , url , wait = "complete" )
278+ driver .browsing_context .navigate (context_id , pages .url ("formPage.html" ), wait = "complete" )
256279
257280 current_locale = get_browser_locale (driver )
258- assert current_locale == test_locale , f"Expected locale { test_locale } , got { current_locale } "
281+ assert current_locale == value , f"Expected locale { value } , got { current_locale } "
259282
260283 driver .browsing_context .close (context_id )
261284 driver .browser .remove_user_context (user_context )
0 commit comments