aboutsummaryrefslogtreecommitdiff
path: root/e2e/lib/Console.js
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-04-16 13:07:19 +0000
committerGitHub <noreply@github.com>2019-04-16 13:07:19 +0000
commit938fe9f752e393f0ea21def020e849a51ea79300 (patch)
treea1291d993c3e12ef4994a8fa4820fef69f23c7e2 /e2e/lib/Console.js
parent19ca873a38500b125133b6e2db47c8ca074f9c50 (diff)
parent9f7150e96b7b228429f9f893657f4647e5a8cb51 (diff)
Merge pull request #565 from ueokande/add-e2e-tests
Add e2e tests
Diffstat (limited to 'e2e/lib/Console.js')
-rw-r--r--e2e/lib/Console.js41
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;