Skip to content

Commit 68b535a

Browse files
authored
More Samples Tests (microsoft#51)
* Update README.md * add more entries to squeezenet and mnist test * Add style transfer test * add teardown & fix timeout handling for style transfer test
1 parent c7ba0d3 commit 68b535a

File tree

8 files changed

+331
-41
lines changed

8 files changed

+331
-41
lines changed

Testing/SamplesTest/SamplesTest/MnistTest.cs

Lines changed: 74 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,65 +21,38 @@ public class MnistSession
2121
// This string key is present in RegisteredUserModeAppID under AppX/vs.appxrecipe
2222
// TODO: this string value has to be retrieved from local test machine
2323
// More information on https://github.com/Microsoft/WinAppDriver
24-
private const string MNISTAppId_CS = "f330385a-7468-4688-859d-7d11a61d1b29_atz7ne7vp47fr!App";
25-
26-
protected static WindowsDriver<WindowsElement> session;
24+
protected WindowsDriver<WindowsElement> session;
25+
protected static WindowsElement inkCanvas;
26+
protected static WindowsElement recognizeButton;
27+
protected static WindowsElement clearButton;
28+
protected static WindowsElement numberLabel;
2729

28-
public static void Setup(TestContext context)
30+
public void Setup(string appid)
2931
{
3032
if (session == null)
3133
{
3234
DesiredCapabilities appCapabilities = new DesiredCapabilities();
33-
appCapabilities.SetCapability("app", MNISTAppId_CS);
35+
appCapabilities.SetCapability("app", appid);
3436
appCapabilities.SetCapability("deviceName", "WindowsPC");
3537
session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
3638
Assert.IsNotNull(session);
3739
// Set implicit timeout to 1.5 seconds to make element search to retry every 500 ms for at most three times
3840
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1.5);
41+
inkCanvas = session.FindElementByClassName("InkCanvas");
42+
recognizeButton = session.FindElementByName("Recognize");
43+
clearButton = session.FindElementByXPath("//Button[@AutomationId=\"clearButton\"]");
44+
numberLabel = session.FindElementByAccessibilityId("numberLabel");
3945
}
4046
}
4147

42-
public static void TearDown()
48+
public void TearDown()
4349
{
4450
if (session != null)
4551
{
4652
session.Quit();
4753
session = null;
4854
}
4955
}
50-
}
51-
52-
[TestClass]
53-
public class MnistTest : MnistSession
54-
{
55-
private static WindowsElement inkCanvas;
56-
private static WindowsElement recognizeButton;
57-
private static WindowsElement clearButton;
58-
private static WindowsElement numberLabel;
59-
60-
[ClassInitialize]
61-
public static void ClassInitialize(TestContext context)
62-
{
63-
Setup(context);
64-
inkCanvas = session.FindElementByClassName("InkCanvas");
65-
recognizeButton = session.FindElementByName("Recognize");
66-
clearButton = session.FindElementByXPath("//Button[@AutomationId=\"clearButton\"]");
67-
numberLabel = session.FindElementByAccessibilityId("numberLabel");
68-
}
69-
70-
[TestMethod]
71-
public void TestDigits()
72-
{
73-
IList<uint> digits = new List<uint> { 0, 1, 4, 7, 8 };
74-
for (int i = 0; i < digits.Count; i++)
75-
{
76-
clearButton.Click();
77-
uint digit = digits[i];
78-
Draw(digit);
79-
recognizeButton.Click();
80-
Assert.AreEqual(numberLabel.Text, digit.ToString());
81-
}
82-
}
8356

8457
public void DrawCircle(PointerInputDevice penDevice, ActionSequence sequence, int centerX, int centerY, int radius, int stepSize)
8558
{
@@ -252,5 +225,67 @@ public void Draw(uint digit)
252225
}
253226
session.PerformActions(new List<ActionSequence> { sequence });
254227
}
228+
229+
public void TestDigits()
230+
{
231+
IList<uint> digits = new List<uint> { 0, 1, 4, 7, 8 };
232+
for (int i = 0; i < digits.Count; i++)
233+
{
234+
clearButton.Click();
235+
uint digit = digits[i];
236+
Draw(digit);
237+
recognizeButton.Click();
238+
Assert.AreEqual(numberLabel.Text, digit.ToString());
239+
}
240+
}
241+
}
242+
243+
[TestClass]
244+
public class MnistTestCSharp : MnistSession
245+
{
246+
private const string MNISTAppId_CS = "f330385a-7468-4688-859d-7d11a61d1b29_atz7ne7vp47fr!App";
247+
248+
[TestInitialize]
249+
public void TestInitialize()
250+
{
251+
Setup(MNISTAppId_CS);
252+
}
253+
254+
[TestCleanup()]
255+
public void CleanUp()
256+
{
257+
TearDown();
258+
}
259+
260+
[TestMethod]
261+
public void TestMNISTCSharp()
262+
{
263+
TestDigits();
264+
}
265+
}
266+
267+
268+
[TestClass]
269+
public class MnistTestCPPCX : MnistSession
270+
{
271+
private const string MNISTAppId_CPPCX = "7c575962-f37f-4240-a2ba-33fbf54c19f6_ms3keja78xfsy!App";
272+
273+
[TestInitialize]
274+
public void TestInitialize()
275+
{
276+
Setup(MNISTAppId_CPPCX);
277+
}
278+
279+
[TestCleanup()]
280+
public void CleanUp()
281+
{
282+
TearDown();
283+
}
284+
285+
[TestMethod]
286+
public void TestMNISTCppcx()
287+
{
288+
TestDigits();
289+
}
255290
}
256291
}
Loading
Loading
Loading
Loading

