Fix InputRadioGroupsWithNamesNestedInteractWithEditContext (#24859)
* Fixed stale element issues * Reverted changes to blazor.server.js and blazor.webassembly.js
This commit is contained in:
parent
1f84e28882
commit
cca4bef83b
|
|
@ -303,47 +303,43 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/24850")]
|
||||||
public void InputRadioGroupWithoutNameInteractsWithEditContext()
|
public void InputRadioGroupWithoutNameInteractsWithEditContext()
|
||||||
{
|
{
|
||||||
var appElement = MountTypicalValidationComponent();
|
var appElement = MountTypicalValidationComponent();
|
||||||
var airlineInputs = FindAirlineInputs(appElement);
|
|
||||||
var unknownAirlineInput = FindUnknownAirlineInput(airlineInputs);
|
|
||||||
var bestAirlineInput = FindBestAirlineInput(airlineInputs);
|
|
||||||
var messagesAccessor = CreateValidationMessagesAccessor(appElement);
|
var messagesAccessor = CreateValidationMessagesAccessor(appElement);
|
||||||
|
|
||||||
// Validate unselected inputs
|
|
||||||
Assert.All(airlineInputs.Where(i => i != unknownAirlineInput), i => Browser.False(() => i.Selected));
|
|
||||||
|
|
||||||
// Validate selected inputs
|
// Validate selected inputs
|
||||||
Browser.True(() => unknownAirlineInput.Selected);
|
Browser.True(() => FindUnknownAirlineInput().Selected);
|
||||||
|
Browser.False(() => FindBestAirlineInput().Selected);
|
||||||
|
|
||||||
// InputRadio emits additional attributes
|
// InputRadio emits additional attributes
|
||||||
Browser.True(() => unknownAirlineInput.GetAttribute("extra").Equals("additional"));
|
Browser.True(() => FindUnknownAirlineInput().GetAttribute("extra").Equals("additional"));
|
||||||
|
|
||||||
// Validates on edit
|
// Validates on edit
|
||||||
Assert.All(airlineInputs, i => Browser.Equal("valid", () => i.GetAttribute("class")));
|
Browser.Equal("valid", () => FindUnknownAirlineInput().GetAttribute("class"));
|
||||||
|
Browser.Equal("valid", () => FindBestAirlineInput().GetAttribute("class"));
|
||||||
|
|
||||||
bestAirlineInput.Click();
|
FindBestAirlineInput().Click();
|
||||||
airlineInputs = FindAirlineInputs(appElement);
|
|
||||||
|
|
||||||
Assert.All(airlineInputs, i => Browser.Equal("modified valid", () => i.GetAttribute("class")));
|
Browser.Equal("modified valid", () => FindUnknownAirlineInput().GetAttribute("class"));
|
||||||
|
Browser.Equal("modified valid", () => FindBestAirlineInput().GetAttribute("class"));
|
||||||
|
|
||||||
// Can become invalid
|
// Can become invalid
|
||||||
unknownAirlineInput = FindUnknownAirlineInput(airlineInputs);
|
FindUnknownAirlineInput().Click();
|
||||||
unknownAirlineInput.Click();
|
|
||||||
airlineInputs = FindAirlineInputs(appElement);
|
|
||||||
|
|
||||||
Assert.All(airlineInputs, i => Browser.Equal("modified invalid", () => i.GetAttribute("class")));
|
Browser.Equal("modified invalid", () => FindUnknownAirlineInput().GetAttribute("class"));
|
||||||
|
Browser.Equal("modified invalid", () => FindBestAirlineInput().GetAttribute("class"));
|
||||||
Browser.Equal(new[] { "Pick a valid airline." }, messagesAccessor);
|
Browser.Equal(new[] { "Pick a valid airline." }, messagesAccessor);
|
||||||
|
|
||||||
static IReadOnlyCollection<IWebElement> FindAirlineInputs(IWebElement appElement)
|
IReadOnlyCollection<IWebElement> FindAirlineInputs()
|
||||||
=> appElement.FindElement(By.ClassName("airline")).FindElements(By.TagName("input"));
|
=> appElement.FindElement(By.ClassName("airline")).FindElements(By.TagName("input"));
|
||||||
|
|
||||||
static IWebElement FindUnknownAirlineInput(IReadOnlyCollection<IWebElement> airlineInputs)
|
IWebElement FindUnknownAirlineInput()
|
||||||
=> airlineInputs.First(i => i.GetAttribute("value").Equals("Unknown"));
|
=> FindAirlineInputs().First(i => string.Equals("Unknown", i.GetAttribute("value")));
|
||||||
|
|
||||||
static IWebElement FindBestAirlineInput(IReadOnlyCollection<IWebElement> airlineInputs)
|
IWebElement FindBestAirlineInput()
|
||||||
=> airlineInputs.First(i => i.GetAttribute("value").Equals("BestAirline"));
|
=> FindAirlineInputs().First(i => string.Equals("BestAirline", i.GetAttribute("value")));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -353,40 +349,29 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
||||||
var appElement = MountTypicalValidationComponent();
|
var appElement = MountTypicalValidationComponent();
|
||||||
var submitButton = appElement.FindElement(By.CssSelector("button[type=submit]"));
|
var submitButton = appElement.FindElement(By.CssSelector("button[type=submit]"));
|
||||||
var group = appElement.FindElement(By.ClassName("nested-radio-group"));
|
var group = appElement.FindElement(By.ClassName("nested-radio-group"));
|
||||||
var countryInputs = FindCountryInputs();
|
|
||||||
var colorInputs = FindColorInputs();
|
|
||||||
|
|
||||||
// Validate group counts
|
|
||||||
Assert.Equal(3, countryInputs.Count);
|
|
||||||
Assert.Equal(4, colorInputs.Count);
|
|
||||||
|
|
||||||
// Validate unselected inputs
|
// Validate unselected inputs
|
||||||
Assert.All(countryInputs, i => Browser.False(() => i.Selected));
|
Browser.True(() => FindCountryInputs().All(i => !i.Selected));
|
||||||
Assert.All(colorInputs, i => Browser.False(() => i.Selected));
|
Browser.True(() => FindColorInputs().All(i => !i.Selected));
|
||||||
|
|
||||||
// Invalidates on submit
|
// Invalidates on submit
|
||||||
Assert.All(countryInputs, i => Browser.Equal("valid", () => i.GetAttribute("class")));
|
Browser.True(() => FindCountryInputs().All(i => string.Equals("valid", i.GetAttribute("class"))));
|
||||||
Assert.All(colorInputs, i => Browser.Equal("valid", () => i.GetAttribute("class")));
|
Browser.True(() => FindColorInputs().All(i => string.Equals("valid", i.GetAttribute("class"))));
|
||||||
|
|
||||||
submitButton.Click();
|
submitButton.Click();
|
||||||
countryInputs = FindCountryInputs();
|
|
||||||
colorInputs = FindColorInputs();
|
|
||||||
|
|
||||||
Assert.All(countryInputs, i => Browser.Equal("invalid", () => i.GetAttribute("class")));
|
Browser.True(() => FindCountryInputs().All(i => string.Equals("invalid", i.GetAttribute("class"))));
|
||||||
Assert.All(colorInputs, i => Browser.Equal("invalid", () => i.GetAttribute("class")));
|
Browser.True(() => FindColorInputs().All(i => string.Equals("invalid", i.GetAttribute("class"))));
|
||||||
|
|
||||||
// Validates on edit
|
// Validates on edit
|
||||||
countryInputs.First().Click();
|
FindCountryInputs().First().Click();
|
||||||
countryInputs = FindCountryInputs();
|
|
||||||
colorInputs = FindColorInputs();
|
|
||||||
|
|
||||||
Assert.All(countryInputs, i => Browser.Equal("modified valid", () => i.GetAttribute("class")));
|
Browser.True(() => FindCountryInputs().All(i => string.Equals("modified valid", i.GetAttribute("class"))));
|
||||||
Assert.All(colorInputs, i => Browser.Equal("invalid", () => i.GetAttribute("class")));
|
Browser.True(() => FindColorInputs().All(i => string.Equals("invalid", i.GetAttribute("class"))));
|
||||||
|
|
||||||
colorInputs.First().Click();
|
FindColorInputs().First().Click();
|
||||||
colorInputs = FindColorInputs();
|
|
||||||
|
|
||||||
Assert.All(colorInputs, i => Browser.Equal("modified valid", () => i.GetAttribute("class")));
|
Browser.True(() => FindColorInputs().All(i => string.Equals("modified valid", i.GetAttribute("class"))));
|
||||||
|
|
||||||
IReadOnlyCollection<IWebElement> FindCountryInputs() => group.FindElements(By.Name("country"));
|
IReadOnlyCollection<IWebElement> FindCountryInputs() => group.FindElements(By.Name("country"));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue