test: Added tests for folder density and max subfolders, b=no-bug, c=folders, tests

This commit is contained in:
Mr. M
2025-08-18 20:59:35 +02:00
parent d8196c58ab
commit eb163dee88
6 changed files with 84 additions and 1 deletions

View File

@@ -145,7 +145,7 @@
createSubfolder() {
gZenFolders.createFolder([], {
renameFolder: true,
renameFolder: !gZenUIManager.testingEnabled,
label: 'Subfolder',
insertAfter: this.querySelector('.tab-group-container').lastElementChild,
});

View File

@@ -81,6 +81,13 @@
return;
}
this.#lastFolderContextMenu = folder;
const newSubfolderItem = document.getElementById('context_zenFolderNewSubfolder');
newSubfolderItem.setAttribute(
'disabled',
folder.level >= ZEN_MAX_SUBFOLDERS - 1 ? 'true' : 'false'
);
const changeFolderSpace = document
.getElementById('context_zenChangeFolderSpace')
.querySelector('menupopup');

View File

@@ -11,5 +11,7 @@ support-files = [
["browser_folder_subfolder.js"]
["browser_folder_basic_toggle.js"]
["browser_folder_owner_tabs.js"]
["browser_folder_density.js"]
["browser_folder_max_subfolders.js"]
["browser_folder_issue_9885.js"]

View File

@@ -0,0 +1,26 @@
/* Any copyright is dedicated to the Public Domain.
https://creativecommons.org/publicdomain/zero/1.0/ */
'use strict';
add_task(async function test_Folder_Density() {
const tab = gBrowser.selectedTab;
const folder = await gZenFolders.createFolder([], {
renameFolder: false,
});
let tabRect = tab.getBoundingClientRect();
let folderRect = folder.labelElement.parentElement.getBoundingClientRect();
Assert.equal(tabRect.height, folderRect.height, 'Folder height matches tab height');
Assert.equal(tabRect.width, folderRect.width, 'Folder width matches tab width');
gUIDensity.update(gUIDensity.MODE_TOUCH);
tabRect = tab.getBoundingClientRect();
folderRect = folder.getBoundingClientRect();
Assert.equal(tabRect.height, folderRect.height, 'Folder height matches tab height');
Assert.equal(tabRect.width, folderRect.width, 'Folder width matches tab width');
gUIDensity.update();
await removeFolder(folder);
});

View File

@@ -0,0 +1,39 @@
/* Any copyright is dedicated to the Public Domain.
https://creativecommons.org/publicdomain/zero/1.0/ */
'use strict';
// Keep in sync with the default value for `zen.folders.max-subfolders`
const TEST_MAX_FOLDERS = 5;
add_task(async function test_Max_Subfolders() {
const folder = await gZenFolders.createFolder([], {
renameFolder: false,
});
const subfolderItem = document.getElementById('context_zenFolderNewSubfolder');
debugger;
let currentFolder = folder;
for (let i = 1; i < TEST_MAX_FOLDERS; i++) {
await openFolderContextMenu(currentFolder);
ok(subfolderItem.getAttribute('disabled') !== 'true', `Subfolder item should be enabled`);
const folderCreateEvent = BrowserTestUtils.waitForEvent(window, 'TabGroupCreate');
EventUtils.synthesizeMouseAtCenter(subfolderItem, {});
await folderCreateEvent;
const items = currentFolder.allItems;
Assert.equal(items.length, 2, `Folder should have 2 items`);
ok(gBrowser.isTabGroup(items[1]), `Item should be a tab group`);
currentFolder = items[1];
}
await openFolderContextMenu(currentFolder);
Assert.equal(
subfolderItem.getAttribute('disabled'),
'true',
`Subfolder item should be disabled after reaching max subfolders`
);
document.getElementById('zenFolderActions').hidePopup();
await removeFolder(folder);
});

View File

@@ -9,3 +9,12 @@ async function removeFolder(folder) {
folder.delete();
await removeEvent;
}
async function openFolderContextMenu(folder) {
const popup = document.getElementById('zenFolderActions');
let menuEvent = BrowserTestUtils.waitForEvent(popup, 'popupshown');
EventUtils.synthesizeMouseAtCenter(folder.labelElement, {
type: 'contextmenu',
});
await menuEvent;
}