Windows 앱에 대한 AI 지원 테스트

winapp ui 명령과 winui-ui-testing 스킬을 사용하면 AI 에이전트가 앱의 UI를 자동으로 검사하고, 상호작용하며, 검증할 수 있고, 자신이 보는 내용을 자연어로 설명하므로 테스트 하네스 코드를 먼저 작성하지 않고도 반복적으로 개선할 수 있습니다.

UI 검사 명령

winui-ui-testing 기술은 winui@awesome-copilot 플러그인에 포함되어 있습니다. 설치하는 동안 플러그 인을 설치한 경우 추가 설치가 필요하지 않습니다.

Command 용도
winapp ui inspect 실행 중인 앱의 접근성 트리를 덤프합니다.
winapp ui screenshot 앱 창의 스크린샷 캡처
winapp ui click <selector> 단추를 클릭하거나 항목을 선택합니다.
winapp ui invoke <selector> 컨트롤에서 기본 동작을 호출합니다.
winapp ui search <text> 이름 또는 AutomationId를 사용하여 요소 트리 검색
winapp ui set-value <selector> <value> TextBox 또는 ComboBox의 값을 설정합니다.

에이전트에 앱 테스트 요청

  1. 앱을 실행합니다.
    dotnet run
    
  2. 에이전트에게 다음과 같은 자연어 질문을 합니다.

    "실행 중인 앱을 살펴보고 양식이 비어 있을 때 저장 단추에 연결할 수 있는지 알려주세요."

  3. 에이전트는 winapp ui inspectwinapp ui screenshot를 사용하여 앱을 살펴보고 응답합니다.

이 워크플로를 사용하면 한 줄의 테스트 코드를 작성하기 전에 키보드 포커스 누락, 비활성화된 컨트롤, 레이아웃 문제 등의 문제를 파악할 수 있습니다.

자동화된 테스트 작성

대화형으로 앱을 탐색한 후에는 에이전트에게 공식 테스트를 생성하도록 요청합니다. 이 시작 프롬프트를 사용합니다.

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.

생성된 테스트는 상호 작용 계층으로 명령을 사용 winapp ui 하므로 별도의 UI 자동화 프레임워크 없이 실행됩니다.

XAML에서 AutomationIds 설정

winapp ui click이(가) 요소를 안정적으로 지정할 수 있도록 XAML에서 AutomationProperties.AutomationId을 설정하세요.

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

에이전트에게 요청하세요: "이 XAML에 있는 모든 대화형 컨트롤에 AutomationId 특성을 추가해 줘."

CI에서 테스트 실행

GitHub Actions 워크플로에서 winapp ui 명령을 실행할 수 있습니다. 테스트에는 그래픽 세션이 필요하므로 runs-on: windows-latest가 있는 Windows 러너를 사용하세요.

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

메모

명령은 winapp ui 실행 중인 프로세스의 라이브 접근성 트리와 상호 작용합니다. 테스트는 테스트 설정의 일부로(또는 TestInitialize 단계에서) 앱을 실행하고 teardown 단계에서 닫아야 합니다.

자동으로 접근성 확인

winapp ui inspect 명령은 요소 이름, 형식, 상태 및 AutomationIds와 같은 전체 접근성 트리를 출력합니다. 에이전트에 접근성 격차를 검토하도록 요청합니다.

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.

이 프롬프트는 공식 감사 도구를 실행하기 전에 첫 번째 통과 접근성 검토로 잘 작동합니다. 완전한 접근성 검사 목록은 Windows 앱에 대한 접근성 개요를 참조하세요.