add scroll tests

jh-changes
Shin'ya Ueoka 7 years ago
parent b694afb7ce
commit d4e4b75414
  1. 20
      e2e/ambassador/src/client/keys.js
  2. 31
      e2e/ambassador/src/content/events.js
  3. 10
      e2e/ambassador/src/content/index.js
  4. 50
      e2e/contents/scroll.test.js

@ -1,29 +1,31 @@
import { EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP } from '../shared/messages'; import { EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP } from '../shared/messages';
import * as ipc from './ipc'; import * as ipc from './ipc';
const press = (tabId, key) => { const NEUTRAL_MODIFIERS = { shiftKey: false, altKey: false, ctrlKey: false };
return ipc.send({
const press = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
return ipc.send(Object.assign({}, modifiers, {
type: EVENT_KEYPRESS, type: EVENT_KEYPRESS,
tabId, tabId,
key, key,
}); }));
}; };
const down = (tabId, key) => { const down = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
return ipc.send({ return ipc.send(Object.assign({}, modifiers, {
type: EVENT_KEYDOWN, type: EVENT_KEYDOWN,
tabId, tabId,
key, key,
}); }));
}; };
const up = (tabId, key) => { const up = (tabId, key, modifiers = NEUTRAL_MODIFIERS) => {
return ipc.send({ return ipc.send(Object.assign({}, modifiers, {
type: EVENT_KEYUP, type: EVENT_KEYUP,
tabId, tabId,
key, key,
}); }));
}; };
export { press, down, up }; export { press, down, up };

@ -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 };

@ -3,6 +3,7 @@ import {
SCROLL_GET, SCROLL_SET, SCROLL_GET, SCROLL_SET,
} from '../shared/messages'; } from '../shared/messages';
import * as ipc from './ipc'; import * as ipc from './ipc';
import * as events from './events';
import * as scrolls from './scrolls'; import * as scrolls from './scrolls';
ipc.receivePageMessage((message) => { ipc.receivePageMessage((message) => {
@ -12,16 +13,13 @@ ipc.receivePageMessage((message) => {
ipc.receiveBackgroundMesssage((message) => { ipc.receiveBackgroundMesssage((message) => {
switch (message.type) { switch (message.type) {
case EVENT_KEYPRESS: case EVENT_KEYPRESS:
document.body.dispatchEvent( events.keypress(message);
new KeyboardEvent('keypress', { 'key': message.key }));
break; break;
case EVENT_KEYDOWN: case EVENT_KEYDOWN:
document.body.dispatchEvent( events.keydown(message);
new KeyboardEvent('keydown', { 'key': message.key }));
break; break;
case EVENT_KEYUP: case EVENT_KEYUP:
document.body.dispatchEvent( events.keyup(message);
new KeyboardEvent('keyup', { 'key': message.key }));
break; break;
case SCROLL_GET: case SCROLL_GET:
return Promise.resolve(scrolls.get()); return Promise.resolve(scrolls.get());

@ -23,8 +23,7 @@ describe("scroll test", () => {
return windows.remove(targetWindow.id); return windows.remove(targetWindow.id);
}); });
describe('press k', () => { it('scrolls up by k', () => {
it('scrolls up', () => {
let before let before
return scrolls.set(targetTab.id, 100, 100).then((scroll) => { return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
before = scroll; before = scroll;
@ -35,10 +34,8 @@ describe("scroll test", () => {
expect(actual.y).to.be.lessThan(before.y); expect(actual.y).to.be.lessThan(before.y);
}); });
}); });
});
describe('press j', () => { it('scrolls down by j', () => {
it('scrolls down', () => {
let before let before
return scrolls.set(targetTab.id, 100, 100).then((scroll) => { return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
before = scroll; before = scroll;
@ -49,10 +46,8 @@ describe("scroll test", () => {
expect(actual.y).to.be.greaterThan(before.y); expect(actual.y).to.be.greaterThan(before.y);
}); });
}); });
});
describe('press h', () => { it('scrolls left by h', () => {
it('scrolls left', () => {
let before let before
return scrolls.set(targetTab.id, 100, 100).then((scroll) => { return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
before = scroll; before = scroll;
@ -63,19 +58,46 @@ describe("scroll test", () => {
expect(actual.x).to.be.lessThan(before.x); expect(actual.x).to.be.lessThan(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);
});
}); });
describe('press l', () => { it('scrolls bottom by G', () => {
it('scrolls right', () => {
let before
return scrolls.set(targetTab.id, 100, 100).then((scroll) => { return scrolls.set(targetTab.id, 100, 100).then((scroll) => {
before = scroll; return keys.press(targetTab.id, 'G', { shiftKey: true });
return keys.press(targetTab.id, 'l'); }).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(() => { }).then(() => {
return scrolls.get(targetTab.id); return scrolls.get(targetTab.id);
}).then((actual) => { }).then((actual) => {
expect(actual.x).to.be.greaterThan(before.x); 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);
});
}); });
}); });