Testing dragging from desktop

This commit is contained in:
Dustin Brett
2023-12-08 20:58:52 -08:00
parent 39b20634d9
commit b837768363
6 changed files with 56 additions and 18 deletions

1
.gitignore vendored
View File

@@ -17,6 +17,7 @@ public/Users/Public/**
!public/Users/**/desktop.ini
!public/Users/Public/Desktop
!public/Users/Public/Desktop/My PC.url
!public/Users/Public/Desktop/Public.url
!public/Users/Public/Documents
!public/Users/Public/Music
!public/Users/Public/Pictures

View File

@@ -14,6 +14,7 @@ import {
TEST_APP_ICON,
TEST_APP_TITLE,
TEST_APP_TITLE_TEXT,
TEST_DESKTOP_FILE,
TEST_ROOT_ARCHIVE,
TEST_ROOT_FILE,
TEST_ROOT_FILE_2,
@@ -44,6 +45,7 @@ import {
desktopEntryIsVisible,
didCaptureConsoleLogs,
disableWallpaper,
dragDesktopEntryToFileExplorer,
dragFileExplorerEntryToDesktop,
fileExplorerAddressBarHasValue,
fileExplorerEntriesAreVisible,
@@ -292,7 +294,7 @@ test.describe("has files & folders", () => {
});
});
test("can drag to desktop", async ({ browserName, headless, page }) => {
test("can drop on desktop", async ({ browserName, headless, page }) => {
test.skip(
headless && DRAG_HEADLESS_NOT_SUPPORTED_BROWSERS.has(browserName),
"no headless drag support"
@@ -301,6 +303,7 @@ test.describe("has files & folders", () => {
await desktopEntryIsHidden(TEST_ROOT_FILE, { page });
await fileExplorerEntryIsVisible(TEST_ROOT_FILE, { page });
await dragFileExplorerEntryToDesktop(TEST_ROOT_FILE, { page });
await fileExplorerEntryIsHidden(TEST_ROOT_FILE, { page });
await desktopEntryIsVisible(TEST_ROOT_FILE, { page });
});
@@ -325,7 +328,18 @@ test.describe("has files & folders", () => {
await expect(page.locator(".focus-within")).toHaveCount(2);
});
// TEST: can drop (from Desktop)
test("can drop from desktop", async ({ browserName, headless, page }) => {
test.skip(
headless && DRAG_HEADLESS_NOT_SUPPORTED_BROWSERS.has(browserName),
"no headless drag support"
);
await fileExplorerEntryIsHidden(TEST_DESKTOP_FILE, { page });
await desktopEntryIsVisible(TEST_DESKTOP_FILE, { page });
await dragDesktopEntryToFileExplorer(TEST_DESKTOP_FILE, { page });
await desktopEntryIsHidden(TEST_DESKTOP_FILE, { page });
await fileExplorerEntryIsVisible(TEST_DESKTOP_FILE, { page });
});
});
test("can change page title", async ({ page }) => {

View File

@@ -12,27 +12,26 @@ test.describe("has correct tags", () => {
await expect(preloadElements).toHaveCount(desktopIcons.length);
const preloadHrefs = await Promise.all(
(await preloadElements.elementHandles()).map(
async (preloadElement) =>
basename(
(await preloadElement.getAttribute("href")) ||
(await preloadElement.getAttribute("imagesrcset")) ||
""
).split(" ")[0]
)
);
const fileNames = desktopIcons.map((filePath) => basename(filePath));
preloadHrefs.forEach((preloadHref) =>
expect(fileNames).toContain(preloadHref)
);
(
await Promise.all(
(await preloadElements.elementHandles()).map(
async (preloadElement) =>
basename(
(await preloadElement.getAttribute("href")) ||
(await preloadElement.getAttribute("imagesrcset")) ||
""
).split(" ")[0]
)
)
).forEach((preloadHref) => expect(fileNames).toContain(preloadHref));
});
test("has open graphs", async ({ page }) => {
const openGraphElements = page.locator("meta[property^='og:']");
await expect(openGraphElements).toHaveCount(OG_TAGS.length);
await expect(page.locator("meta[property^='og:']")).toHaveCount(
OG_TAGS.length
);
OG_TAGS.forEach((tag) =>
expect(() =>

View File

@@ -220,6 +220,7 @@ export const TEST_APP_TITLE = /^My PC$/;
export const TEST_APP_TITLE_TEXT = "My PC";
export const TEST_APP_ICON = /\/pc\.(webp|png)$/;
export const TEST_DESKTOP_FILE = /^Public$/;
export const TEST_ROOT_ARCHIVE = /^archive.zip$/;
export const TEST_ROOT_FILE = /^CREDITS.md$/;
export const TEST_ROOT_FILE_2 = /^favicon.ico$/;

View File

@@ -213,6 +213,24 @@ export const dragFileExplorerEntryToDesktop = async (
targetPosition: { x: 1, y: 1 },
});
export const dragDesktopEntryToFileExplorer = async (
label: RegExp | string,
{ page }: TestProps
): Promise<void> => {
const { height = 0, width = 0 } =
(await page.locator(FILE_EXPLORER_SELECTOR).boundingBox()) || {};
page
.locator(DESKTOP_ENTRIES_SELECTOR)
.getByLabel(label)
.dragTo(page.locator(FILE_EXPLORER_SELECTOR), {
targetPosition: {
x: width - 5,
y: height - 5,
},
});
};
export const dragWindowToDesktop = async ({
page,
}: TestProps): Promise<void> => {

View File

@@ -0,0 +1,5 @@
[InternetShortcut]
BaseURL=FileExplorer
IconFile=/System/Icons/user.webp
Type=System
URL=/Users/Public