131 lines
5.5 KiB
C#
131 lines
5.5 KiB
C#
using VideoDownloader.Core.Config;
|
|
using VideoDownloader.Tests.Infrastructure;
|
|
|
|
namespace VideoDownloader.Tests.E2E;
|
|
|
|
/// <summary>
|
|
/// UI 복잡 버전 RED 스펙 — §J 상태 표시·알림·피드백 유즈케이스(docs/UI_USECASES.md §J, UC-N01~N20).
|
|
/// RED 단계: 전부 실패하는 것이 정상이다.
|
|
/// </summary>
|
|
public class UiUsecaseStatusRedTests
|
|
{
|
|
[Fact]
|
|
public void UC_N01_상태바에_전체_다운로드_진행률이_표시된다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("AggregateProgress"),
|
|
"UC-N01", "상태바 통합 진행률(AggregateProgress) 요소가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N02_토스트_호스트가_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("ToastHost"),
|
|
"UC-N02", "알림 토스트 컨테이너(ToastHost)가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N03_토스트_표시_시간을_설정한다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.PropertyExists(typeof(AppConfig), "ToastDurationMs"),
|
|
"UC-N03", "AppConfig.ToastDurationMs 속성이 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N04_치명_오류_배너가_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("ErrorBanner"),
|
|
"UC-N04", "상단 고정 오류 배너(ErrorBanner)가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N05_오류_상세를_펼쳐_볼_수_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("ErrorDetailExpander"),
|
|
"UC-N05", "오류 상세 펼침(ErrorDetailExpander) 요소가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N06_클립보드_URL_감지_제안이_뜬다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("ClipboardHint"),
|
|
"UC-N06", "클립보드 URL 감지 배지(ClipboardHint)가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N07_원격_서버_상태가_상시_표시된다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("ServerStatusIcon"),
|
|
"UC-N07", "서버 상태 아이콘(ServerStatusIcon)이 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N08_툴바에서_QR_페어링을_바로_연다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("PairingBtn"),
|
|
"UC-N08", "툴바 페어링 버튼(PairingBtn)이 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N09_업데이트_가능_배지가_뜬다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("UpdateBadge"),
|
|
"UC-N09", "새 버전 알림 배지(UpdateBadge)가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N10_차단_도메인별_통계가_보인다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("ShieldDomainStats"),
|
|
"UC-N10", "도메인별 차단 통계(ShieldDomainStats)가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N11_네트워크_끊김이_표시된다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowCs.Contains("NetworkChange"),
|
|
"UC-N11", "NetworkChange 오프라인 감지 처리가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N12_절전_모드_진입_시_일시정지_옵션이_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.PropertyExists(typeof(AppConfig), "PauseOnPowerSaver"),
|
|
"UC-N12", "AppConfig.PauseOnPowerSaver 속성이 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N13_상태바_텍스트를_클릭해_복사한다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowCs.Contains("CopyStatus_Click"),
|
|
"UC-N13", "상태 복사(CopyStatus_Click) 처리기가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N14_알림_센터가_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("NotificationCenter"),
|
|
"UC-N14", "지나간 알림 목록(NotificationCenter)이 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N15_방해_금지_모드를_설정할_수_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.PropertyExists(typeof(AppConfig), "DoNotDisturb"),
|
|
"UC-N15", "AppConfig.DoNotDisturb 속성이 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N16_온보딩_안내가_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("Onboarding") || SourceTree.MainWindowCs.Contains("Onboarding"),
|
|
"UC-N16", "첫 실행 온보딩(Onboarding) 요소가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N17_빈_상태_공용_스타일이_정의된다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.HasKey(SourceTree.SharedXaml, "EmptyStateStyle"),
|
|
"UC-N17", "빈 상태 공용 스타일(EmptyStateStyle) 토큰이 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N18_크래시_리포트_대화상자가_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.FindType("CrashReportDialog") is not null,
|
|
"UC-N18", "충돌 리포트 대화상자(CrashReportDialog)가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N19_다운로드_버튼에_진행_개수_배지가_뜬다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("DownloadsBtnBadge"),
|
|
"UC-N19", "툴바 다운로드 버튼 배지(DownloadsBtnBadge)가 필요하다");
|
|
|
|
[Fact]
|
|
public void UC_N20_상태바_우측_보조_정보_영역이_있다()
|
|
=> SourceTree.Usecase(
|
|
SourceTree.MainWindowXaml.Contains("StatusRight"),
|
|
"UC-N20", "상태바 우측 정보 영역(StatusRight)이 필요하다");
|
|
}
|