Make InputDateInteractsWithEditContext_NullableDateTimeOffset more reliable (#13648)
This commit is contained in:
parent
03ba5738b3
commit
1527e49eb3
|
|
@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
|||
display = Browser.FindElement(By.Id("input_type_text_datetime_value"));
|
||||
Browser.Equal(new DateTime(1985, 3, 4).ToString(cultureInfo), () => display.Text);
|
||||
|
||||
ReplaceText(input, new DateTime(2000, 1, 2).ToString(cultureInfo));
|
||||
input.ReplaceText(new DateTime(2000, 1, 2).ToString(cultureInfo));
|
||||
input.SendKeys("\t");
|
||||
Browser.Equal(new DateTime(2000, 1, 2).ToString(cultureInfo), () => display.Text);
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
|||
display = Browser.FindElement(By.Id("input_type_text_datetimeoffset_value"));
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(1985, 3, 4)).ToString(cultureInfo), () => display.Text);
|
||||
|
||||
ReplaceText(input, new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo));
|
||||
input.ReplaceText(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo));
|
||||
input.SendKeys("\t");
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo), () => display.Text);
|
||||
}
|
||||
|
|
@ -137,7 +137,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
|||
Browser.Equal(new DateTime(1985, 3, 4).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTime(1985, 3, 4).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
|
||||
ReplaceText(extraInput, new DateTime(2000, 1, 2).ToString(cultureInfo));
|
||||
extraInput.ReplaceText(new DateTime(2000, 1, 2).ToString(cultureInfo));
|
||||
extraInput.SendKeys("\t");
|
||||
Browser.Equal(new DateTime(2000, 1, 2).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTime(2000, 1, 2).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
|
|
@ -149,7 +149,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
|||
Browser.Equal(new DateTimeOffset(new DateTime(1985, 3, 4)).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(1985, 3, 4)).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
|
||||
ReplaceText(extraInput, new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo));
|
||||
extraInput.ReplaceText(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo));
|
||||
extraInput.SendKeys("\t");
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
|
|
@ -194,7 +194,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
|||
Browser.Equal(new DateTime(1985, 3, 4).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTime(1985, 3, 4).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
|
||||
ReplaceText(extraInput, new DateTime(2000, 1, 2).ToString(cultureInfo));
|
||||
extraInput.ReplaceText(new DateTime(2000, 1, 2).ToString(cultureInfo));
|
||||
extraInput.SendKeys("\t");
|
||||
Browser.Equal(new DateTime(2000, 1, 2).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTime(2000, 1, 2).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
|
|
@ -206,21 +206,12 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
|
|||
Browser.Equal(new DateTimeOffset(new DateTime(1985, 3, 4)).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(1985, 3, 4)).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
|
||||
ReplaceText(extraInput, new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo));
|
||||
extraInput.ReplaceText(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo));
|
||||
extraInput.SendKeys("\t");
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString(cultureInfo), () => display.Text);
|
||||
Browser.Equal(new DateTimeOffset(new DateTime(2000, 1, 2)).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), () => input.GetAttribute("value"));
|
||||
}
|
||||
|
||||
// see: https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/214
|
||||
//
|
||||
// Calling Clear() can trigger onchange, which will revert the value to its default.
|
||||
private static void ReplaceText(IWebElement element, string text)
|
||||
{
|
||||
element.SendKeys(Keys.Control + "a");
|
||||
element.SendKeys(text);
|
||||
}
|
||||
|
||||
private void SetCulture(string culture)
|
||||
{
|
||||
var selector = new SelectElement(Browser.FindElement(By.Id("culture-selector")));
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ using OpenQA.Selenium;
|
|||
using OpenQA.Selenium.Support.UI;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
|
@ -196,27 +196,26 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
|||
|
||||
// Validates on edit
|
||||
Browser.Equal("valid", () => renewalDateInput.GetAttribute("class"));
|
||||
renewalDateInput.SendKeys("01/01/2000\t");
|
||||
renewalDateInput.ReplaceText("01/01/2000\t");
|
||||
Browser.Equal("modified valid", () => renewalDateInput.GetAttribute("class"));
|
||||
|
||||
// Can become invalid
|
||||
renewalDateInput.SendKeys("0/0/0");
|
||||
renewalDateInput.ReplaceText("0/0/0");
|
||||
Browser.Equal("modified invalid", () => renewalDateInput.GetAttribute("class"));
|
||||
Browser.Equal(new[] { "The RenewalDate field must be a date." }, messagesAccessor);
|
||||
|
||||
// Empty is invalid, because it's not nullable
|
||||
renewalDateInput.SendKeys($"{Keys.Backspace}\t{Keys.Backspace}\t{Keys.Backspace}\t");
|
||||
renewalDateInput.ReplaceText($"{Keys.Backspace}");
|
||||
Browser.Equal("modified invalid", () => renewalDateInput.GetAttribute("class"));
|
||||
Browser.Equal(new[] { "The RenewalDate field must be a date." }, messagesAccessor);
|
||||
|
||||
// Can become valid
|
||||
renewalDateInput.SendKeys("01/01/01\t");
|
||||
renewalDateInput.ReplaceText("01/01/01");
|
||||
Browser.Equal("modified valid", () => renewalDateInput.GetAttribute("class"));
|
||||
Browser.Empty(messagesAccessor);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Flaky("https://github.com/aspnet/AspNetCore-Internal/issues/2511", FlakyOn.All)]
|
||||
public void InputDateInteractsWithEditContext_NullableDateTimeOffset()
|
||||
{
|
||||
var appElement = MountTestComponent<TypicalValidationComponent>();
|
||||
|
|
@ -229,8 +228,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
|||
Browser.Equal("modified valid", () => expiryDateInput.GetAttribute("class"));
|
||||
|
||||
// Can become invalid
|
||||
expiryDateInput.Clear();
|
||||
expiryDateInput.SendKeys("111111111");
|
||||
expiryDateInput.ReplaceText("111111111");
|
||||
Browser.Equal("modified invalid", () => expiryDateInput.GetAttribute("class"));
|
||||
Browser.Equal(new[] { "The OptionalExpiryDate field must be a date." }, messagesAccessor);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace OpenQA.Selenium
|
||||
{
|
||||
public static class WebElementExtensions
|
||||
{
|
||||
// see: https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/214
|
||||
//
|
||||
// Calling Clear() can trigger onchange, which will revert the value to its default.
|
||||
public static void ReplaceText(this IWebElement element, string text)
|
||||
{
|
||||
element.SendKeys(Keys.Control + "a");
|
||||
element.SendKeys(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue