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
89
tests/Paca.Tests/Browser/ChromeTaskManagerAdvancedTests.cs
Normal file
89
tests/Paca.Tests/Browser/ChromeTaskManagerAdvancedTests.cs
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
using System.Linq;
|
||||
using Paca.Browser;
|
||||
using Paca.Browser.Extensions;
|
||||
using Paca.Browser.Tabs;
|
||||
using Xunit;
|
||||
|
||||
namespace Paca.Tests.Browser;
|
||||
|
||||
public class ChromeTaskManagerAdvancedTests
|
||||
{
|
||||
[Fact]
|
||||
public void CollectTasks_Includes_Gpu_Process_And_Tabs()
|
||||
{
|
||||
var tabMgr = new TabManager(() => new TabItem());
|
||||
tabMgr.NewTab("https://github.com");
|
||||
tabMgr.NewTab("https://youtube.com");
|
||||
|
||||
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
||||
|
||||
// Must include Main Browser, GPU Process, and 2 Tabs
|
||||
Assert.Contains(tasks, t => t.Type == BrowserTaskType.Browser && t.Id == "browser-main");
|
||||
Assert.Contains(tasks, t => t.Type == BrowserTaskType.Gpu && t.Id == "gpu-process");
|
||||
Assert.Equal(2, tasks.Count(t => t.Type == BrowserTaskType.Tab));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BrowserTaskManager_Sorts_By_Columns()
|
||||
{
|
||||
var tabMgr = new TabManager(() => new TabItem());
|
||||
var t1 = tabMgr.NewTab("https://a.com");
|
||||
var t2 = tabMgr.NewTab("https://b.com");
|
||||
|
||||
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
||||
|
||||
// Sort by Memory Descending
|
||||
var byMemory = BrowserTaskManager.SortTasks(tasks, BrowserTaskSortColumn.Memory, descending: true);
|
||||
Assert.True(byMemory[0].MemoryBytes >= byMemory[1].MemoryBytes);
|
||||
|
||||
// Sort by CPU Descending
|
||||
var byCpu = BrowserTaskManager.SortTasks(tasks, BrowserTaskSortColumn.Cpu, descending: true);
|
||||
Assert.True(byCpu[0].CpuPercent >= byCpu[1].CpuPercent);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BrowserTaskItem_Formats_NetworkDisplay()
|
||||
{
|
||||
var task = new BrowserTaskItem(
|
||||
Id: "tab-1",
|
||||
Title: "Tab 1",
|
||||
Url: "https://example.com",
|
||||
Type: BrowserTaskType.Tab,
|
||||
MemoryBytes: 50 * 1024 * 1024,
|
||||
CpuPercent: 2.5,
|
||||
NetworkBytesPerSec: 1536000); // ~1.5 MB/s
|
||||
|
||||
Assert.Equal("50.0 MB", task.MemoryDisplay);
|
||||
Assert.Equal("2.5%", task.CpuDisplay);
|
||||
Assert.Equal("1.5 MB/s", task.NetworkDisplay);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CollectTasks_Differentiates_Active_And_Background_Tabs()
|
||||
{
|
||||
var tabMgr = new TabManager(() => new TabItem());
|
||||
var activeTab = tabMgr.NewTab("https://active.com", activate: true);
|
||||
var bgTab = tabMgr.NewTab("https://background.com", activate: false);
|
||||
|
||||
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
||||
var activeTask = tasks.First(t => t.Id == activeTab.Id.ToString());
|
||||
var bgTask = tasks.First(t => t.Id == bgTab.Id.ToString());
|
||||
|
||||
// Active tab must show higher or equal CPU activity and allocated working set
|
||||
Assert.True(activeTask.CpuPercent > bgTask.CpuPercent, "Active tab should report higher CPU usage than background tab");
|
||||
Assert.True(activeTask.MemoryBytes >= bgTask.MemoryBytes, "Active tab should report equal or higher memory");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EndTask_ClosesTab_Or_DisablesExtension()
|
||||
{
|
||||
var tabMgr = new TabManager(() => new TabItem());
|
||||
var tab1 = tabMgr.NewTab("https://closeme.com");
|
||||
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
||||
var tabTask = tasks.First(t => t.Id == tab1.Id.ToString());
|
||||
|
||||
bool ended = BrowserTaskManager.EndTask(tabTask, tabMgr);
|
||||
Assert.True(ended);
|
||||
Assert.DoesNotContain(tab1, tabMgr.Tabs);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue