mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-27 23:07:12 +02:00
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import type { Page } from '@playwright/test';
|
|
|
|
export class ClipboardHelper {
|
|
constructor(private readonly page: Page) {}
|
|
|
|
/**
|
|
* Grant clipboard permissions
|
|
* @param mode - Permission mode: 'read', 'write', or 'readwrite' (default)
|
|
*/
|
|
async grant(mode: 'read' | 'write' | 'readwrite' = 'readwrite'): Promise<void> {
|
|
let permissions = ['clipboard-read', 'clipboard-write'];
|
|
|
|
if (mode === 'read') {
|
|
permissions = ['clipboard-read'];
|
|
} else if (mode === 'write') {
|
|
permissions = ['clipboard-write'];
|
|
}
|
|
|
|
await this.page.context().grantPermissions(permissions);
|
|
}
|
|
|
|
/**
|
|
* Write text to clipboard using page.evaluate.
|
|
* @param text - The text to write to clipboard
|
|
*/
|
|
async writeText(text: string): Promise<void> {
|
|
await this.page.evaluate(async (data) => {
|
|
await navigator.clipboard.writeText(data);
|
|
}, text);
|
|
}
|
|
|
|
/**
|
|
* Write text to clipboard and simulate paste keyboard action.
|
|
* @param text - The text to write to clipboard and paste
|
|
*/
|
|
async paste(text: string): Promise<void> {
|
|
await this.grant();
|
|
await this.writeText(text);
|
|
await this.page.keyboard.press('ControlOrMeta+V');
|
|
}
|
|
|
|
/**
|
|
* Read text from clipboard using page.evaluate.
|
|
* @returns The text from clipboard
|
|
*/
|
|
async readText(): Promise<string> {
|
|
return await this.page.evaluate(() => navigator.clipboard.readText());
|
|
}
|
|
}
|