// 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. using Microsoft.AspNetCore.Blazor.E2ETest.Infrastructure; using Microsoft.AspNetCore.Blazor.E2ETest.Infrastructure.ServerFixtures; using OpenQA.Selenium; using System; using System.Linq; using Xunit; using Xunit.Abstractions; namespace Microsoft.AspNetCore.Blazor.E2ETest.Tests { public class PerformanceTest : ServerTestBase> { public PerformanceTest( BrowserFixture browserFixture, DevHostServerFixture serverFixture, ITestOutputHelper output) : base(browserFixture, serverFixture, output) { Navigate("/", noReload: true); } [Fact] public void HasTitle() { Assert.Equal("E2EPerformance", Browser.Title); } [Fact] public void BenchmarksRunWithoutError() { // In CI, we only verify that the benchmarks run without throwing any // errors. To get actual perf numbers, you must run the E2EPerformance // site manually. var verifyOnlyLabel = Browser.FindElement(By.XPath("//label[contains(text(), 'Verify only')]/input")); verifyOnlyLabel.Click(); var runAllButton = Browser.FindElement(By.CssSelector("button.btn-success.run-button")); runAllButton.Click(); // The "run" button goes away while the benchmarks execute, then it comes back WaitAssert.False(() => runAllButton.Displayed); WaitAssert.True( () => runAllButton.Displayed || Browser.FindElements(By.CssSelector(".benchmark-error")).Any(), TimeSpan.FromSeconds(60)); var finishedBenchmarks = Browser.FindElements(By.CssSelector(".benchmark-idle")); var failedBenchmarks = Browser.FindElements(By.CssSelector(".benchmark-error")); Assert.NotEmpty(finishedBenchmarks); Assert.Empty(failedBenchmarks); } } }