diff --git a/test/page-drag.spec.ts b/test/page-drag.spec.ts index 6c665c3b33..adb39d2adf 100644 --- a/test/page-drag.spec.ts +++ b/test/page-drag.spec.ts @@ -145,6 +145,60 @@ describe('Drag and drop', test => { ]); }); + it('should respect the drop effect', (test, {browserName}) => { + test.fixme(browserName === 'chromium', 'Chromium doesn\'t let users set dropEffect on our fake data transfer'); + test.fixme(browserName === 'firefox'); + }, async ({context}) => { + const page = await context.newPage(); + expect(await testIfDropped('copy', 'copy')).toBe(true); + expect(await testIfDropped('copy', 'move')).toBe(false); + expect(await testIfDropped('all', 'link')).toBe(true); + expect(await testIfDropped('all', 'none')).toBe(false); + + expect(await testIfDropped('copyMove', 'copy')).toBe(true); + expect(await testIfDropped('copyLink', 'copy')).toBe(true); + expect(await testIfDropped('linkMove', 'copy')).toBe(false); + + expect(await testIfDropped('copyMove', 'link')).toBe(false); + expect(await testIfDropped('copyLink', 'link')).toBe(true); + expect(await testIfDropped('linkMove', 'link')).toBe(true); + + expect(await testIfDropped('copyMove', 'move')).toBe(true); + expect(await testIfDropped('copyLink', 'move')).toBe(false); + expect(await testIfDropped('linkMove', 'move')).toBe(true); + + expect(await testIfDropped('uninitialized', 'copy')).toBe(true); + + async function testIfDropped(effectAllowed: string, dropEffect: string) { + await page.setContent(` +