Testowanie wspomagane przez sztuczną inteligencję dla aplikacji Windows

Polecenia winapp ui oraz funkcja winui-ui-testing umożliwiają agentowi AI automatyczne analizowanie interfejsu użytkownika aplikacji, wchodzenie z nim w interakcję i jego weryfikację, a także opisywanie tego, co widzi, w języku naturalnym, dzięki czemu możesz wprowadzać kolejne zmiany bez konieczności wcześniejszego pisania kodu infrastruktury testowej.

Polecenia inspekcji interfejsu użytkownika

Funkcja winui-ui-testing jest zawarta we wtyczce winui@awesome-copilot. Jeśli wtyczka została zainstalowana podczas instalacji, nie jest wymagana żadna dodatkowa instalacja.

Command Do czego służy
winapp ui inspect Wyświetla drzewo dostępności działającej aplikacji
winapp ui screenshot Przechwytuje zrzut ekranu okna aplikacji
winapp ui click <selector> Klika przycisk lub wybiera element
winapp ui invoke <selector> Wywołuje akcję domyślną kontrolki
winapp ui search <text> Wyszukuje drzewo elementów według nazwy lub identyfikatora automationId
winapp ui set-value <selector> <value> Ustawia wartość kontrolki TextBox lub ComboBox

Poproś agenta o przetestowanie aplikacji

  1. Uruchom aplikację:
    dotnet run
    
  2. Zadaj agentowi pytanie w języku naturalnym, takie jak:

    "Spójrz na działającą aplikację i powiedz mi, czy przycisk Zapisz jest osiągalny, gdy formularz jest pusty".

  3. Agent używa winapp ui inspect i winapp ui screenshot, aby badać aplikację i udzielać odpowiedzi.

Ten przepływ pracy umożliwia przechwycenie problemów — brak fokusu klawiatury, wyłączonych kontrolek, problemy z układem — przed napisaniem pojedynczego wiersza kodu testowego.

Pisanie testów automatycznych

Gdy interaktywnie zapoznasz się z aplikacją, poproś agenta o wygenerowanie formalnych testów. Użyj tego monitu startowego:

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.

Wygenerowane testy używają winapp ui poleceń jako warstwy interakcji, więc są uruchamiane bez oddzielnej struktury automatyzacji interfejsu użytkownika.

Ustaw AutomationIds w kodzie XAML

Aby winapp ui click mogło niezawodnie wskazywać elementy docelowe, ustaw AutomationProperties.AutomationId w kodzie XAML:

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

Zapytaj agenta: "Dodaj atrybuty AutomationId do wszystkich kontrolek interakcyjnych w tym języku XAML".

Uruchom testy w CI

Możesz uruchamiać polecenia winapp ui w przepływie pracy usługi GitHub Actions. Testy wymagają sesji z interfejsem graficznym; użyj runnera systemu Windows z runs-on: windows-latest.

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

Polecenia winapp ui współdziałają z dynamicznym drzewem ułatwień dostępu uruchomionego procesu. Testy muszą uruchamiać aplikację w ramach konfiguracji testowej (lub w kroku TestInitialize) i zamykać ją w ramach czynności końcowych.

Automatyczne sprawdzanie ułatwień dostępu

Polecenie winapp ui inspect zwraca pełne drzewo ułatwień dostępu — nazwy elementów, typy, stany i identyfikatory AutomationId. Poproś agenta o przejrzenie go pod kątem luk w dostępności:

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.

Ten prompt sprawdza się również jako wstępny przegląd dostępności przed uruchomieniem narzędzia do formalnego audytu. Aby uzyskać pełną listę kontrolną ułatwień dostępu, zobacz Omówienie ułatwień dostępu dla aplikacji Windows.