public void TestTextFilter() { SeleniumExtensions.ExecuteOnMultipleBrowsers(driver => { SignInHelper.SignInWithId(driver); Console.WriteLine("Setting filter to include two games..."); var filter = "in"; FilterHelper.SetTextFilter(driver, filter); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 2, Invariant($"Could not verify filter {filter}")); AssertActiveFilterNotifications(driver, true); CollectionAssert.AssertEqualSets(new[] { GameConstants.RoninSteamName, GameConstants.GodsWillBeWatchingSteamName }, TableHelper.ParseGameTable(driver).Select(g => g.SteamName), Invariant($"Could not verify filter {filter}")); Console.WriteLine("Setting filter to exclude all games..."); filter = Guid.NewGuid().ToString(); FilterHelper.SetTextFilter(driver, filter); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 0, Invariant($"Could not verify filter {filter}")); AssertActiveFilterNotifications(driver, true); Console.WriteLine("Clearing filter..."); FilterHelper.ClearTextFilter(driver); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 3, "Could not verify cleared filter"); AssertActiveFilterNotifications(driver, false); }); }
private static void AssertHltbsUserTable(TableGameInfo[] games, bool mobile) { foreach (var game in games) { Assert.IsTrue(game.Included, Invariant($"Expected all games to be included but the following was not: {game.SteamName}")); Assert.AreEqual(0, game.SteamPlaytime, Invariant($"Expected zero playtime for: {game.SteamName}")); Assert.IsTrue(game.MainPlaytime > 0, Invariant($"Expected main playtime to be greater than zero: {game.SteamName}")); Assert.IsTrue(game.ExtrasPlaytime > 0, Invariant($"Expected extras playtime to be greater than zero: {game.SteamName}")); Assert.IsTrue(game.CompletionistPlaytime > 0, Invariant($"Expected completionist playtime to be greater than zero: {game.SteamName}")); Assert.IsTrue(game.MainPlaytime <= game.ExtrasPlaytime, Invariant($"Main playtime exceeds extras playtime for: {game.SteamName}")); Assert.IsTrue(game.ExtrasPlaytime <= game.CompletionistPlaytime, Invariant($"Extras playtime exceeds completionist playtime for: {game.SteamName}")); Assert.AreEqual(!mobile && (game.SteamName == GameConstants.RoninSteamName), game.VerifiedFinite, Invariant($"Expected verified finite for: {game.SteamName}")); Assert.IsFalse(game.VerifiedCorrelation, Invariant($"Unexpected verified correlation game: {game.SteamName}")); } var expectedGames = new[] { new { SteamName = GameConstants.AFistfulOfGunSteamName, HltbName = mobile ? null : GameConstants.AFistfulOfGunHltbName }, new { SteamName = GameConstants.GodsWillBeWatchingSteamName, HltbName = mobile ? null : GameConstants.GodsWillBeWatchingHltbName }, new { SteamName = GameConstants.RoninSteamName, HltbName = mobile ? null : GameConstants.RoninHltbName } }; CollectionAssert.AssertEqualSets(expectedGames, games.Select(g => new { g.SteamName, g.HltbName }), "Unexpected games in table"); }
private static void TestColumnSort <T>(IWebDriver driver, string headerId, Func <TableGameInfo, T> selector, IEnumerable <TableGameInfo> originalGames, bool reverse) { TableGameInfo[] sortedGames = null; driver.FindElement(By.Id(headerId)).Click(); driver.WaitUntil(d => { sortedGames = TableHelper.ParseGameTable(driver); var sortedValues = sortedGames.Select(selector).ToArray(); return((reverse ? sortedValues.OrderBy(n => n).Reverse() : sortedValues.OrderBy(n => n)).SequenceEqual(sortedValues)); }, Invariant($"Could not verify column sort: {headerId}")); CollectionAssert.AssertEqualSets(originalGames, sortedGames, Invariant($"Column sorting by '{headerId}' affected games in table")); }
public void TestPageNavigation() { SeleniumExtensions.ExecuteOnMultipleBrowsers(driver => { SignInHelper.SignInWithId(driver, UserConstants.SampleSteamId); Assert.IsFalse(NavigationEnabled(driver.FindElement(By.Id(SiteConstants.FirstPageAnchorId))), "Expected first page button to be disabled"); Assert.IsFalse(NavigationEnabled(driver.FindElement(By.Id(SiteConstants.PreviousPageAnchorId))), "Expected previous page button to be disabled"); var firstPageGames = TableHelper.ParseGameTable(driver); Navigate(driver, SiteConstants.NextPageAnchorId); var secondPageGames = TableHelper.ParseGameTable(driver); CollectionAssert.AssertDistinctSets(firstPageGames, secondPageGames, "Common games found in first and second table pages"); Navigate(driver, SiteConstants.FixedPageAnchorIdPrefix + "4"); var fourthPageGames = TableHelper.ParseGameTable(driver); CollectionAssert.AssertDistinctSets(firstPageGames, fourthPageGames, "Common games found in first and fourth table pages"); CollectionAssert.AssertDistinctSets(secondPageGames, fourthPageGames, "Common games found in second and fourth game pages"); Navigate(driver, SiteConstants.LastPageAnchorId); var lastPageGames = TableHelper.ParseGameTable(driver); CollectionAssert.AssertDistinctSets(firstPageGames, lastPageGames, "Common games found in first and last table pages"); CollectionAssert.AssertDistinctSets(secondPageGames, lastPageGames, "Common games found in second and last table pages"); CollectionAssert.AssertDistinctSets(fourthPageGames, lastPageGames, "Common games found in fourth and last table pages"); Assert.IsFalse(NavigationEnabled(driver.FindElement(By.Id(SiteConstants.NextPageAnchorId))), "Expected last page button to be disabled"); Assert.IsFalse(NavigationEnabled(driver.FindElement(By.Id(SiteConstants.LastPageAnchorId))), "Expected next page button to be disabled"); Navigate(driver, SiteConstants.PreviousPageAnchorId); var secondLastPageGames = TableHelper.ParseGameTable(driver); CollectionAssert.AssertDistinctSets(firstPageGames, secondLastPageGames, "Common games found in first and second last table pages"); CollectionAssert.AssertDistinctSets(secondPageGames, secondLastPageGames, "Common games found in second and second last table pages"); CollectionAssert.AssertDistinctSets(fourthPageGames, secondLastPageGames, "Common games found in fourth and second last table pages"); CollectionAssert.AssertDistinctSets(lastPageGames, secondLastPageGames, "Common games found in last and second last table pages"); Navigate(driver, SiteConstants.FirstPageAnchorId); CollectionAssert.AssertEqualSequences(firstPageGames, TableHelper.ParseGameTable(driver), "Inconsistent games in first table page"); foreach (var gamesPerPage in SiteConstants.GamesPerPageOptions) { new SelectElement(driver.FindElement(By.Id(SiteConstants.GamesPerPageSelectId))).SelectByValue(gamesPerPage.ToString(CultureInfo.InvariantCulture)); Assert.AreEqual(gamesPerPage, GetTablePageCount(driver), "Unexpected page game count"); } }); }
public void TestAdvancedFilter() { SeleniumExtensions.ExecuteOnMultipleBrowsers(driver => { SignInHelper.SignInWithId(driver); Console.WriteLine("Setting advanced filter by release year..."); FilterHelper.SetAdvancedFilter(driver, 2015, 2016); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 2, "Could not verify release year advanced filter"); CollectionAssert.AssertEqualSets(new[] { GameConstants.RoninSteamName, GameConstants.AFistfulOfGunSteamName }, TableHelper.ParseGameTable(driver).Select(g => g.SteamName), "Could not verify release year advanced filter"); AssertActiveFilterNotifications(driver, true); FilterHelper.ClearAdvancedFilter(driver); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 3, "Could not verify cleared advanced filter"); AssertActiveFilterNotifications(driver, false); Console.WriteLine("Setting advanced filter by Metacritic score..."); FilterHelper.SetAdvancedFilter(driver, 2014, -1, 60, 70); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 1, "Could not verify metacritic advanced filter"); CollectionAssert.AssertEqualSets(new[] { GameConstants.GodsWillBeWatchingSteamName }, TableHelper.ParseGameTable(driver).Select(g => g.SteamName), "Could not verify metacritic advanced filter"); AssertActiveFilterNotifications(driver, true); Console.WriteLine("Setting advanced filter by genre..."); FilterHelper.SetAdvancedFilter(driver, -1, -1, -1, -1, new [] { GameConstants.ActionGenre }); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 0, "Could not verify metacritic+genre advanced filter"); AssertActiveFilterNotifications(driver, true); Console.WriteLine("Clearing filter (externally)..."); FilterHelper.ClearAdvancedFilterExternally(driver); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 3, "Could not verify externally cleared advanced filter"); AssertActiveFilterNotifications(driver, false); Console.WriteLine("Setting combined filter and advanced filter..."); FilterHelper.SetAdvancedFilter(driver, -1, -1, -1, -1, new[] { GameConstants.ActionGenre }); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 2, "Could not verify genre advanced filter"); FilterHelper.SetTextFilter(driver, "gun"); driver.WaitUntil(d => GameSummaryHelper.GetGameCount(driver) == 1, "Could not verify combined filter and advanced filter"); CollectionAssert.AssertEqualSets(new[] { GameConstants.AFistfulOfGunSteamName }, TableHelper.ParseGameTable(driver).Select(g => g.SteamName), "Could not verify combined filter and advanced filter"); }); }