Windows uygulamaları için yapay zeka destekli test

winapp ui komutları ve winui-ui-testing becerisi, yapay zeka aracınızın uygulamanızın kullanıcı arayüzünü otomatik olarak incelemesine, onunla etkileşim kurmasına ve doğrulamasına olanak tanır; gördüklerini doğal dille açıklayarak önce test düzeneği kodu yazmadan yineleme yapabilmenizi sağlar.

Kullanıcı arabirimi inceleme komutları

winui-ui-testing becerisi, winui@awesome-copilot eklentisine dahildir. Eklentiyi kurulum sırasında yüklediyseniz ek yükleme gerekmez.

Command Ne yapar?
winapp ui inspect Çalışan uygulamanın erişilebilirlik ağacını döküm eder
winapp ui screenshot Uygulama penceresinin ekran görüntüsünü yakalar
winapp ui click <selector> Bir düğmeye tıklar veya bir öğeyi seçer
winapp ui invoke <selector> Bir denetimde varsayılan eylemi çağırır
winapp ui search <text> Öğe ağacını ada veya AutomationId'ye göre arar
winapp ui set-value <selector> <value> TextBox veya ComboBox değerini ayarlar

Temsilcinizden uygulamayı test etmesini isteyin

  1. Uygulamayı çalıştırın:
    dotnet run
    
  2. Temsilcinize doğal dille ilgili bir soru sorun, örneğin:

    "Çalışan uygulamaya bakın ve form boş olduğunda Kaydet düğmesine ulaşılıp ulaşılmadığını söyleyin."

  3. Aracı, uygulamayı incelemek ve yanıt vermek için winapp ui inspect ve winapp ui screenshot kullanır.

Bu iş akışı, tek bir satır test kodu bile yazmadan önce eksik klavye odağını, devre dışı bırakılmış denetimleri ve düzen sorunlarını tespit etmenizi sağlar.

Otomatikleştirilmiş testler yazma

Uygulamayı etkileşimli olarak keşfettikten sonra temsilcinizden resmi testler oluşturmasını isteyin. Şu başlangıç istemini kullanın:

Write an xUnit UI test for my WinUI 3 app that:
1. Launches the app with dotnet run
2. Verifies the main window title is "My App"
3. Clicks the button with AutomationId "SaveButton"
4. Verifies a success message appears
Use the winapp ui commands for element interaction.

Oluşturulan testler etkileşim katmanı olarak komutları kullandığından winapp ui ayrı bir UI otomasyon çerçevesi olmadan çalışır.

XAML'nizde AutomationId'leri ayarlama

winapp ui click öğeleri güvenilir bir şekilde hedefleyebilmesi için, XAML’inizde AutomationProperties.AutomationId ayarlayın:

<Button AutomationProperties.AutomationId="SaveButton"
        Content="Save" />
<TextBox AutomationProperties.AutomationId="TitleInput" />

Aracınıza sorun: "Bu XAML'deki tüm etkileşimli denetimlere AutomationId öznitelikleri ekleyin."

CI'de testleri çalıştırma

komutları bir GitHub Actions iş akışında çalıştırabilirsinizwinapp ui. Testler grafiksel bir oturum gerektirir; runs-on: windows-latest ile bir Windows çalıştırıcısı kullanın.

name: UI tests
on: [push, pull_request]
jobs:
  ui-test:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '9.0.x'
      - name: Install winapp CLI
        run: winget install --id Microsoft.WinAppCLI --silent --accept-package-agreements --accept-source-agreements --disable-interactivity
      - name: Build
        run: dotnet build
      - name: Run UI tests
        run: dotnet test --filter Category=UITest

Note

winapp ui komutları, çalışmakta olan bir sürecin canlı erişilebilirlik ağacıyla etkileşim kurar. Testler, test kurulumunun bir parçası olarak uygulamayı başlatmalı (veya bir TestInitialize adımında) ve test sonlandırma aşamasında kapatmalıdır.

Erişilebilirliği otomatik olarak denetleme

Komutu, winapp ui inspect öğe adları, türleri, durumları ve AutomationId'leri gibi tam erişilebilirlik ağacının çıktısını alır. Temsilcinizden erişilebilirlik eksikliklerini gözden geçirmesini isteyin:

Run "winapp ui inspect" on the running app and identify any issues:
- Controls without accessible names
- Missing keyboard focus order
- Buttons or links that aren't reachable by Tab
Report findings as a prioritized list, most critical first.

Bu istem, resmi bir denetim aracı çalıştırmadan önce ilk geçişli erişilebilirlik incelemesi olarak iyi çalışır. Tam erişilebilirlik denetim listesi için bkz. Windows uygulamaları için erişilebilirlik genel bakışı.