Skip to content

Commit 35a6592

Browse files
committed
Merged PR 2192439: Update WebDriverAPI test for better coverage, compatibility with older application, and higher success rate
Add W3C Actions API endpoint as a supported endpoint in the README.md Add a test scenario for pen barrel button click operation using W3C Actions API Create FindAppTitleBar in AlarmsClockBase WebDriverAPI tests to support older apps Update Window WebDriverAPI tests to use Edge private windows Refactor add alarm page dismissal and create a helper function Strategically add delay to prevent false negatives
2 parents dd641e5 + 65529e9 commit 35a6592

File tree

11 files changed

+86
-35
lines changed

11 files changed

+86
-35
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ Below are the capabilities that can be used to create Windows Application Driver
123123
| POST | /session |
124124
| GET | /sessions |
125125
| DELETE | /session/:sessionId |
126+
| POST | /session/:sessionId/actions (v1.1 RC) |
126127
| POST | /session/:sessionId/appium/app/launch |
127128
| POST | /session/:sessionId/appium/app/close |
128129
| POST | /session/:sessionId/back |

Tests/WebDriverAPI/ActionsPen.cs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,36 @@ public static void ClassCleanup()
4646
TearDown();
4747
}
4848

49+
[TestMethod]
50+
public void Pen_Click_BarrelButton()
51+
{
52+
// Create a new test alarm
53+
string alarmName = "PenBarrelButtonTest";
54+
DeletePreviouslyCreatedAlarmEntry(alarmName);
55+
AddAlarmEntry(alarmName);
56+
Thread.Sleep(TimeSpan.FromSeconds(3));
57+
58+
var alarmEntries = session.FindElementsByXPath($"//ListItem[starts-with(@Name, \"{alarmName}\")]");
59+
Assert.IsNotNull(alarmEntries);
60+
Assert.AreEqual(1, alarmEntries.Count);
61+
62+
// Open a the context menu on the alarm entry using long tap (press and hold) action and click delete
63+
PointerInputDevice penDevice = new PointerInputDevice(PointerKind.Pen);
64+
ActionSequence sequence = new ActionSequence(penDevice, 0);
65+
sequence.AddAction(penDevice.CreatePointerMove(alarmEntries[0], 0, 0, TimeSpan.Zero));
66+
sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenBarrel));
67+
sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenBarrel));
68+
session.PerformActions(new List<ActionSequence> { sequence });
69+
70+
Thread.Sleep(TimeSpan.FromSeconds(1));
71+
session.FindElementByName("Delete").Click();
72+
Thread.Sleep(TimeSpan.FromSeconds(1));
73+
74+
alarmEntries = session.FindElementsByXPath($"//ListItem[starts-with(@Name, \"{alarmName}\")]");
75+
Assert.IsNotNull(alarmEntries);
76+
Assert.AreEqual(0, alarmEntries.Count);
77+
}
78+
4979
[TestMethod]
5080
public void Pen_Click_OriginElement()
5181
{
@@ -161,7 +191,7 @@ public void Pen_Click_OriginViewport()
161191
[TestMethod]
162192
public void Pen_DoubleClick()
163193
{
164-
WindowsElement appNameTitle = session.FindElementByAccessibilityId("AppName");
194+
WindowsElement appNameTitle = FindAppTitleBar();
165195
WindowsElement maximizeButton = session.FindElementByAccessibilityId("Maximize");
166196

167197
// Set focus on the application by switching window to itself
@@ -203,7 +233,7 @@ public void Pen_DoubleClick()
203233
[TestMethod]
204234
public void Pen_DragAndDrop()
205235
{
206-
WindowsElement appNameTitle = session.FindElementByAccessibilityId("AppName");
236+
WindowsElement appNameTitle = FindAppTitleBar();
207237
const int offset = 100;
208238

209239
// Save application window original position
@@ -287,7 +317,6 @@ public void Pen_LongClick()
287317
Assert.AreEqual(0, alarmEntries.Count);
288318
}
289319

290-
291320
[TestMethod]
292321
public void Pen_Scroll_Horizontal()
293322
{

Tests/WebDriverAPI/ActionsTouch.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ public void Touch_Click_OriginViewport()
161161
[TestMethod]
162162
public void Touch_DoubleClick()
163163
{
164-
WindowsElement appNameTitle = session.FindElementByAccessibilityId("AppName");
164+
WindowsElement appNameTitle = FindAppTitleBar();
165165
WindowsElement maximizeButton = session.FindElementByAccessibilityId("Maximize");
166166

167167
// Set focus on the application by switching window to itself
@@ -203,7 +203,7 @@ public void Touch_DoubleClick()
203203
[TestMethod]
204204
public void Touch_DragAndDrop()
205205
{
206-
WindowsElement appNameTitle = session.FindElementByAccessibilityId("AppName");
206+
WindowsElement appNameTitle = FindAppTitleBar();
207207
const int offset = 100;
208208

209209
// Save application window original position
@@ -287,7 +287,6 @@ public void Touch_LongClick()
287287
Assert.AreEqual(0, alarmEntries.Count);
288288
}
289289

290-
291290
[TestMethod]
292291
public void Touch_Scroll_Horizontal()
293292
{

Tests/WebDriverAPI/AppSessionBase/AlarmClockBase.cs

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,8 @@ public virtual void TestInit()
7070
}
7171
catch
7272
{
73-
session.Navigate().Back();
74-
Thread.Sleep(TimeSpan.FromSeconds(1));
75-
session.DismissAlarmDialogIfThere();
76-
77-
try
78-
{
79-
alarmTabElement = session.FindElementByAccessibilityId("AlarmPivotItem");
80-
}
81-
catch
82-
{
83-
session.FindElementByAccessibilityId("Back").Click(); // Press back button if navigating back somehow failed
84-
session.DismissAlarmDialogIfThere();
85-
alarmTabElement = session.FindElementByAccessibilityId("AlarmPivotItem");
86-
}
73+
DismissAddAlarmPage();
74+
alarmTabElement = session.FindElementByAccessibilityId("AlarmPivotItem");
8775
}
8876

8977
Assert.IsNotNull(alarmTabElement);
@@ -146,10 +134,37 @@ protected static WindowsElement GetStaleElement()
146134
session.FindElementByAccessibilityId("AddAlarmButton").Click();
147135
Thread.Sleep(TimeSpan.FromSeconds(0.5));
148136
WindowsElement staleElement = session.FindElementByAccessibilityId("AlarmSaveButton");
149-
session.Navigate().Back(); // Dismiss add alarm page
150-
session.DismissAlarmDialogIfThere();
137+
DismissAddAlarmPage();
151138
Thread.Sleep(TimeSpan.FromSeconds(2));
152139
return staleElement;
153140
}
141+
142+
protected static void DismissAddAlarmPage()
143+
{
144+
try
145+
{
146+
session.FindElementByAccessibilityId("CancelButton").Click(); // Press cancel button to dismiss any non-main page
147+
}
148+
catch
149+
{
150+
session.FindElementByAccessibilityId("Back").Click(); // Press back button if cancel button above somehow failed
151+
Thread.Sleep(TimeSpan.FromSeconds(1));
152+
session.DismissAlarmDialogIfThere();
153+
}
154+
}
155+
156+
protected static WindowsElement FindAppTitleBar()
157+
{
158+
WindowsElement element;
159+
try
160+
{
161+
element = session.FindElementByAccessibilityId("AppName");
162+
}
163+
catch (InvalidOperationException)
164+
{
165+
element = session.FindElementByAccessibilityId("TitleBar");
166+
}
167+
return element;
168+
}
154169
}
155170
}

Tests/WebDriverAPI/AppSessionBase/EdgeBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,14 @@ protected static RemoteWebElement GetStaleElement()
116116

117117
// Navigate to Edge about:flags page
118118
session.FindElementByAccessibilityId("addressEditBox").SendKeys(Keys.Alt + 'd' + Keys.Alt + CommonTestSettings.EdgeAboutFlagsURL + Keys.Enter);
119-
Thread.Sleep(TimeSpan.FromSeconds(2));
119+
Thread.Sleep(TimeSpan.FromSeconds(3));
120120
Assert.AreNotEqual(originalTitle, session.Title);
121121

122122
// Save a reference to Reset all flags button on the page and navigate back to home
123123
staleElement = session.FindElementByAccessibilityId("ResetAllFlags");
124124
Assert.IsNotNull(staleElement);
125125
session.Navigate().Back();
126-
Thread.Sleep(TimeSpan.FromSeconds(1));
126+
Thread.Sleep(TimeSpan.FromSeconds(3));
127127
Assert.AreEqual(originalTitle, session.Title);
128128

129129
return staleElement;

Tests/WebDriverAPI/AppSessionBase/WebDriverApiExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ internal static WindowsElement FindCalculatorTitleByAccessibilityId(this Windows
2626
WindowsElement element;
2727
try
2828
{
29-
element = session.FindElementByAccessibilityId("AppNameTitle");
29+
element = session.FindElementByAccessibilityId("AppName");
3030
}
3131
catch (InvalidOperationException)
3232
{
33-
element = session.FindElementByAccessibilityId("AppName");
33+
element = session.FindElementByAccessibilityId("AppNameTitle");
3434
}
3535
return element;
3636
}

Tests/WebDriverAPI/ElementClick.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ public void ClickElement()
5252
Assert.AreEqual("30", minuteSelector.Text);
5353

5454
// Return to main page and click on pivot items to switch between tabs
55-
session.FindElementByAccessibilityId("CancelButton").Click();
56-
55+
DismissAddAlarmPage();
5756
WindowsElement worldPivot = session.FindElementByAccessibilityId("WorldClockPivotItem");
5857
WindowsElement alarmPivot = session.FindElementByAccessibilityId("AlarmPivotItem");
5958

Tests/WebDriverAPI/ElementSendKeys.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ public void SendKeysToElementError_StaleElement()
175175
{
176176
try
177177
{
178-
session.FindElementByAccessibilityId("CancelButton").Click();
178+
DismissAddAlarmPage();
179179
Thread.Sleep(TimeSpan.FromSeconds(1));
180180
alarmNameTextBox.SendKeys("keys");
181181
Assert.Fail("Exception should have been thrown");

Tests/WebDriverAPI/Forward.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,12 @@ public void NavigateForward_SystemApp()
7979

8080
// Navigate back to the original folder
8181
session.Navigate().Back();
82+
Thread.Sleep(TimeSpan.FromSeconds(1));
8283
Assert.AreEqual(originalTitle, session.Title);
8384

8485
// Navigate forward to the target folder
8586
session.Navigate().Forward();
87+
Thread.Sleep(TimeSpan.FromSeconds(1));
8688
Assert.AreEqual(newTitle, session.Title);
8789
}
8890

Tests/WebDriverAPI/TouchScroll.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ public void TouchScrollOnElement_Vertical()
107107
Thread.Sleep(TimeSpan.FromSeconds(1));
108108
Assert.IsTrue(minute00.Displayed);
109109

110-
// Navigate back to the original view
111-
session.Navigate().Back();
110+
// Dismiss add alarm page
111+
DismissAddAlarmPage();
112112
}
113113

114114
[TestMethod]

0 commit comments

Comments
 (0)