diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 000000000000..7f2cd7afb94e
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,23 @@
+
+
+
+
+ enable
+ Debug;Stable;Preview;Store
+ Files Community
+ Copyright (c) 2024 Files Community.
+ Files Community
+ Copyright (c) 2024 Files Community
+ Files
+ en-US
+ x86;x64;ARM64
+ win-x86;win-x64;win-arm64
+ latest
+ en-US
+
+ TRACE;DEBUG;NETFX_CORE
+ TRACE;RELEASE;NETFX_CORE
+ true
+
+
+
diff --git a/Files.sln b/Files.sln
index e6ffde265833..9a93ecc64e8c 100644
--- a/Files.sln
+++ b/Files.sln
@@ -45,6 +45,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Files.App.SaveDialog.Win32"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Files.App.OpenDialog.Win32", "src\Files.App.OpenDialog\Files.App.OpenDialog.Win32.vcxproj", "{B3FE3F3B-CECC-4918-B72B-5488C3774125}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Files.App.UITests", "tests\Files.App.UITests\Files.App.UITests.csproj", "{6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Files.App.Controls", "src\Files.App.Controls\Files.App.Controls.csproj", "{83FF8729-CC76-43E2-976F-47F0A187FC7E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|arm64 = Debug|arm64
@@ -455,52 +459,113 @@ Global
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Debug|arm64.Build.0 = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Debug|x64.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Debug|x64.Build.0 = Debug|Win32
+ {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Debug|x86.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Preview|arm64.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Preview|arm64.Build.0 = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Preview|x64.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Preview|x64.Build.0 = Debug|Win32
+ {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Preview|x86.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Release|arm64.ActiveCfg = Release|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Release|arm64.Build.0 = Release|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Release|x64.ActiveCfg = Release|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Release|x64.Build.0 = Release|Win32
+ {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Release|x86.ActiveCfg = Release|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Stable|arm64.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Stable|arm64.Build.0 = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Stable|x64.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Stable|x64.Build.0 = Debug|Win32
+ {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Stable|x86.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Store|arm64.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Store|arm64.Build.0 = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Store|x64.ActiveCfg = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Store|x64.Build.0 = Debug|Win32
{7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Store|x86.ActiveCfg = Debug|Win32
- {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Debug|x86.ActiveCfg = Debug|Win32
- {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Preview|x86.ActiveCfg = Debug|Win32
- {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Release|x86.ActiveCfg = Release|Win32
- {7756A1A4-17B5-4E6B-9B12-F19AA868A225}.Stable|x86.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Debug|arm64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Debug|arm64.Build.0 = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Debug|x64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Debug|x64.Build.0 = Debug|Win32
+ {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Debug|x86.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Preview|arm64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Preview|arm64.Build.0 = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Preview|x64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Preview|x64.Build.0 = Debug|Win32
+ {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Preview|x86.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Release|arm64.ActiveCfg = Release|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Release|arm64.Build.0 = Release|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Release|x64.ActiveCfg = Release|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Release|x64.Build.0 = Release|Win32
+ {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Release|x86.ActiveCfg = Release|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Stable|arm64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Stable|arm64.Build.0 = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Stable|x64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Stable|x64.Build.0 = Debug|Win32
+ {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Stable|x86.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Store|arm64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Store|arm64.Build.0 = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Store|x64.ActiveCfg = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Store|x64.Build.0 = Debug|Win32
{B3FE3F3B-CECC-4918-B72B-5488C3774125}.Store|x86.ActiveCfg = Debug|Win32
- {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Debug|x86.ActiveCfg = Debug|Win32
- {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Preview|x86.ActiveCfg = Debug|Win32
- {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Release|x86.ActiveCfg = Release|Win32
- {B3FE3F3B-CECC-4918-B72B-5488C3774125}.Stable|x86.ActiveCfg = Debug|Win32
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|arm64.ActiveCfg = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|arm64.Build.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|arm64.Deploy.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|x64.ActiveCfg = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|x64.Build.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|x64.Deploy.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|x86.ActiveCfg = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|x86.Build.0 = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Debug|x86.Deploy.0 = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|arm64.ActiveCfg = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|arm64.Build.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|arm64.Deploy.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|x64.ActiveCfg = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|x64.Build.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|x64.Deploy.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|x86.ActiveCfg = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|x86.Build.0 = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Preview|x86.Deploy.0 = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|arm64.ActiveCfg = Release|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|arm64.Build.0 = Release|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|arm64.Deploy.0 = Release|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|x64.ActiveCfg = Release|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|x64.Build.0 = Release|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|x64.Deploy.0 = Release|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|x86.ActiveCfg = Release|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|x86.Build.0 = Release|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Release|x86.Deploy.0 = Release|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|arm64.ActiveCfg = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|arm64.Build.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|arm64.Deploy.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|x64.ActiveCfg = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|x64.Build.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|x64.Deploy.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|x86.ActiveCfg = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|x86.Build.0 = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Stable|x86.Deploy.0 = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|arm64.ActiveCfg = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|arm64.Build.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|arm64.Deploy.0 = Debug|ARM64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|x64.ActiveCfg = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|x64.Build.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|x64.Deploy.0 = Debug|x64
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|x86.ActiveCfg = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|x86.Build.0 = Debug|x86
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B}.Store|x86.Deploy.0 = Debug|x86
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Debug|arm64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Debug|x64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Debug|x64.Build.0 = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Debug|x86.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Preview|arm64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Preview|x64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Preview|x86.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Release|arm64.ActiveCfg = Release|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Release|x64.ActiveCfg = Release|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Release|x86.ActiveCfg = Release|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Stable|arm64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Stable|x64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Stable|x86.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Store|arm64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Store|x64.ActiveCfg = Debug|x64
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E}.Store|x86.ActiveCfg = Debug|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -522,6 +587,8 @@ Global
{EBFA367F-CBDB-4CD0-B838-D6B95F61D1F6} = {A188C26B-E731-4E0B-9D17-D21CEBD9B43F}
{7756A1A4-17B5-4E6B-9B12-F19AA868A225} = {A188C26B-E731-4E0B-9D17-D21CEBD9B43F}
{B3FE3F3B-CECC-4918-B72B-5488C3774125} = {A188C26B-E731-4E0B-9D17-D21CEBD9B43F}
+ {6F5B1C76-6FA1-49C0-9AF5-672BEDF6900B} = {481DE2EA-E6CE-4A9C-A220-3B543B95AAA1}
+ {83FF8729-CC76-43E2-976F-47F0A187FC7E} = {A188C26B-E731-4E0B-9D17-D21CEBD9B43F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0E62043C-A7A1-4982-9EC9-4CDB2939B776}
diff --git a/src/Files.App.Controls/Files.App.Controls.csproj b/src/Files.App.Controls/Files.App.Controls.csproj
new file mode 100644
index 000000000000..f222efed7434
--- /dev/null
+++ b/src/Files.App.Controls/Files.App.Controls.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+ net8.0-windows10.0.22621.0
+ 10.0.19041.0
+ true
+ 10.0.19041.0
+
+
+
+
+
+
+
+
+
diff --git a/tests/Files.App.UITests/App.xaml b/tests/Files.App.UITests/App.xaml
new file mode 100644
index 000000000000..3d6f9911871a
--- /dev/null
+++ b/tests/Files.App.UITests/App.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Files.App.UITests/App.xaml.cs b/tests/Files.App.UITests/App.xaml.cs
new file mode 100644
index 000000000000..dcc39120f390
--- /dev/null
+++ b/tests/Files.App.UITests/App.xaml.cs
@@ -0,0 +1,50 @@
+// Copyright (c) 2024 Files Community
+// Licensed under the MIT License. See the LICENSE.
+
+using Microsoft.UI.Xaml;
+using Microsoft.UI.Xaml.Controls;
+using Microsoft.UI.Xaml.Controls.Primitives;
+using Microsoft.UI.Xaml.Data;
+using Microsoft.UI.Xaml.Input;
+using Microsoft.UI.Xaml.Media;
+using Microsoft.UI.Xaml.Navigation;
+using Microsoft.UI.Xaml.Shapes;
+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;
+
+namespace Files.App.UITests
+{
+ ///
+ /// Provides application-specific behavior to supplement the default Application class.
+ ///
+ public 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();
+ }
+
+ ///
+ /// Invoked when the application is launched.
+ ///
+ /// Details about the launch request and process.
+ protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
+ {
+ m_window = new MainWindow();
+ m_window.Activate();
+ }
+
+ private Window m_window;
+ }
+}
diff --git a/tests/Files.App.UITests/Assets/LockScreenLogo.scale-200.png b/tests/Files.App.UITests/Assets/LockScreenLogo.scale-200.png
new file mode 100644
index 000000000000..7440f0d4bf7c
Binary files /dev/null and b/tests/Files.App.UITests/Assets/LockScreenLogo.scale-200.png differ
diff --git a/tests/Files.App.UITests/Assets/SplashScreen.scale-200.png b/tests/Files.App.UITests/Assets/SplashScreen.scale-200.png
new file mode 100644
index 000000000000..32f486a86792
Binary files /dev/null and b/tests/Files.App.UITests/Assets/SplashScreen.scale-200.png differ
diff --git a/tests/Files.App.UITests/Assets/Square150x150Logo.scale-200.png b/tests/Files.App.UITests/Assets/Square150x150Logo.scale-200.png
new file mode 100644
index 000000000000..53ee3777ea27
Binary files /dev/null and b/tests/Files.App.UITests/Assets/Square150x150Logo.scale-200.png differ
diff --git a/tests/Files.App.UITests/Assets/Square44x44Logo.scale-200.png b/tests/Files.App.UITests/Assets/Square44x44Logo.scale-200.png
new file mode 100644
index 000000000000..f713bba67f55
Binary files /dev/null and b/tests/Files.App.UITests/Assets/Square44x44Logo.scale-200.png differ
diff --git a/tests/Files.App.UITests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/tests/Files.App.UITests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 000000000000..dc9f5bea0c3b
Binary files /dev/null and b/tests/Files.App.UITests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ
diff --git a/tests/Files.App.UITests/Assets/StoreLogo.png b/tests/Files.App.UITests/Assets/StoreLogo.png
new file mode 100644
index 000000000000..a4586f26bdf7
Binary files /dev/null and b/tests/Files.App.UITests/Assets/StoreLogo.png differ
diff --git a/tests/Files.App.UITests/Assets/Wide310x150Logo.scale-200.png b/tests/Files.App.UITests/Assets/Wide310x150Logo.scale-200.png
new file mode 100644
index 000000000000..8b4a5d0dd5f6
Binary files /dev/null and b/tests/Files.App.UITests/Assets/Wide310x150Logo.scale-200.png differ
diff --git a/tests/Files.App.UITests/Files.App.UITests.csproj b/tests/Files.App.UITests/Files.App.UITests.csproj
new file mode 100644
index 000000000000..cfc2b584be3f
--- /dev/null
+++ b/tests/Files.App.UITests/Files.App.UITests.csproj
@@ -0,0 +1,40 @@
+
+
+
+
+ WinExe
+ net8.0-windows10.0.22621.0
+ 10.0.19041.0
+ win-$(Platform).pubxml
+ true
+ true
+ 10.0.19041.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
diff --git a/tests/Files.App.UITests/MainWindow.xaml b/tests/Files.App.UITests/MainWindow.xaml
new file mode 100644
index 000000000000..08655aa5d7e8
--- /dev/null
+++ b/tests/Files.App.UITests/MainWindow.xaml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/tests/Files.App.UITests/MainWindow.xaml.cs b/tests/Files.App.UITests/MainWindow.xaml.cs
new file mode 100644
index 000000000000..eebd61795287
--- /dev/null
+++ b/tests/Files.App.UITests/MainWindow.xaml.cs
@@ -0,0 +1,36 @@
+// Copyright (c) 2024 Files Community
+// Licensed under the MIT License. See the LICENSE.
+
+using Microsoft.UI.Xaml;
+using Microsoft.UI.Xaml.Controls;
+using Microsoft.UI.Xaml.Controls.Primitives;
+using Microsoft.UI.Xaml.Data;
+using Microsoft.UI.Xaml.Input;
+using Microsoft.UI.Xaml.Media;
+using Microsoft.UI.Xaml.Navigation;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using Windows.Foundation;
+using Windows.Foundation.Collections;
+
+namespace Files.App.UITests
+{
+ ///
+ /// An empty window that can be used on its own or navigated to within a Frame.
+ ///
+ public sealed partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ this.InitializeComponent();
+ }
+
+ private void myButton_Click(object sender, RoutedEventArgs e)
+ {
+ myButton.Content = "Clicked";
+ }
+ }
+}
diff --git a/tests/Files.App.UITests/Package.appxmanifest b/tests/Files.App.UITests/Package.appxmanifest
new file mode 100644
index 000000000000..815e8f8adff2
--- /dev/null
+++ b/tests/Files.App.UITests/Package.appxmanifest
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+ Files UI tests app
+ Files
+ Assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/Files.App.UITests/Properties/PublishProfiles/win-arm64.pubxml b/tests/Files.App.UITests/Properties/PublishProfiles/win-arm64.pubxml
new file mode 100644
index 000000000000..06da89e11fb6
--- /dev/null
+++ b/tests/Files.App.UITests/Properties/PublishProfiles/win-arm64.pubxml
@@ -0,0 +1,19 @@
+
+
+
+
+ FileSystem
+ ARM64
+ win-arm64
+ win10-arm64
+ bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\
+ true
+ False
+ False
+ True
+ False
+ True
+
+
\ No newline at end of file
diff --git a/tests/Files.App.UITests/Properties/PublishProfiles/win-x64.pubxml b/tests/Files.App.UITests/Properties/PublishProfiles/win-x64.pubxml
new file mode 100644
index 000000000000..3568f8d8ddc9
--- /dev/null
+++ b/tests/Files.App.UITests/Properties/PublishProfiles/win-x64.pubxml
@@ -0,0 +1,19 @@
+
+
+
+
+ FileSystem
+ x64
+ win-x64
+ win10-x64
+ bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\
+ true
+ False
+ False
+ True
+ False
+ True
+
+
\ No newline at end of file
diff --git a/tests/Files.App.UITests/Properties/PublishProfiles/win-x86.pubxml b/tests/Files.App.UITests/Properties/PublishProfiles/win-x86.pubxml
new file mode 100644
index 000000000000..4ed30a5eed4f
--- /dev/null
+++ b/tests/Files.App.UITests/Properties/PublishProfiles/win-x86.pubxml
@@ -0,0 +1,19 @@
+
+
+
+
+ FileSystem
+ x86
+ win-x86
+ win10-x86
+ bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\
+ true
+ False
+ False
+ True
+ False
+ True
+
+
\ No newline at end of file
diff --git a/tests/Files.App.UITests/Properties/launchSettings.json b/tests/Files.App.UITests/Properties/launchSettings.json
new file mode 100644
index 000000000000..339d01721d10
--- /dev/null
+++ b/tests/Files.App.UITests/Properties/launchSettings.json
@@ -0,0 +1,10 @@
+{
+ "profiles": {
+ "Files.App.UITests (Package)": {
+ "commandName": "MsixPackage"
+ },
+ "Files.App.UITests (Unpackaged)": {
+ "commandName": "Project"
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/Files.App.UITests/app.manifest b/tests/Files.App.UITests/app.manifest
new file mode 100644
index 000000000000..9cf4194e0e7b
--- /dev/null
+++ b/tests/Files.App.UITests/app.manifest
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PerMonitorV2
+
+
+
\ No newline at end of file