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:
Yun Chan 2026-09-14 00:39:44 +09:00
parent a88aafa1e5
commit 0e568f1f0a
975 changed files with 130593 additions and 16783 deletions

View file

@ -0,0 +1,51 @@
using System;
using System.Linq;
using Paca.Browser.Tabs;
using Xunit;
namespace Paca.Tests.Browser;
public class ChromeTabHoverCardTests
{
[Theory]
[InlineData("https://www.youtube.com/watch?v=dQw4w9WgXcQ", "youtube.com")]
[InlineData("https://news.ycombinator.com/news", "news.ycombinator.com")]
[InlineData("http://localhost:52100/api/tabs", "localhost:52100")]
[InlineData("paca://settings", "paca://settings")]
[InlineData("about:blank", "about:blank")]
public void TabPreview_ExtractsCleanDomain(string url, string expectedDomain)
{
var preview = new TabPreview("테스트 탭", url, IsSuspended: false, IsAudioPlaying: false, IsLocked: false, IsReader: false, IsMuted: false);
Assert.Equal(expectedDomain, preview.Domain);
}
[Fact]
public void TabPreview_Badges_IncludesMemorySavedAndMuted()
{
var preview = new TabPreview("대기 탭", "https://example.com", IsSuspended: true, IsAudioPlaying: false, IsLocked: false, IsReader: false, IsMuted: true);
var badges = preview.GetBadges();
Assert.Contains("메모리 절약됨", badges);
Assert.Contains("음소거됨", badges);
}
[Fact]
public void TabPreview_Badges_IncludesAudioPlaying()
{
var preview = new TabPreview("음악 탭", "https://youtube.com", IsSuspended: false, IsAudioPlaying: true, IsLocked: false, IsReader: false, IsMuted: false);
var badges = preview.GetBadges();
Assert.Contains("오디오 재생 중", badges);
Assert.DoesNotContain("음소거됨", badges);
}
[Fact]
public void TabPreview_BuildTooltipText_FormatsWithDomainAndBadges()
{
var preview = new TabPreview("네이버", "https://www.naver.com", IsSuspended: false, IsAudioPlaying: false, IsLocked: false, IsReader: false, IsMuted: false);
var text = preview.BuildTooltipText();
Assert.Contains("네이버", text);
Assert.Contains("naver.com", text);
}
}