示例#1
0
        public void VerifyLogOutButton()
        {
            //Arrange
            bool isLoggedIn_Final, isLoggedIn_Initial;

            //Act
            isLoggedIn_Initial = SettingsPage.IsLoggedIn;

            SettingsPage.TapLoginButton();

            isLoggedIn_Final = SettingsPage.IsLoggedIn;

            //Assert
            Assert.IsTrue(isLoggedIn_Initial);
            Assert.IsFalse(isLoggedIn_Final);
        }
示例#2
0
        public async Task VerifyChartSettingsOptions()
        {
            //Arrange

            //Assert
            Assert.AreEqual(TrendsChartOption.All, SettingsPage.CurrentTrendsChartOption);

            //Act
            await SettingsPage.SetTrendsChartOption(TrendsChartOption.JustUniques).ConfigureAwait(false);

            //Assert
            Assert.AreEqual(TrendsChartOption.JustUniques, SettingsPage.CurrentTrendsChartOption);

            //Act
            await SettingsPage.SetTrendsChartOption(TrendsChartOption.All).ConfigureAwait(false);

            //Assert
            Assert.AreEqual(TrendsChartOption.All, SettingsPage.CurrentTrendsChartOption);

            //Act
            await SettingsPage.SetTrendsChartOption(TrendsChartOption.NoUniques);

            //Assert
            Assert.AreEqual(TrendsChartOption.NoUniques, SettingsPage.CurrentTrendsChartOption);

            //Act
            SettingsPage.TapBackButton();

            await RepositoryPage.WaitForPageToLoad().ConfigureAwait(false);

            await RepositoryPage.WaitForNoPullToRefreshIndicator().ConfigureAwait(false);

            var visibleRepositories = RepositoryPage.VisibleCollection;

            RepositoryPage.TapRepository(visibleRepositories.First().Name);

            await TrendsPage.WaitForPageToLoad().ConfigureAwait(false);

            //Assert
            Assert.IsTrue(TrendsPage.IsSeriesVisible(TrendsChartTitleConstants.TotalViewsTitle));
            Assert.IsTrue(TrendsPage.IsSeriesVisible(TrendsChartTitleConstants.TotalClonesTitle));
            Assert.IsFalse(TrendsPage.IsSeriesVisible(TrendsChartTitleConstants.UniqueViewsTitle));
            Assert.IsFalse(TrendsPage.IsSeriesVisible(TrendsChartTitleConstants.UniqueClonesTitle));
        }
示例#3
0
        void EnsureGitHubUserViewOpensBrowser_LoggedIn()
        {
            //Arrange
            var aliasLabelText = SettingsPage.GitHubAliasLabelText;
            var nameLabelText  = SettingsPage.GitHubAliasNameText;

            //Act
            SettingsPage.TapGitHubUserView();

            //Assert
            Assert.AreEqual("@" + LoggedInUserAlias, aliasLabelText);
            Assert.AreEqual(LoggedInUserName, nameLabelText);

            if (App is iOSApp)
            {
                SettingsPage.WaitForBrowserToOpen();
                Assert.IsTrue(SettingsPage.IsBrowserOpen);
            }
        }
示例#4
0
        public async Task VerifyThemePicker()
        {
            //Arrange
            PreferredTheme preferredTheme_Initial = SettingsPage.PreferredTheme;
            PreferredTheme preferredTheme_Light, preferredTheme_Dark;

            //Act
            await SettingsPage.SelectTheme(PreferredTheme.Light).ConfigureAwait(false);

            preferredTheme_Light = SettingsPage.PreferredTheme;

            await SettingsPage.SelectTheme(PreferredTheme.Dark).ConfigureAwait(false);

            preferredTheme_Dark = SettingsPage.PreferredTheme;

            //Assert
            Assert.AreEqual(PreferredTheme.Default, preferredTheme_Initial);
            Assert.AreEqual(PreferredTheme.Light, preferredTheme_Light);
            Assert.AreEqual(PreferredTheme.Dark, preferredTheme_Dark);
        }
示例#5
0
        public async Task EnsureCreatedByLabelOpensBrowser()
        {
            //Arrange

            //Act
            SettingsPage.TapCreatedByLabel();

            //Assert
            if (App is iOSApp)
            {
                SettingsPage.WaitForBrowserToOpen();
                Assert.IsTrue(SettingsPage.IsBrowserOpen);
            }
            else
            {
                await Task.Delay(2000).ConfigureAwait(false);

                App.Screenshot("Browswer Opened");
            }
        }
示例#6
0
        public async Task VerifyNotificationsSwitch()
        {
            //Arrange
            bool areNotificationsEnabled_Initial = SettingsPage.AreNotificationsEnabled;
            bool shouldSendNotifications_Initial = SettingsPage.ShouldSendNotifications;
            bool shouldSendNotifications_Final, areNotificationsEnabled_Final;

            //Act
            SettingsPage.ToggleRegisterForNotificationsSwitch();

            await Task.Delay(5000).ConfigureAwait(false);

            shouldSendNotifications_Final = SettingsPage.ShouldSendNotifications;
            areNotificationsEnabled_Final = SettingsPage.AreNotificationsEnabled;

            //Assert
            Assert.IsFalse(shouldSendNotifications_Initial);
            Assert.IsFalse(areNotificationsEnabled_Initial);

            Assert.IsTrue(shouldSendNotifications_Final);
            Assert.IsTrue(areNotificationsEnabled_Final);
        }
示例#7
0
        void EnsureGitHubUserViewOpensBrowser_Demo()
        {
            //Arrange
            string nameLabelText, aliasLabelText;

            //Act
            if (SettingsPage.GitHubButtonText is GitHubLoginButtonConstants.Disconnect)
            {
                SettingsPage.TapLoginButton();
            }

            SettingsPage.TapGitHubUserView();

            //Assert
            if (App is iOSApp)
            {
                Assert.IsFalse(SettingsPage.IsBrowserOpen);
            }

            //Act
            SettingsPage.TapDemoModeButton();
            SettingsPage.WaitForGitHubLoginToComplete();

            aliasLabelText = SettingsPage.GitHubAliasLabelText;
            nameLabelText  = SettingsPage.GitHubAliasNameText;

            SettingsPage.TapGitHubUserView();

            //Assert
            Assert.AreEqual("@" + DemoDataConstants.Alias, aliasLabelText);
            Assert.AreEqual(DemoDataConstants.Name, nameLabelText);

            if (App is iOSApp)
            {
                SettingsPage.WaitForBrowserToOpen();
                Assert.IsTrue(SettingsPage.IsBrowserOpen);
            }
        }
示例#8
0
        void EnsureGitHubUserViewOpensBrowser_Demo()
        {
            //Arrange
            string nameLabelText, aliasLabelText;

            //Act
            SettingsPage.WaitForGitHubLoginToComplete();

            aliasLabelText = SettingsPage.GitHubAliasLabelText;
            nameLabelText  = SettingsPage.GitHubAliasNameText;

            SettingsPage.TapGitHubUserView();

            //Assert
            Assert.AreEqual("@" + DemoUserConstants.Alias, aliasLabelText);
            Assert.AreEqual(DemoUserConstants.Name, nameLabelText);

            if (App is iOSApp)
            {
                SettingsPage.WaitForBrowserToOpen();
                Assert.IsTrue(SettingsPage.IsBrowserOpen);
            }
        }
示例#9
0
        public async Task VerifyNoRepositoriesAfterLogOut()
        {
            //Arrange

            //Act
            RepositoryPage.TapSettingsButton();
            await SettingsPage.WaitForPageToLoad().ConfigureAwait(false);

            //Assert
            Assert.AreEqual(GitHubLoginButtonConstants.Disconnect, SettingsPage.LoginTitleText);

            //Act
            SettingsPage.TapLoginButton();
            SettingsPage.WaitForGitHubLogoutToComplete();

            //Assert
            Assert.AreEqual(GitHubLoginButtonConstants.ConnectToGitHub, SettingsPage.LoginTitleText);

            //Act
            SettingsPage.TapBackButton();

            //Assert
            await WelcomePage.WaitForPageToLoad().ConfigureAwait(false);
        }
示例#10
0
        public async Task ReferringSitesPageDoesLoad()
        {
            //Arrange
            IReadOnlyCollection <ReferringSiteModel> referringSiteList = ReferringSitesPage.VisibleCollection;
            var  referringSite = referringSiteList.First();
            bool isUrlValid    = referringSite.IsReferrerUriValid;

            //Assert
            Assert.IsTrue(App.Query(referringSite.Referrer).Any());

            //Act
            if (isUrlValid)
            {
                App.Tap(referringSite.Referrer);
                await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);
            }

            //Assert
            if (isUrlValid && App is iOSApp)
            {
                SettingsPage.WaitForBrowserToOpen();
                Assert.IsTrue(ReferringSitesPage.IsBrowserOpen);
            }
        }
示例#11
0
        public override async Task BeforeEachTest()
        {
            await base.BeforeEachTest();

            RepositoryPage.TapSettingsButton();

            await SettingsPage.WaitForPageToLoad();

            SettingsPage.WaitForGitHubLoginToComplete();

            //Assert
            Assert.AreEqual(GitHubLoginButtonConstants.Disconnect, SettingsPage.LoginTitleText);

            //Act
            SettingsPage.TapLoginButton();
            SettingsPage.WaitForGitHubLogoutToComplete();

            //Assert
            Assert.AreEqual(GitHubLoginButtonConstants.ConnectToGitHub, SettingsPage.LoginTitleText);

            SettingsPage.TapBackButton();

            await WelcomePage.WaitForPageToLoad();
        }
示例#12
0
        public async Task VerifyNotificationsSwitch()
        {
            //Arrange
            bool areNotificationsEnabled_Initial = SettingsPage.AreNotificationsEnabled;
            bool shouldSendNotifications_Initial = SettingsPage.ShouldSendNotifications;
            bool shouldSendNotifications_Final, areNotificationsEnabled_Final;

            //Act
            SettingsPage.ToggleRegisterForNotificationsSwitch();

            await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);

            SettingsPage.WaitForNoOperatingSystemNotificationDiaglog();

            shouldSendNotifications_Final = SettingsPage.ShouldSendNotifications;
            areNotificationsEnabled_Final = SettingsPage.AreNotificationsEnabled;

            //Assert
            Assert.IsFalse(shouldSendNotifications_Initial);
            Assert.IsTrue(areNotificationsEnabled_Initial);

            Assert.IsTrue(shouldSendNotifications_Final);
            Assert.IsTrue(areNotificationsEnabled_Final);
        }
示例#13
0
        public async Task AppStoreScreenShotsTest()
        {
            //Arrange
            var screenRect = App.Query().First().Rect;

            //Act
            await OnboardingPage.WaitForPageToLoad().ConfigureAwait(false);

            App.Screenshot("GitTrends Onboarding Page");

            await OnboardingPage.MoveToNextPage().ConfigureAwait(false);

            App.Screenshot("Charts Onboarding Page");

            await OnboardingPage.MoveToNextPage().ConfigureAwait(false);

            App.Screenshot("Notifications Onboarding Page");

            await OnboardingPage.MoveToNextPage().ConfigureAwait(false);

            App.Screenshot("Connect to GitHub Onboarding Page");

            await SetupLoggedInUser().ConfigureAwait(false);

            App.Screenshot("Repository Page Light");

            RepositoryPage.TapRepository(nameof(GitTrends));

            await TrendsPage.WaitForPageToLoad().ConfigureAwait(false);

            App.TouchAndHoldCoordinates(screenRect.CenterX, screenRect.CenterY);
            App.Screenshot("Trends Page Light");

            TrendsPage.TapReferringSitesButton();
            await ReferringSitesPage.WaitForPageToLoad().ConfigureAwait(false);

            App.Screenshot("Referring Sites Page Light");

            ReferringSitesPage.ClosePage();
            await TrendsPage.WaitForPageToLoad().ConfigureAwait(false);

            TrendsPage.TapBackButton();
            await RepositoryPage.WaitForPageToLoad().ConfigureAwait(false);

            RepositoryPage.TapSettingsButton();
            await SettingsPage.WaitForPageToLoad().ConfigureAwait(false);

            App.Screenshot("Settings Page Light");

            await SettingsPage.SelectTheme(PreferredTheme.Dark).ConfigureAwait(false);

            App.Screenshot("Settings Page Dark");

            SettingsPage.TapBackButton();
            await RepositoryPage.WaitForPageToLoad().ConfigureAwait(false);

            App.Screenshot("Repository Page Dark");

            RepositoryPage.TapRepository(nameof(GitTrends));

            await TrendsPage.WaitForPageToLoad().ConfigureAwait(false);

            App.TouchAndHoldCoordinates(screenRect.CenterX, screenRect.CenterY);
            App.Screenshot("Trends Page Dark");

            TrendsPage.TapReferringSitesButton();
            await ReferringSitesPage.WaitForPageToLoad().ConfigureAwait(false);

            App.Screenshot("Referring Sites Page Dark");

            //Assert
        }
示例#14
0
        public async Task VerifyLanguagePicker()
        {
            //Arrange
            string?preferredLanguage_Initial, preferredLanguage_Final;
            string gitHubNameText, gitHubAliasText, tryDemoButtonText, loginTitleLabelText_Disconnect, loginTitleLabelText_Connect,
                   themeTitleLabelText, languageTitleLabelText, settingsPageTitle, copyrightLabelTitleLabelText, registerForNotificationsTitleLabelText,
                   preferredChartsTitleTitleLabelText, preferredChartsAllTitleLabelText, preferredChartsNoUniquesTitleLabelText, preferredChartsOnlyUniquesTitleLabelText;


            foreach (var preferredLanguageKeyValuePair in CultureConstants.CulturePickerOptions.Reverse())
            {
                //Act
                preferredLanguage_Initial = SettingsPage.PreferredLanguage;

                await SettingsPage.SelectLanguage(preferredLanguageKeyValuePair.Value).ConfigureAwait(false);

                preferredLanguage_Final = SettingsPage.PreferredLanguage;

                settingsPageTitle                      = SettingsPage.PageTitle;
                gitHubNameText                         = SettingsPage.GitHubNameLabelText;
                gitHubAliasText                        = SettingsPage.GitHubAliasLabelText;
                themeTitleLabelText                    = SettingsPage.ThemeTitleLabelText;
                languageTitleLabelText                 = SettingsPage.LangageTitleLabelText;
                loginTitleLabelText_Disconnect         = SettingsPage.LoginTitleText;
                copyrightLabelTitleLabelText           = SettingsPage.CopyrightLabelText;
                preferredChartsTitleTitleLabelText     = SettingsPage.PreferredChartLabelText;
                registerForNotificationsTitleLabelText = SettingsPage.RegisterForNotificationsTitleLabelText;

                preferredChartsAllTitleLabelText         = TrendsChartConstants.TrendsChartTitles[TrendsChartOption.All];
                preferredChartsNoUniquesTitleLabelText   = TrendsChartConstants.TrendsChartTitles[TrendsChartOption.NoUniques];
                preferredChartsOnlyUniquesTitleLabelText = TrendsChartConstants.TrendsChartTitles[TrendsChartOption.JustUniques];

                SettingsPage.TapLoginButton();
                tryDemoButtonText           = SettingsPage.TryDemoButtonText;
                loginTitleLabelText_Connect = SettingsPage.LoginTitleText;

                await login().ConfigureAwait(false);

                SettingsPage.TapBackButton();

                //Assert
                Assert.AreEqual(PageTitles.RepositoryPage, RepositoryPage.PageTitle);

                Assert.AreNotEqual(preferredLanguage_Final, preferredLanguage_Initial);
                Assert.AreEqual(preferredLanguage_Final, string.IsNullOrWhiteSpace(preferredLanguageKeyValuePair.Key) ? null : preferredLanguageKeyValuePair.Key);

                Assert.AreEqual(PageTitles.SettingsPage, settingsPageTitle);
                Assert.AreEqual(SettingsPageConstants.Theme, themeTitleLabelText);
                Assert.AreEqual(GitHubLoginButtonConstants.TryDemo, tryDemoButtonText);
                Assert.AreEqual(SettingsPageConstants.Language, languageTitleLabelText);
                Assert.AreEqual(GitHubLoginButtonConstants.Disconnect, loginTitleLabelText_Disconnect);
                Assert.AreEqual(GitHubLoginButtonConstants.ConnectToGitHub, loginTitleLabelText_Connect);
                Assert.AreEqual(SettingsPageConstants.RegisterForNotifications, registerForNotificationsTitleLabelText);
                Assert.AreEqual(SettingsPageConstants.PreferredChartSettingsLabelText, preferredChartsTitleTitleLabelText);

                Assert.IsTrue(copyrightLabelTitleLabelText.Contains(SettingsPageConstants.CreatedBy));

                Assert.AreEqual(TrendsChartTitleConstants.All, preferredChartsAllTitleLabelText);
                Assert.AreEqual(TrendsChartTitleConstants.NoUniques, preferredChartsNoUniquesTitleLabelText);
                Assert.AreEqual(TrendsChartTitleConstants.JustUniques, preferredChartsOnlyUniquesTitleLabelText);

                if (UserType is UserType.Demo)
                {
                    Assert.AreEqual(DemoUserConstants.Name, gitHubNameText);
                    Assert.AreEqual("@" + DemoUserConstants.Alias, gitHubAliasText);
                }

                Assert.AreEqual(LoggedInUserName, gitHubNameText);
                Assert.AreEqual("@" + LoggedInUserAlias, gitHubAliasText);

                //Act
                RepositoryPage.TapSettingsButton();
                await SettingsPage.WaitForPageToLoad().ConfigureAwait(false);
            }
            ;

            async Task login()
            {
                if (UserType is UserType.Demo)
                {
                    SettingsPage.TapTryDemoButton();
                }
                else if (UserType is UserType.LoggedIn)
                {
                    await LoginToGitHub().ConfigureAwait(false);
                }
            }
        }