Testing/SamplesTest/SamplesTest/SamplesTest.csproj

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
<ItemGroup>
4545
<Compile Include="MnistTest.cs" />
4646
<Compile Include="Properties\AssemblyInfo.cs" />
47+
<Compile Include="StyleTransferTest.cs" />
4748
<Compile Include="SqueezenetTest.cs" />
4849
</ItemGroup>
4950
<ItemGroup>
@@ -60,6 +61,74 @@
6061
<Version>1.3.2</Version>
6162
</PackageReference>
6263
</ItemGroup>
64+
<ItemGroup>
65+
<Content Include="Resource\baseline-candy.png">
66+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
67+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
68+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
69+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
70+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
71+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
72+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
73+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
74+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
75+
</Content>
76+
<Content Include="Resource\baseline-mosaic.png">
77+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
78+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
79+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
80+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
81+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
82+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
83+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
84+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
85+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
86+
</Content>
87+
<Content Include="Resource\baseline-la_muse.png">
88+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
89+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
90+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
91+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
92+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
93+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
94+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
95+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
96+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
97+
</Content>
98+
<Content Include="Resource\baseline-udnie.png">
99+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
100+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
101+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
102+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
103+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
104+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
105+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
106+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
107+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
108+
</Content>
109+
<Content Include="..\..\..\SharedContent\media\fish.png">
110+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
111+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
112+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
113+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
114+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
115+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
116+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
117+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
118+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
119+
</Content>
120+
<Content Include="..\..\..\SharedContent\media\kitten_224.png">
121+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
122+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
123+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
124+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
125+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
126+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
127+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
128+
<DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
129+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
130+
</Content>
131+
</ItemGroup>
63132
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
64133
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
65134
</Project>

Testing/SamplesTest/SamplesTest/SqueezenetTest.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,28 @@ public static void ClassInitialize(TestContext context)
6767
statusBlock = session.FindElementByAccessibilityId("StatusBlock");
6868
}
6969

70+
[ClassCleanup()]
71+
public static void ClassCleanup()
72+
{
73+
TearDown();
74+
}
75+
7076
[TestMethod]
7177
public void TestTabbyCat()
7278
{
7379
string tabbyCatPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\kitten_224.png";
80+
TestImageFile(tabbyCatPath, "\"tabby, tabby cat\" with confidence of 0.93");
81+
}
82+
83+
[TestMethod]
84+
public void TestFish()
85+
{
86+
string fishPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\fish.png";
87+
TestImageFile(fishPath, "\"tench, Tinca tinca\" with confidence of 0.738");
88+
}
89+
90+
public void TestImageFile(string filePath, string expectedResult)
91+
{
7492
resetButton.Click();
7593
System.Threading.Thread.Sleep(100);
7694
loadModelButton.Click();
@@ -79,11 +97,11 @@ public void TestTabbyCat()
7997
pickImageButton.Click();
8098
// wait for file picker window to pop up
8199
System.Threading.Thread.Sleep(3000);
82-
session.Keyboard.SendKeys(tabbyCatPath);
100+
session.Keyboard.SendKeys(filePath);
83101
session.Keyboard.SendKeys(Keys.Enter);
84102
System.Threading.Thread.Sleep(1000);
85103
string result = statusBlock.Text;
86-
Assert.IsTrue(result.Contains("\"tabby, tabby cat\" with confidence of 0.93"));
104+
Assert.IsTrue(result.Contains(expectedResult));
87105
}
88106
}
89107
}

0 commit comments

Comments
 (0)