From 99e2a3db1c7f5178686155b07c7bc0a8fa000e5b Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 6 May 2020 02:56:52 -0700 Subject: [PATCH] Add test for multiple links on one line --- test/api/Terminal.api.ts | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/test/api/Terminal.api.ts b/test/api/Terminal.api.ts index 80c87a00..54576ce7 100644 --- a/test/api/Terminal.api.ts +++ b/test/api/Terminal.api.ts @@ -697,6 +697,52 @@ describe('API Integration Tests', function(): void { await pollFor(page, `window.calls`, ['provide 1', 'hover 1', 'activate 1', 'leave 1', 'provide 2', 'hover 2', 'activate 2', 'leave 2', 'provide 1', 'hover 1', 'activate 1']); await page.evaluate(`window.disposable.dispose()`); }); + + it('should work when multiple links are provided on the same line', async () => { + await openTerminal(page, { rendererType: 'dom' }); + await writeSync(page, 'foo bar baz'); + // Wait for renderer to catch up as links are cleared on render + await pollFor(page, `document.querySelector('.xterm-rows').textContent`, 'foo bar baz '); + await page.evaluate(` + window.calls = []; + window.disposable = window.term.registerLinkProvider({ + provideLinks: (position, cb) => { + window.calls.push('provide ' + position); + if (position === 1) { + cb([{ + range: { start: { x: 1, y: 1 }, end: { x: 3, y: 1 } }, + text: '', + activate: () => window.calls.push('activate'), + hover: () => window.calls.push('hover 1-3'), + leave: () => window.calls.push('leave 1-3') + }, { + range: { start: { x: 5, y: 1 }, end: { x: 7, y: 1 } }, + text: '', + activate: () => window.calls.push('activate'), + hover: () => window.calls.push('hover 5-7'), + leave: () => window.calls.push('leave 5-7') + }, { + range: { start: { x: 9, y: 1 }, end: { x: 11, y: 1 } }, + text: '', + activate: () => window.calls.push('activate'), + hover: () => window.calls.push('hover 9-11'), + leave: () => window.calls.push('leave 9-11') + }]); + } + } + }); + `); + const dims = await getDimensions(); + await moveMouseCell(page, dims, 2, 1); + await pollFor(page, `window.calls`, ['provide 1', 'hover 1-3']); + await moveMouseCell(page, dims, 6, 1); + await pollFor(page, `window.calls`, ['provide 1', 'hover 1-3', 'leave 1-3', 'hover 5-7']); + await moveMouseCell(page, dims, 6, 2); + await pollFor(page, `window.calls`, ['provide 1', 'hover 1-3', 'leave 1-3', 'hover 5-7', 'leave 5-7', 'provide 2']); + await moveMouseCell(page, dims, 10, 1); + await pollFor(page, `window.calls`, ['provide 1', 'hover 1-3', 'leave 1-3', 'hover 5-7', 'leave 5-7', 'provide 2', 'provide 1', 'hover 9-11']); + await page.evaluate(`window.disposable.dispose()`); + }); }); });