Phase C (T2-1..T3-10): command palette, reader mode (real Readability.js, E2E), boost force-dark, screenshot, split view, vertical tabs, Glance (Alt+click), tab groups (6 colors), workspaces, speed dial, InPrivate tabs, quick find, source view, print, PiP, TTS (94 tests GREEN)

This commit is contained in:
Yun Chan 2026-08-15 15:22:44 +09:00
parent 0caa1111e7
commit 406957088f
14 changed files with 3496 additions and 7 deletions

View file

@ -0,0 +1,78 @@
using VideoDownloader.Browser.Tabs;
namespace VideoDownloader.Tests.Browser;
// ── T2-11 탭 그룹: 색상 라벨 + 그룹 단위 이동/닫기 ──
public class TabGroupsTests
{
private static TabManager NewManager() => new(() => new TabItem());
[Fact]
public void 그룹_지정과_해제()
{
var m = NewManager();
var t = m.NewTab("https://a.com");
m.SetGroup(t, "Work", "#e11");
Assert.Equal("Work", t.GroupName);
Assert.Equal("#e11", t.GroupColor);
m.SetGroup(t, null, null);
Assert.Null(t.GroupName);
}
[Fact]
public void 같은_그룹_탭은_서로_인접한다()
{
var m = NewManager();
var a = m.NewTab("a"); m.SetGroup(a, "G", "#111");
m.NewTab("b"); // 비그룹
var c = m.NewTab("c"); m.SetGroup(c, "G", "#111"); // 그룹으로 → a 옆으로 이동
Assert.Equal(1, m.Tabs.IndexOf(c));
Assert.Equal(0, m.Tabs.IndexOf(a));
}
[Fact]
public void 그룹_탭_전체_닫기()
{
var m = NewManager();
var a = m.NewTab("a"); m.SetGroup(a, "G", "#111");
var b = m.NewTab("b"); m.SetGroup(b, "G", "#111");
m.NewTab("solo");
var closed = m.CloseGroup("G");
Assert.Equal(2, closed);
Assert.Single(m.Tabs);
}
}
// ── T3-1 워크스페이스: 탭 세트 저장/전환 ──
public class WorkspaceTests
{
private static TabManager NewManager() => new(() => new TabItem());
[Fact]
public void 워크스페이스_저장후_스왑하면_탭_세트가_교체된다()
{
var m = NewManager();
m.NewTab("https://work1.com");
m.NewTab("https://work2.com");
var ws = m.CaptureWorkspace("Work");
m.NewTab("https://personal.com");
Assert.Equal(3, m.Tabs.Count);
m.SwitchWorkspace(ws);
Assert.Equal(2, m.Tabs.Count);
Assert.Equal("https://work1.com", m.Tabs[0].Url);
Assert.Equal("https://work2.com", m.Tabs[1].Url);
Assert.Equal("Work", ws.Name);
}
[Fact]
public void 워크스페이스_캡처는_현재_탭을_그대로_유지한다()
{
var m = NewManager();
m.NewTab("https://a.com");
var ws = m.CaptureWorkspace("X");
Assert.Equal(1, m.Tabs.Count); // 캡처 자체는 현재 상태 유지(스냅샷)
Assert.Single(ws.Urls);
}
}