Fix MonoSanityTest instability

This commit is contained in:
Steve Sanderson 2018-02-14 17:54:46 +00:00
parent b7bbacf4ed
commit 86500ce761
4 changed files with 24 additions and 40 deletions

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="aspnetcore-dev" value="https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json" />
</packageSources>
</configuration>

View File

@ -66,6 +66,7 @@
buttons[i].disabled = false;
}
el('loadingIndicator').style.display = 'none';
window.isTestReady = true; // The Xunit code polls until this is true
});
el('addNumbers').onsubmit = function (evt) {

View File

@ -9,7 +9,6 @@
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.0.1" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="2.1.0-preview2-30093" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
<PackageReference Include="Selenium.WebDriver" Version="3.8.0" />
<PackageReference Include="xunit" Version="2.3.1" />

View File

@ -3,38 +3,41 @@
using Microsoft.AspNetCore.Blazor.E2ETest.Infrastructure;
using Microsoft.AspNetCore.Blazor.E2ETest.Infrastructure.ServerFixtures;
using Microsoft.AspNetCore.Testing.xunit;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;
using Xunit;
namespace Microsoft.AspNetCore.Blazor.E2ETest.Tests
{
// Currently skipping all MonoSanityTests because, since the latest Chrome update, they
// are failing intermittently. Need to investigate what is wrong about how these tests
// are interacting with the browser.
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
[OSSkipCondition(OperatingSystems.Windows)]
public class MonoSanityTest : ServerTestBase<AspNetSiteServerFixture>
{
public MonoSanityTest(BrowserFixture browserFixture, AspNetSiteServerFixture serverFixture)
: base(browserFixture, serverFixture)
{
serverFixture.BuildWebHostMethod = MonoSanity.Program.BuildWebHost;
Navigate("/", noReload: true);
WaitUntilMonoRunningInBrowser();
}
[ConditionalFact]
private void WaitUntilMonoRunningInBrowser()
{
new WebDriverWait(Browser, TimeSpan.FromSeconds(30)).Until(driver =>
{
return ((IJavaScriptExecutor)driver)
.ExecuteScript("return window.isTestReady;");
});
}
[Fact]
public void HasTitle()
{
Navigate("/", noReload: true);
Assert.Equal("Mono sanity check", Browser.Title);
}
[ConditionalFact]
[Fact]
public void CanAddNumbers()
{
Navigate("/", noReload: true);
SetValue(Browser, "addNumberA", "1001");
SetValue(Browser, "addNumberB", "2002");
Browser.FindElement(By.CssSelector("#addNumbers button")).Click();
@ -42,11 +45,9 @@ namespace Microsoft.AspNetCore.Blazor.E2ETest.Tests
Assert.Equal("3003", GetValue(Browser, "addNumbersResult"));
}
[ConditionalFact]
[Fact]
public void CanRepeatString()
{
Navigate("/", noReload: true);
SetValue(Browser, "repeatStringStr", "Test");
SetValue(Browser, "repeatStringCount", "5");
Browser.FindElement(By.CssSelector("#repeatString button")).Click();
@ -54,31 +55,27 @@ namespace Microsoft.AspNetCore.Blazor.E2ETest.Tests
Assert.Equal("TestTestTestTestTest", GetValue(Browser, "repeatStringResult"));
}
[ConditionalFact]
[Fact]
public void CanReceiveDotNetExceptionInJavaScript()
{
Navigate("/", noReload: true);
SetValue(Browser, "triggerExceptionMessage", "Hello from test");
Browser.FindElement(By.CssSelector("#triggerException button")).Click();
Assert.Contains("Hello from test", GetValue(Browser, "triggerExceptionMessageStackTrace"));
}
[ConditionalFact]
[Fact]
public void CanCallJavaScriptFromDotNet()
{
Navigate("/", noReload: true);
SetValue(Browser, "callJsEvalExpression", "getUserAgentString()");
Browser.FindElement(By.CssSelector("#callJs button")).Click();
var result = GetValue(Browser, "callJsResult");
Assert.StartsWith(".NET received: Mozilla", result);
}
[ConditionalFact]
[Fact]
public void CanReceiveJavaScriptExceptionInDotNet()
{
Navigate("/", noReload: true);
SetValue(Browser, "callJsEvalExpression", "triggerJsException()");
Browser.FindElement(By.CssSelector("#callJs button")).Click();
var result = GetValue(Browser, "callJsResult");
@ -88,43 +85,36 @@ namespace Microsoft.AspNetCore.Blazor.E2ETest.Tests
Assert.Contains("at triggerJsException", result);
}
[ConditionalFact]
[Fact]
public void CanEvaluateJsExpressionThatResultsInNull()
{
Navigate("/", noReload: true);
SetValue(Browser, "callJsEvalExpression", "null");
Browser.FindElement(By.CssSelector("#callJs button")).Click();
var result = GetValue(Browser, "callJsResult");
Assert.Equal(".NET received: (NULL)", result);
}
[ConditionalFact]
[Fact]
public void CanEvaluateJsExpressionThatResultsInUndefined()
{
Navigate("/", noReload: true);
SetValue(Browser, "callJsEvalExpression", "console.log('Not returning anything')");
Browser.FindElement(By.CssSelector("#callJs button")).Click();
var result = GetValue(Browser, "callJsResult");
Assert.Equal(".NET received: (NULL)", result);
}
[ConditionalFact]
[Fact]
public void CanCallJsFunctionsWithoutBoxing()
{
Navigate("/", noReload: true);
SetValue(Browser, "callJsNoBoxingNumberA", "108");
SetValue(Browser, "callJsNoBoxingNumberB", "4");
Browser.FindElement(By.CssSelector("#callJsNoBoxing button")).Click();
Assert.Equal(".NET received: 27", GetValue(Browser, "callJsNoBoxingResult"));
}
[ConditionalFact]
[Fact]
public void CanCallJsFunctionsWithoutBoxingAndReceiveException()
{
Navigate("/", noReload: true);
SetValue(Browser, "callJsNoBoxingNumberA", "1");
SetValue(Browser, "callJsNoBoxingNumberB", "0");
Browser.FindElement(By.CssSelector("#callJsNoBoxing button")).Click();