import test, { expect } from '@playwright/test' import { App } from '@tldraw/tldraw' import { setup } from '../shared-e2e' export function sleep(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)) } declare const app: App /** * These tests are skipped. They are here to show how to use the clipboard * in tests. The clipboard is not really supported in playwright, so until * we figure out a way to do it (or until it is supported propertly), we've * had to skip these tests. */ test.describe.skip('clipboard tests', () => { test.beforeEach(setup) test('copy and paste from keyboard shortcut', async ({ page }) => { await page.keyboard.press('r') await page.mouse.move(100, 100) await page.mouse.down() await page.mouse.up() expect(await page.evaluate(() => app.shapesArray.length)).toBe(1) expect(await page.evaluate(() => app.selectedShapes.length)).toBe(1) await page.keyboard.down('Control') await page.keyboard.press('KeyC') await sleep(100) await page.keyboard.press('KeyV') await page.keyboard.up('Control') expect(await page.evaluate(() => app.shapesArray.length)).toBe(2) expect(await page.evaluate(() => app.selectedShapes.length)).toBe(1) }) test('copy and paste from main menu', async ({ page }) => { await page.keyboard.press('r') await page.mouse.move(100, 100) await page.mouse.down() await page.mouse.up() expect(await page.evaluate(() => app.shapesArray.length)).toBe(1) expect(await page.evaluate(() => app.selectedShapes.length)).toBe(1) await page.getByTestId('main.menu').click() await page.getByTestId('menu-item.edit').click() await page.getByTestId('menu-item.copy').click() await sleep(100) await page.getByTestId('main.menu').click() await page.getByTestId('menu-item.edit').click() await page.getByTestId('menu-item.paste').click() expect(await page.evaluate(() => app.shapesArray.length)).toBe(2) expect(await page.evaluate(() => app.selectedShapes.length)).toBe(1) }) test('copy and paste from context menu', async ({ page }) => { await page.keyboard.press('r') await page.mouse.move(100, 100) await page.mouse.down() await page.mouse.up() expect(await page.evaluate(() => app.shapesArray.length)).toBe(1) expect(await page.evaluate(() => app.selectedShapes.length)).toBe(1) await page.mouse.click(100, 100, { button: 'right' }) await page.getByTestId('menu-item.copy').click() await sleep(100) await page.mouse.move(200, 200) await page.mouse.click(100, 100, { button: 'right' }) await page.getByTestId('menu-item.paste').click() expect(await page.evaluate(() => app.shapesArray.length)).toBe(2) expect(await page.evaluate(() => app.selectedShapes.length)).toBe(1) }) })