Spaces:
Running
Running
import { Page } from "@playwright/test"; | |
import { readFileSync } from "fs"; | |
export async function simulateDragAndDrop( | |
page: Page, | |
filePath: string, | |
dropSelector: string, | |
jsonContent?: string, | |
) { | |
// Read file content | |
let fileContent = await readFileSync(filePath, "utf-8"); | |
if (jsonContent) { | |
fileContent = jsonContent; | |
} | |
// Create DataTransfer object with file | |
const dataTransfer = await page.evaluateHandle(async (content) => { | |
const dt = new DataTransfer(); | |
const file = new File([content], "file.json", { type: "application/json" }); | |
dt.items.add(file); | |
return dt; | |
}, fileContent); | |
const dropzone = page.getByTestId(dropSelector); | |
await dropzone.dispatchEvent("mousedown", { button: 0 }); | |
await dropzone.dispatchEvent("mousemove", { buttons: 1 }); | |
await dropzone.dispatchEvent("drop", { dataTransfer }); | |
await dataTransfer.dispose(); | |
} | |