feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization
This commit is contained in:
parent
a88aafa1e5
commit
0e568f1f0a
975 changed files with 130593 additions and 16783 deletions
|
|
@ -0,0 +1,77 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using Paca.App.Services;
|
||||
using Paca.Tests.Infrastructure;
|
||||
using Xunit;
|
||||
|
||||
namespace Paca.Tests.E2E;
|
||||
|
||||
/// <summary>
|
||||
/// Phase 4 심화 하드닝 게이트 (TDD 선행 RED):
|
||||
/// - Gate 401: MainWindow의 Ctrl+Shift+P 전체 일시정지 단축키(pauseall) 배선 무결성
|
||||
/// - Gate 402: 미디어 팝업 및 사이트 정보 내 하드코딩 색상(#FF4444, #10B981)의 시맨틱 브러시 일체화
|
||||
/// - Gate 403: ShortcutManager 기본 단축키 목록과 MainWindow 키 라우터 전수 패리티 검증
|
||||
/// </summary>
|
||||
public class DesktopUiAndShortcutHardeningPhase4Tests
|
||||
{
|
||||
private static readonly string AppDir = Path.Combine(SourceTree.Root, "src", "Paca.App");
|
||||
|
||||
// =========================================================================
|
||||
// Gate 401: MainWindow Ctrl+Shift+P 단축키 배선 검증
|
||||
// =========================================================================
|
||||
[Fact]
|
||||
public void Gate401_MainWindow_PauseAll_Shortcut_CtrlShiftP_Audit()
|
||||
{
|
||||
var mwCs = File.ReadAllText(Path.Combine(AppDir, "MainWindow.xaml.cs"));
|
||||
|
||||
// OnPreviewKeyDown 에서 Ctrl+Shift+P 입력 시 PauseAllDownloads() 호출 보증
|
||||
var pattern = @"ModifierKeys\.Control\s*\|\s*ModifierKeys\.Shift\)\s*&&\s*e\.Key\s*==\s*Key\.P\b";
|
||||
Assert.Matches(pattern, mwCs);
|
||||
Assert.Contains("PauseAllDownloads", mwCs);
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// Gate 402: 하드코딩 색상(#FF4444, #10B981) 시맨틱 브러시 일체화
|
||||
// =========================================================================
|
||||
[Fact]
|
||||
public void Gate402_MainWindow_SemanticBrushes_NoHardcodedHex_In_Popups()
|
||||
{
|
||||
var mwXaml = File.ReadAllText(Path.Combine(AppDir, "MainWindow.xaml"));
|
||||
|
||||
// 1) 라인 2695 미디어 팝업 헤더 텍스트 하드코딩 #FF4444 금지
|
||||
Assert.DoesNotContain("Foreground=\"#FF4444\"", mwXaml);
|
||||
|
||||
// 2) 라인 2908 사이트 보안 안전한 연결 텍스트 하드코딩 #10B981 금지
|
||||
Assert.DoesNotContain("Foreground=\"#10B981\"", mwXaml);
|
||||
|
||||
// 3) 해당 위치가 시맨틱 브러시(ErrorBrush, SuccessBrush)로 대체되었는지 검증
|
||||
Assert.Contains("Foreground=\"{DynamicResource ErrorBrush}\"", mwXaml);
|
||||
Assert.Contains("Foreground=\"{DynamicResource SuccessBrush}\"", mwXaml);
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// Gate 403: ShortcutManager 기본 단축키와 MainWindow 라우터 전수 패리티
|
||||
// =========================================================================
|
||||
[Fact]
|
||||
public void Gate403_ShortcutManager_AllDefaultShortcuts_AreHandled_OrMappable()
|
||||
{
|
||||
var mwCs = File.ReadAllText(Path.Combine(AppDir, "MainWindow.xaml.cs"));
|
||||
|
||||
// ShortcutManager 에 선언된 핵심 기본 단축키 액션들이 MainWindow 에 실제로 배선되어 있는지 검증
|
||||
var coreActions = new[]
|
||||
{
|
||||
"newtab", "closetab", "reopentab", "find", "address",
|
||||
"downloads", "palette", "devtools", "fullscreen", "refresh", "print", "pauseall"
|
||||
};
|
||||
|
||||
foreach (var action in coreActions)
|
||||
{
|
||||
Assert.True(ShortcutManager.Defaults.ContainsKey(action),
|
||||
$"ShortcutManager.Defaults 에 '{action}' 이 선언되어 있어야 합니다.");
|
||||
}
|
||||
|
||||
// pauseall 이 MainWindow.xaml.cs 에 단축키 키 핸들러로 등록되어 있는지 확인
|
||||
Assert.Contains("PauseAllDownloads", mwCs);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue