browser_restore_verticalPinnedTabs.js (2616B)
1 add_setup(() => 2 SpecialPowers.pushPrefEnv({ 3 set: [ 4 ["sidebar.revamp", true], 5 ["sidebar.verticalTabs", true], 6 ], 7 }) 8 ); 9 const BACKUP_STATE = SessionStore.getBrowserState(); 10 const REMOTE_URL = "https://www.example.com/"; 11 const ABOUT_ROBOTS_URL = "about:robots"; 12 const ABOUT_HOME = "about:home"; 13 const ABOUT_MOZILLA = "about:mozilla"; 14 15 let tabs = [ 16 { 17 entries: [{ url: REMOTE_URL, triggeringPrincipal_base64 }], 18 pinned: true, 19 userContextId: 0, 20 hidden: false, 21 }, 22 { 23 entries: [{ url: ABOUT_MOZILLA, triggeringPrincipal_base64 }], 24 pinned: true, 25 userContextId: 0, 26 hidden: false, 27 }, 28 { 29 entries: [{ url: ABOUT_ROBOTS_URL, triggeringPrincipal_base64 }], 30 pinned: true, 31 userContextId: 0, 32 hidden: false, 33 }, 34 { 35 entries: [{ url: ABOUT_HOME, triggeringPrincipal_base64 }], 36 userContextId: 0, 37 hidden: false, 38 }, 39 ]; 40 41 add_task(async function test_pinned_tabs_restored_position() { 42 let allTabsRestored = promiseSessionStoreLoads(3); 43 await setWindowState( 44 window, 45 { 46 windows: [ 47 { 48 selected: 3, // SessionStore uses 1-based indexing. 49 tabs, 50 }, 51 ], 52 }, 53 true 54 ); 55 await allTabsRestored; 56 57 const sidebar = document.querySelector("sidebar-main"); 58 ok(sidebar, "Sidebar is shown."); 59 60 let tabStrip = document.getElementById("tabbrowser-tabs"); 61 let verticalTabs = document.querySelector("#vertical-tabs"); 62 let pinnedTabsContainer = document.querySelector("#pinned-tabs-container"); 63 64 ok(BrowserTestUtils.isVisible(verticalTabs), "Vertical tabs slot is visible"); 65 is( 66 tabStrip.parentNode, 67 verticalTabs, 68 "Tabstrip is slotted into the sidebar vertical tabs container" 69 ); 70 ok( 71 BrowserTestUtils.isVisible(pinnedTabsContainer), 72 "Vertical pinned tabs container is visible" 73 ); 74 is( 75 pinnedTabsContainer.children.length, 76 gBrowser.pinnedTabCount, 77 "Three tabs are in the vertical pinned tabs container" 78 ); 79 80 let [tab1, tab2, tab3, tab4] = gBrowser.tabs; 81 ok(tab1.pinned, "First tab is pinned"); 82 ok(tab2.pinned, "Second tab is pinned"); 83 ok(tab3.pinned, "Third tab is pinned"); 84 ok(!tab4.pinned, "Fourth tab is not pinned"); 85 ok(tab3.selected, "Third tab is selected"); 86 87 is( 88 tab1.linkedBrowser.currentURI.spec, 89 REMOTE_URL, 90 "First tab has matching URL" 91 ); 92 is( 93 tab2.linkedBrowser.currentURI.spec, 94 ABOUT_MOZILLA, 95 "Second tab has matching URL" 96 ); 97 is( 98 tab3.linkedBrowser.currentURI.spec, 99 ABOUT_ROBOTS_URL, 100 "Third tab has matching URL" 101 ); 102 103 // cleanup 104 await promiseBrowserState(BACKUP_STATE); 105 });