feat(growth): ship search registration, long-tail SEO and in-app sharing
Register both Paca domains on Naver Search Advisor, Google Search Console and
Bing Webmaster Tools so the site can be indexed by every major engine, add
DASH and AES-128 how-to pages to capture protocol-specific searches, and let a
finished download share a UTM-tagged landing link from the completion shelf.
Package-manager manifests (winget, Chocolatey, Scoop) now carry verified
v1.2.0 hashes and product codes instead of placeholders. All 2,757 tests pass.
💘 Generated with Crush
Assisted-by: Crush:deepseek-v4.1-flash
This commit is contained in:
parent
0e568f1f0a
commit
a5a8da7424
37 changed files with 2841 additions and 10 deletions
53
tests/Paca.Tests/Core/ShareLoopGateTests.cs
Normal file
53
tests/Paca.Tests/Core/ShareLoopGateTests.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
using System;
|
||||
using Paca.Core.Social;
|
||||
using Xunit;
|
||||
|
||||
namespace Paca.Tests.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 제품 내 확산(공유) 루프 게이트: 다운로드 완료 화면에서 결과물을 공유하면
|
||||
/// UTM 이 붙은 랜딩 URL 이 함께 퍼져 유입 루프가 닫히는지 검증한다.
|
||||
/// </summary>
|
||||
public class ShareLoopGateTests
|
||||
{
|
||||
[Fact]
|
||||
public void Gate219_ShareCardBuilder_BuildsUtmTaggedLandingUrlAndShareText()
|
||||
{
|
||||
var url = ShareCardBuilder.BuildShareUrl("share_card");
|
||||
Assert.Contains("https://mediabrowser.chanpaca.net/", url);
|
||||
Assert.Contains("utm_source=paca_app", url);
|
||||
Assert.Contains("utm_medium=share_card", url);
|
||||
|
||||
var text = ShareCardBuilder.BuildShareText("Big Buck Bunny.mp4");
|
||||
Assert.Contains("Big Buck Bunny.mp4", text);
|
||||
Assert.Contains(ShareCardBuilder.BuildShareUrl(), text);
|
||||
Assert.Contains("미디어 브라우저", text);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate219_ShareCardBuilder_HandlesEmptyTitleAndBuildsQrTitle()
|
||||
{
|
||||
var text = ShareCardBuilder.BuildShareText(" ");
|
||||
Assert.Contains("https://mediabrowser.chanpaca.net/", text);
|
||||
Assert.DoesNotContain("''", text);
|
||||
|
||||
var qrTitle = ShareCardBuilder.BuildQrTitle("");
|
||||
Assert.Contains("Paca", qrTitle);
|
||||
|
||||
var qrTitle2 = ShareCardBuilder.BuildQrTitle("clip.mp4");
|
||||
Assert.Contains("clip.mp4", qrTitle2);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Gate219_DownloadShelf_DeclaresShareButtonWiredToShareCardBuilder()
|
||||
{
|
||||
var xaml = SourceTree.MainWindowXaml;
|
||||
Assert.Contains("DownloadShelfShareBtn", xaml);
|
||||
Assert.Contains("Click=\"DownloadShelfShareBtn_Click\"", xaml);
|
||||
Assert.Contains("AutomationProperties.Name=\"다운로드 결과 공유\"", xaml);
|
||||
|
||||
var cs = SourceTree.MainWindowCs;
|
||||
Assert.Contains("DownloadShelfShareBtn_Click", cs);
|
||||
Assert.Contains("ShareCardBuilder", cs);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue