UI 복잡 버전 234 RED→GREEN 완료(docs/UI_USECASES.md §A~§J): 라이브 테마 전환(DynamicResource 전환+ThemeResolver+HighContrast 테마, 재시작 없음), 디자인 토큰 체계·WCAG 대비 결함 5건 수정, 설정창 카테고리 내비/검색 재구성+AppConfig 40여 속성, 다운로드 관리자(속도/ETA/세그먼트맵/전체 일시정지-이어받기/CSV 내보내기/예약 게이트/중복 확인), 라이브러리·아카이브·작업공간·재생목록·즐겨찾기 편집 뷰, 접근성(자동화 속성 30여 개·커스텀 피어·docs/ACCESSIBILITY.md), 인터랙션(휠 클릭 새 탭·XButton 탐색·F12·영역 캡처·프로필 전환), 상태/알림(토스트·알림센터·온보딩·CrashReportDialog). 보강 테스트 35건+실창 E2E 4건(StaDispatcher 기반 — 프록시 설정이 기시작 핸들러를 건드리는 크래시 실결함 수정 포함) — 453/453 GREEN. 이전 미커밋 작업(CI 워크플로·Mdns·QueueHub·UpdateChecker·AGENTS/CLAUDE·빌드 스크립트) 일괄 포함
This commit is contained in:
parent
5a0ce730b2
commit
17f2f91152
88 changed files with 9463 additions and 1127 deletions
132
VideoDownloader.Tests/E2E/UiUsecaseSettingsRedTests.cs
Normal file
132
VideoDownloader.Tests/E2E/UiUsecaseSettingsRedTests.cs
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
using VideoDownloader.App;
|
||||
using VideoDownloader.Core.Config;
|
||||
using VideoDownloader.Tests.Infrastructure;
|
||||
|
||||
namespace VideoDownloader.Tests.E2E;
|
||||
|
||||
/// <summary>
|
||||
/// UI 복잡 버전 RED 스펙 — §F 설정 창 유즈케이스(docs/UI_USECASES.md §F, UC-S01~S20).
|
||||
/// RED 단계: 전부 실패하는 것이 정상이다.
|
||||
/// </summary>
|
||||
public class UiUsecaseSettingsRedTests
|
||||
{
|
||||
[Fact]
|
||||
public void UC_S01_설정을_검색으로_찾을_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("SettingsSearchBox"),
|
||||
"UC-S01", "설정 검색 상자(SettingsSearchBox)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S02_카테고리_내비게이션이_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("SettingsNavList"),
|
||||
"UC-S02", "좌측 카테고리 내비게이션(SettingsNavList)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S03_재시작_필요_변경을_배너로_알린다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("RestartBanner"),
|
||||
"UC-S03", "재시작 필요 알림 배너(RestartBanner)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S04_기본값으로_한번에_되돌릴_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("ResetDefaultsButton"),
|
||||
"UC-S04", "기본값 복원 버튼(ResetDefaultsButton)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S05_설정을_내보낼_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("ExportSettingsButton"),
|
||||
"UC-S05", "설정 내보내기 버튼(ExportSettingsButton)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S06_설정을_가져올_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("ImportSettingsButton"),
|
||||
"UC-S06", "설정 가져오기 버튼(ImportSettingsButton)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S07_고급_항목을_접을_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("AdvancedSection"),
|
||||
"UC-S07", "고급 섹션 접힘(AdvancedSection)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S08_Ctrl_S로_저장할_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowCs.Contains("Key.S"),
|
||||
"UC-S08", "설정창 코드비하인드가 Ctrl+S(Key.S) 저장을 처리해야 한다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S09_취소_시_폐기_확인을_받는다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MethodExists(typeof(SettingsWindow), "ConfirmDiscardChanges"),
|
||||
"UC-S09", "SettingsWindow.ConfirmDiscardChanges() 확인 절차가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S10_설정창_크기_위치가_기억된다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.PropertyExists(typeof(AppConfig), "SettingsWindowBounds"),
|
||||
"UC-S10", "AppConfig.SettingsWindowBounds 속성이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S11_재시도_횟수를_UI에서_바꾼다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("Name=\"RetriesBox\""),
|
||||
"UC-S11", "재시도 횟수 입력(RetriesBox)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S12_UserAgent를_UI에서_바꾼다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("Name=\"UserAgentBox\""),
|
||||
"UC-S12", "User-Agent 입력(UserAgentBox)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S13_프록시를_설정할_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("Name=\"ProxyBox\""),
|
||||
"UC-S13", "프록시 설정(ProxyBox)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S14_UI_언어를_고를_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("Name=\"LanguageBox\""),
|
||||
"UC-S14", "언어 선택(LanguageBox)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S15_자동_실행을_설정할_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("Name=\"AutoStartBox\""),
|
||||
"UC-S15", "시작 시 자동 실행(AutoStartBox)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S16_트레이로_최소화할_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("MinimizeToTrayBox"),
|
||||
"UC-S16", "트레이 최소화 옵션(MinimizeToTrayBox)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S17_알림_설정_섹션이_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("알림"),
|
||||
"UC-S17", "설정창에 '알림' 섹션이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S18_실험적_기능_섹션이_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("실험적"),
|
||||
"UC-S18", "설정창에 '실험적' 기능 섹션이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S19_실시간_검증_힌트가_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("ValidationHint"),
|
||||
"UC-S19", "입력 검증 힌트(ValidationHint) 요소가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_S20_버전_정보가_표시된다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.SettingsWindowXaml.Contains("Name=\"VersionText\""),
|
||||
"UC-S20", "앱 버전 표시(VersionText)가 필요하다");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue