@@ -173,6 +173,202 @@ jobs:
173173 path : playwright-traces/
174174` ` `
175175
176+ ## Supported CI Runners and Platform Requirements
177+
178+ ### CI Runner Support Matrix
179+
180+ | Runner Type | Unit Tests | Integration Tests | Browser E2E | MAUI UI | WPF UI |
181+ |-------------|:----------:|:-----------------:|:-----------:|:-------:|:------:|
182+ | **GitHub Actions** |
183+ | ` ubuntu-latest` | ✅ | ✅ | ✅ | ⚠️¹ | ❌ |
184+ | `windows-latest` | ✅ | ✅ | ✅ | ⚠️¹ | ✅² |
185+ | `macos-latest` | ✅ | ✅ | ✅ | ⚠️¹ | ❌ |
186+ | **Azure DevOps** |
187+ | `ubuntu-latest` | ✅ | ✅ | ✅ | ⚠️¹ | ❌ |
188+ | `windows-latest` | ✅ | ✅ | ✅ | ⚠️¹ | ✅² |
189+ | `vmImage : macOS-latest` | ✅ | ✅ | ✅ | ⚠️¹ | ❌ |
190+ | **Self-Hosted** |
191+ | Linux | ✅ | ✅ | ✅ | ⚠️³ | ❌ |
192+ | Windows | ✅ | ✅ | ✅ | ⚠️³ | ✅ |
193+ | macOS | ✅ | ✅ | ✅ | ⚠️³ | ❌ |
194+
195+ **Notes:**
196+ - ✅ = Fully supported
197+ - ⚠️ = Partial support with additional setup
198+ - ❌ = Not supported
199+ - ¹ = Android emulator tests possible but slow; iOS requires macOS with Xcode
200+ - ² = Requires Windows UI (non-headless agent)
201+ - ³ = Requires platform-specific emulators/simulators installed
202+
203+ # ## Platform Requirements by Test Type
204+
205+ # ### Playwright Browser Tests (Current - Recommended)
206+
207+ **Minimum Requirements:**
208+ - .NET 10 SDK
209+ - Playwright browsers : ` dotnet playwright install --with-deps chromium`
210+ - 2GB RAM minimum, 4GB recommended
211+ - No display required (runs headless)
212+
213+ **GitHub Actions Setup:**
214+ ` ` ` yaml
215+ - name: Install Playwright
216+ run: dotnet playwright install --with-deps chromium
217+ ` ` `
218+
219+ # ### MAUI UI Automation (Future - Feature 1.5.3)
220+
221+ > **Status:** Not yet implemented. Requirements documented for planning purposes.
222+
223+ **Android Testing:**
224+ | Requirement | CI Runner | Notes |
225+ |-------------|-----------|-------|
226+ | Android SDK | All | Auto-installed via `setup-android` action |
227+ | Android Emulator | All | Requires hardware acceleration (KVM on Linux) |
228+ | Java 17+ | All | Required by Android SDK |
229+
230+ ` ` ` yaml
231+ # GitHub Actions example for MAUI Android
232+ jobs:
233+ maui-android:
234+ runs-on: ubuntu-latest
235+ steps:
236+ - uses: actions/setup-java@v4
237+ with:
238+ java-version: 17
239+ distribution: temurin
240+ - name: Setup Android SDK
241+ uses: android-actions/setup-android@v3
242+ - name: Start Emulator
243+ run: |
244+ $ANDROID_HOME/emulator/emulator -avd test -no-window -gpu swiftshader &
245+ adb wait-for-device
246+ ` ` `
247+
248+ **iOS Testing:**
249+ | Requirement | CI Runner | Notes |
250+ |-------------|-----------|-------|
251+ | macOS runner | macOS only | iOS simulator requires macOS |
252+ | Xcode 15+ | macOS only | Required for iOS development |
253+ | iOS Simulator | macOS only | Auto-available on macOS runners |
254+
255+ ` ` ` yaml
256+ # GitHub Actions example for MAUI iOS
257+ jobs:
258+ maui-ios:
259+ runs-on: macos-latest
260+ steps:
261+ - name: Select Xcode
262+ run: sudo xcode-select -s /Applications/Xcode_15.4.app
263+ - name: Boot iOS Simulator
264+ run: |
265+ xcrun simctl boot "iPhone 15 Pro"
266+ ` ` `
267+
268+ **Cross-Platform MAUI CI Strategy:**
269+ ` ` ` yaml
270+ jobs:
271+ maui-unit-tests:
272+ runs-on: ubuntu-latest # No platform-specific dependencies
273+
274+ maui-android-e2e:
275+ runs-on: ubuntu-latest # Android emulator with KVM
276+ if: github.event.schedule # Nightly only (slow)
277+
278+ maui-ios-e2e:
279+ runs-on: macos-latest # iOS simulator required
280+ if: github.event.schedule # Nightly only (slow)
281+ ` ` `
282+
283+ # ### WPF UI Automation (Future - Feature 1.5.4)
284+
285+ > **Status:** Not yet implemented. Requirements documented for planning purposes.
286+
287+ **Requirements:**
288+ | Requirement | CI Runner | Notes |
289+ |-------------|-----------|-------|
290+ | Windows runner | Windows only | WPF is Windows-only |
291+ | Non-headless agent | Self-hosted or Windows UI | UI automation needs display |
292+ | .NET 10 Windows workload | Windows | `net10.0-windows` TFM |
293+
294+ **CI Considerations:**
295+ - GitHub Actions `windows-latest` does NOT support UI automation by default
296+ - Options for WPF UI testing :
297+ 1. **Self-hosted Windows runner** with display access
298+ 2. **FlaUI + Microsoft UI Automation** (can work headless in some scenarios)
299+ 3. **Virtual display** using third-party tools (not officially supported)
300+
301+ ` ` ` yaml
302+ # Self-hosted Windows runner with UI access
303+ jobs:
304+ wpf-ui-tests:
305+ runs-on: [self-hosted, windows, ui-enabled]
306+ steps:
307+ - name: Run WPF UI Tests
308+ run: dotnet test CoreIdent.Client.Wpf.Tests --filter "Category=UI"
309+ ` ` `
310+
311+ **Alternative: Unit + Integration Tests Only**
312+
313+ For WPF clients without UI automation :
314+ ` ` ` yaml
315+ jobs:
316+ wpf-headless-tests:
317+ runs-on: windows-latest
318+ steps:
319+ - name: Run WPF Unit + Integration Tests
320+ run: dotnet test CoreIdent.Client.Wpf.Tests --filter "Category!=UI"
321+ ` ` `
322+
323+ # ## Cost and Time Considerations
324+
325+ | Test Type | Typical Duration | CI Minutes | Recommendation |
326+ |-----------|------------------|------------|----------------|
327+ | Unit Tests | 10-30s | ~0.5 min | Every PR |
328+ | Integration Tests | 30-60s | ~1 min | Every PR |
329+ | Browser E2E (Playwright) | 1-5 min | ~3 min | Every PR |
330+ | Android Emulator E2E | 10-20 min | ~15 min | Nightly/Release |
331+ | iOS Simulator E2E | 10-20 min | ~15 min | Nightly/Release |
332+ | WPF UI E2E | 5-10 min | ~8 min | Nightly/Release |
333+
334+ # ## Recommended CI Strategy
335+
336+ ` ` ` yaml
337+ # PR builds: Fast feedback
338+ on: pull_request
339+ jobs:
340+ quick-tests: # < 5 minutes
341+ runs-on: ubuntu-latest
342+ steps:
343+ - run: dotnet test --filter "Category!=E2E&Category!=UI"
344+
345+ # Main branch: Full E2E
346+ on:
347+ push:
348+ branches: [main]
349+ jobs:
350+ browser-e2e:
351+ runs-on: ubuntu-latest
352+ steps:
353+ - run: dotnet playwright install --with-deps chromium
354+ - run: dotnet test --filter "Category=E2E"
355+
356+ # Nightly: Platform-specific UI tests
357+ on:
358+ schedule:
359+ - cron: '0 2 * * *'
360+ jobs:
361+ android-e2e:
362+ runs-on: ubuntu-latest
363+ # ... Android emulator setup
364+ ios-e2e:
365+ runs-on: macos-latest
366+ # ... iOS simulator setup
367+ wpf-e2e:
368+ runs-on: [self-hosted, windows, ui-enabled]
369+ # ... WPF UI automation
370+ ` ` `
371+
176372# # Diagnostic Output
177373
178374On test failure, Playwright automatically captures :
0 commit comments