diff options
Diffstat (limited to 'Xamarin.Forms.UITest.Validator')
-rw-r--r-- | Xamarin.Forms.UITest.Validator/App.config | 6 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/DomMemberModel.cs | 56 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/DomTypeModel.cs | 154 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/FormsUITest.cs | 15 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/LoaderActions.cs | 59 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/Properties/AssemblyInfo.cs | 39 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/UITestCoverage/Css/styles.css | 206 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/UITestCoverage/Js/script.js | 6 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/Validator.cs | 68 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/Xamarin.Forms.UITest.Validator.csproj | 126 | ||||
-rw-r--r-- | Xamarin.Forms.UITest.Validator/packages.config | 5 |
11 files changed, 740 insertions, 0 deletions
diff --git a/Xamarin.Forms.UITest.Validator/App.config b/Xamarin.Forms.UITest.Validator/App.config new file mode 100644 index 00000000..8e156463 --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/App.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> + </startup> +</configuration>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/DomMemberModel.cs b/Xamarin.Forms.UITest.Validator/DomMemberModel.cs new file mode 100644 index 00000000..7f005405 --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/DomMemberModel.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; + +namespace Xamarin.Forms.UITest.Validator +{ + internal class DomMemberModel + { + readonly List<string> _androidtests; + readonly List<string> _iOStests; + readonly string _name; + + public DomMemberModel(string memberName, List<string> iOsTestsForMember, List<string> androidTestsForMember) + { + _name = memberName; + _iOStests = iOsTestsForMember; + var isiOsTested = iOsTestsForMember.Count != 0; + NumberOfiOsTests = iOsTestsForMember.Count; + + _androidtests = androidTestsForMember; + var isAndroidTested = androidTestsForMember.Count != 0; + NumberOfAndroidTests = androidTestsForMember.Count; + + IsTested = isiOsTested && isAndroidTested; + } + + public bool IsTested { get; } + + public int NumberOfiOsTests { get; } + + public int NumberOfAndroidTests { get; } + + public string Html() + { + var html = ""; + + if (IsTested) + html += "<div class=\"testedMember\">" + _name + "</div>"; + else + html += "<div class=\"unTestedMember\">" + _name + "</div>"; + + html += "<div class=\"platformTestContainer\">"; + html += "<div class=\"iosColumn\">"; + foreach (var test in _iOStests) + html += "<div class=\"test ios\">" + test + "</div>"; + html += "</div>"; + + html += "<div class=\"androidColumn\">"; + foreach (var test in _androidtests) + html += "<div class=\"test android\">" + test + "</div>"; + html += "</div>"; + + html += "</div>"; + + return html; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/DomTypeModel.cs b/Xamarin.Forms.UITest.Validator/DomTypeModel.cs new file mode 100644 index 00000000..16d70bd9 --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/DomTypeModel.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Xamarin.Forms.Loader; + +namespace Xamarin.Forms.UITest.Validator +{ + internal class DomTypeModel + { + readonly List<string> _androidTypeTests; + readonly List<string> _iosTypeTests; + public string TypeName; + + public DomTypeModel(FormsType formsType, Dictionary<Type, List<FormsUiTest>> typeiOsuiTestDictionary, + Dictionary<Type, List<FormsUiTest>> typeAndroidUiTestDictionary) + { + TypeName = formsType.Type.Name; + + var iOsTests = new List<FormsUiTest>(); + var androidTests = new List<FormsUiTest>(); + + _iosTypeTests = new List<string>(); + _androidTypeTests = new List<string>(); + + Rank = 0; + + if (typeiOsuiTestDictionary.ContainsKey(formsType.Type)) + { + iOsTests = + (from test in typeiOsuiTestDictionary[formsType.Type] + select test).ToList(); + } + + if (typeAndroidUiTestDictionary.ContainsKey(formsType.Type)) + { + androidTests = + (from test in typeAndroidUiTestDictionary[formsType.Type] + select test).ToList(); + } + + _iosTypeTests = + (from test in iOsTests + where test.MemberName == "" + select test.TestName).ToList(); + + _androidTypeTests = + (from test in androidTests + where test.MemberName == "" + select test.TestName).ToList(); + + Rank -= _iosTypeTests.Count; + Rank -= _androidTypeTests.Count; + + Children = new List<DomMemberModel>(); + + foreach (var formsMember in formsType.Members()) + { + var iOsMemberTests = + (from test in iOsTests + where test.MemberName == formsMember.MemberInfo.Name + select test.TestName).ToList(); + + Rank -= iOsMemberTests.Count; + + var androidMemberTests = + (from test in androidTests + where test.MemberName == formsMember.MemberInfo.Name + select test.TestName).ToList(); + + Rank -= androidMemberTests.Count; + + Children.Add(new DomMemberModel(formsMember.MemberInfo.Name, iOsMemberTests, androidMemberTests)); + } + + Rank += Children.Count; + } + + public List<DomMemberModel> Children { get; } + + public int Rank { get; } + + public string Html() + { + var html = + "<div class=\"type\" id=\"" + TypeName + "\">" + + "<div class=\"stats\">" + + "<h2>" + TypeName + "</h2>" + + "<h3>Number of tests: " + TotalTests() + "</h3>" + + string.Format("<h3>{0:N2}%</h3>", PercentageTested() * 100) + + "<div class=\"progressBar\">" + + "<div class=\"testedBox\" style=\"width:" + 290 * PercentageTested() + "px\"></div>" + + "</div>" + + "</div>" + + "<div class=\"platform\">" + + "<div class=\"ios\">iOS</div>" + + "<div class=\"android\">Android</div>" + + "</div>"; + + html += + "<div class=\"testsForType\">" + + "<div class=\"platformTestContainer\">"; + html += "<div class=\"iosColumn\">"; + foreach (var iosTest in _iosTypeTests) + html += "<div class=\"test ios\">" + iosTest + "</div>"; + html += "</div>"; + html += "<div class=\"androidColumn\">"; + foreach (var androidTest in _androidTypeTests) + html += "<div class=\"test android\">" + androidTest + "</div>"; + html += "</div>" + + "</div>" + + "</div>"; + + html += "<div class=\"members\">"; + foreach (var child in Children) + { + html += "<div class=\"member\">"; + html += child.Html(); + html += "</div>"; + } + + html += "</div>"; + + html += "</div>"; + return html; + } + + int TotalTests() + { + int result = _iosTypeTests.Count + _androidTypeTests.Count; + foreach (var child in Children) + result += child.NumberOfiOsTests + child.NumberOfAndroidTests; + return result; + } + + int NumberOfTestedMembers() + { + int result = 0; + foreach (var child in Children) + { + if (child.IsTested) + result += 1; + } + return result; + } + + double PercentageTested() + { + if (Children.Count > 0) + return (NumberOfTestedMembers() / (double)Children.Count); + + return 0.0; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/FormsUITest.cs b/Xamarin.Forms.UITest.Validator/FormsUITest.cs new file mode 100644 index 00000000..508b1777 --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/FormsUITest.cs @@ -0,0 +1,15 @@ +namespace Xamarin.Forms.UITest.Validator +{ + internal class FormsUiTest + { + public FormsUiTest(string memberName, string testName) + { + MemberName = memberName; + TestName = testName; + } + + public string MemberName { get; private set; } + + public string TestName { get; private set; } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/LoaderActions.cs b/Xamarin.Forms.UITest.Validator/LoaderActions.cs new file mode 100644 index 00000000..9de39f21 --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/LoaderActions.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Loader; + +namespace Xamarin.Forms.UITest.Validator +{ + internal class LoaderActions + { + readonly IEnumerable<TestType> _androidTestTypes; + readonly IEnumerable<TestType> _iOsTestTypes; + + public LoaderActions() + { + var formsLoader = new FormsLoader(); + FormsTypes = formsLoader.FormsTypes(); + _iOsTestTypes = formsLoader.IOSTestTypes(); + _androidTestTypes = formsLoader.AndroidTestTypes(); + + TypeiOsuiTestDictionary = BuildTypeUiTestDictionary(_iOsTestTypes); + TypeAndroidUiTestDictionary = BuildTypeUiTestDictionary(_androidTestTypes); + + Debug.WriteLine("HI"); + } + + internal IEnumerable<FormsType> FormsTypes { get; } + + internal Dictionary<Type, List<FormsUiTest>> TypeiOsuiTestDictionary { get; } + + internal Dictionary<Type, List<FormsUiTest>> TypeAndroidUiTestDictionary { get; } + + Dictionary<Type, List<FormsUiTest>> BuildTypeUiTestDictionary(IEnumerable<TestType> testTypes) + { + var result = new Dictionary<Type, List<FormsUiTest>>(); + + foreach (TestType testType in testTypes) + { + foreach (TestMember testMember in testType.Members()) + { + IEnumerable<UiTestAttribute> testAttrs = testMember.UiTestAttributes(); + foreach (UiTestAttribute testAttr in testAttrs) + { + Type type = testAttr.Type; + string memberName = testAttr.MemberName; + string testName = testMember.MemberInfo.Name; + + if (!result.ContainsKey(type)) + result.Add(type, new List<FormsUiTest> { new FormsUiTest(memberName, testName) }); + else + result[type].Add(new FormsUiTest(memberName, testName)); + } + } + } + + return result; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/Properties/AssemblyInfo.cs b/Xamarin.Forms.UITest.Validator/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..00442570 --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/Properties/AssemblyInfo.cs @@ -0,0 +1,39 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Xamarin.Forms.UITest.Validator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Xamarin.Forms.UITest.Validator")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("e1948442-ac28-49be-ac46-8ceeff28e183")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/UITestCoverage/Css/styles.css b/Xamarin.Forms.UITest.Validator/UITestCoverage/Css/styles.css new file mode 100644 index 00000000..d04f971b --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/UITestCoverage/Css/styles.css @@ -0,0 +1,206 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; + font-family: sans-serif; + font-size: 14px; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +html { + padding: 50px; +} + +#totalStats { + width: 1000px; + padding: 20px; +} + +#totalStats #coverage { + float: left; + font-size:225%; + padding: 10px; +} + +.totalStatsLarge { + padding : 15px 10px; + text-align: start; + width: 200px; + float: right; + color: #808080; + font-size: 18px; +} + +.totalStatsSmall { + padding : 5px 10px; + text-align: start; + width: 200px; + float: right; + color: #808080; + font-size: 18px; +} + +#totalStats .coverageDetail { + float: left; + font-size:150%; + padding: 20px; +} + +.cell { + width: 200px; + border: 1px solid green; + float: left; +} + +.test { + color: blue; +} + +.type { + clear: both; + width: 1000px; + overflow: hidden; + border: 1px solid #bbb; + margin: 5px; +} + +.stats { + height: 37px; + border-bottom: 1px solid #ddd; +} + +.stats h2 { + cursor: pointer; + font-size: 115%; + float: left; + width: 300px; + padding: 7px 0px 10px 10px; +} + +.stats h3 { + float: left; + width: 200px; + padding: 11px 0px 10px 0px; +} + +.platform { + width: 500px; + padding: 20px 0px 20px 10px; + margin: 0px 0px 0px 300px; + +} + +.platform .ios { + font-size: 18px; + width: 200px; + float: left; +} + +.platform .android { + font-size: 18px; +} + +.type .testsForType, .type .members, .type .platform { + display: none; +} + +.type.expanded .testsForType, .type.expanded .members, .type.expanded .platform { + display: block; +} + +.testsForType { + padding: 0px 0px 20px 20px; +} + +.members { + padding: 0px 0px 20px 20px; +} + +.member { + clear: both; + padding: 3px; +} + +.testedMember { + font-size: 100%; + color: green; +} + +.unTestedMember { + height: 28px; + font-size: 100%; + color: red; +} + +.test { + color: blue; + text-decoration: underline; +} + +.platformTestContainer { + width: 400px; + margin-left: 290px; +} + +.iosColumn { + float: left; + width: 180px; + margin-right: 20px; + overflow: hidden; +} + +.androidColumn { + float: left; + width: 180px; + margin-right: 20px; + overflow: hidden; +} + +.progressBar { + float: right; + background-color: #ee8888; + width: 290px; + height: 37px; +} + +.testedBox { + background-color: #88cc88; + height: 37px; +}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/UITestCoverage/Js/script.js b/Xamarin.Forms.UITest.Validator/UITestCoverage/Js/script.js new file mode 100644 index 00000000..d204495f --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/UITestCoverage/Js/script.js @@ -0,0 +1,6 @@ +$(function () { + $('body').on('click', '.stats', function (e) { + e.preventDefault(); + $(this).parents('.type').toggleClass('expanded'); + }); +});
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/Validator.cs b/Xamarin.Forms.UITest.Validator/Validator.cs new file mode 100644 index 00000000..d384940f --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/Validator.cs @@ -0,0 +1,68 @@ +using System; +using System.IO; +using System.Linq; + +namespace Xamarin.Forms.UITest.Validator +{ + //[UITest (typeof(Button), "Clicked")] + internal class Validator + { + // TODO - Add support for muliple attributes (i.e. Fonts or Image.Aspect) + // TODO - Add analysis of test duplication using duplicated tags + // TODO - Support Single class analysis by passing a class name into the program + // TODO - Stats of public surface area coverage + + static int Main(string[] args) + { + Console.WriteLine("Generating UITest code coverage"); + + // Currently scanning for public events, public properties and public methods. + + var loaderActions = new LoaderActions(); + + var domTypes = + (from formsType in loaderActions.FormsTypes + where formsType.Members().Count() > 1 + select + new DomTypeModel(formsType, loaderActions.TypeiOsuiTestDictionary, loaderActions.TypeAndroidUiTestDictionary)) + .OrderByDescending(domType => domType.Rank); + + var typeMemberHtml = ""; + int numberOfTestedMembers = 0; + int numberOfMembers = 0; + + foreach (var domType in domTypes) + { + numberOfTestedMembers += (from member in domType.Children where member.IsTested select member).Count(); + numberOfMembers += domType.Children.Count; + typeMemberHtml += domType.Html(); + } + + var html = + "<html>" + + "<head>" + + "<link rel=\"stylesheet\" type=\"text/css\" href=\"Css/styles.css\">" + + "<script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-2.1.3.min.js\"></script>" + + "<script type=\"text/javascript\" src=\"Js/script.js\"></script>" + + "</head>" + + "<body>" + + "<div id=\"totalStats\">" + + string.Format("<div id=\"coverage\">{0:N2}%<span class=\"totalStatsLarge\"> Covered!!</span></div>", + (numberOfTestedMembers / (double)numberOfMembers) * 100) + + string.Format("<div class=\"coverageDetail\">{0}<span class=\"totalStatsSmall\"> Members</span></div>", + numberOfMembers) + + string.Format("<div class=\"coverageDetail\">{0}<span class=\"totalStatsSmall\"> Tested Members</span></div>", + numberOfTestedMembers) + + "</div>" + + "<div id=\"container\">" + + typeMemberHtml + + "</div>" + + "</body>" + + "</html>"; + + File.WriteAllText("../../UITestCoverage/index.html", html); + + return 0; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/Xamarin.Forms.UITest.Validator.csproj b/Xamarin.Forms.UITest.Validator/Xamarin.Forms.UITest.Validator.csproj new file mode 100644 index 00000000..e41a33bb --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/Xamarin.Forms.UITest.Validator.csproj @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{115C31B9-C1B2-4B00-BB0E-EA36F105903E}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Xamarin.Forms.UITest.Validator</RootNamespace> + <AssemblyName>Xamarin.Forms.UITest.Validator</AssemblyName> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> + <RestorePackages>true</RestorePackages> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'"> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\Turkey\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>AnyCPU</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> + <Prefer32Bit>true</Prefer32Bit> + </PropertyGroup> + <ItemGroup> + <Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL"> + <Private>True</Private> + <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core" /> + <Reference Include="System.Web" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="Microsoft.CSharp" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + <Reference Include="nunit.framework"> + <HintPath>..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath> + </Reference> + <Reference Include="Xamarin.UITest, Version=1.3.3.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\Xamarin.UITest.1.3.3\lib\Xamarin.UITest.dll</HintPath> + <Private>True</Private> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="DomMemberModel.cs" /> + <Compile Include="DomTypeModel.cs" /> + <Compile Include="FormsUITest.cs" /> + <Compile Include="LoaderActions.cs" /> + <Compile Include="Validator.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="App.config" /> + <None Include="Logs\Xamarin.Forms.UITest.Validator.log" /> + <None Include="packages.config" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj"> + <Project>{57b8b73d-c3b5-4c42-869e-7b2f17d354ac}</Project> + <Name>Xamarin.Forms.Core</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj"> + <Project>{4dcd0420-1168-4b77-86db-6196ee4bd491}</Project> + <Name>Xamarin.Forms.CustomAttributes</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Loader\Xamarin.Forms.Loader.csproj"> + <Project>{00211725-2f89-4e2c-ac5a-38e5ff61be67}</Project> + <Name>Xamarin.Forms.Loader</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Core.iOS.UITests\Xamarin.Forms.Core.iOS.UITests.csproj"> + <Project>{EADD8100-B3AE-4A31-92C4-267A64A1C6EB}</Project> + <Name>Xamarin.Forms.Core.iOS.UITests</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Core.Android.UITests\Xamarin.Forms.Core.Android.UITests.csproj"> + <Project>{A34EBE01-25BF-4E69-A2DC-2288DC625541}</Project> + <Name>Xamarin.Forms.Core.Android.UITests</Name> + </ProjectReference> + <ProjectReference Include="..\Xamarin.Forms.Platform\Xamarin.Forms.Platform.csproj"> + <Project>{67f9d3a8-f71e-4428-913f-c37ae82cdb24}</Project> + <Name>Xamarin.Forms.Platform</Name> + </ProjectReference> + </ItemGroup> + <ItemGroup /> + <ItemGroup> + <Content Include="UITestCoverage\Css\styles.css" /> + <Content Include="UITestCoverage\Js\script.js" /> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> + <PropertyGroup> + <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> + </PropertyGroup> + <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> + </Target> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project>
\ No newline at end of file diff --git a/Xamarin.Forms.UITest.Validator/packages.config b/Xamarin.Forms.UITest.Validator/packages.config new file mode 100644 index 00000000..031fa54c --- /dev/null +++ b/Xamarin.Forms.UITest.Validator/packages.config @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<packages> + <package id="NUnit" version="2.6.4" targetFramework="net45" /> + <package id="Xamarin.UITest" version="1.3.3" targetFramework="net45" /> +</packages>
\ No newline at end of file |