-
Notifications
You must be signed in to change notification settings - Fork 1.7k
UITests
To run the tests on iOS or Catalyst, you'll need a Mac. To run the tests on Windows, you'll need a Windows machine. Android tests can be run from either platform.
├── Controls
│ ├── tests
│ ├── ├── Controls.TestCases.App
│ │ ├── Controls.TestCases.Shared.Tests
- Controls.TestCases.App: .NET MAUI Sample used for the automated UI tests
- Controls.TestCases.Shared.Tests: .NET MAUI library used to define the UI tests
Each platform has a specific UI tests library project where it is possible to add specific tests per platform.
├── Controls
│ ├── tests
│ │ ├── Controls.TestCases.Android.Tests
│ │ ├── Controls.TestCases.iOS.Tests
│ │ ├── Controls.TestCases.Mac.Tests
│ │ ├── Controls.TestCases.WinUI.Tests
https://github.com/dotnet/maui/blob/main/docs/design/UITesting.md
- make sure a
dotnet tool restore
on the repo home - Make sure DeveloperMode is turned on
- Install nodejs https://nodejs.org/dist/v18.13.0/node-v18.13.0-x64.msi
- Install Windows App Driver from https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1
- Validate you have on your path %USERPROFILE%\AppData\Roaming\npm
- Note: you may need to restart your machine for this to take effect
- To install Appium run the following as Administrator https://github.com/dotnet/maui/tree/main/eng/scripts/appium-install.ps1
- make sure to run
dotnet tool restore
on the repo home
- Install nodejs https://nodejs.org/dist/v18.16.0/node-v18.16.0.pkg
- To install Appium run the following as sudo https://github.com/dotnet/maui/tree/main/eng/scripts/appium-install.ps1
sudo dotnet pwsh /path/to/scripts/appium-install.ps1
- brew install node
- To install Appium run the following script https://github.com/dotnet/maui/tree/main/eng/scripts/appium-install.ps1
dotnet pwsh /path/to/scripts/appium-install.ps1
-
You will need to setup your
ANDROID_HOME
environment variable so that Appium is able to find it.- https://developer.android.com/tools/variables
- Development guide has instructions for setting these variables on a MAC.
-
Ensure that you have the Android API 30 SDK installed, with the emulator image for Play store on x86/x64. By default, the tests use that. See screenshot below. If you want to use another image you can specify the
--device
argument, with something like--device="android-emulator-64_33"
where the 64 means image x86_x64 and 33 indicates the API level.
./build.ps1 --target=dotnet-buildtasks --configuration="Release" --workloads=global
Android
./build.ps1 --target=dotnet-samples --configuration="Release" --workloads=global --android --usenuget=false
./build.ps1 -Script eng/devices/android.cake --target=uitest --configuration="Release"
Windows
./build.ps1 --target=dotnet-samples --configuration="Release" --windows --verbosity=diagnostic --workloads=global --usenuget=false
./build.ps1 -Script eng/devices/windows.cake --target=uitest --device="windows10" --apiversion="10.0.20348" --configuration="Release"
iOS
./build.ps1 --target=dotnet-samples --configuration="Release" --workloads=global --ios --usenuget=false
./build.ps1 -Script eng/devices/ios.cake --target=uitest --device=ios-simulator-64 --apiversion="16.2" --configuration="Release"
Catalyst
./build.ps1 --target=dotnet-samples --configuration="Release" --catalyst --verbosity=diagnostic --workloads=global --usenuget=false
./build.ps1 -Script eng/devices/catalyst.cake --target=uitest --apiversion="10.13" --configuration="Release" --device=mac
- Deploy the app
Control.Sample.UITests
to your simulator, device or on your desktop. - Build the
Controls.AppiumTests.csproj
so the tests show up on the Test Explorer - Run the tests
Android
./build.ps1 --target=dotnet-legacy-controlgallery --configuration="Release" --android --verbosity=diagnostic --workloads=global
./build.ps1 -Script eng/devices/android.cake --target=cg-uitest --project="/Users/ruimarinho/dotnet/maui/src/Compatibility/ControlGallery/test/Android.UITests/Compatibility.ControlGallery.Android.UITests.csproj" --appproject="/Users/ruimarinho/dotnet/maui/src/Compatibility/ControlGallery/src/Android/Compatibility.ControlGallery.Android.csproj" --configuration="Release"
iOS
dotnet cake eng/devices/ios.cake --target=cg-uitest --project="./maui/src/Compatibility/ControlGallery/test/iOS.UITests/Compatibility.ControlGallery.iOS.UITests.csproj" --appproject="./maui/src/Compatibility/ControlGallery/src/iOS/Compatibility.ControlGallery.iOS.csproj" --where="cat=FailsOnMauiiOS" --workloads=global
- Try starting
appium
from the command line to get a better error messagenode /usr/local/lib/node_modules/appium/build/lib/main.js