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:
parent
0caa1111e7
commit
406957088f
14 changed files with 3496 additions and 7 deletions
78
VideoDownloader.Tests/Browser/TabGroupsWorkspacesTests.cs
Normal file
78
VideoDownloader.Tests/Browser/TabGroupsWorkspacesTests.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue