From 1418e52cbf2b3e4433bd31e002726bfb77c7f376 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 2 Jun 2026 22:46:35 +0200 Subject: [PATCH 01/17] test(current-language-util): add test boilerplate --- src/utils/__tests__/currentLanguage.test.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/utils/__tests__/currentLanguage.test.js diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js new file mode 100644 index 0000000..2895a5d --- /dev/null +++ b/src/utils/__tests__/currentLanguage.test.js @@ -0,0 +1,21 @@ +/* +Copyright 2026 Seekra + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { test } from 'vitest'; + +test.for([ +])('returns the language \'%s\'', ([locale, language]) => { +}); \ No newline at end of file From c3c7fdb9457b7643998e88ce04cdac62396372c0 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 2 Jun 2026 22:47:15 +0200 Subject: [PATCH 02/17] test(current-language-util): add simple test cases --- src/utils/__tests__/currentLanguage.test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 2895a5d..2acd5a9 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -17,5 +17,8 @@ limitations under the License. import { test } from 'vitest'; test.for([ + ['en', 'en'], + ['de', 'de'], + ['fr', 'fr'] ])('returns the language \'%s\'', ([locale, language]) => { }); \ No newline at end of file From a14318c4c502381a606d04968443966e97c560ff Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:34:16 +0200 Subject: [PATCH 03/17] test(current-language-util): add test cases with country code --- src/utils/__tests__/currentLanguage.test.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 2acd5a9..9e172f5 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -19,6 +19,16 @@ import { test } from 'vitest'; test.for([ ['en', 'en'], ['de', 'de'], - ['fr', 'fr'] + ['fr', 'fr'], + + ['en-US', 'en'], + ['en-AU', 'en'], + ['de-DE', 'de'], + ['fr-FR', 'fr'], + + ['en-us', 'en'], + ['en-au', 'en'], + ['de-de', 'de'], + ['fr-fr', 'fr'] ])('returns the language \'%s\'', ([locale, language]) => { }); \ No newline at end of file From a7babaf94b69bf8817f74b9b2ddefb8e55cbd7ff Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:34:44 +0200 Subject: [PATCH 04/17] test(current-language-util): add test cases with writing system --- src/utils/__tests__/currentLanguage.test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 9e172f5..84e827b 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -29,6 +29,10 @@ test.for([ ['en-us', 'en'], ['en-au', 'en'], ['de-de', 'de'], - ['fr-fr', 'fr'] + ['fr-fr', 'fr'], + + ['zh-Hans-CN', 'zh'], + ['zh-Hant-TW', 'zh'], + ['uz-Latn-UZ', 'uz'] ])('returns the language \'%s\'', ([locale, language]) => { }); \ No newline at end of file From 7f01a807b9df06f1f08cfff945c21f27b97ab9d7 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:35:27 +0200 Subject: [PATCH 05/17] test(current-language-util): add test cases with extension --- src/utils/__tests__/currentLanguage.test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 84e827b..71b5f49 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -33,6 +33,10 @@ test.for([ ['zh-Hans-CN', 'zh'], ['zh-Hant-TW', 'zh'], - ['uz-Latn-UZ', 'uz'] + ['uz-Latn-UZ', 'uz'], + + ['en-US-u-ca-gregory', 'en'], + ['de-DE-u-co-phonebk', 'de'], + ['zh-Hant-TW-u-co-phonebk', 'zh'] ])('returns the language \'%s\'', ([locale, language]) => { }); \ No newline at end of file From 2117c2860642eeb610cb80f3f72ebf7c8c4361ae Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:35:46 +0200 Subject: [PATCH 06/17] test(current-language-util): add navigator.language configuration --- src/utils/__tests__/currentLanguage.test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 71b5f49..fa12a2d 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -39,4 +39,8 @@ test.for([ ['de-DE-u-co-phonebk', 'de'], ['zh-Hant-TW-u-co-phonebk', 'zh'] ])('returns the language \'%s\'', ([locale, language]) => { + Object.defineProperty(navigator, 'language', { + value: language, + configurable: true + }); }); \ No newline at end of file From 352bd5baf581dc14b5f5475e20defd4c3c4e8a43 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:35:56 +0200 Subject: [PATCH 07/17] test(current-language-util): add actual test --- src/utils/__tests__/currentLanguage.test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index fa12a2d..52ea97a 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -14,7 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { test } from 'vitest'; +import { expect, test } from 'vitest'; +import getCurrentLanguage from '../currentLanguage'; test.for([ ['en', 'en'], @@ -43,4 +44,6 @@ test.for([ value: language, configurable: true }); + + expect(getCurrentLanguage()).toBe(language) }); \ No newline at end of file From 093d5840fc5c3e7b093643fb312eeec59df3a788 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:45:46 +0200 Subject: [PATCH 08/17] test(current-language-util): update test description --- src/utils/__tests__/currentLanguage.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 52ea97a..128055c 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -39,7 +39,7 @@ test.for([ ['en-US-u-ca-gregory', 'en'], ['de-DE-u-co-phonebk', 'de'], ['zh-Hant-TW-u-co-phonebk', 'zh'] -])('returns the language \'%s\'', ([locale, language]) => { +])('returns the language \'%s\' for locale only set via navigator.language', ([locale, language]) => { Object.defineProperty(navigator, 'language', { value: language, configurable: true From b58ee95ad25de45b42a3c41f3e1460086185950a Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:46:00 +0200 Subject: [PATCH 09/17] fix(current-language-util): use the full locale instead of the language for the testing environment --- src/utils/__tests__/currentLanguage.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 128055c..569cc9c 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -41,7 +41,7 @@ test.for([ ['zh-Hant-TW-u-co-phonebk', 'zh'] ])('returns the language \'%s\' for locale only set via navigator.language', ([locale, language]) => { Object.defineProperty(navigator, 'language', { - value: language, + value: locale, configurable: true }); From bf3e6b2e2e1313da4e7fc5cdefb5ec789ab7aa30 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:52:54 +0200 Subject: [PATCH 10/17] refactor(current-language-util): move the locales array to a separate const in the test --- src/utils/__tests__/currentLanguage.test.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 569cc9c..74c98e5 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -17,7 +17,7 @@ limitations under the License. import { expect, test } from 'vitest'; import getCurrentLanguage from '../currentLanguage'; -test.for([ +const locales = [ ['en', 'en'], ['de', 'de'], ['fr', 'fr'], @@ -39,7 +39,9 @@ test.for([ ['en-US-u-ca-gregory', 'en'], ['de-DE-u-co-phonebk', 'de'], ['zh-Hant-TW-u-co-phonebk', 'zh'] -])('returns the language \'%s\' for locale only set via navigator.language', ([locale, language]) => { +]; + +test.for(locales)('returns the language \'%s\' for locale only set via navigator.language', ([locale, language]) => { Object.defineProperty(navigator, 'language', { value: locale, configurable: true From 06c5e9b2c1e75f22de02477a42874faa8d88e38e Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 17:54:17 +0200 Subject: [PATCH 11/17] test(current-language-util): add local storage languages array --- src/utils/__tests__/currentLanguage.test.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 74c98e5..614321a 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -41,6 +41,13 @@ const locales = [ ['zh-Hant-TW-u-co-phonebk', 'zh'] ]; +const localStorageLanguages = [ + ['en', 'en'], + ['de', 'de'], + ['fr', 'fr'], + [null, null] +]; + test.for(locales)('returns the language \'%s\' for locale only set via navigator.language', ([locale, language]) => { Object.defineProperty(navigator, 'language', { value: locale, From a78fa93b51b7c328846a461f04e2fc59f46644de Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 20:00:08 +0200 Subject: [PATCH 12/17] test(current-language-util): use objects for test cases --- src/utils/__tests__/currentLanguage.test.js | 40 ++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 614321a..d9b1ddb 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -18,27 +18,27 @@ import { expect, test } from 'vitest'; import getCurrentLanguage from '../currentLanguage'; const locales = [ - ['en', 'en'], - ['de', 'de'], - ['fr', 'fr'], + { navigatorLanguage: 'en', expected: 'en'}, + { navigatorLanguage: 'de', expected: 'de'}, + { navigatorLanguage: 'fr', expected: 'fr'}, - ['en-US', 'en'], - ['en-AU', 'en'], - ['de-DE', 'de'], - ['fr-FR', 'fr'], + { navigatorLanguage: 'en-US', expected: 'en'}, + { navigatorLanguage: 'en-AU', expected: 'en'}, + { navigatorLanguage: 'de-DE', expected: 'de'}, + { navigatorLanguage: 'fr-FR', expected: 'fr'}, - ['en-us', 'en'], - ['en-au', 'en'], - ['de-de', 'de'], - ['fr-fr', 'fr'], + { navigatorLanguage: 'en-us', expected: 'en'}, + { navigatorLanguage: 'en-au', expected: 'en'}, + { navigatorLanguage: 'de-de', expected: 'de'}, + { navigatorLanguage: 'fr-fr', expected: 'fr'}, - ['zh-Hans-CN', 'zh'], - ['zh-Hant-TW', 'zh'], - ['uz-Latn-UZ', 'uz'], + { navigatorLanguage: 'zh-Hans-CN', expected: 'zh'}, + { navigatorLanguage: 'zh-Hant-TW', expected: 'zh'}, + { navigatorLanguage: 'uz-Latn-UZ', expected: 'uz'}, - ['en-US-u-ca-gregory', 'en'], - ['de-DE-u-co-phonebk', 'de'], - ['zh-Hant-TW-u-co-phonebk', 'zh'] + { navigatorLanguage: 'en-US-u-ca-gregory', expected: 'en'}, + { navigatorLanguage: 'de-DE-u-co-phonebk', expected: 'de'}, + { navigatorLanguage: 'zh-Hant-TW-u-co-phonebk', expected: 'zh'} ]; const localStorageLanguages = [ @@ -48,11 +48,11 @@ const localStorageLanguages = [ [null, null] ]; -test.for(locales)('returns the language \'%s\' for locale only set via navigator.language', ([locale, language]) => { +test.for(locales)('returns the language $expected for navigator language $navigatorLanguage', ({ navigatorLanguage, expected }) => { Object.defineProperty(navigator, 'language', { - value: locale, + value: navigatorLanguage, configurable: true }); - expect(getCurrentLanguage()).toBe(language) + expect(getCurrentLanguage()).toBe(expected); }); \ No newline at end of file From 12f9d85841011a29f456841e0ec12d1346350c22 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 20:10:53 +0200 Subject: [PATCH 13/17] test(current-language-util): remove local storage language test cases --- src/utils/__tests__/currentLanguage.test.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index d9b1ddb..6f1664e 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -41,13 +41,6 @@ const locales = [ { navigatorLanguage: 'zh-Hant-TW-u-co-phonebk', expected: 'zh'} ]; -const localStorageLanguages = [ - ['en', 'en'], - ['de', 'de'], - ['fr', 'fr'], - [null, null] -]; - test.for(locales)('returns the language $expected for navigator language $navigatorLanguage', ({ navigatorLanguage, expected }) => { Object.defineProperty(navigator, 'language', { value: navigatorLanguage, From 80bc8339edf111dbc7a9ec23b9eaddb303e3f418 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 20:19:38 +0200 Subject: [PATCH 14/17] test(current-language-util): add test cases localStorageLanguage key --- src/utils/__tests__/currentLanguage.test.js | 36 ++++++++++----------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 6f1664e..3933900 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -18,30 +18,30 @@ import { expect, test } from 'vitest'; import getCurrentLanguage from '../currentLanguage'; const locales = [ - { navigatorLanguage: 'en', expected: 'en'}, - { navigatorLanguage: 'de', expected: 'de'}, - { navigatorLanguage: 'fr', expected: 'fr'}, + { navigatorLanguage: 'en', localStorageLanguage: null, expected: 'en'}, + { navigatorLanguage: 'de', localStorageLanguage: null, expected: 'de'}, + { navigatorLanguage: 'fr', localStorageLanguage: null, expected: 'fr'}, - { navigatorLanguage: 'en-US', expected: 'en'}, - { navigatorLanguage: 'en-AU', expected: 'en'}, - { navigatorLanguage: 'de-DE', expected: 'de'}, - { navigatorLanguage: 'fr-FR', expected: 'fr'}, + { navigatorLanguage: 'en-US', localStorageLanguage: null, expected: 'en'}, + { navigatorLanguage: 'en-AU', localStorageLanguage: null, expected: 'en'}, + { navigatorLanguage: 'de-DE', localStorageLanguage: null, expected: 'de'}, + { navigatorLanguage: 'fr-FR', localStorageLanguage: null, expected: 'fr'}, - { navigatorLanguage: 'en-us', expected: 'en'}, - { navigatorLanguage: 'en-au', expected: 'en'}, - { navigatorLanguage: 'de-de', expected: 'de'}, - { navigatorLanguage: 'fr-fr', expected: 'fr'}, + { navigatorLanguage: 'en-us', localStorageLanguage: null, expected: 'en'}, + { navigatorLanguage: 'en-au', localStorageLanguage: null, expected: 'en'}, + { navigatorLanguage: 'de-de', localStorageLanguage: null, expected: 'de'}, + { navigatorLanguage: 'fr-fr', localStorageLanguage: null, expected: 'fr'}, - { navigatorLanguage: 'zh-Hans-CN', expected: 'zh'}, - { navigatorLanguage: 'zh-Hant-TW', expected: 'zh'}, - { navigatorLanguage: 'uz-Latn-UZ', expected: 'uz'}, + { navigatorLanguage: 'zh-Hans-CN', localStorageLanguage: null, expected: 'zh'}, + { navigatorLanguage: 'zh-Hant-TW', localStorageLanguage: null, expected: 'zh'}, + { navigatorLanguage: 'uz-Latn-UZ', localStorageLanguage: null, expected: 'uz'}, - { navigatorLanguage: 'en-US-u-ca-gregory', expected: 'en'}, - { navigatorLanguage: 'de-DE-u-co-phonebk', expected: 'de'}, - { navigatorLanguage: 'zh-Hant-TW-u-co-phonebk', expected: 'zh'} + { navigatorLanguage: 'en-US-u-ca-gregory', localStorageLanguage: null, expected: 'en'}, + { navigatorLanguage: 'de-DE-u-co-phonebk', localStorageLanguage: null, expected: 'de'}, + { navigatorLanguage: 'zh-Hant-TW-u-co-phonebk', localStorageLanguage: null, expected: 'zh'} ]; -test.for(locales)('returns the language $expected for navigator language $navigatorLanguage', ({ navigatorLanguage, expected }) => { +test.for(locales)('returns the language $expected for navigator language $navigatorLanguage and local storage language $localStorageLanguage', ({ navigatorLanguage, localStorageLanguage, expected }) => { Object.defineProperty(navigator, 'language', { value: navigatorLanguage, configurable: true From 33dfee951ae2e4d2cd4be27b549fa65cbf0fbc03 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 20:21:06 +0200 Subject: [PATCH 15/17] test(current-language-util): set local storage item 'locale' to the local storage language if it is specified --- src/utils/__tests__/currentLanguage.test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 3933900..3d7fa3b 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -47,5 +47,9 @@ test.for(locales)('returns the language $expected for navigator language $naviga configurable: true }); + if (localStorageLanguage) { + localStorage.setItem('locale', localStorageLanguage); + }; + expect(getCurrentLanguage()).toBe(expected); }); \ No newline at end of file From 8ce315e1c7f15b83df6584d890d69f069efdc375 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 20:22:42 +0200 Subject: [PATCH 16/17] test(current-language-util): add local storage language test cases --- src/utils/__tests__/currentLanguage.test.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 3d7fa3b..30c7941 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -38,7 +38,13 @@ const locales = [ { navigatorLanguage: 'en-US-u-ca-gregory', localStorageLanguage: null, expected: 'en'}, { navigatorLanguage: 'de-DE-u-co-phonebk', localStorageLanguage: null, expected: 'de'}, - { navigatorLanguage: 'zh-Hant-TW-u-co-phonebk', localStorageLanguage: null, expected: 'zh'} + { navigatorLanguage: 'zh-Hant-TW-u-co-phonebk', localStorageLanguage: null, expected: 'zh'}, + + { navigatorLanguage: 'en', localStorageLanguage: 'de', expected: 'de'}, + { navigatorLanguage: 'de-DE', localStorageLanguage: 'en', expected: 'en'}, + { navigatorLanguage: 'de-de', localStorageLanguage: 'en', expected: 'en'}, + { navigatorLanguage: 'zh-Hans-CN', localStorageLanguage: 'fr', expected: 'fr'}, + { navigatorLanguage: 'en-US-u-ca-gregory', localStorageLanguage: 'zh', expected: 'zh'} ]; test.for(locales)('returns the language $expected for navigator language $navigatorLanguage and local storage language $localStorageLanguage', ({ navigatorLanguage, localStorageLanguage, expected }) => { From 7d15d29409669a2595fd8c5f492f1d59f82806d1 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Wed, 3 Jun 2026 20:23:35 +0200 Subject: [PATCH 17/17] test(current-language-util): shorten test description --- src/utils/__tests__/currentLanguage.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/__tests__/currentLanguage.test.js b/src/utils/__tests__/currentLanguage.test.js index 30c7941..de5d110 100644 --- a/src/utils/__tests__/currentLanguage.test.js +++ b/src/utils/__tests__/currentLanguage.test.js @@ -47,7 +47,7 @@ const locales = [ { navigatorLanguage: 'en-US-u-ca-gregory', localStorageLanguage: 'zh', expected: 'zh'} ]; -test.for(locales)('returns the language $expected for navigator language $navigatorLanguage and local storage language $localStorageLanguage', ({ navigatorLanguage, localStorageLanguage, expected }) => { +test.for(locales)('returns the language $expected (navigator: $navigatorLanguage; local storage: $localStorageLanguage)', ({ navigatorLanguage, localStorageLanguage, expected }) => { Object.defineProperty(navigator, 'language', { value: navigatorLanguage, configurable: true