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
143
VideoDownloader.Tests/E2E/UiUsecaseLibraryRedTests.cs
Normal file
143
VideoDownloader.Tests/E2E/UiUsecaseLibraryRedTests.cs
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
using VideoDownloader.Core.Config;
|
||||
using VideoDownloader.Tests.Infrastructure;
|
||||
|
||||
namespace VideoDownloader.Tests.E2E;
|
||||
|
||||
/// <summary>
|
||||
/// UI 복잡 버전 RED 스펙 — §I 라이브러리·재생목록·즐겨찾기·기록·노트 유즈케이스(docs/UI_USECASES.md §I, UC-M01~M22).
|
||||
/// 데스크톱 앱에는 아직 라이브러리 뷰가 없으므로 전부 RED 다.
|
||||
/// </summary>
|
||||
public class UiUsecaseLibraryRedTests
|
||||
{
|
||||
[Fact]
|
||||
public void UC_M01_라이브러리_뷰가_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("LibraryPopup") || SourceTree.MainWindowXaml.Contains("LibraryBtn"),
|
||||
"UC-M01", "받은 파일을 보는 라이브러리 뷰(LibraryPopup/LibraryBtn)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M02_라이브러리를_그리드_리스트로_전환한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("LibraryViewToggle"),
|
||||
"UC-M02", "그리드/리스트 전환(LibraryViewToggle)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M03_라이브러리를_검색할_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("LibrarySearchBox"),
|
||||
"UC-M03", "라이브러리 검색 상자(LibrarySearchBox)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M04_라이브러리를_정렬할_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("LibrarySortMenu"),
|
||||
"UC-M04", "라이브러리 정렬 메뉴(LibrarySortMenu)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M05_항목에_추가일이_표시된다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("AddedDateText"),
|
||||
"UC-M05", "라이브러리 항목의 추가일 표시(AddedDateText)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M06_항목에_썸네일이_표시된다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("LibraryThumbnail"),
|
||||
"UC-M06", "라이브러리 썸네일(LibraryThumbnail)이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M07_항목을_더블클릭해_재생한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("LibraryPlay_Click"),
|
||||
"UC-M07", "라이브러리 재생(LibraryPlay_Click) 처리기가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M08_항목을_삭제할_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("LibraryDelete_Click"),
|
||||
"UC-M08", "라이브러리 삭제(LibraryDelete_Click) 처리기가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M09_항목_폴더를_열_수_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("LibraryOpenFolder_Click"),
|
||||
"UC-M09", "라이브러리 폴더 열기(LibraryOpenFolder_Click)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M10_라이브러리_빈_상태_안내가_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("LibraryEmptyHint"),
|
||||
"UC-M10", "라이브러리 빈 상태 안내(LibraryEmptyHint)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M11_재생목록_셔플이_있다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("PlaylistShuffle"),
|
||||
"UC-M11", "재생목록 셔플(PlaylistShuffle) 요소가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M12_반복_모드가_저장된다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.PropertyExists(typeof(AppConfig), "PlaylistLoopMode"),
|
||||
"UC-M12", "AppConfig.PlaylistLoopMode 속성이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M13_재생목록을_파일로_저장_불러온다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("PlaylistExport"),
|
||||
"UC-M13", "재생목록 내보내기/불러오기(PlaylistExport)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M14_재생목록_순서를_바꾼다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("PlaylistMoveUp"),
|
||||
"UC-M14", "재생목록 순서 변경(PlaylistMoveUp) 요소가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M15_재생목록을_검색한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("PlaylistSearchBox"),
|
||||
"UC-M15", "재생목록 검색 상자(PlaylistSearchBox)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M16_즐겨찾기를_폴더로_정리한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("BookmarkFolder"),
|
||||
"UC-M16", "즐겨찾기 폴더(BookmarkFolder) 기능이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M17_즐겨찾기를_편집한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("EditBookmark"),
|
||||
"UC-M17", "즐겨찾기 편집(EditBookmark) 기능이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M18_즐겨찾기를_검색한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("BookmarkSearchBox"),
|
||||
"UC-M18", "즐겨찾기 검색 상자(BookmarkSearchBox)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M19_즐겨찾기를_HTML로_내보낸다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("ExportBookmarks"),
|
||||
"UC-M19", "즐겨찾기 내보내기(ExportBookmarks) 기능이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M20_방문_기록을_날짜별로_묶는다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowCs.Contains("GroupHistoryByDate"),
|
||||
"UC-M20", "방문 기록 날짜 묶음(GroupHistoryByDate) 기능이 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M21_방문_기록을_검색한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("HistorySearchBox"),
|
||||
"UC-M21", "방문 기록 검색 상자(HistorySearchBox)가 필요하다");
|
||||
|
||||
[Fact]
|
||||
public void UC_M22_노트를_검색한다()
|
||||
=> SourceTree.Usecase(
|
||||
SourceTree.MainWindowXaml.Contains("NotesSearchBox"),
|
||||
"UC-M22", "노트 검색 상자(NotesSearchBox)가 필요하다");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue