add scroll test
This commit is contained in:
parent
f63920e25e
commit
b694afb7ce
6 changed files with 133 additions and 18 deletions
|
@ -2,6 +2,7 @@ import {
|
|||
WINDOWS_CREATE, WINDOWS_REMOVE, WINDOWS_GET,
|
||||
TABS_CREATE,
|
||||
EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP,
|
||||
SCROLL_GET, SCROLL_SET,
|
||||
} from '../shared/messages';
|
||||
import * as tabs from './tabs';
|
||||
import { receiveContentMessage } from './ipc';
|
||||
|
@ -19,15 +20,11 @@ receiveContentMessage((message) => {
|
|||
url: message.url,
|
||||
windowId: message.windowId,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
receiveContentMessage((message) => {
|
||||
switch (message.type) {
|
||||
case EVENT_KEYPRESS:
|
||||
case EVENT_KEYDOWN:
|
||||
case EVENT_KEYUP:
|
||||
case SCROLL_GET:
|
||||
case SCROLL_SET:
|
||||
return browser.tabs.sendMessage(
|
||||
message.tabId,
|
||||
message
|
||||
|
|
20
e2e/ambassador/src/client/scrolls.js
Normal file
20
e2e/ambassador/src/client/scrolls.js
Normal file
|
@ -0,0 +1,20 @@
|
|||
import { SCROLL_GET, SCROLL_SET } from '../shared/messages';
|
||||
import * as ipc from './ipc';
|
||||
|
||||
const get = (tabId) => {
|
||||
return ipc.send({
|
||||
type: SCROLL_GET,
|
||||
tabId,
|
||||
});
|
||||
};
|
||||
|
||||
const set = (tabId, x, y) => {
|
||||
return ipc.send({
|
||||
type: SCROLL_SET,
|
||||
tabId,
|
||||
x,
|
||||
y,
|
||||
});
|
||||
};
|
||||
|
||||
export { get, set };
|
|
@ -1,21 +1,12 @@
|
|||
import {
|
||||
WINDOWS_CREATE, WINDOWS_REMOVE, WINDOWS_GET,
|
||||
TABS_CREATE,
|
||||
EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP,
|
||||
SCROLL_GET, SCROLL_SET,
|
||||
} from '../shared/messages';
|
||||
import * as ipc from './ipc';
|
||||
import * as scrolls from './scrolls';
|
||||
|
||||
ipc.receivePageMessage((message) => {
|
||||
switch (message.type) {
|
||||
case WINDOWS_CREATE:
|
||||
case WINDOWS_REMOVE:
|
||||
case WINDOWS_GET:
|
||||
case TABS_CREATE:
|
||||
case EVENT_KEYPRESS:
|
||||
case EVENT_KEYDOWN:
|
||||
case EVENT_KEYUP:
|
||||
return ipc.sendToBackground(message);
|
||||
}
|
||||
});
|
||||
|
||||
ipc.receiveBackgroundMesssage((message) => {
|
||||
|
@ -32,6 +23,10 @@ ipc.receiveBackgroundMesssage((message) => {
|
|||
document.body.dispatchEvent(
|
||||
new KeyboardEvent('keyup', { 'key': message.key }));
|
||||
break;
|
||||
case SCROLL_GET:
|
||||
return Promise.resolve(scrolls.get());
|
||||
case SCROLL_SET:
|
||||
return Promise.resolve(scrolls.set(message.x, message.y));
|
||||
}
|
||||
return Promise.resolve({});
|
||||
});
|
||||
|
|
18
e2e/ambassador/src/content/scrolls.js
Normal file
18
e2e/ambassador/src/content/scrolls.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
const get = () => {
|
||||
let element = document.documentElement;
|
||||
return {
|
||||
xMax: element.scrollWidth - element.clientWidth,
|
||||
yMax: element.scrollHeight - element.clientHeight,
|
||||
x: element.scrollLeft,
|
||||
y: element.scrollTop,
|
||||
};
|
||||
};
|
||||
|
||||
const set = (x, y) => {
|
||||
let element = document.documentElement;
|
||||
element.scrollLeft = x;
|
||||
element.scrollTop = y;
|
||||
return get();
|
||||
};
|
||||
|
||||
export { get, set };
|
|
@ -7,6 +7,8 @@ const TABS_CREATE = 'tabs.create';
|
|||
const EVENT_KEYPRESS = 'event.keypress';
|
||||
const EVENT_KEYDOWN = 'event.keydown';
|
||||
const EVENT_KEYUP = 'event.keyup';
|
||||
const SCROLL_GET = 'scroll.get';
|
||||
const SCROLL_SET = 'scroll.set';
|
||||
|
||||
export {
|
||||
METHOD_REQUEST,
|
||||
|
@ -21,4 +23,6 @@ export {
|
|||
EVENT_KEYPRESS,
|
||||
EVENT_KEYDOWN,
|
||||
EVENT_KEYUP,
|
||||
SCROLL_GET,
|
||||
SCROLL_SET,
|
||||
};
|
||||
|
|
81
e2e/contents/scroll.test.js
Normal file
81
e2e/contents/scroll.test.js
Normal file
|
@ -0,0 +1,81 @@
|
|||
import { expect } from "chai";
|
||||
import * as windows from "../ambassador/src/client/windows";
|
||||
import * as tabs from "../ambassador/src/client/tabs";
|
||||
import * as keys from "../ambassador/src/client/keys";
|
||||
import * as scrolls from "../ambassador/src/client/scrolls";
|
||||
|
||||
const SERVER_URL = "localhost:11111";
|
||||
|
||||
describe("scroll test", () => {
|
||||
let targetWindow;
|
||||
let targetTab;
|
||||
|
||||
before(() => {
|
||||
return windows.create().then((win) => {
|
||||
targetWindow = win;
|
||||
return tabs.create(targetWindow.id, SERVER_URL);
|
||||
}).then((tab) => {
|
||||
targetTab = tab;
|
||||
});
|
||||
});
|
||||
|
||||
after(() => {
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
Reference in a new issue