diff --git a/SmokeTests/App.xaml b/SmokeTests/App.xaml new file mode 100644 index 00000000000..7270ce6e109 --- /dev/null +++ b/SmokeTests/App.xaml @@ -0,0 +1,7 @@ + + + diff --git a/SmokeTests/App.xaml.cs b/SmokeTests/App.xaml.cs new file mode 100644 index 00000000000..2b5b157eca0 --- /dev/null +++ b/SmokeTests/App.xaml.cs @@ -0,0 +1,106 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Activation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +namespace SmokeTest +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public sealed partial class App : Application + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + this.Suspending += OnSuspending; + } + + /// + /// Invoked when the application is launched normally by the end user. Other entry points + /// will be used such as when the application is launched to open a specific file. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs e) + { + Frame rootFrame = Window.Current.Content as Frame; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == null) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + rootFrame.NavigationFailed += OnNavigationFailed; + + if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) + { + // TODO: Load state from previously suspended application + } + + // Place the frame in the current Window + Window.Current.Content = rootFrame; + } + + if (e.PrelaunchActivated == false) + { + if (rootFrame.Content == null) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + rootFrame.Navigate(typeof(MainPage), e.Arguments); + } + + // Ensure the current window is active + Window.Current.Activate(); + } + } + + /// + /// Invoked when Navigation to a certain page fails + /// + /// The Frame which failed navigation + /// Details about the navigation failure + private void OnNavigationFailed(object sender, NavigationFailedEventArgs e) + { + throw new Exception("Failed to load Page " + e.SourcePageType.FullName); + } + + /// + /// Invoked when application execution is being suspended. Application state is saved + /// without knowing whether the application will be terminated or resumed with the contents + /// of memory still intact. + /// + /// The source of the suspend request. + /// Details about the suspend request. + private void OnSuspending(object sender, SuspendingEventArgs e) + { + var deferral = e.SuspendingOperation.GetDeferral(); + + // TODO: Save application state and stop any background activity + deferral.Complete(); + } + } +} diff --git a/SmokeTests/Assets/LockScreenLogo.scale-200.png b/SmokeTests/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 00000000000..735f57adb5d Binary files /dev/null and b/SmokeTests/Assets/LockScreenLogo.scale-200.png differ diff --git a/SmokeTests/Assets/SplashScreen.scale-200.png b/SmokeTests/Assets/SplashScreen.scale-200.png new file mode 100644 index 00000000000..023e7f1feda Binary files /dev/null and b/SmokeTests/Assets/SplashScreen.scale-200.png differ diff --git a/SmokeTests/Assets/Square150x150Logo.scale-200.png b/SmokeTests/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 00000000000..af49fec1a54 Binary files /dev/null and b/SmokeTests/Assets/Square150x150Logo.scale-200.png differ diff --git a/SmokeTests/Assets/Square44x44Logo.scale-200.png b/SmokeTests/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 00000000000..ce342a2ec8a Binary files /dev/null and b/SmokeTests/Assets/Square44x44Logo.scale-200.png differ diff --git a/SmokeTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/SmokeTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 00000000000..f6c02ce97e0 Binary files /dev/null and b/SmokeTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/SmokeTests/Assets/StoreLogo.png b/SmokeTests/Assets/StoreLogo.png new file mode 100644 index 00000000000..7385b56c0e4 Binary files /dev/null and b/SmokeTests/Assets/StoreLogo.png differ diff --git a/SmokeTests/Assets/Wide310x150Logo.scale-200.png b/SmokeTests/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 00000000000..288995b397f Binary files /dev/null and b/SmokeTests/Assets/Wide310x150Logo.scale-200.png differ diff --git a/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.Controls.xaml b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.Controls.xaml new file mode 100644 index 00000000000..95ccc6fc35c --- /dev/null +++ b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.Controls.xaml @@ -0,0 +1,14 @@ + + + + + + diff --git a/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.Controls.xaml.cs b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.Controls.xaml.cs new file mode 100644 index 00000000000..65e09322217 --- /dev/null +++ b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.Controls.xaml.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace SmokeTest +{ + public sealed partial class MainPage + { + public MainPage() + { + InitializeComponent(); + } + } +} diff --git a/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.xaml b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.xaml new file mode 100644 index 00000000000..95ccc6fc35c --- /dev/null +++ b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.xaml @@ -0,0 +1,14 @@ + + + + + + diff --git a/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.xaml.cs b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.xaml.cs new file mode 100644 index 00000000000..65e09322217 --- /dev/null +++ b/SmokeTests/MainPage.Microsoft.Toolkit.Uwp.UI.xaml.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace SmokeTest +{ + public sealed partial class MainPage + { + public MainPage() + { + InitializeComponent(); + } + } +} diff --git a/SmokeTests/MainPage.Microsoft.Toolkit.xaml b/SmokeTests/MainPage.Microsoft.Toolkit.xaml new file mode 100644 index 00000000000..95ccc6fc35c --- /dev/null +++ b/SmokeTests/MainPage.Microsoft.Toolkit.xaml @@ -0,0 +1,14 @@ + + + + + + diff --git a/SmokeTests/MainPage.Microsoft.Toolkit.xaml.cs b/SmokeTests/MainPage.Microsoft.Toolkit.xaml.cs new file mode 100644 index 00000000000..65e09322217 --- /dev/null +++ b/SmokeTests/MainPage.Microsoft.Toolkit.xaml.cs @@ -0,0 +1,14 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace SmokeTest +{ + public sealed partial class MainPage + { + public MainPage() + { + InitializeComponent(); + } + } +} diff --git a/SmokeTests/Package.appxmanifest b/SmokeTests/Package.appxmanifest new file mode 100644 index 00000000000..2877222cf3e --- /dev/null +++ b/SmokeTests/Package.appxmanifest @@ -0,0 +1,49 @@ + + + + + + + + + + SmokeTest + alzollin + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SmokeTests/Properties/AssemblyInfo.cs b/SmokeTests/Properties/AssemblyInfo.cs new file mode 100644 index 00000000000..8fb601dfd8a --- /dev/null +++ b/SmokeTests/Properties/AssemblyInfo.cs @@ -0,0 +1,31 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Reflection; +using System.Runtime.CompilerServices; +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("SmokeTest")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SmokeTest")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 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: ComVisible(false)] \ No newline at end of file diff --git a/SmokeTests/Properties/Default.rd.xml b/SmokeTests/Properties/Default.rd.xml new file mode 100644 index 00000000000..af00722cdf9 --- /dev/null +++ b/SmokeTests/Properties/Default.rd.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/SmokeTests/SmokeTest.csproj b/SmokeTests/SmokeTest.csproj new file mode 100644 index 00000000000..6bcdfa5b2b8 --- /dev/null +++ b/SmokeTests/SmokeTest.csproj @@ -0,0 +1,105 @@ + + + + + Debug + x86 + {A6E4CB52-1025-4BBA-9C65-BB871D1FB53F} + AppContainerExe + Properties + SmokeTest + SmokeTest.$(CurrentProject) + en-US + UAP + 10.0.19041.0 + 10.0.17134.0 + 14 + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + true + false + $(Platform) + Always + StoreUpload + $(Platform) + ;2008;SA0001 + + + SmokeTest_$(CurrentProject) + obj\$(CurrentProject)\ + bin\$(CurrentProject)\$(Platform)\$(Configuration)\ + + + true + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + full + false + prompt + true + + + TRACE;NETFX_CORE;WINDOWS_UWP + true + pdbonly + false + prompt + true + true + + + PackageReference + + + + Designer + + + + + + + + + + + + + + + App.xaml + + + + MSBuild:Compile + Designer + + + + + MainPage.$(CurrentProject).xaml + + + MSBuild:Compile + Designer + + + + + 6.2.10 + + + + + + + 14.0 + + + + \ No newline at end of file diff --git a/SmokeTests/SmokeTests.proj b/SmokeTests/SmokeTests.proj new file mode 100644 index 00000000000..1fc3a349d9d --- /dev/null +++ b/SmokeTests/SmokeTests.proj @@ -0,0 +1,62 @@ + + + + + + + x86 + Release + Microsoft.Toolkit;Microsoft.Toolkit.Uwp.UI.Controls;Microsoft.Toolkit.Uwp.UI + + + + + + + + + + + + + + + + + x86;x64;ARM;ARM64 + bin + %(ToolkitPackage.Identity) + + + + %(BuildPlatform.Identity) + + + + + + %(BuildConfiguration.Identity) + + + + Platform=%(ProjectsPerConfig.Platform);Configuration=%(ProjectsPerConfig.Configuration) + + + + + + + ../bin/nupkg/*.nupkg + + + + + + + + \ No newline at end of file diff --git a/SmokeTests/nuget.config b/SmokeTests/nuget.config new file mode 100644 index 00000000000..45d8eaca234 --- /dev/null +++ b/SmokeTests/nuget.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 76470fb759b..c6c3dcd7b7e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -47,6 +47,9 @@ steps: - powershell: .\build\build.ps1 -target=Package displayName: Package +- powershell: .\build\build.ps1 -target=SmokeTest + displayName: SmokeTest + - task: PublishTestResults@2 inputs: testResultsFormat: 'VSTest' @@ -70,3 +73,16 @@ steps: pathToPublish: .\bin\nupkg artifactType: container artifactName: Packages + +- task: CopyFiles@2 + inputs: + sourceFolder: .\SmokeTests\AppPackages + contents: '**\*.appxbundle' + targetFolder: $(build.artifactstagingdirectory)\SmokeTestBundles + +- task: PublishBuildArtifacts@1 + displayName: Publish Smoke Test Artifacts + inputs: + pathToPublish:$(build.artifactstagingdirectory)\SmokeTestBundles + artifactType: container + artifactName: SmokeTestBundles diff --git a/build/build.cake b/build/build.cake index 51d5ed13ee7..f7a9ac18451 100644 --- a/build/build.cake +++ b/build/build.cake @@ -303,6 +303,12 @@ Task("Test") DotNetCoreTest(file.FullPath, testSettings); }).DeferOnError(); +Task("SmokeTest") + .Description("Runs all Smoke Tests") + .Does(() => +{ + MSBuild(baseDir + "/SmokeTests/SmokeTests.proj"); +}).DeferOnError(); //////////////////////////////////////////////////////////////////////