aboutsummaryrefslogtreecommitdiff
path: root/e2e/lib/Console.js
blob: 3a39b649cf5dc2997945d686552d47b14b312d5a (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
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;