public void TestInterruptTourByPan() { IJavaScriptExecutor js = Driver as IJavaScriptExecutor; Thread.Sleep(2000); js.ExecuteScript("activateTour(tours[3]);"); // running test tour Thread.Sleep(500); var state1 = js.ExecuteScript("return {state: tour.state};") as Dictionary<string, object>; IWebElement vc = Driver.FindElement(By.Id("vc")); pan = new ActionsExtension(Driver); pan.MoveToElement(vc, vc.Size.Width / 2, vc.Size.Height / 2); pan.ClickAndHold(); pan.MoveByOffset(-50, 20); pan.Release(); pan.Perform(); //preforming panning pan.SetDefault(); // return mouse position to default var state2 = js.ExecuteScript("return {state: tour.state}") as Dictionary<string, object>; Thread.Sleep(500); Assert.AreEqual("play", state1["state"].ToString()); Assert.AreEqual("pause", state2["state"].ToString()); }
public void TestAxisPan() { IJavaScriptExecutor js = Driver as IJavaScriptExecutor; IWebElement axis = Driver.FindElement(By.Id("axis")); var previousVisible = (Driver as IJavaScriptExecutor).ExecuteScript("return $('#vc').virtualCanvas('getViewport').visible;") as Dictionary<string, object>; //saving initial visible region ActionsExtension pan = new ActionsExtension(Driver); pan.MoveToElement(axis,axis.Size.Width/2,axis.Size.Height/2); pan.ClickAndHold(); pan.MoveByOffset(-50, 20); pan.Release(); pan.Perform(); //preforming panning pan.SetDefault(); // return mouse position to default Thread.Sleep(3000); //waiting the animation to complete var newVisible = (Driver as IJavaScriptExecutor).ExecuteScript("return $('#vc').virtualCanvas('getViewport').visible;") as Dictionary<string, object>; //saving new visible region after pan Assert.AreEqual(Convert.ToDouble(previousVisible["centerY"]), Convert.ToDouble(newVisible["centerY"])); //the Y must not be changed, as the axis pan is only horizontal Assert.IsTrue(Convert.ToDouble(previousVisible["centerX"]) < Convert.ToDouble(newVisible["centerX"])); //the X must ascend }
public void TestGestures_MouseActivity_GestureBodyIsCorrect() { Dictionary<string, object> offset, scale; const int offsetX = 100; const int offsetY = 100; // Make pan gesture and check, that body of gesture is correct. action = new ActionsExtension(Driver); action.MoveByOffset(offsetX, offsetY).Perform(); action.ClickAndHold(); action.MoveByOffset(offsetX, offsetY); action.Release(); action.Perform(); vcPageObj.WaitAnimation(); offset = ExecuteScriptGetJson("return offset;"); Assert.AreEqual((double)offsetX, Convert.ToDouble(offset["xOffset"]), 5); Assert.AreEqual((double)offsetY, Convert.ToDouble(offset["yOffset"]), 5); action.SetDefault(); // Make zoom gesture and check, that body of gesture is correct. GoToUrl(); action.MoveByOffset(offsetX, offsetY).Perform(); action.DoubleClick(); action.Perform(); vcPageObj.WaitAnimation(); scale = ExecuteScriptGetJson("return scale;"); Assert.AreEqual((double)offsetX, Convert.ToDouble(scale["xOrigin"]), 10); Assert.AreEqual((double)offsetY, Convert.ToDouble(scale["yOrigin"]), 10); }
public void TestViewportController_PanForcesViewportToExceedLeftBorder_ViewportDoesNotExceedLeftBorder() { /* Arrange * Set up the viewport such that a pan of width * forces the viewport to exceed the left border. */ GoToUrl(); IWebElement vcElem = Driver.FindElement(By.Id("vc")); double widthInSc = vcElem.Size.Width - 2; // border of 1 px on each side double widthInVc = 1.37 * Ga; double scale = widthInVc / widthInSc; // 1/10 the age of the universe double minLeftCenterX = ExecuteScriptGetNumber(@"return window.maxPermitedTimeRange.left;"); var vc = new VirtualCanvasComponent(Driver); vc.SetVisible(new JsVisible(-13 * Ga, 0, scale)); vc.UpdateViewport(); /* Act * Pan by width to the right. */ Vector pan = new Vector(widthInSc, 0); ActionsExtension act = new ActionsExtension(Driver); act.MoveToElement(vcElem, 0, 0); act.ClickAndHold(); act.MoveByOffset(Convert.ToInt32(pan.X), Convert.ToInt32(pan.Y)); act.Release(); act.Perform(); vc.WaitAnimation(); /* Without the horizontal contraints the viewport centerX will exceed minLeftCenterX * after a pan of width as (-13Ga + -1.37Ga < 13.7Ga). * With the contraints in place viewport centerX is limited to minLeftCenterX. */ /* Assert * Verify that the viewport centerX after * panning doesn't exceed the minLeftCenterX. */ var vp = vc.GetViewport(); double vpCenterX = vp.CenterX; Assert.AreEqual(minLeftCenterX, vpCenterX, 5); }
public void TestGestures_MouseActivity_GesturesGenerated() { const int offsetX = 100; const int offsetY = 100; action = new ActionsExtension(Driver); bool zoomHandled = (bool)ExecuteScript("return zoomHandled;"); ; bool panHandled = (bool)ExecuteScript("return panHandled;"); bool pinHandled = (bool)ExecuteScript("return pinHandled;"); Assert.IsFalse(zoomHandled); Assert.IsFalse(panHandled); Assert.IsFalse(pinHandled); // Pin and pan gestures. action.MoveToElement(vcPageObj.VirtualCanvas, offsetX, offsetY); action.ClickAndHold(); action.MoveByOffset(offsetX, offsetY); action.Release(); action.Perform(); vcPageObj.WaitAnimation(); zoomHandled = (bool)ExecuteScript("return zoomHandled;"); panHandled = (bool)ExecuteScript("return panHandled;"); pinHandled = (bool)ExecuteScript("return pinHandled;"); Assert.IsFalse(zoomHandled); Assert.IsTrue(panHandled); Assert.IsTrue(pinHandled); // Zoom gesture. action.DoubleClick(); action.Perform(); vcPageObj.WaitAnimation(); zoomHandled = (bool)ExecuteScript("return zoomHandled;"); panHandled = (bool)ExecuteScript("return panHandled;"); pinHandled = (bool)ExecuteScript("return pinHandled;"); Assert.IsTrue(zoomHandled); Assert.IsTrue(panHandled); Assert.IsTrue(pinHandled); }
public void TestMouseBehavior_Panning_VisibleChangedCorrectly() { const int offsetX = 100; const int offsetY = 100; action = new ActionsExtension(Driver); JsVisible visibleBefore = vcPageObj.GetViewport(); JsVisible visibleAfter; action.MoveToElement(vcPageObj.VirtualCanvas, offsetX, offsetY); action.ClickAndHold(); action.MoveByOffset(offsetX, offsetY); action.Release(); action.Perform(); vcPageObj.WaitAnimation(); visibleAfter = vcPageObj.GetViewport(); JsCoordinates offsetScreen; JsCoordinates offsetVirtual; // Firefox browser had an inaccuracy in 3px. offsetScreen = (Browser == BrowserType.Firefox) ? new JsCoordinates(offsetX - 3, offsetY - 3) : new JsCoordinates(offsetX, offsetY); offsetVirtual = vcPageObj.VectorScreenToVirtual(offsetScreen); Assert.AreEqual(visibleBefore.CenterX - offsetVirtual.X, visibleAfter.CenterX, 1); Assert.AreEqual(visibleBefore.CenterY - offsetVirtual.Y, visibleAfter.CenterY, 1); }
public void TestGesture_PanWithInertialMotion_ViewportUpdatesCorrectly() { IWebElement vcElem = Driver.FindElement(By.Id("vc")); int width = vcElem.Size.Width; int height = vcElem.Size.Height; // center infodot as reference var vc = new VirtualCanvasComponent(Driver); vc.SetVisible(new JsVisible(-3194.8898068225376, 401.0288546497742, 0.38537988462392836)); vc.UpdateViewport(); Random rnd = new Random(); Point panStart = new Point(rnd.Next(0, width), rnd.Next(0, height)); Point panEnd = new Point(rnd.Next(0, width), rnd.Next(0, height)); Vector pan = new Vector(panEnd.X - panStart.X, panEnd.Y - panStart.Y); JsCoordinates p1 = vc.PointScreenToVirtual(new JsCoordinates(panStart.X, panStart.Y)); ActionsExtension act = new ActionsExtension(Driver); act.MoveToElement(vcElem, panStart.X, panStart.Y); act.ClickAndHold(); act.MoveByOffset(Convert.ToInt32(pan.X), Convert.ToInt32(pan.Y)); act.Release(); act.Perform(); vc.WaitAnimation(); JsCoordinates p2 = vc.PointVirtualToScreen(p1); // Assert that start-pt wrt the newViewport corresponds to end-pt in the oldViewport Assert.AreEqual(panEnd.X, p2.X, 5); Assert.AreEqual(panEnd.Y, p2.Y, 5); }
public void TestUrlNavigation_Pan_UrlChanges() { IWebElement vcElem = Driver.FindElement(By.Id("vc")); Assert.IsNotNull(vcElem, "err: cannot find canvas element"); var vc = new VirtualCanvasComponent(Driver); double widthInSc = vcElem.Size.Width; // pan to get absolute url from relative initial url action = new ActionsExtension(Driver); action.MoveToElement(vcElem, 1, 1); action.ClickAndHold(); action.MoveByOffset((int)widthInSc / 8, 0); action.Release(); action.Perform(); vc.WaitAnimation(); string urlBefore = new Uri(Driver.Url).ToString(); // pan to get update absolute url action = new ActionsExtension(Driver); action.MoveToElement(vcElem, 1, 1); action.ClickAndHold(); action.MoveByOffset((int)widthInSc / 8, 0); action.Release(); action.Perform(); vc.WaitAnimation(); string urlAfter = new Uri(Driver.Url).ToString(); Assert.AreNotEqual(urlBefore, urlAfter); }
public void TestGesture_PanWithInertialMotion_ViewportUpdatesCorrectly() { IWebElement vcElem = Driver.FindElement(By.Id("vc")); Assert.IsNotNull(vcElem, "err: cannot find canvas element"); Assert.IsTrue(vcElem.Size.Width > 10 && vcElem.Size.Height > 10, "err: canvas size should be atleast (10px,10px) to run test"); int width = vcElem.Size.Width - 10; // assuming a max border width of 5px on each side int height = vcElem.Size.Height - 10; VirtualCanvasComponent vc = new VirtualCanvasComponent(Driver); vc.SetVisible(new JsVisible(-3194.8898068225376, 401.0288546497742, 0.38537988462392836)); vc.UpdateViewport(); Random rnd = new Random(); Point panStart = new Point(rnd.Next(width), rnd.Next(height)); panStart.Offset(5, 5); Point panEnd = new Point(rnd.Next(width), rnd.Next(height)); panEnd.Offset(5, 5); Vector pan = new Vector(panEnd.X - panStart.X, panEnd.Y - panStart.Y); JsCoordinates p1 = vc.PointScreenToVirtual(new JsCoordinates(panStart.X, panStart.Y)); action = new ActionsExtension(Driver); action.MoveToElement(vcElem, panStart.X, panStart.Y); action.ClickAndHold(); action.MoveByOffset(Convert.ToInt32(pan.X), Convert.ToInt32(pan.Y)); action.Release(); action.Perform(); vc.WaitAnimation(); JsCoordinates p2 = vc.PointVirtualToScreen(p1); // Assert that start-pt wrt the newViewport corresponds to end-pt in the oldViewport Assert.AreEqual(panEnd.X, p2.X, 5); Assert.AreEqual(panEnd.Y, p2.Y, 5); }