aboutsummaryrefslogtreecommitdiff
path: root/e2e/lib/Console.js
blob: 6016de1a45163968fcfd3a3dc320f8c94a46f197 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const { By } = require('selenium-webdriver');

class Console {
  constructor(webdriver) {
    this.webdriver = webdriver;
  }

  async sendKeys(...keys) {
    let input = await this.webdriver.findElement(By.css('input'));
    input.sendKeys(...keys);
  }

  async currentValue() {
    return await this.webdriver.executeScript(() => {
      let input = document.querySelector('input');
      return input.value;
    });
  }

  async getCompletions() {
    return await this.webdriver.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;