diff options
Diffstat (limited to 'e2e/lib/Console.js')
-rw-r--r-- | e2e/lib/Console.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/e2e/lib/Console.js b/e2e/lib/Console.js new file mode 100644 index 0000000..3a39b64 --- /dev/null +++ b/e2e/lib/Console.js @@ -0,0 +1,41 @@ +class Console { + constructor(session) { + this.session = session; + } + + async sendKeys(...keys) { + let input = await this.session.findElementByCSS('input'); + input.sendKeys(...keys); + } + + async currentValue() { + return await this.session.executeScript(() => { + let input = document.querySelector('input'); + return input.value; + }); + } + + async getCompletions() { + return await this.session.executeScript(() => { + let items = document.querySelectorAll('.vimvixen-console-completion > li'); + if (items.length === 0) { + throw new Error('completion items not found'); + } + + let objs = []; + for (let li of items) { + if (li.classList.contains('vimvixen-console-completion-title')) { + objs.push({ type: 'title', text: li.textContent.trim() }); + } else if ('vimvixen-console-completion-item') { + let highlight = li.classList.contains('vimvixen-completion-selected'); + objs.push({ type: 'item', text: li.textContent.trim(), highlight }); + } else { + throw new Error(`unexpected class: ${li.className}`); + } + } + return objs; + }); + } +} + +module.exports = Console; |