.agents/skills/release-testing/references/setup.md
Prerequisites and environment setup for integration tests.
dotnet workload install maui wasm-tools
npm install -g appium
appium driver install mac2 uiautomator2 xcuitest
Docker Desktop must be installed and running. Verify with:
docker --version
docker info --format '{{.OSType}}' # Should output "linux"
The LinuxConsoleTests use SkiaSharp.NativeAssets.Linux.NoDependencies (statically linked) to avoid system dependency issues in minimal containers.
cd tests/SkiaSharp.Tests.Integration
dotnet build -p:SkiaSharpVersion=X.Y.Z -p:HarfBuzzSharpVersion=X.Y.Z.N
pwsh bin/Debug/net8.0/playwright.ps1 install chromium
brew install carthagesudo xcode-select -s /Applications/Xcode.appCheck these common locations in order:
$ANDROID_HOME or $ANDROID_SDK_ROOT (if set)$HOME/Library/Android/sdk (macOS default)$HOME/Android/Sdk (Linux default)C:\Users\<user>\AppData\Local\Android\Sdk (Windows default)If not found: Ask user for path, then verify platform-tools/adb and emulator/emulator exist.
Once SDK is located, verify:
adb version worksemulator -list-avds returns output| Type | API Level | Purpose |
|---|---|---|
| Old | 21-23 | Minimum supported Android |
| New | 35-36 | Latest Android |
To check existing AVDs: List with emulator -list-avds, then check each AVD's config.ini for image.sysdir containing android-XX where XX is the API level.
To create missing emulators:
sdkmanager "system-images;android-{API};google_apis;arm64-v8a"avdmanager create avd -n {name} -k "system-images;android-{API};google_apis;arm64-v8a" -d pixelFor API 36+, use google_apis_playstore instead of google_apis.
⚠️ CRITICAL: Always use -wipe-data to ensure a clean emulator state.
emulator -avd {name} -wipe-data -no-snapshot -no-audioadb shell getprop sys.boot_completed until it returns 1
adb shell getprop ro.build.version.sdkNote: If emulator or adb are not in PATH, locate them via the SDK path documented above (e.g., $ANDROID_HOME/emulator/emulator).
xcrun simctl list runtimes | grep -i ios
Tests require oldest and newest available runtimes.
To find devices for a runtime: xcrun simctl list devices available | grep -A10 "iOS {version}"
Before running release tests, verify:
adb version workswhich appium returns pathappium driver list --installed shows uiautomator2, xcuitestdocker info succeeds (for Linux console tests)If any check fails: Fix before proceeding. Do not skip tests.
Test project uses these feeds (pre-configured in nuget.config):
https://aka.ms/skiasharp-eap/index.jsonhttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json