aboutsummaryrefslogtreecommitdiff
path: root/e2e
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2018-02-14 21:30:04 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2018-02-14 21:30:04 +0900
commitd4e4b7541433d527225026f51e14fc0e2c585e04 (patch)
tree4afef683a3855b776e2f0eccfb7cd9efc7b56b8d /e2e
parentb694afb7ce0eed4c4ee3ee9c3fae5dd35cb72d14 (diff)
add scroll tests
Diffstat (limited to 'e2e')
-rw-r--r--e2e/ambassador/src/client/keys.js20
-rw-r--r--e2e/ambassador/src/content/events.js31
-rw-r--r--e2e/ambassador/src/content/index.js10
-rw-r--r--e2e/contents/scroll.test.js110
4 files changed, 112 insertions, 59 deletions
diff --git a/e2e/ambassador/src/client/keys.js b/e2e/ambassador/src/client/keys.js
index af0fb3d..37b9c0a 100644
--- a/e2e/ambassador/src/client/keys.js
+++ b/e2e/ambassador/src/client/keys.js
@@ -1,29 +1,31 @@
import { EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP } from '../shared/messages';
import * as ipc from './ipc';
-const press = (tabId, key) => {
- return ipc.send({
+const NEUTRAL_MODIFIERS = { shiftKey: false, altKey: false, ctrlKey: false };
+
+const press = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
+ return ipc.send(Object.assign({}, modifiers, {
type: EVENT_KEYPRESS,
tabId,
key,
- });
+ }));
};
-const down = (tabId, key) => {
- return ipc.send({
+const down = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
+ return ipc.send(Object.assign({}, modifiers, {
type: EVENT_KEYDOWN,
tabId,
key,
- });
+ }));
};
-const up = (tabId, key) => {
- return ipc.send({
+const up = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
+ return ipc.send(Object.assign({}, modifiers, {
type: EVENT_KEYUP,
tabId,
key,
- });
+ }));
};
export { press, down, up };
diff --git a/e2e/ambassador/src/content/events.js b/e2e/ambassador/src/content/events.js
new file mode 100644
index 0000000..1e45909
--- /dev/null
+++ b/e2e/ambassador/src/content/events.js
@@ -0,0 +1,31 @@
+const keypress = (opts) => {
+ let event = new KeyboardEvent('keypress', {
+ key: opts.key,
+ altKey: opts.altKey,
+ shiftKey: opts.shiftKey,
+ ctrlKey: opts.ctrlKey
+ });
+ document.body.dispatchEvent(event);
+};
+
+const keydown = (opts) => {
+ let event = new KeyboardEvent('keydown', {
+ key: opts.key,
+ altKey: opts.altKey,
+ shiftKey: opts.shiftKey,
+ ctrlKey: opts.ctrlKey
+ });
+ document.body.dispatchEvent(event);
+};
+
+const keyup = (opts) => {
+ let event = new KeyboardEvent('keyup', {
+ key: opts.key,
+ altKey: opts.altKey,
+ shiftKey: opts.shiftKey,
+ ctrlKey: opts.ctrlKey
+ });
+ document.body.dispatchEvent(event);
+};
+
+export { keypress, keydown, keyup };
diff --git a/e2e/ambassador/src/content/index.js b/e2e/ambassador/src/content/index.js
index 93943b8..fd19136 100644
--- a/e2e/ambassador/src/content/index.js
+++ b/e2e/ambassador/src/content/index.js
@@ -3,6 +3,7 @@ import {
SCROLL_GET, SCROLL_SET,
} from '../shared/messages';
import * as ipc from './ipc';
+import * as events from './events';
import * as scrolls from './scrolls';
ipc.receivePageMessage((message) => {
@@ -12,16 +13,13 @@ ipc.receivePageMessage((message) => {
ipc.receiveBackgroundMesssage((message) => {
switch (message.type) {
case EVENT_KEYPRESS:
- document.body.dispatchEvent(
- new KeyboardEvent('keypress', { 'key': message.key }));
+ events.keypress(message);
break;
case EVENT_KEYDOWN:
- document.body.dispatchEvent(
- new KeyboardEvent('keydown', { 'key': message.key }));
+ events.keydown(message);
break;
case EVENT_KEYUP:
- document.body.dispatchEvent(
- new KeyboardEvent('keyup', { 'key': message.key }));
+ events.keyup(message);
break;
case SCROLL_GET:
return Promise.resolve(scrolls.get());
diff --git a/e2e/contents/scroll.test.js b/e2e/contents/scroll.test.js
index 79e0d32..da14f76 100644
--- a/e2e/contents/scroll.test.js
+++ b/e2e/contents/scroll.test.js
@@ -23,59 +23,81 @@ describe("scroll test", () => {
return windows.remove(targetWindow.id);
});
- describe('press k', () => {
- it('scrolls up', () => {
- let before
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'k');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.be.lessThan(before.y);
- });
+ it('scrolls up by k', () => {
+ let before
+ return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
+ before = scroll;
+ return keys.press(targetTab.id, 'k');
+ }).then(() => {
+ return scrolls.get(targetTab.id);
+ }).then((actual) => {
+ expect(actual.y).to.be.lessThan(before.y);
});
});
- describe('press j', () => {
- it('scrolls down', () => {
- let before
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'j');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.y).to.be.greaterThan(before.y);
- });
+ it('scrolls down by j', () => {
+ let before
+ return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
+ before = scroll;
+ return keys.press(targetTab.id, 'j');
+ }).then(() => {
+ return scrolls.get(targetTab.id);
+ }).then((actual) => {
+ expect(actual.y).to.be.greaterThan(before.y);
});
});
- describe('press h', () => {
- it('scrolls left', () => {
- let before
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'h');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.x).to.be.lessThan(before.x);
- });
+ it('scrolls left by h', () => {
+ let before
+ return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
+ before = scroll;
+ return keys.press(targetTab.id, 'h');
+ }).then(() => {
+ return scrolls.get(targetTab.id);
+ }).then((actual) => {
+ expect(actual.x).to.be.lessThan(before.x);
});
});
- describe('press l', () => {
- it('scrolls right', () => {
- let before
- return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
- before = scroll;
- return keys.press(targetTab.id, 'l');
- }).then(() => {
- return scrolls.get(targetTab.id);
- }).then((actual) => {
- expect(actual.x).to.be.greaterThan(before.x);
- });
+ it('scrolls top by gg', () => {
+ return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
+ return keys.press(targetTab.id, 'g');
+ }).then(() => {
+ return keys.press(targetTab.id, 'g');
+ }).then(() => {
+ return scrolls.get(targetTab.id);
+ }).then((actual) => {
+ expect(actual.y).to.be.equals(0);
+ });
+ });
+
+ it('scrolls bottom by G', () => {
+ return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
+ return keys.press(targetTab.id, 'G', { shiftKey: true });
+ }).then(() => {
+ return scrolls.get(targetTab.id);
+ }).then((actual) => {
+ expect(actual.y).to.be.equals(actual.yMax);
+ });
+ });
+
+ it('scrolls bottom by 0', () => {
+ return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
+ return keys.press(targetTab.id, '0');
+ }).then(() => {
+ return scrolls.get(targetTab.id);
+ }).then((actual) => {
+ expect(actual.x).to.be.equals(0);
+ });
+ });
+
+ it('scrolls bottom by $', () => {
+ return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
+ return keys.press(targetTab.id, '$');
+ }).then(() => {
+ return scrolls.get(targetTab.id);
+ }).then((actual) => {
+ expect(actual.x).to.be.equals(actual.xMax);
});
});
});