Use TestServer on e2e
This commit is contained in:
parent
4a4b5e1303
commit
1b92be6360
21 changed files with 346 additions and 634 deletions
|
@ -1,49 +1,29 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import * as http from 'http';
|
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
describe("blacklist test", () => {
|
||||||
let app = express();
|
let server = new TestServer().receiveContent('/*',
|
||||||
app.get('/*', (_req, res) => {
|
`<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html">`,
|
||||||
res.status(200).send(`<!DOCTYPEhtml>
|
);
|
||||||
<html lang="en">
|
|
||||||
<body style="width:10000px; height:10000px"></body>
|
|
||||||
</html>`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("navigate test", () => {
|
|
||||||
const port = 12321;
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
});
|
await server.start();
|
||||||
|
|
||||||
after(async() => {
|
let url = server.url('/a').replace('http://', '');
|
||||||
if (lanthan) {
|
|
||||||
await lanthan.quit();
|
|
||||||
}
|
|
||||||
http.close();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should disable add-on if the URL is in the blacklist', async () => {
|
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings: {
|
settings: {
|
||||||
source: 'json',
|
source: 'json',
|
||||||
|
@ -51,24 +31,32 @@ describe("navigate test", () => {
|
||||||
"keymaps": {
|
"keymaps": {
|
||||||
"j": { "type": "scroll.vertically", "count": 1 }
|
"j": { "type": "scroll.vertically", "count": 1 }
|
||||||
},
|
},
|
||||||
"blacklist": [ "127.0.0.1:${port}/a" ]
|
"blacklist": [ "${url}" ]
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/a`);
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
|
if (lanthan) {
|
||||||
|
await lanthan.quit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should disable add-on if the URL is in the blacklist', async () => {
|
||||||
|
let page = await Page.navigateTo(webdriver, server.url('/a'));
|
||||||
await page.sendKeys('j')
|
await page.sendKeys('j')
|
||||||
|
|
||||||
// not works
|
|
||||||
let pageYOffset = await webdriver.executeScript(() => window.pageYOffset);
|
|
||||||
let scrollY = await page.getScrollY();
|
let scrollY = await page.getScrollY();
|
||||||
assert.equal(pageYOffset, 0);
|
assert.equal(scrollY, 0);
|
||||||
|
});
|
||||||
|
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/ab`);
|
it('should enabled add-on if the URL is not in the blacklist', async () => {
|
||||||
|
let page = await Page.navigateTo(webdriver, server.url('/ab'));
|
||||||
await page.sendKeys('j');
|
await page.sendKeys('j');
|
||||||
|
|
||||||
// works
|
let scrollY = await page.getScrollY();
|
||||||
scrollY = await page.getScrollY();
|
|
||||||
assert.equal(scrollY, 64);
|
assert.equal(scrollY, 64);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
import * as path from 'path';
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import * as clipboard from './lib/clipboard';
|
import * as clipboard from './lib/clipboard';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
|
@ -10,24 +9,13 @@ import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.status(200).send(`<html lang="en"></html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("clipboard test", () => {
|
describe("clipboard test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer(12321).receiveContent('/happy', 'ok');
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
|
@ -38,13 +26,15 @@ describe("clipboard test", () => {
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings,
|
settings,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
http.close();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
|
@ -55,38 +45,38 @@ describe("clipboard test", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should copy current URL by y', async () => {
|
it('should copy current URL by y', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/#should_copy_url`);
|
let page = await Page.navigateTo(webdriver, server.url('/#should_copy_url'));
|
||||||
await page.sendKeys('y');
|
await page.sendKeys('y');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let data = await clipboard.read();
|
let data = await clipboard.read();
|
||||||
assert.equal(data, `http://127.0.0.1:${port}/#should_copy_url`);
|
assert.equal(data, server.url('/#should_copy_url'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should open an URL from clipboard by p', async () => {
|
it('should open an URL from clipboard by p', async () => {
|
||||||
await clipboard.write(`http://127.0.0.1:${port}/#open_from_clipboard`);
|
await clipboard.write(server.url('/#open_from_clipboard'));
|
||||||
|
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys('p');
|
await page.sendKeys('p');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({ active: true });
|
let tabs = await browser.tabs.query({ active: true });
|
||||||
assert.equal(tabs[0].url, `http://127.0.0.1:${port}/#open_from_clipboard`);
|
assert.equal(tabs[0].url, server.url('/#open_from_clipboard'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should open an URL from clipboard to new tab by P', async () => {
|
it('should open an URL from clipboard to new tab by P', async () => {
|
||||||
await clipboard.write(`http://127.0.0.1:${port}/#open_to_new_tab`);
|
await clipboard.write(server.url('/#open_to_new_tab'));
|
||||||
|
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys(Key.SHIFT, 'p');
|
await page.sendKeys(Key.SHIFT, 'p');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.deepEqual(tabs.map((t: any) => t.url), [
|
assert.deepEqual(tabs.map((t: any) => t.url), [
|
||||||
`http://127.0.0.1:${port}/`,
|
server.url(),
|
||||||
`http://127.0.0.1:${port}/#open_to_new_tab`,
|
server.url('/#open_to_new_tab'),
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -94,26 +84,26 @@ describe("clipboard test", () => {
|
||||||
it('should open search result with keywords in clipboard by p', async () => {
|
it('should open search result with keywords in clipboard by p', async () => {
|
||||||
await clipboard.write(`an apple`);
|
await clipboard.write(`an apple`);
|
||||||
|
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys(Key.SHIFT, 'p');
|
await page.sendKeys(Key.SHIFT, 'p');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({ active: true });
|
let tabs = await browser.tabs.query({ active: true });
|
||||||
assert.equal(tabs[0].url, `http://127.0.0.1:${port}/google?q=an%20apple`);
|
assert.equal(tabs[0].url, server.url('/google?q=an%20apple'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should open search result with keywords in clipboard to new tabby P', async () => {
|
it('should open search result with keywords in clipboard to new tabby P', async () => {
|
||||||
await clipboard.write(`an apple`);
|
await clipboard.write(`an apple`);
|
||||||
|
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys(Key.SHIFT, 'p');
|
await page.sendKeys(Key.SHIFT, 'p');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.deepEqual(tabs.map((t: any) => t.url), [
|
assert.deepEqual(tabs.map((t: any) => t.url), [
|
||||||
`http://127.0.0.1:${port}/`,
|
server.url(),
|
||||||
`http://127.0.0.1:${port}/google?q=an%20apple`,
|
server.url('/google?q=an%20apple'),
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,53 +1,40 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/happy', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<title>how to be happy</title>
|
|
||||||
</head>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('addbookmark command test', () => {
|
describe('addbookmark command test', () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/happy', `
|
||||||
let http: http.Server;
|
<!DOCTYPE html>
|
||||||
|
<html lang="en"><head><title>how to be happy</title></head></html">`,
|
||||||
|
);
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
await webdriver.navigate().to(`http://127.0.0.1:${port}/happy`);
|
await webdriver.navigate().to(server.url('/happy'));
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add a bookmark from the current page', async() => {
|
it('should add a bookmark from the current page', async() => {
|
||||||
|
@ -58,7 +45,7 @@ describe('addbookmark command test', () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
var bookmarks = await browser.bookmarks.search({ title: 'how to be happy' });
|
var bookmarks = await browser.bookmarks.search({ title: 'how to be happy' });
|
||||||
assert.equal(bookmarks.length, 1);
|
assert.equal(bookmarks.length, 1);
|
||||||
assert.equal(bookmarks[0].url, `http://127.0.0.1:${port}/happy`);
|
assert.equal(bookmarks[0].url, server.url('/happy'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,46 +1,30 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/*', (req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<title>my_${req.path.slice(1)}</title>
|
|
||||||
</head>
|
|
||||||
<body><h1>${req.path}</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('bdelete/bdeletes command test', () => {
|
describe('bdelete/bdeletes command test', () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/*', 'ok');
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
|
@ -51,11 +35,11 @@ describe('bdelete/bdeletes command test', () => {
|
||||||
for (let tab of tabs.slice(1)) {
|
for (let tab of tabs.slice(1)) {
|
||||||
await browser.tabs.remove(tab.id);
|
await browser.tabs.remove(tab.id);
|
||||||
}
|
}
|
||||||
await browser.tabs.update(tabs[0].id, { url: `http://127.0.0.1:${port}/site1`, pinned: true });
|
await browser.tabs.update(tabs[0].id, { url: server.url('/site1'), pinned: true });
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site2`, pinned: true })
|
await browser.tabs.create({ url: server.url('/site2'), pinned: true })
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site3`, pinned: true })
|
await browser.tabs.create({ url: server.url('/site3'), pinned: true })
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site4` })
|
await browser.tabs.create({ url: server.url('/site4'), })
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site5` })
|
await browser.tabs.create({ url: server.url('/site5'), })
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let handles = await webdriver.getAllWindowHandles();
|
let handles = await webdriver.getAllWindowHandles();
|
||||||
|
@ -72,10 +56,10 @@ describe('bdelete/bdeletes command test', () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.deepEqual(tabs.map((t: any) => t.url), [
|
assert.deepEqual(tabs.map((t: any) => t.url), [
|
||||||
`http://127.0.0.1:${port}/site1`,
|
server.url('/site1'),
|
||||||
`http://127.0.0.1:${port}/site2`,
|
server.url('/site2'),
|
||||||
`http://127.0.0.1:${port}/site3`,
|
server.url('/site3'),
|
||||||
`http://127.0.0.1:${port}/site4`,
|
server.url('/site4'),
|
||||||
])
|
])
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -121,10 +105,10 @@ describe('bdelete/bdeletes command test', () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.deepEqual(tabs.map((t: any) => t.url), [
|
assert.deepEqual(tabs.map((t: any) => t.url), [
|
||||||
`http://127.0.0.1:${port}/site1`,
|
server.url('/site1'),
|
||||||
`http://127.0.0.1:${port}/site2`,
|
server.url('/site2'),
|
||||||
`http://127.0.0.1:${port}/site3`,
|
server.url('/site3'),
|
||||||
`http://127.0.0.1:${port}/site4`,
|
server.url('/site4'),
|
||||||
])
|
])
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -137,10 +121,10 @@ describe('bdelete/bdeletes command test', () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.deepEqual(tabs.map((t: any) => t.url), [
|
assert.deepEqual(tabs.map((t: any) => t.url), [
|
||||||
`http://127.0.0.1:${port}/site2`,
|
server.url('/site2'),
|
||||||
`http://127.0.0.1:${port}/site3`,
|
server.url('/site3'),
|
||||||
`http://127.0.0.1:${port}/site4`,
|
server.url('/site4'),
|
||||||
`http://127.0.0.1:${port}/site5`,
|
server.url('/site5'),
|
||||||
])
|
])
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -153,9 +137,9 @@ describe('bdelete/bdeletes command test', () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.deepEqual(tabs.map((t: any) => t.url), [
|
assert.deepEqual(tabs.map((t: any) => t.url), [
|
||||||
`http://127.0.0.1:${port}/site1`,
|
server.url('/site1'),
|
||||||
`http://127.0.0.1:${port}/site2`,
|
server.url('/site2'),
|
||||||
`http://127.0.0.1:${port}/site3`,
|
server.url('/site3'),
|
||||||
])
|
])
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,46 +1,39 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
import { Request, Response } from 'express';
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
describe('buffer command test', () => {
|
||||||
let app = express();
|
let server = new TestServer().handle('/*', (req: Request, res: Response) => {
|
||||||
app.get('/*', (req, res) => {
|
res.send(`
|
||||||
res.send(`<!DOCTYPEhtml>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title>my_${req.path.slice(1)}</title>
|
<title>my_${req.path.slice(1)}</title>
|
||||||
</head>
|
</head>
|
||||||
<body><h1>${req.path}</h1></body>
|
|
||||||
</html">`);
|
</html">`);
|
||||||
});
|
});
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('buffer command test', () => {
|
|
||||||
const port = 12321;
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
|
@ -51,9 +44,9 @@ describe('buffer command test', () => {
|
||||||
for (let tab of tabs.slice(1)) {
|
for (let tab of tabs.slice(1)) {
|
||||||
await browser.tabs.remove(tab.id);
|
await browser.tabs.remove(tab.id);
|
||||||
}
|
}
|
||||||
await browser.tabs.update(tabs[0].id, { url: `http://127.0.0.1:${port}/site1` });
|
await browser.tabs.update(tabs[0].id, { url: server.url('/site1') });
|
||||||
for (let i = 2; i <= 5; ++i) {
|
for (let i = 2; i <= 5; ++i) {
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site${i}`})
|
await browser.tabs.create({ url: server.url('/site' + i) });
|
||||||
}
|
}
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
|
|
@ -1,37 +1,17 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
|
|
||||||
let app = express();
|
|
||||||
for (let name of ['google', 'yahoo', 'bing', 'duckduckgo', 'twitter', 'wikipedia']) {
|
|
||||||
app.get('/' + name, (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body><h1>${name.charAt(0).toUpperCase() + name.slice(1)}</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body><h1>home</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("open command test", () => {
|
describe("open command test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer(12321)
|
||||||
let http: http.Server;
|
.receiveContent('/google', 'google')
|
||||||
|
.receiveContent('/yahoo', 'yahoo');
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
@ -44,15 +24,16 @@ describe("open command test", () => {
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings,
|
settings,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
|
@ -60,7 +41,7 @@ describe("open command test", () => {
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
await webdriver.switchTo().defaultContent();
|
await webdriver.switchTo().defaultContent();
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
page = await Page.navigateTo(webdriver, server.url());
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should open default search for keywords by open command ', async() => {
|
it('should open default search for keywords by open command ', async() => {
|
||||||
|
@ -70,7 +51,7 @@ describe("open command test", () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({ active: true });
|
let tabs = await browser.tabs.query({ active: true });
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/google?q=an%20apple`)
|
assert.equal(url.href, server.url('/google?q=an%20apple'))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -81,7 +62,7 @@ describe("open command test", () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({ active: true })
|
let tabs = await browser.tabs.query({ active: true })
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/yahoo?q=an%20apple`)
|
assert.equal(url.href, server.url('/yahoo?q=an%20apple'))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -92,7 +73,7 @@ describe("open command test", () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({ active: true })
|
let tabs = await browser.tabs.query({ active: true })
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/google?q=`)
|
assert.equal(url.href, server.url('/google?q='))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -103,7 +84,7 @@ describe("open command test", () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let tabs = await browser.tabs.query({ active: true })
|
let tabs = await browser.tabs.query({ active: true })
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/yahoo?q=`)
|
assert.equal(url.href, server.url('/yahoo?q='))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,46 +1,30 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/*', (req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<title>my_${req.path.slice(1)}</title>
|
|
||||||
</head>
|
|
||||||
<body><h1>${req.path}</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('quit/quitall command test', () => {
|
describe('quit/quitall command test', () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/*', 'ok');
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
|
@ -51,9 +35,9 @@ describe('quit/quitall command test', () => {
|
||||||
for (let tab of tabs.slice(1)) {
|
for (let tab of tabs.slice(1)) {
|
||||||
await browser.tabs.remove(tab.id);
|
await browser.tabs.remove(tab.id);
|
||||||
}
|
}
|
||||||
await browser.tabs.update(tabs[0].id, { url: `http://127.0.0.1:${port}/site1` });
|
await browser.tabs.update(tabs[0].id, { url: server.url('/site1') });
|
||||||
for (let i = 2; i <= 5; ++i) {
|
for (let i = 2; i <= 5; ++i) {
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site${i}`})
|
await browser.tabs.create({ url: server.url('/site' + i) })
|
||||||
}
|
}
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
|
|
@ -1,44 +1,23 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
|
|
||||||
let app = express();
|
|
||||||
for (let name of ['google', 'yahoo', 'bing', 'duckduckgo', 'twitter', 'wikipedia']) {
|
|
||||||
app.get('/' + name, (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body><h1>${name.charAt(0).toUpperCase() + name.slice(1)}</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body><h1>home</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("tabopen command test", () => {
|
describe("tabopen command test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer(12321)
|
||||||
let http: http.Server;
|
.receiveContent('/google', 'google')
|
||||||
|
.receiveContent('/yahoo', 'yahoo');
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
let page: Page;
|
let page: Page;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
|
@ -49,10 +28,12 @@ describe("tabopen command test", () => {
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings,
|
settings,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
|
@ -64,7 +45,7 @@ describe("tabopen command test", () => {
|
||||||
await browser.tabs.remove(tab.id);
|
await browser.tabs.remove(tab.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
page = await Page.navigateTo(webdriver, server.url());
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should open default search for keywords by tabopen command ', async() => {
|
it('should open default search for keywords by tabopen command ', async() => {
|
||||||
|
@ -75,7 +56,7 @@ describe("tabopen command test", () => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.equal(tabs.length, 2);
|
assert.equal(tabs.length, 2);
|
||||||
let url = new URL(tabs[1].url);
|
let url = new URL(tabs[1].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/google?q=an%20apple`)
|
assert.equal(url.href, server.url('/google?q=an%20apple') )
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -87,7 +68,7 @@ describe("tabopen command test", () => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.equal(tabs.length, 2);
|
assert.equal(tabs.length, 2);
|
||||||
let url = new URL(tabs[1].url);
|
let url = new URL(tabs[1].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/yahoo?q=an%20apple`)
|
assert.equal(url.href, server.url('/yahoo?q=an%20apple'))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -99,7 +80,7 @@ describe("tabopen command test", () => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.equal(tabs.length, 2);
|
assert.equal(tabs.length, 2);
|
||||||
let url = new URL(tabs[1].url);
|
let url = new URL(tabs[1].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/google?q=`)
|
assert.equal(url.href, server.url('/google?q='))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -111,7 +92,7 @@ describe("tabopen command test", () => {
|
||||||
let tabs = await browser.tabs.query({});
|
let tabs = await browser.tabs.query({});
|
||||||
assert.equal(tabs.length, 2);
|
assert.equal(tabs.length, 2);
|
||||||
let url = new URL(tabs[1].url);
|
let url = new URL(tabs[1].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/yahoo?q=`)
|
assert.equal(url.href, server.url('/yahoo?q='))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,44 +1,23 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
|
|
||||||
let app = express();
|
|
||||||
for (let name of ['google', 'yahoo', 'bing', 'duckduckgo', 'twitter', 'wikipedia']) {
|
|
||||||
app.get('/' + name, (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body><h1>${name.charAt(0).toUpperCase() + name.slice(1)}</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body><h1>home</h1></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("winopen command test", () => {
|
describe("winopen command test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer(12321)
|
||||||
let http: http.Server;
|
.receiveContent('/google', 'google')
|
||||||
|
.receiveContent('/yahoo', 'yahoo');
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
let page: Page;
|
let page: Page;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
|
@ -48,10 +27,12 @@ describe("winopen command test", () => {
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings,
|
settings,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
|
@ -63,7 +44,7 @@ describe("winopen command test", () => {
|
||||||
await browser.windows.remove(win.id);
|
await browser.windows.remove(win.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/area`);
|
page = await Page.navigateTo(webdriver, server.url());
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should open default search for keywords by winopen command ', async() => {
|
it('should open default search for keywords by winopen command ', async() => {
|
||||||
|
@ -76,7 +57,7 @@ describe("winopen command test", () => {
|
||||||
|
|
||||||
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/google?q=an%20apple`)
|
assert.equal(url.href, server.url('/google?q=an%20apple'))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -90,7 +71,7 @@ describe("winopen command test", () => {
|
||||||
|
|
||||||
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/yahoo?q=an%20apple`)
|
assert.equal(url.href, server.url('/yahoo?q=an%20apple'))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -104,7 +85,7 @@ describe("winopen command test", () => {
|
||||||
|
|
||||||
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/google?q=`)
|
assert.equal(url.href, server.url('/google?q='))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -118,7 +99,7 @@ describe("winopen command test", () => {
|
||||||
|
|
||||||
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
let tabs = await browser.tabs.query({ windowId: wins[1].id });
|
||||||
let url = new URL(tabs[0].url);
|
let url = new URL(tabs[0].url);
|
||||||
assert.equal(url.href, `http://127.0.0.1:${port}/yahoo?q=`)
|
assert.equal(url.href, server.url('/yahoo?q='))
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
|
@ -9,20 +7,7 @@ import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body>ok</body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("general completion test", () => {
|
describe("general completion test", () => {
|
||||||
const port = 12321;
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
@ -35,7 +20,6 @@ describe("general completion test", () => {
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings,
|
settings,
|
||||||
|
@ -43,14 +27,13 @@ describe("general completion test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
page = await Page.navigateTo(webdriver, 'about:blank');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should all commands on empty line', async() => {
|
it('should all commands on empty line', async() => {
|
||||||
|
|
|
@ -1,32 +1,24 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
import * as path from 'path';
|
||||||
|
|
||||||
|
import { Request, Response } from 'express'
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
describe("completion on buffer/bdelete/bdeletes", () => {
|
||||||
|
let server = new TestServer().handle('/*', (req: Request, res: Response) => {
|
||||||
let app = express();
|
res.send(`
|
||||||
app.get('/*', (req, res) => {
|
<!DOCTYPE html>
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title>title_${req.path.slice(1)}</title>
|
<title>title_${req.path.slice(1)}</title>
|
||||||
</head>
|
</head>
|
||||||
<body><h1>home</h1></body>
|
|
||||||
</html">`);
|
</html">`);
|
||||||
});
|
});
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("completion on buffer/bdelete/bdeletes", () => {
|
|
||||||
const port = 12321;
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
@ -39,15 +31,16 @@ describe("completion on buffer/bdelete/bdeletes", () => {
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings,
|
settings,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
|
@ -59,10 +52,10 @@ describe("completion on buffer/bdelete/bdeletes", () => {
|
||||||
await browser.tabs.remove(tab.id);
|
await browser.tabs.remove(tab.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
await browser.tabs.update(tabs[0].id, { url: `http://127.0.0.1:${port}/site1`, pinned: true });
|
await browser.tabs.update(tabs[0].id, { url: server.url('/site1'), pinned: true });
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site2`, pinned: true })
|
await browser.tabs.create({ url:server.url('/site2'), pinned: true })
|
||||||
for (let i = 3; i <= 5; ++i) {
|
for (let i = 3; i <= 5; ++i) {
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}/site${i}` })
|
await browser.tabs.create({ url: server.url('/site' + i) });
|
||||||
}
|
}
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -102,7 +95,7 @@ describe("completion on buffer/bdelete/bdeletes", () => {
|
||||||
assert.deepEqual(items[0], { type: 'title', text: 'Buffers' });
|
assert.deepEqual(items[0], { type: 'title', text: 'Buffers' });
|
||||||
assert.ok(items[1].text.startsWith('2:'));
|
assert.ok(items[1].text.startsWith('2:'));
|
||||||
assert.ok(items[1].text.includes('title_site2'));
|
assert.ok(items[1].text.includes('title_site2'));
|
||||||
assert.ok(items[1].text.includes(`http://127.0.0.1:${port}/site2`));
|
assert.ok(items[1].text.includes(server.url('/site2')));
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,60 +1,47 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import settings from './settings';
|
import settings from './settings';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body>ok</body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("completion on open/tabopen/winopen commands", () => {
|
describe("completion on open/tabopen/winopen commands", () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/*', 'ok');
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
let page: Page;
|
let page: Page;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
|
await server.start();
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
await browser.storage.local.set({
|
await browser.storage.local.set({
|
||||||
settings,
|
settings,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add item into hitories
|
// Add item into hitories
|
||||||
await webdriver.navigate().to(`https://i-beam.org/404`);
|
await webdriver.navigate().to(('https://i-beam.org/404'));
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
http.close();
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
page = await Page.navigateTo(webdriver, server.url());
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should show completions from search engines, bookmarks, and histories by "open" command', async() => {
|
it('should show completions from search engines, bookmarks, and histories by "open" command', async() => {
|
||||||
|
|
|
@ -1,53 +1,37 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<title>Hello, world!</title>
|
|
||||||
</head>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
describe("console test", () => {
|
describe("console test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/',
|
||||||
let http: http.Server;
|
`<!DOCTYPE html><html lang="en"><head><title>Hello, world!</title></head></html">`,
|
||||||
|
);
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let page: Page;
|
let page: Page;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
if (http) {
|
|
||||||
http.close();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
page = await Page.navigateTo(webdriver, server.url());
|
||||||
});
|
});
|
||||||
|
|
||||||
it('open console with :', async() => {
|
it('open console with :', async() => {
|
||||||
|
@ -65,7 +49,7 @@ describe("console test", () => {
|
||||||
it('open console with open command and current URL by O', async() => {
|
it('open console with open command and current URL by O', async() => {
|
||||||
await page.sendKeys(Key.SHIFT, 'o');
|
await page.sendKeys(Key.SHIFT, 'o');
|
||||||
let console = await page.getConsole();
|
let console = await page.getConsole();
|
||||||
assert.equal(await console.currentValue(), `open http://127.0.0.1:${port}/`);
|
assert.equal(await console.currentValue(), `open ${server.url()}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('open console with tabopen command by t', async() => {
|
it('open console with tabopen command by t', async() => {
|
||||||
|
@ -77,7 +61,7 @@ describe("console test", () => {
|
||||||
it('open console with tabopen command and current URL by T', async() => {
|
it('open console with tabopen command and current URL by T', async() => {
|
||||||
await page.sendKeys(Key.SHIFT, 't');
|
await page.sendKeys(Key.SHIFT, 't');
|
||||||
let console = await page.getConsole();
|
let console = await page.getConsole();
|
||||||
assert.equal(await console.currentValue(), `tabopen http://127.0.0.1:${port}/`);
|
assert.equal(await console.currentValue(), `tabopen ${server.url()}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('open console with winopen command by w', async() => {
|
it('open console with winopen command by w', async() => {
|
||||||
|
@ -89,7 +73,7 @@ describe("console test", () => {
|
||||||
it('open console with winopen command and current URL by W', async() => {
|
it('open console with winopen command and current URL by W', async() => {
|
||||||
await page.sendKeys(Key.SHIFT, 'W');
|
await page.sendKeys(Key.SHIFT, 'W');
|
||||||
let console = await page.getConsole();
|
let console = await page.getConsole();
|
||||||
assert.equal(await console.currentValue(), `winopen http://127.0.0.1:${port}/`);
|
assert.equal(await console.currentValue(), `winopen ${server.url()}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('open console with buffer command by b', async() => {
|
it('open console with buffer command by b', async() => {
|
||||||
|
|
|
@ -1,34 +1,30 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
const newApp = () => {
|
||||||
let app = express();
|
let server = new TestServer();
|
||||||
|
|
||||||
app.get('/', (_req, res) => {
|
server.receiveContent('/', `
|
||||||
res.send(`<!DOCTYPEhtml>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en"><body>
|
||||||
<body><a href="hello">hello</a></body>
|
<a href="hello">hello</a>
|
||||||
</html">`);
|
</body></html">`);
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/follow-input', (_req, res) => {
|
server.receiveContent('/follow-input', `
|
||||||
res.send(`<!DOCTYPEhtml>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en"><body>
|
||||||
<body><input></body>
|
<input>
|
||||||
</html">`);
|
</body></html">`);
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/area', (_req, res) => {
|
server.receiveContent('/area', `
|
||||||
res.send(`<!DOCTYPEhtml>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en"><body>
|
||||||
<body>
|
|
||||||
<img
|
<img
|
||||||
width="256" height="256" usemap="#map"
|
width="256" height="256" usemap="#map"
|
||||||
src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="
|
src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="
|
||||||
|
@ -38,9 +34,7 @@ const newApp = () => {
|
||||||
<area shape="rect" coords="64,64,64,64" href="/">
|
<area shape="rect" coords="64,64,64,64" href="/">
|
||||||
<area shape="rect" coords="128,128,64,64" href="/">
|
<area shape="rect" coords="128,128,64,64" href="/">
|
||||||
</map>
|
</map>
|
||||||
</body>
|
</body></html">`);
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* test case: link2 is out of the viewport
|
* test case: link2 is out of the viewport
|
||||||
|
@ -52,16 +46,13 @@ const newApp = () => {
|
||||||
* | |
|
* | |
|
||||||
* +-----------------+
|
* +-----------------+
|
||||||
*/
|
*/
|
||||||
app.get('/test1', (_req, res) => {
|
server.receiveContent('/test1', `
|
||||||
res.send(`<!DOCTYPEhtml>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en"><body>
|
||||||
<body>
|
|
||||||
<div><a href="link1">link1</a></div>
|
<div><a href="link1">link1</a></div>
|
||||||
<div style="min-height:3000px"></div>
|
<div style="min-height:3000px"></div>
|
||||||
<div><a href="link2">link2</a></div>
|
<div><a href="link2">link2</a></div>
|
||||||
</body>
|
</body></html">`);
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* test case 2: link2 and link3 are out of window of the frame
|
* test case 2: link2 and link3 are out of window of the frame
|
||||||
|
@ -74,22 +65,18 @@ const newApp = () => {
|
||||||
* | |
|
* | |
|
||||||
* +-----------------+
|
* +-----------------+
|
||||||
*/
|
*/
|
||||||
app.get('/test2', (_req, res) => {
|
server.receiveContent('/test2', `
|
||||||
res.send(`<!DOCTYPEhtml>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en"><body>
|
||||||
<body><iframe height="5000" src='/test2-frame'></body>
|
<iframe height="5000" src='/test2-frame'>
|
||||||
</html">`);
|
</body></html">`);
|
||||||
});
|
server.receiveContent('/test2-frame', `
|
||||||
app.get('/test2-frame', (_req, res) => {
|
<!DOCTYPE html>
|
||||||
res.send(`<!DOCTYPEhtml>
|
<html lang="en"><body>
|
||||||
<html lang="en">
|
|
||||||
<body>
|
|
||||||
<div><a href="link1">link1</a></div>
|
<div><a href="link1">link1</a></div>
|
||||||
<div style="min-height:3000px"></div>
|
<div style="min-height:3000px"></div>
|
||||||
<div><a href="link2">link2</a></div>
|
<div><a href="link2">link2</a></div>
|
||||||
</body>
|
</body></html">`);
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
|
|
||||||
/* test case 3: link2 is out of window of the frame
|
/* test case 3: link2 is out of window of the frame
|
||||||
* +-----------------+
|
* +-----------------+
|
||||||
|
@ -101,51 +88,43 @@ const newApp = () => {
|
||||||
* | |
|
* | |
|
||||||
* +-----------------+
|
* +-----------------+
|
||||||
*/
|
*/
|
||||||
app.get('/test3', (_req, res) => {
|
server.receiveContent('/test3', `
|
||||||
res.send(`<!DOCTYPEhtml>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en"><body>
|
||||||
<body><iframe src='/test3-frame'></body>
|
<iframe src='/test3-frame'>
|
||||||
</html">`);
|
</body></html">`);
|
||||||
});
|
server.receiveContent('/test3-frame', `
|
||||||
app.get('/test3-frame', (_req, res) => {
|
<!DOCTYPE html>
|
||||||
res.send(`<!DOCTYPEhtml>
|
<html lang="en"><body>
|
||||||
<html lang="en">
|
|
||||||
<body>
|
|
||||||
<div><a href="link1">link1</a></div>
|
<div><a href="link1">link1</a></div>
|
||||||
<div style="min-height:3000px"></div>
|
<div style="min-height:3000px"></div>
|
||||||
<div><a href="link2">link2</a></div>
|
<div><a href="link2">link2</a></div>
|
||||||
</body>
|
</body></html">`);
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
|
|
||||||
return app;
|
return server;
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('follow test', () => {
|
describe('follow test', () => {
|
||||||
|
let server = newApp();
|
||||||
const port = 12321;
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
if (http) {
|
|
||||||
http.close();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(async() => {
|
afterEach(async() => {
|
||||||
|
@ -156,7 +135,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should focus an input by f', async () => {
|
it('should focus an input by f', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/follow-input`);
|
let page = await Page.navigateTo(webdriver, server.url('/follow-input'));
|
||||||
await page.sendKeys('f');
|
await page.sendKeys('f');
|
||||||
await page.waitAndGetHints();
|
await page.waitAndGetHints();
|
||||||
await page.sendKeys('a');
|
await page.sendKeys('a');
|
||||||
|
@ -166,7 +145,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should open a link by f', async () => {
|
it('should open a link by f', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys('f');
|
await page.sendKeys('f');
|
||||||
await page.waitAndGetHints();
|
await page.waitAndGetHints();
|
||||||
await page.sendKeys('a');
|
await page.sendKeys('a');
|
||||||
|
@ -178,7 +157,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should focus an input by F', async () => {
|
it('should focus an input by F', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/follow-input`);
|
let page = await Page.navigateTo(webdriver, server.url('/follow-input'));
|
||||||
await page.sendKeys(Key.SHIFT, 'f');
|
await page.sendKeys(Key.SHIFT, 'f');
|
||||||
await page.waitAndGetHints();
|
await page.waitAndGetHints();
|
||||||
await page.sendKeys('a');
|
await page.sendKeys('a');
|
||||||
|
@ -188,7 +167,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should open a link to new tab by F', async () => {
|
it('should open a link to new tab by F', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys(Key.SHIFT, 'f');
|
await page.sendKeys(Key.SHIFT, 'f');
|
||||||
await page.waitAndGetHints();
|
await page.waitAndGetHints();
|
||||||
await page.sendKeys('a');
|
await page.sendKeys('a');
|
||||||
|
@ -202,7 +181,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should show hints of links in area', async () => {
|
it('should show hints of links in area', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/area`);
|
let page = await Page.navigateTo(webdriver, server.url('/area'));
|
||||||
await page.sendKeys(Key.SHIFT, 'f');
|
await page.sendKeys(Key.SHIFT, 'f');
|
||||||
|
|
||||||
let hints = await page.waitAndGetHints();
|
let hints = await page.waitAndGetHints();
|
||||||
|
@ -210,7 +189,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should shows hints only in viewport', async () => {
|
it('should shows hints only in viewport', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/test1`);
|
let page = await Page.navigateTo(webdriver, server.url('/test1'));
|
||||||
await page.sendKeys(Key.SHIFT, 'f');
|
await page.sendKeys(Key.SHIFT, 'f');
|
||||||
|
|
||||||
let hints = await page.waitAndGetHints();
|
let hints = await page.waitAndGetHints();
|
||||||
|
@ -218,7 +197,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should shows hints only in window of the frame', async () => {
|
it('should shows hints only in window of the frame', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/test2`);
|
let page = await Page.navigateTo(webdriver, server.url('/test2'));
|
||||||
await page.sendKeys(Key.SHIFT, 'f');
|
await page.sendKeys(Key.SHIFT, 'f');
|
||||||
|
|
||||||
await webdriver.switchTo().frame(0);
|
await webdriver.switchTo().frame(0);
|
||||||
|
@ -227,7 +206,7 @@ describe('follow test', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should shows hints only in the frame', async () => {
|
it('should shows hints only in the frame', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/test3`);
|
let page = await Page.navigateTo(webdriver, server.url('/test3'));
|
||||||
await page.sendKeys(Key.SHIFT, 'f');
|
await page.sendKeys(Key.SHIFT, 'f');
|
||||||
|
|
||||||
await webdriver.switchTo().frame(0);
|
await webdriver.switchTo().frame(0);
|
||||||
|
|
|
@ -1,42 +1,29 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
describe('follow properties test', () => {
|
||||||
let app = express();
|
let server = new TestServer().receiveContent('/', `
|
||||||
|
<!DOCTYPE html>
|
||||||
app.get('/', (_req, res) => {
|
<html lang="en"><body>
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body>
|
|
||||||
<a href="/">link1</a>
|
<a href="/">link1</a>
|
||||||
<a href="/">link2</a>
|
<a href="/">link2</a>
|
||||||
<a href="/">link3</a>
|
<a href="/">link3</a>
|
||||||
<a href="/">link4</a>
|
<a href="/">link4</a>
|
||||||
<a href="/">link5</a>
|
<a href="/">link5</a>
|
||||||
</body>
|
</body></html">`);
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('follow properties test', () => {
|
|
||||||
const port = 12321;
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
let page: Page;
|
let page: Page;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
|
@ -62,17 +49,19 @@ describe('follow properties test', () => {
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
}});
|
}});
|
||||||
|
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
http.close();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
page = await Page.navigateTo(webdriver, server.url());
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(async() => {
|
afterEach(async() => {
|
||||||
|
|
|
@ -1,53 +1,40 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body style="width:10000px; height:10000px"></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("mark test", () => {
|
describe("mark test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/',
|
||||||
let http: http.Server;
|
`<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html">`,
|
||||||
|
);
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
|
|
||||||
|
await server.start()
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
if (http) {
|
|
||||||
http.close();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should set a local mark and jump to it', async () => {
|
it('should set a local mark and jump to it', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.scrollTo(200, 200);
|
await page.scrollTo(200, 200);
|
||||||
await page.sendKeys('m', 'a');
|
await page.sendKeys('m', 'a');
|
||||||
await page.scrollTo(500, 500);
|
await page.scrollTo(500, 500);
|
||||||
|
@ -60,7 +47,7 @@ describe("mark test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should set a global mark and jump to it', async () => {
|
it('should set a global mark and jump to it', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}#first`);
|
let page = await Page.navigateTo(webdriver, server.url('/#first'));
|
||||||
await page.scrollTo(200, 200);
|
await page.scrollTo(200, 200);
|
||||||
await page.sendKeys('m', 'A');
|
await page.sendKeys('m', 'A');
|
||||||
await page.scrollTo(500, 500);
|
await page.scrollTo(500, 500);
|
||||||
|
@ -71,7 +58,7 @@ describe("mark test", () => {
|
||||||
assert.equal(await page.getScrollY(), 200);
|
assert.equal(await page.getScrollY(), 200);
|
||||||
});
|
});
|
||||||
|
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}#second` });
|
await browser.tabs.create({ url: server.url('/#second') });
|
||||||
page = await Page.currentContext(webdriver);
|
page = await Page.currentContext(webdriver);
|
||||||
await page.sendKeys('\'', 'A');
|
await page.sendKeys('\'', 'A');
|
||||||
|
|
||||||
|
@ -86,12 +73,12 @@ describe("mark test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('set a global mark and creates new tab from gone', async () => {
|
it('set a global mark and creates new tab from gone', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}#first`);
|
let page = await Page.navigateTo(webdriver, server.url('/#first'));
|
||||||
await page.scrollTo(500, 500);
|
await page.scrollTo(500, 500);
|
||||||
await page.sendKeys('m', 'A');
|
await page.sendKeys('m', 'A');
|
||||||
|
|
||||||
let tab = (await browser.tabs.query({ active: true }))[0];
|
let tab = (await browser.tabs.query({ active: true }))[0];
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}#second` });
|
await browser.tabs.create({ url: server.url('/#second') });
|
||||||
await browser.tabs.remove(tab.id);
|
await browser.tabs.remove(tab.id);
|
||||||
|
|
||||||
let handles: string[];
|
let handles: string[];
|
||||||
|
@ -101,7 +88,7 @@ describe("mark test", () => {
|
||||||
});
|
});
|
||||||
await webdriver.switchTo().window(handles!![0]);
|
await webdriver.switchTo().window(handles!![0]);
|
||||||
|
|
||||||
page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}#second`);
|
page = await Page.navigateTo(webdriver, server.url('/#second'));
|
||||||
await page.sendKeys('\'', 'A');
|
await page.sendKeys('\'', 'A');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
|
@ -10,16 +9,19 @@ import { Options as FirefoxOptions } from 'selenium-webdriver/firefox';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
const newApp = () => {
|
||||||
let app = express();
|
let server = new TestServer();
|
||||||
app.get('/pagenation-a/:page', (req, res) => {
|
server.handle('/pagenation-a/:page', (req, res) => {
|
||||||
res.status(200).send(`
|
res.status(200).send(`
|
||||||
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<a href="/pagenation-a/${Number(req.params.page) - 1}">prev</a>
|
<a href="/pagenation-a/${Number(req.params.page) - 1}">prev</a>
|
||||||
<a href="/pagenation-a/${Number(req.params.page) + 1}">next</a>
|
<a href="/pagenation-a/${Number(req.params.page) + 1}">next</a>
|
||||||
</html">`);
|
</html">`);
|
||||||
});
|
});
|
||||||
app.get('/pagenation-link/:page', (req, res) => {
|
|
||||||
|
server.handle('/pagenation-link/:page', (req, res) => {
|
||||||
res.status(200).send(`
|
res.status(200).send(`
|
||||||
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<link rel="prev" href="/pagenation-link/${Number(req.params.page) - 1}"></link>
|
<link rel="prev" href="/pagenation-link/${Number(req.params.page) - 1}"></link>
|
||||||
|
@ -27,37 +29,31 @@ const newApp = () => {
|
||||||
</head>
|
</head>
|
||||||
</html">`);
|
</html">`);
|
||||||
});
|
});
|
||||||
app.get('/reload', (_req, res) => {
|
server.receiveContent('/reload', `
|
||||||
res.status(200).send(`
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<script>window.location.hash = Date.now()</script>
|
<script>window.location.hash = Date.now()</script>
|
||||||
</head>
|
</head>
|
||||||
<body style="width:10000px; height:10000px"></body>
|
<body style="width:10000px; height:10000px"></body>
|
||||||
</html">`);
|
</html">`);
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/*', (req, res) => {
|
server.receiveContent('/*', `ok`);
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
return server;
|
||||||
${req.path}
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
describe("navigate test", () => {
|
describe("navigate test", () => {
|
||||||
|
let server = newApp();
|
||||||
const port = 12321;
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
|
await server.start();
|
||||||
|
|
||||||
let opts = (new FirefoxOptions() as any)
|
let opts = (new FirefoxOptions() as any)
|
||||||
.setPreference('browser.startup.homepage', `http://127.0.0.1:${port}#home`);
|
.setPreference('browser.startup.homepage', server.url('/#home'));
|
||||||
http = newApp().listen(port);
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.setOptions(opts)
|
.setOptions(opts)
|
||||||
|
@ -68,10 +64,10 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
http.close();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
|
@ -82,7 +78,7 @@ describe("navigate test", () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should go to parent path without hash by gu', async () => {
|
it('should go to parent path without hash by gu', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/a/b/c`);
|
let page = await Page.navigateTo(webdriver, server.url('/a/b/c'));
|
||||||
await page.sendKeys('g', 'u');
|
await page.sendKeys('g', 'u');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -93,7 +89,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should remove hash by gu', async () => {
|
it('should remove hash by gu', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/a/b/c#hash`);
|
let page = await Page.navigateTo(webdriver, server.url('/a/b/c#hash'));
|
||||||
await page.sendKeys('g', 'u');
|
await page.sendKeys('g', 'u');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -105,7 +101,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go to root path by gU', async () => {
|
it('should go to root path by gU', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/a/b/c#hash`);
|
let page = await Page.navigateTo(webdriver, server.url('/a/b/c#hash'));
|
||||||
await page.sendKeys('g', Key.SHIFT, 'u');
|
await page.sendKeys('g', Key.SHIFT, 'u');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -116,8 +112,8 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go back and forward in history by H and L', async () => {
|
it('should go back and forward in history by H and L', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/first`);
|
let page = await Page.navigateTo(webdriver, server.url('/first'));
|
||||||
await page.navigateTo(`http://127.0.0.1:${port}/second`);
|
await page.navigateTo(server.url('/second'));
|
||||||
await page.sendKeys(Key.SHIFT, 'h');
|
await page.sendKeys(Key.SHIFT, 'h');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -137,7 +133,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go previous and next page in <a> by [[ and ]]', async () => {
|
it('should go previous and next page in <a> by [[ and ]]', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/pagenation-a/10`);
|
let page = await Page.navigateTo(webdriver, server.url('/pagenation-a/10'));
|
||||||
await page.sendKeys('[', '[');
|
await page.sendKeys('[', '[');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -148,7 +144,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go next page in <a> by ]]', async () => {
|
it('should go next page in <a> by ]]', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/pagenation-a/10`);
|
let page = await Page.navigateTo(webdriver, server.url('/pagenation-a/10'));
|
||||||
await page.sendKeys(']', ']');
|
await page.sendKeys(']', ']');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -159,7 +155,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go previous page in <link> by ]]', async () => {
|
it('should go previous page in <link> by ]]', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/pagenation-link/10`);
|
let page = await Page.navigateTo(webdriver, server.url('/pagenation-link/10'));
|
||||||
await page.sendKeys('[', '[');
|
await page.sendKeys('[', '[');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -170,7 +166,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go next page by in <link> by [[', async () => {
|
it('should go next page by in <link> by [[', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/pagenation-link/10`);
|
let page = await Page.navigateTo(webdriver, server.url('/pagenation-link/10'));
|
||||||
await page.sendKeys(']', ']');
|
await page.sendKeys(']', ']');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -181,7 +177,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go to home page into current tab by gh', async () => {
|
it('should go to home page into current tab by gh', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys('g', 'h');
|
await page.sendKeys('g', 'h');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -192,7 +188,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should go to home page into current tab by gH', async () => {
|
it('should go to home page into current tab by gH', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}`);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
await page.sendKeys('g', Key.SHIFT, 'H');
|
await page.sendKeys('g', Key.SHIFT, 'H');
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
|
@ -205,7 +201,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should reload current tab by r', async () => {
|
it('should reload current tab by r', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/reload`);
|
let page = await Page.navigateTo(webdriver, server.url('/reload'));
|
||||||
await page.scrollTo(500, 500);
|
await page.scrollTo(500, 500);
|
||||||
|
|
||||||
let before: number;
|
let before: number;
|
||||||
|
@ -231,7 +227,7 @@ describe("navigate test", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should reload current tab without cache by R', async () => {
|
it('should reload current tab without cache by R', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, `http://127.0.0.1:${port}/reload`);
|
let page = await Page.navigateTo(webdriver, server.url('/reload'));
|
||||||
await page.scrollTo(500, 500);
|
await page.scrollTo(500, 500);
|
||||||
|
|
||||||
let before: number;
|
let before: number;
|
||||||
|
|
|
@ -1,50 +1,37 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
import eventually from './eventually';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
import OptionPage from './lib/OptionPage';
|
import OptionPage from './lib/OptionPage';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body style="width:10000px; height:10000px"></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("options page", () => {
|
describe("options page", () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/',
|
||||||
let http: http.Server;
|
`<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html">`,
|
||||||
|
);
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
|
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
if (http) {
|
await server.stop();
|
||||||
http.close();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
|
@ -78,7 +65,7 @@ describe("options page", () => {
|
||||||
let jsonPage = await optionPage.asJSONOptionPage();
|
let jsonPage = await optionPage.asJSONOptionPage();
|
||||||
await jsonPage.updateSettings(`{ "keymaps": { "zz": { "type": "scroll.vertically", "count": 10 } } }`);
|
await jsonPage.updateSettings(`{ "keymaps": { "zz": { "type": "scroll.vertically", "count": 10 } } }`);
|
||||||
|
|
||||||
await browser.tabs.create({ url: `http://127.0.0.1:${port}`, active: false });
|
await browser.tabs.create({ url: server.url(), active: false });
|
||||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
let handles = await webdriver.getAllWindowHandles();
|
let handles = await webdriver.getAllWindowHandles();
|
||||||
await webdriver.switchTo().window(handles[1]);
|
await webdriver.switchTo().window(handles[1]);
|
||||||
|
|
|
@ -1,26 +1,14 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver } from 'selenium-webdriver';
|
import { WebDriver } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send('ok');
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("tab test", () => {
|
describe("tab test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/*', 'ok');
|
||||||
const url = `http://127.0.0.1:${port}/`;
|
|
||||||
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
@ -32,22 +20,20 @@ describe("tab test", () => {
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
http = newApp().listen(port);
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
if (http) {
|
await server.stop();
|
||||||
http.close();
|
|
||||||
}
|
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it('repeats last command', async () => {
|
it('repeats last command', async () => {
|
||||||
let page = await Page.navigateTo(webdriver, url);
|
let page = await Page.navigateTo(webdriver, server.url());
|
||||||
let console = await page.showConsole();
|
let console = await page.showConsole();
|
||||||
await console.execCommand(`tabopen ${url}newtab`);
|
await console.execCommand(`tabopen ${server.url('/newtab')}`);
|
||||||
|
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let current = await browser.tabs.query({ url: `*://*/newtab` });
|
let current = await browser.tabs.query({ url: `*://*/newtab` });
|
||||||
|
@ -65,7 +51,7 @@ describe("tab test", () => {
|
||||||
|
|
||||||
it('repeats last operation', async () => {
|
it('repeats last operation', async () => {
|
||||||
for (let i = 1; i < 5; ++i) {
|
for (let i = 1; i < 5; ++i) {
|
||||||
await browser.tabs.create({ url: `${url}#${i}` });
|
await browser.tabs.create({ url: server.url('/#' + i) });
|
||||||
}
|
}
|
||||||
let before = await browser.tabs.query({});
|
let before = await browser.tabs.query({});
|
||||||
|
|
||||||
|
|
|
@ -1,63 +1,49 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send(`<!DOCTYPEhtml>
|
|
||||||
<html lang="en">
|
|
||||||
<body style="width:10000px; height:10000px"></body>
|
|
||||||
</html">`);
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("scroll test", () => {
|
describe("scroll test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/',
|
||||||
let http: http.Server;
|
`<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`,
|
||||||
|
);
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let page: Page;
|
let page: Page;
|
||||||
|
|
||||||
before(async() => {
|
before(async() => {
|
||||||
http = newApp().listen(port);
|
|
||||||
|
|
||||||
lanthan = await Builder
|
lanthan = await Builder
|
||||||
.forBrowser('firefox')
|
.forBrowser('firefox')
|
||||||
.spyAddon(path.join(__dirname, '..'))
|
.spyAddon(path.join(__dirname, '..'))
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
|
await server.stop();
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
if (http) {
|
|
||||||
http.close();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
await webdriver.navigate().to(`http://127.0.0.1:${port}`);
|
await webdriver.navigate().to(server.url());
|
||||||
page = await Page.currentContext(webdriver);
|
page = await Page.currentContext(webdriver);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it('scrolls up by k', async () => {
|
it('scrolls up by j', async () => {
|
||||||
await page.sendKeys('j');
|
await page.sendKeys('j');
|
||||||
|
|
||||||
let scrollY = await page.getScrollY();
|
let scrollY = await page.getScrollY();
|
||||||
assert.equal(scrollY, 64);
|
assert.equal(scrollY, 64);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('scrolls down by j', async () => {
|
it('scrolls down by k', async () => {
|
||||||
await webdriver.executeScript(() => window.scrollTo(0, 200));
|
await webdriver.executeScript(() => window.scrollTo(0, 200));
|
||||||
await page.sendKeys('k');
|
await page.sendKeys('k');
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,14 @@
|
||||||
import express from 'express';
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import * as http from 'http';
|
|
||||||
|
|
||||||
|
import TestServer from './lib/TestServer';
|
||||||
import eventually from './eventually';
|
import eventually from './eventually';
|
||||||
import { Builder, Lanthan } from 'lanthan';
|
import { Builder, Lanthan } from 'lanthan';
|
||||||
import { WebDriver, Key } from 'selenium-webdriver';
|
import { WebDriver, Key } from 'selenium-webdriver';
|
||||||
import Page from './lib/Page';
|
import Page from './lib/Page';
|
||||||
|
|
||||||
const newApp = () => {
|
|
||||||
let app = express();
|
|
||||||
app.get('/', (_req, res) => {
|
|
||||||
res.send('ok');
|
|
||||||
});
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("tab test", () => {
|
describe("tab test", () => {
|
||||||
const port = 12321;
|
let server = new TestServer().receiveContent('/*', 'ok');
|
||||||
const url = `http://127.0.0.1:${port}/`;
|
|
||||||
|
|
||||||
let http: http.Server;
|
|
||||||
let lanthan: Lanthan;
|
let lanthan: Lanthan;
|
||||||
let webdriver: WebDriver;
|
let webdriver: WebDriver;
|
||||||
let browser: any;
|
let browser: any;
|
||||||
|
@ -34,23 +22,21 @@ describe("tab test", () => {
|
||||||
.build();
|
.build();
|
||||||
webdriver = lanthan.getWebDriver();
|
webdriver = lanthan.getWebDriver();
|
||||||
browser = lanthan.getWebExtBrowser();
|
browser = lanthan.getWebExtBrowser();
|
||||||
http = newApp().listen(port);
|
await server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(async() => {
|
after(async() => {
|
||||||
if (http) {
|
await server.stop();
|
||||||
http.close();
|
|
||||||
}
|
|
||||||
if (lanthan) {
|
if (lanthan) {
|
||||||
await lanthan.quit();
|
await lanthan.quit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async() => {
|
beforeEach(async() => {
|
||||||
win = await browser.windows.create({ url: `${url}#0` });
|
win = await browser.windows.create({ url: server.url('/#0') });
|
||||||
for (let i = 1; i < 5; ++i) {
|
for (let i = 1; i < 5; ++i) {
|
||||||
await browser.tabs.create({ url: `${url}#${i}`, windowId: win.id });
|
await browser.tabs.create({ url: server.url('/#' + i), windowId: win.id });
|
||||||
await webdriver.navigate().to(`${url}#${i}`);
|
await webdriver.navigate().to(server.url('/#' + i));
|
||||||
}
|
}
|
||||||
tabs = await browser.tabs.query({ windowId: win.id });
|
tabs = await browser.tabs.query({ windowId: win.id });
|
||||||
tabs.sort((t1: any, t2: any) => t1.index - t2.index);
|
tabs.sort((t1: any, t2: any) => t1.index - t2.index);
|
||||||
|
@ -219,7 +205,7 @@ describe("tab test", () => {
|
||||||
await eventually(async() => {
|
await eventually(async() => {
|
||||||
let current = await browser.tabs.query({ windowId: win.id });
|
let current = await browser.tabs.query({ windowId: win.id });
|
||||||
assert.ok(current.length === tabs.length + 1);
|
assert.ok(current.length === tabs.length + 1);
|
||||||
assert.ok(current[current.length - 1].url === `view-source:${url}#0`);
|
assert.ok(current[current.length - 1].url === `view-source:${server.url('/#0')}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Reference in a new issue