mirror of
https://github.com/microsoft/playwright-java.git
synced 2026-03-31 20:02:48 +00:00
test(lolcale): port locale tests from typescript (#395)
This commit is contained in:
parent
2d956e4a8d
commit
8e27ec6bc3
@ -0,0 +1,171 @@
|
||||
/*
|
||||
* Copyright (c) Microsoft Corporation.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.microsoft.playwright;
|
||||
|
||||
import com.microsoft.playwright.options.LoadState;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class TestBrowserContextLocale extends TestBase {
|
||||
@Test
|
||||
void shouldAffectAcceptLanguageHeader() throws ExecutionException, InterruptedException {
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("fr-CH"));
|
||||
Page page = context.newPage();
|
||||
Future<Server.Request> request = server.futureRequest("/empty.html");
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
assertEquals("fr-CH", request.get().headers.get("accept-language").get(0).substring(0, 5));
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldAffectNavigatorLanguage() {
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("fr-CH"));
|
||||
Page page = context.newPage();
|
||||
assertEquals("fr-CH", page.evaluate("() => navigator.language"));
|
||||
context.close();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void shouldFormatNumber() {
|
||||
{
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("en-US"));
|
||||
Page page = context.newPage();
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
assertEquals("1,000,000.5", page.evaluate("() => (1000000.50).toLocaleString()"));
|
||||
context.close();
|
||||
}
|
||||
{
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("fr-CH"));
|
||||
Page page = context.newPage();
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
assertEquals("1 000 000,5", page.evaluate("() => (1000000.50).toLocaleString().replace(/\\s/g, ' ')"));
|
||||
context.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFormatDate() {
|
||||
{
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
|
||||
.setLocale("en-US").setTimezoneId("America/Los_Angeles"));
|
||||
Page page = context.newPage();
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
String formatted = "Sat Nov 19 2016 10:12:34 GMT-0800 (Pacific Standard Time)";
|
||||
assertEquals(formatted, page.evaluate("new Date(1479579154987).toString()"));
|
||||
context.close();
|
||||
}
|
||||
{
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions()
|
||||
.setLocale("de-DE").setTimezoneId("Europe/Berlin"));
|
||||
Page page = context.newPage();
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
assertEquals("Sat Nov 19 2016 19:12:34 GMT+0100 (Mitteleuropäische Normalzeit)",
|
||||
page.evaluate("new Date(1479579154987).toString()"));
|
||||
context.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldFormatNumberInPopups() {
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("fr-CH"));
|
||||
Page page = context.newPage();
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
Page popup = page.waitForPopup(() -> page.evaluate(
|
||||
"url => window.open(url)", server.PREFIX + "/formatted-number.html"));
|
||||
popup.waitForLoadState(LoadState.DOMCONTENTLOADED);
|
||||
Object result = popup.evaluate("window['result']");
|
||||
assertEquals("1 000 000,5", result);
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldAffectNavigatorLanguageInPopups() {
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("fr-CH"));
|
||||
Page page = context.newPage();
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
Page popup = page.waitForPopup(() -> page.evaluate(
|
||||
"url => window.open(url)", server.PREFIX + "/formatted-number.html"));
|
||||
popup.waitForLoadState(LoadState.DOMCONTENTLOADED);
|
||||
Object result = popup.evaluate("window.initialNavigatorLanguage");
|
||||
assertEquals("fr-CH", result);
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldWorkForMultiplePagesSharingSameProcess() {
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale("ru-RU"));
|
||||
Page page = context.newPage();
|
||||
page.navigate(server.EMPTY_PAGE);
|
||||
Page popup = page.waitForPopup(() -> page.evaluate(
|
||||
"url => window.open(url)", server.EMPTY_PAGE));
|
||||
popup = page.waitForPopup(() -> page.evaluate(
|
||||
"url => window.open(url)", server.EMPTY_PAGE));
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldBeIsolatedBetweenContexts() {
|
||||
BrowserContext context1 = browser.newContext(new Browser.NewContextOptions().setLocale("en-US"));
|
||||
// By default firefox limits number of child web processes to 8.
|
||||
for (int i = 0; i < 8; i++)
|
||||
context1.newPage();
|
||||
|
||||
BrowserContext context2 = browser.newContext(new Browser.NewContextOptions().setLocale("ru-RU"));
|
||||
Page page2 = context2.newPage();
|
||||
|
||||
String localeNumber = "(1000000.50).toLocaleString()";
|
||||
for (Page page : context1.pages()) {
|
||||
assertEquals("1,000,000.5", page.evaluate(localeNumber));
|
||||
}
|
||||
assertEquals("1 000 000,5", page2.evaluate(localeNumber));
|
||||
context1.close();
|
||||
context2.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotChangeDefaultLocaleInAnotherContext() {
|
||||
Function<BrowserContext, String> getContextLocale = (context) -> {
|
||||
Page page = context.newPage();
|
||||
return (String) page.evaluate("(new Intl.NumberFormat()).resolvedOptions().locale");
|
||||
};
|
||||
|
||||
String defaultLocale;
|
||||
{
|
||||
BrowserContext context = browser.newContext();
|
||||
defaultLocale = getContextLocale.apply(context);
|
||||
context.close();
|
||||
}
|
||||
String localeOverride = "ru-RU".equals(defaultLocale) ? "de-DE" : "ru-RU";
|
||||
{
|
||||
BrowserContext context = browser.newContext(new Browser.NewContextOptions().setLocale(localeOverride));
|
||||
assertEquals(localeOverride, getContextLocale.apply(context));
|
||||
context.close();
|
||||
}
|
||||
{
|
||||
BrowserContext context = browser.newContext();
|
||||
assertEquals(defaultLocale, getContextLocale.apply(context));
|
||||
context.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user