fix: reset capture drag state reliably
This commit is contained in:
@@ -203,6 +203,16 @@ async function runReadyScenario(cdp, url) {
|
||||
await clickInboxItemButton(cdp, 'pasted-smoke.png', 'Удалить')
|
||||
await clickText(cdp, '.overlay .btn', 'Удалить')
|
||||
await assertEval(cdp, `!document.querySelector('.inbox-screen')?.innerText.includes('pasted-smoke.png')`, 'inbox: deleted item leaves inbox')
|
||||
await dispatchExternalDrag(cdp)
|
||||
await waitForSelector(cdp, '.capture-drop-overlay')
|
||||
await dispatchBodyKeydown(cdp, 'Escape')
|
||||
await waitForGone(cdp, '.capture-drop-overlay')
|
||||
await assertEval(cdp, `document.querySelector('.nav-item')?.click && !document.querySelector('.capture-drop-overlay')`, 'drag: Escape resets capture overlay')
|
||||
await dispatchExternalDrag(cdp)
|
||||
await waitForSelector(cdp, '.capture-drop-overlay')
|
||||
await dispatchWindowBlur(cdp)
|
||||
await waitForGone(cdp, '.capture-drop-overlay')
|
||||
await assertEval(cdp, `!document.querySelector('.capture-drop-overlay')`, 'drag: blur resets capture overlay')
|
||||
await screenshot(cdp, 'inbox.png')
|
||||
await clickText(cdp, '.inbox-item', 'Inbox Smoke Item')
|
||||
await assertText(cdp, 'Inbox Smoke Item', 'inbox: item opens from list')
|
||||
@@ -211,12 +221,12 @@ async function runReadyScenario(cdp, url) {
|
||||
await clickText(cdp, '.nav-item', 'Корзина')
|
||||
await assertText(cdp, 'Trash Smoke Folder', 'trash: deleted node visible')
|
||||
await assertEval(cdp, `!document.body.innerText.includes('.verstak/trash') && !document.body.innerText.includes('node-trash_Trash-Smoke-Folder')`, 'trash: physical implementation entries are hidden')
|
||||
await click(cdp, '.trash-row.folder .trash-row-actions .inbox-icon-btn[title="Открыть"]')
|
||||
await click(cdp, '.trash-row.folder .trash-row-icon')
|
||||
await assertText(cdp, 'trash-child.txt', 'trash: opening deleted folder shows children immediately')
|
||||
await assertText(cdp, 'Корзина / Trash Smoke Folder', 'trash: current folder breadcrumb visible')
|
||||
await dispatchBodyKeydown(cdp, 'Backspace')
|
||||
await assertEval(cdp, `document.body.innerText.includes('Trash Smoke Folder') && !document.body.innerText.includes('trash-child.txt')`, 'trash: Backspace returns to trash root')
|
||||
await click(cdp, '.trash-row.folder .trash-row-actions .inbox-icon-btn[title="Открыть"]')
|
||||
await click(cdp, '.trash-row.folder .trash-row-icon')
|
||||
await dispatchMouseBack(cdp)
|
||||
await assertEval(cdp, `document.body.innerText.includes('Trash Smoke Folder') && !document.body.innerText.includes('trash-child.txt')`, 'trash: mouse Back returns to trash root')
|
||||
await clickText(cdp, '.nav-item', 'Журнал')
|
||||
@@ -318,6 +328,7 @@ async function runReadyScenario(cdp, url) {
|
||||
|
||||
await clickText(cdp, '.nav-item', 'Журнал')
|
||||
await waitForSelector(cdp, '.journal-screen')
|
||||
await clickText(cdp, '.journal-tab', 'Журнал работы')
|
||||
await screenshot(cdp, 'journal.png')
|
||||
await assertEval(cdp, `document.body.innerText.toLowerCase().includes('фильтры')`, 'journal: filter section visible')
|
||||
await assertEval(cdp, `document.body.innerText.toLowerCase().includes('экспорт отчёта')`, 'journal: export section visible')
|
||||
@@ -528,6 +539,32 @@ async function emitDroppedFiles(cdp, paths) {
|
||||
await sleep(300)
|
||||
}
|
||||
|
||||
async function dispatchExternalDrag(cdp) {
|
||||
await cdp.send('Runtime.evaluate', {
|
||||
expression: `
|
||||
(() => {
|
||||
const data = new DataTransfer();
|
||||
data.items.add(new File(['smoke'], 'drag-smoke.txt', { type: 'text/plain' }));
|
||||
const enter = new DragEvent('dragenter', { bubbles: true, cancelable: true, dataTransfer: data });
|
||||
const over = new DragEvent('dragover', { bubbles: true, cancelable: true, dataTransfer: data });
|
||||
window.dispatchEvent(enter);
|
||||
window.dispatchEvent(over);
|
||||
})()
|
||||
`,
|
||||
awaitPromise: true,
|
||||
returnByValue: true,
|
||||
})
|
||||
await sleep(150)
|
||||
}
|
||||
|
||||
async function dispatchWindowBlur(cdp) {
|
||||
await cdp.send('Runtime.evaluate', {
|
||||
expression: `window.dispatchEvent(new Event('blur'))`,
|
||||
returnByValue: true,
|
||||
})
|
||||
await sleep(150)
|
||||
}
|
||||
|
||||
async function clickFolderOpenButton(cdp, name) {
|
||||
const ok = await evalValue(cdp, `
|
||||
(() => {
|
||||
|
||||
Reference in New Issue
Block a user