Improve reliability of globalization E2E tests (#13678)
This commit is contained in:
parent
43e232d5d5
commit
91a6fcc93d
|
|
@ -41,16 +41,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
public void CanSetCultureAndParseCultueSensitiveNumbersAndDates(string culture)
|
public void CanSetCultureAndParseCultueSensitiveNumbersAndDates(string culture)
|
||||||
{
|
{
|
||||||
var cultureInfo = CultureInfo.GetCultureInfo(culture);
|
var cultureInfo = CultureInfo.GetCultureInfo(culture);
|
||||||
|
SetCulture(culture);
|
||||||
var selector = new SelectElement(Browser.FindElement(By.Id("culture-selector")));
|
|
||||||
selector.SelectByValue(culture);
|
|
||||||
|
|
||||||
// That should have triggered a redirect, wait for the main test selector to come up.
|
|
||||||
MountTestComponent<GlobalizationBindCases>();
|
|
||||||
WaitUntilExists(By.Id("globalization-cases"));
|
|
||||||
|
|
||||||
var cultureDisplay = WaitUntilExists(By.Id("culture-name-display"));
|
|
||||||
Assert.Equal($"Culture is: {culture}", cultureDisplay.Text);
|
|
||||||
|
|
||||||
// int
|
// int
|
||||||
var input = Browser.FindElement(By.Id("input_type_text_int"));
|
var input = Browser.FindElement(By.Id("input_type_text_int"));
|
||||||
|
|
@ -113,16 +104,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
public void CanSetCultureAndParseCultureInvariantNumbersAndDatesWithInputFields(string culture)
|
public void CanSetCultureAndParseCultureInvariantNumbersAndDatesWithInputFields(string culture)
|
||||||
{
|
{
|
||||||
var cultureInfo = CultureInfo.GetCultureInfo(culture);
|
var cultureInfo = CultureInfo.GetCultureInfo(culture);
|
||||||
|
SetCulture(culture);
|
||||||
var selector = new SelectElement(Browser.FindElement(By.Id("culture-selector")));
|
|
||||||
selector.SelectByValue(culture);
|
|
||||||
|
|
||||||
// That should have triggered a redirect, wait for the main test selector to come up.
|
|
||||||
MountTestComponent<GlobalizationBindCases>();
|
|
||||||
WaitUntilExists(By.Id("globalization-cases"));
|
|
||||||
|
|
||||||
var cultureDisplay = WaitUntilExists(By.Id("culture-name-display"));
|
|
||||||
Assert.Equal($"Culture is: {culture}", cultureDisplay.Text);
|
|
||||||
|
|
||||||
// int
|
// int
|
||||||
var input = Browser.FindElement(By.Id("input_type_number_int"));
|
var input = Browser.FindElement(By.Id("input_type_number_int"));
|
||||||
|
|
@ -179,16 +161,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
public void CanSetCultureAndParseCultureInvariantNumbersAndDatesWithFormComponents(string culture)
|
public void CanSetCultureAndParseCultureInvariantNumbersAndDatesWithFormComponents(string culture)
|
||||||
{
|
{
|
||||||
var cultureInfo = CultureInfo.GetCultureInfo(culture);
|
var cultureInfo = CultureInfo.GetCultureInfo(culture);
|
||||||
|
SetCulture(culture);
|
||||||
var selector = new SelectElement(Browser.FindElement(By.Id("culture-selector")));
|
|
||||||
selector.SelectByValue(culture);
|
|
||||||
|
|
||||||
// That should have triggered a redirect, wait for the main test selector to come up.
|
|
||||||
MountTestComponent<GlobalizationBindCases>();
|
|
||||||
WaitUntilExists(By.Id("globalization-cases"));
|
|
||||||
|
|
||||||
var cultureDisplay = WaitUntilExists(By.Id("culture-name-display"));
|
|
||||||
Assert.Equal($"Culture is: {culture}", cultureDisplay.Text);
|
|
||||||
|
|
||||||
// int
|
// int
|
||||||
var input = Browser.FindElement(By.Id("inputnumber_int"));
|
var input = Browser.FindElement(By.Id("inputnumber_int"));
|
||||||
|
|
@ -247,5 +220,21 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
element.SendKeys(Keys.Control + "a");
|
element.SendKeys(Keys.Control + "a");
|
||||||
element.SendKeys(text);
|
element.SendKeys(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetCulture(string culture)
|
||||||
|
{
|
||||||
|
var selector = new SelectElement(Browser.FindElement(By.Id("culture-selector")));
|
||||||
|
selector.SelectByValue(culture);
|
||||||
|
|
||||||
|
// Click the link to return back to the test page
|
||||||
|
WaitUntilExists(By.ClassName("return-from-culture-setter")).Click();
|
||||||
|
|
||||||
|
// That should have triggered a page load, so wait for the main test selector to come up.
|
||||||
|
MountTestComponent<GlobalizationBindCases>();
|
||||||
|
WaitUntilExists(By.Id("globalization-cases"));
|
||||||
|
|
||||||
|
var cultureDisplay = WaitUntilExists(By.Id("culture-name-display"));
|
||||||
|
Assert.Equal($"Culture is: {culture}", cultureDisplay.Text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,10 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
||||||
var selector = new SelectElement(Browser.FindElement(By.Id("culture-selector")));
|
var selector = new SelectElement(Browser.FindElement(By.Id("culture-selector")));
|
||||||
selector.SelectByValue(culture);
|
selector.SelectByValue(culture);
|
||||||
|
|
||||||
// That should have triggered a redirect, wait for the main test selector to come up.
|
// Click the link to return back to the test page
|
||||||
|
WaitUntilExists(By.ClassName("return-from-culture-setter")).Click();
|
||||||
|
|
||||||
|
// That should have triggered a page load, so wait for the main test selector to come up.
|
||||||
MountTestComponent<LocalizedText>();
|
MountTestComponent<LocalizedText>();
|
||||||
|
|
||||||
var cultureDisplay = WaitUntilExists(By.Id("culture-name-display"));
|
var cultureDisplay = WaitUntilExists(By.Id("culture-name-display"));
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
{
|
{
|
||||||
// Included fragment to preserve choice of Blazor client or server.
|
// Included fragment to preserve choice of Blazor client or server.
|
||||||
var redirect = new Uri(NavigationManager.Uri).GetComponents(UriComponents.PathAndQuery | UriComponents.Fragment, UriFormat.UriEscaped);
|
var redirect = new Uri(NavigationManager.Uri).GetComponents(UriComponents.PathAndQuery | UriComponents.Fragment, UriFormat.UriEscaped);
|
||||||
var query = $"?culture={Uri.EscapeDataString((string)e.Value)}&redirectUri={redirect}";
|
var query = $"?culture={Uri.EscapeDataString((string)e.Value)}&redirectUri={Uri.EscapeDataString(redirect)}";
|
||||||
NavigationManager.NavigateTo("/Culture/SetCulture" + query, forceLoad: true);
|
NavigationManager.NavigateTo("/Culture/SetCulture" + query, forceLoad: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
|
using System.Text.Encodings.Web;
|
||||||
using Microsoft.AspNetCore.Localization;
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.WebUtilities;
|
||||||
|
using Microsoft.Net.Http.Headers;
|
||||||
|
|
||||||
namespace Components.TestServer.Controllers
|
namespace Components.TestServer.Controllers
|
||||||
{
|
{
|
||||||
|
|
@ -15,7 +18,10 @@ namespace Components.TestServer.Controllers
|
||||||
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)));
|
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return LocalRedirect(redirectUri);
|
var htmlEncoder = HtmlEncoder.Default;
|
||||||
|
var html = $"<h1>Culture has been changed to {htmlEncoder.Encode(culture)}</h1>" +
|
||||||
|
$"<a class='return-from-culture-setter' href='{htmlEncoder.Encode(redirectUri)}'>Return to previous page</a>";
|
||||||
|
return Content(html, "text/html");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue