示例#1
0
        public void User_can_add_new_page()
        {
            var browser          = default(Browser);
            var page             = default(HomePage);
            var existingTabNames = default(List <string>);

            "Given a new user".Context(() =>
            {
                BrowserHelper.ClearCookies();
                browser = BrowserHelper.OpenNewBrowser(Urls.Homepage);
                browser.WaitForAsyncPostbackComplete(10000);
            });

            "When user clicks on the add new page link".Do(() =>
            {
                page             = browser.Page <HomePage>();
                existingTabNames = page.TabLinks.Select(t => t.Text).ToList();
                existingTabNames.Add(page.CurrentTab.Text);
                page.AddNewTab();
                browser.WaitForAsyncPostbackComplete(10000);
            });

            "Then it adds a new empty page and makes the page current page".Assert(() =>
            {
                using (browser)
                {
                    page = browser.Page <HomePage>();
                    Assert.DoesNotContain(page.CurrentTab.Text, existingTabNames);
                }
            });
        }
示例#2
0
        public void User_can_change_widget_title()
        {
            var browser  = default(Browser);
            var widgetId = default(string);
            var newTitle = Guid.NewGuid().ToString();

            "Given a user with a page having some widgets".Context(() =>
            {
                BrowserHelper.ClearCookies();
                browser = BrowserHelper.OpenNewBrowser(Urls.Homepage);
            });
            "When user chagnes title of a widget".Do(() =>
            {
                using (browser)
                {
                    var page   = browser.Page <HomePage>();
                    var widget = page.Widgets.First();
                    widgetId   = widget.Element.Id;

                    widget.EditTitle();
                    widget.SetNewTitle(newTitle);

                    Thread.Sleep(1000);
                }
            });
            "Then it should persist the new title on next visit".Assert(() =>
            {
                using (browser = BrowserHelper.OpenNewBrowser(Urls.Homepage))
                {
                    var widget = browser.Control <WidgetControl>(widgetId);
                    Assert.Equal(newTitle, widget.Title);
                }
            });
        }
示例#3
0
        public void User_can_drag_widget()
        {
            var browser  = default(Browser);
            var page     = default(HomePage);
            var widget   = default(WidgetControl);
            var position = default(int[]);

            BrowserHelper.ClearCookies();

            "Given a new user on a page full of widgets".Context(() =>
            {
                browser = BrowserHelper.OpenNewBrowser(Urls.Homepage);
                browser.WaitForAsyncPostbackComplete(10000);
            });
            "When user drags a widget from first column".Do(() =>
            {
                page     = browser.Page <HomePage>();
                widget   = page.Widgets.First();
                position = browser.FindPosition(widget.Element);

                // Start the drag
                var mouseDownEvent = new NameValueCollection();
                mouseDownEvent.Add("button", "1");
                mouseDownEvent.Add("clientX", "0");
                mouseDownEvent.Add("clientY", "0");
                widget.Header.FireEventNoWait("onmousedown", mouseDownEvent);

                Thread.Sleep(500);

                // Move to the second column widget zone container
                var widgetZones       = browser.Divs.Filter(Find.ByClass("widget_zone_container"));
                var aWidgetZone       = widgetZones[0];
                var widthOfWidgetZone = int.Parse(aWidgetZone.GetAttributeValue("clientWidth"));

                for (var x = 0; x <= (widthOfWidgetZone * 1.5); x += (widthOfWidgetZone / 4))
                {
                    var eventProperties = new NameValueCollection();
                    eventProperties.Add("button", "1");
                    eventProperties.Add("clientX", x.ToString());
                    eventProperties.Add("clientY", "20");

                    //browser.NativeDocument.Body.FireEvent("onmousemove", eventProperties);
                    widget.Header.FireEventNoWait("onmousemove", eventProperties);
                    Thread.Sleep(500);
                }
            });
            "Then it should move out of the column and be floating".Assert(() =>
            {
                using (browser)
                {
                    var newPosition = browser.FindPosition(widget.Element);

                    Assert.NotEqual(newPosition[0], position[0]);
                    Assert.NotEqual(newPosition[1], position[1]);
                }
            });
        }
示例#4
0
        public void Visit_Homepage_as_new_user_and_verify_default_widgets()
        {
            var browser = default(Browser);

            "Given a new user".Context(() =>
            {
                BrowserHelper.ClearCookies();
            });
            "When user visits the homepage".Do(() =>
            {
                browser = BrowserHelper.OpenNewBrowser(Urls.Homepage);
            });
            "Then it should show the default widgets".Assert(() =>
            {
                using (browser)
                {
                    var expectedWidgets = new string[]
                    {
                        "How to of the Day",
                        "Omar's Blog (Fast RSS)",
                        "Book on building Dropthings",
                        "Twitter",
                        "Fast Flickr",
                        "Digg - Silverlight Widget",
                        "BBC World",
                        "Weather",
                        "CNN.com",
                        "Travelocity",
                        "Stock",
                        "HTML"
                    };

                    var homepage = browser.Page <HomePage>();

                    Assert.Equal(expectedWidgets.Length, homepage.Widgets.Count);

                    Assert.True(
                        expectedWidgets.All(
                            widgetTitle =>
                            homepage.Widgets.Any(
                                control => string.Compare(control.Title, widgetTitle, true) == 0)));
                }
            });
        }
示例#5
0
        public void User_can_delete_widget()
        {
            var browser         = default(Browser);
            var page            = default(HomePage);
            var deletedWidgetId = default(string);

            "Given a user having some widgets on his page".Context(() =>
            {
                BrowserHelper.ClearCookies();
                browser = BrowserHelper.OpenNewBrowser(Urls.Homepage);
                browser.WaitForAsyncPostbackComplete(10000);
            });

            "When user deletes one of the widget".Do(() =>
            {
                page            = browser.Page <HomePage>();
                var rssWidget   = RssWidgetControl.GetTheFirstRssWidget(page);
                deletedWidgetId = rssWidget.Element.Id;
                rssWidget.Close();
                browser.WaitForAsyncPostbackComplete(10000);
            });

            "Then it should remove the widget from the page".Assert(() =>
            {
                using (browser)
                {
                    Assert.False(browser.Element(deletedWidgetId).Exists);
                }
            });

            "Then it should not come on revisit".Assert(() =>
            {
                using (browser)
                {
                    browser.Refresh();
                    browser.WaitForAsyncPostbackComplete(10000);

                    Assert.False(browser.Element(deletedWidgetId).Exists);
                }
            });
        }
示例#6
0
        public void User_can_change_rss_widget_setting()
        {
            var browser   = default(Browser);
            var page      = default(HomePage);
            var rssWidget = default(RssWidgetControl);

            "Given a new user on the homepage having a RSS widget".Context(() =>
            {
                BrowserHelper.ClearCookies();
                browser = BrowserHelper.OpenNewBrowser(Urls.Homepage);
                browser.WaitForAsyncPostbackComplete(10000);

                page      = browser.Page <HomePage>();
                rssWidget = RssWidgetControl.GetTheFirstRssWidget(page);
            });

            "When user clicks on the edit link of the widget".Do(() =>
            {
                rssWidget.EditLink.Click();
                browser.WaitForAsyncPostbackComplete(10000);
            });

            "Then it should show the settings area of the widget".Assert(() =>
            {
                using (browser)
                {
                    Assert.True(rssWidget.UrlTextBox.Exists);
                    Assert.Equal("http://www.wikihow.com/feed.rss", rssWidget.UrlTextBox.Text);
                    Assert.Equal("3", rssWidget.CountDropdown.SelectedItem);
                }
            });

            "Then it should allow user to change the number of feeds to show".Assert(() =>
            {
                using (browser)
                {
                    rssWidget.CountDropdown.Select("10");
                    rssWidget.SaveButton.Click();

                    browser.WaitForAsyncPostbackComplete(10000);
                    Assert.Equal(10, rssWidget.FeedLinks.Count);
                }
            });

            "Then it should persist the changes on next page load".Assert(() =>
            {
                using (browser)
                {
                    // Make changes
                    rssWidget.CountDropdown.Select("5");
                    rssWidget.SaveButton.Click();

                    browser.WaitForAsyncPostbackComplete(10000);

                    // Reload the page
                    browser.GoTo(Urls.Homepage);
                    //Thread.Sleep(5000);
                    browser.WaitForAsyncPostbackComplete(10000);

                    page      = browser.Page <HomePage>();
                    rssWidget = RssWidgetControl.GetTheFirstRssWidget(page);

                    // Ensure the changes are reflected
                    Assert.Equal(5, rssWidget.FeedLinks.Count);
                }
            });
        }
示例#7
0
        public void User_can_signup_to_permanently_save_page_setup()
        {
            var browser   = default(Browser);
            var homepage  = default(HomePage);
            var loginPage = default(LoginPage);

            var loginName = default(string);
            var password  = default(string);

            var removedWidgetTitle = default(string);

            "Given a new user who has some widgets".Context(() =>
            {
                BrowserHelper.ClearCookies();
                browser  = BrowserHelper.OpenNewBrowser(Urls.Homepage);
                homepage = browser.Page <HomePage>();
            });

            "When the user signs up after making some changes to the page".Do(() =>
            {
                removedWidgetTitle = homepage.Widgets.First().Title;
                homepage.Widgets.First().Close();
                Thread.Sleep(5000);
                browser.WaitForAsyncPostbackComplete(10000);


                browser.GoTo(Urls.LoginPage);
                loginPage = browser.Page <LoginPage>();

                loginName = Guid.NewGuid().ToString();
                loginPage.Email.TypeText(loginName);
                password = Guid.NewGuid().ToString();
                loginPage.Password.TypeText(password);
                loginPage.RegisterButton.Click();

                browser.WaitForComplete();
                homepage = browser.Page <HomePage>();
            });

            "It should save the changes against that user".Assert(() =>
            {
                using (browser)
                {
                    Assert.False(browser.ContainsText(removedWidgetTitle));
                }
            });

            "It should allow user to login to that account".Assert(() =>
            {
                using (browser)
                {
                    BrowserHelper.ClearCookies();
                    browser.GoTo(Urls.LoginPage);

                    loginPage = browser.Page <LoginPage>();
                    loginPage.Email.TypeText(loginName);
                    loginPage.Password.TypeText(password);
                    loginPage.LoginButton.Click();
                    browser.WaitForComplete();

                    Assert.False(browser.ContainsText(removedWidgetTitle));
                }
            });
        }