Как получить доступ к содержимому буфера обмена из теста безголового кукловода? - PullRequest
0 голосов
/ 11 февраля 2020

Я пишу тест, который использует puppeteer для тестирования компонента, который копирует что-то в буфер обмена при взаимодействии с ним. Я хочу проверить правильность содержимого буфера обмена после взаимодействия. В других ресурсах, таких как эта проблема github , упоминается использование инструмента, подобного clipboardy , для выполнения sh этого. Я пытался использовать это, и он работает локально, но при запуске на моем безголовом CI-сервере он жалуется на отсутствие доступа к среде X. Есть ли способ получить доступ к буферу обмена без запуска X-сервера?

Я пишу такой тест:

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://mypage.com');

await page.click('#my-component');

// This fails in a headless environment
expect(clipboardy.readSync()).toEqual("Some text");

1 Ответ

0 голосов
/ 11 февраля 2020

Добавив разрешение 'clipboard-read' для кукловода и используя API буфера обмена, вы можете запустить navigator.clipboard.readText() для чтения из буфера обмена в тесте. Это будет работать даже в безголовой среде:

const browser = await puppeteer.launch();
const context = browser.defaultBrowserContext();
context.overridePermissions(config.APPLICATION_URL, ['clipboard-read'])
const page = await browser.newPage();
await page.goto('https://mypage.com');

await page.click('#my-component');

expect(await page.evaluate(() => navigator.clipboard.readText()))
  .toEqual("Some text");
...