using System; using System.IO; using System.Linq; using System.Windows.Controls; using Paca.App; using Paca.Browser; using Paca.Browser.Tabs; using Paca.Tests.Infrastructure; using Xunit; namespace Paca.Tests.Browser; public class ChromeParityMilestone10Tests { [Fact] public void BuildTabContextMenu_새창으로_이동_및_절전모드_전환_옵션_포함() { using var sta = StaDispatcher.Start(); WpfTestApp.Ensure(sta.Dispatcher); sta.Invoke(() => { var dataDir = Path.Combine(Path.GetTempPath(), $"vd_tab_win_{Guid.NewGuid():N}"); Environment.SetEnvironmentVariable("VD_DATA_DIR", dataDir); try { var win = new MainWindow(); win.TabsManager.Tabs.Clear(); var t1 = win.TabsManager.NewTab("https://site1.com"); var t2 = win.TabsManager.NewTab("https://site2.com"); var menu = win.BuildTabContextMenu(t1); var items = menu.Items.OfType().Select(m => m.Header?.ToString()).ToList(); Assert.Contains("새 창으로 탭 이동", items); Assert.Contains("탭 절전 모드로 전환", items); } finally { try { if (Directory.Exists(dataDir)) Directory.Delete(dataDir, true); } catch { } } }); } [Fact] public void DiscardTab_활성탭은_절전불가_비활성탭은_절전모드로_전환된다() { using var sta = StaDispatcher.Start(); WpfTestApp.Ensure(sta.Dispatcher); sta.Invoke(() => { var dataDir = Path.Combine(Path.GetTempPath(), $"vd_discard_{Guid.NewGuid():N}"); Environment.SetEnvironmentVariable("VD_DATA_DIR", dataDir); try { var win = new MainWindow(); win.TabsManager.Tabs.Clear(); var t1 = win.TabsManager.NewTab("https://site1.com"); var t2 = win.TabsManager.NewTab("https://site2.com"); win.TabsManager.Activate(t1); // t1은 현재 활성 탭이므로 절전 전환 거부(Chrome 메모리 세이버 사양) var discardedActive = win.DiscardTab(t1); Assert.False(discardedActive); Assert.False(t1.IsSuspended); // t2는 비활성 탭이므로 절전 전환 성공 var discardedInactive = win.DiscardTab(t2); Assert.True(discardedInactive); Assert.True(t2.IsSuspended); } finally { try { if (Directory.Exists(dataDir)) Directory.Delete(dataDir, true); } catch { } } }); } }