aboutsummaryrefslogtreecommitdiff
path: root/e2e
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2020-05-02 17:25:56 +0900
committerGitHub <noreply@github.com>2020-05-02 17:25:56 +0900
commit5df0537bcf65a341e79852b1b30379c73318529c (patch)
treeaee5efe52412855f620cb514a13a2c14373f27b7 /e2e
parent685f2b7b69218b06b5bb676069e35f79c5048c9b (diff)
parent75abd90ecb8201ad845b266f96220d8adfe19b2d (diff)
Merge pull request #749 from ueokande/qa-0.28
QA 0.28
Diffstat (limited to 'e2e')
-rw-r--r--e2e/blacklist.test.ts54
-rw-r--r--e2e/clipboard.test.ts108
-rw-r--r--e2e/command_addbookmark.test.ts47
-rw-r--r--e2e/command_bdelete.test.ts150
-rw-r--r--e2e/command_buffer.test.ts104
-rw-r--r--e2e/command_help.test.ts34
-rw-r--r--e2e/command_open.test.ts97
-rw-r--r--e2e/command_quit.test.ts67
-rw-r--r--e2e/command_tabopen.test.ts97
-rw-r--r--e2e/command_winopen.test.ts97
-rw-r--r--e2e/completion.test.ts75
-rw-r--r--e2e/completion_buffers.test.ts161
-rw-r--r--e2e/completion_open.test.ts177
-rw-r--r--e2e/completion_set.test.ts47
-rw-r--r--e2e/console.test.ts75
-rw-r--r--e2e/eventually.ts12
-rw-r--r--e2e/find.test.ts64
-rw-r--r--e2e/follow.test.ts203
-rw-r--r--e2e/follow_properties.test.ts112
-rw-r--r--e2e/lib/Console.ts49
-rw-r--r--e2e/lib/FormOptionPage.ts114
-rw-r--r--e2e/lib/JSONOptionPage.ts20
-rw-r--r--e2e/lib/OptionPage.ts16
-rw-r--r--e2e/lib/Page.ts63
-rw-r--r--e2e/lib/SettingRepository.ts13
-rw-r--r--e2e/lib/TestServer.ts31
-rw-r--r--e2e/lib/clipboard.ts73
-rw-r--r--e2e/mark.test.ts76
-rw-r--r--e2e/navigate.test.ts206
-rw-r--r--e2e/options.test.ts66
-rw-r--r--e2e/options_form.test.ts107
-rw-r--r--e2e/partial_blacklist.test.ts58
-rw-r--r--e2e/repeat.test.ts49
-rw-r--r--e2e/repeat_n_times.test.ts47
-rw-r--r--e2e/scroll.test.ts93
-rw-r--r--e2e/tab.test.ts127
-rw-r--r--e2e/zoom.test.ts44
37 files changed, 1630 insertions, 1403 deletions
diff --git a/e2e/blacklist.test.ts b/e2e/blacklist.test.ts
index 79cdb47..db82726 100644
--- a/e2e/blacklist.test.ts
+++ b/e2e/blacklist.test.ts
@@ -1,57 +1,59 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
import SettingRepository from "./lib/SettingRepository";
import Settings from "../src/shared/settings/Settings";
describe("blacklist test", () => {
- const server = new TestServer().receiveContent('/*',
- `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`,
+ const server = new TestServer().receiveContent(
+ "/*",
+ `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
- const url = server.url('/a').replace('http://', '');
- await new SettingRepository(browser).saveJSON(Settings.fromJSON({
- keymaps: {
- j: { type: "scroll.vertically", count: 1 },
- },
- blacklist: [ url ],
- }));
+ const url = server.url("/a").replace("http://", "");
+ await new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ keymaps: {
+ j: { type: "scroll.vertically", count: 1 },
+ },
+ blacklist: [url],
+ })
+ );
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- it('should disable add-on if the URL is in the blacklist', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/a'));
- await page.sendKeys('j');
+ it("should disable add-on if the URL is in the blacklist", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/a"));
+ await page.sendKeys("j");
const scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 0);
});
- it('should enabled add-on if the URL is not in the blacklist', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/ab'));
- await page.sendKeys('j');
+ it("should enabled add-on if the URL is not in the blacklist", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/ab"));
+ await page.sendKeys("j");
const scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 64);
diff --git a/e2e/clipboard.test.ts b/e2e/clipboard.test.ts
index 0a09c77..63a20a8 100644
--- a/e2e/clipboard.test.ts
+++ b/e2e/clipboard.test.ts
@@ -1,116 +1,120 @@
-import * as assert from 'assert';
-import * as path from 'path';
-
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import * as clipboard from './lib/clipboard';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import Page from './lib/Page';
+import * as assert from "assert";
+import * as path from "path";
+
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import * as clipboard from "./lib/clipboard";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import Page from "./lib/Page";
import SettingRepository from "./lib/SettingRepository";
import Settings from "../src/shared/settings/Settings";
describe("clipboard test", () => {
- const server = new TestServer(12321).receiveContent('/happy', 'ok');
+ const server = new TestServer(12321).receiveContent("/happy", "ok");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
- await new SettingRepository(browser).saveJSON(Settings.fromJSON({
- search: {
- default: "google",
- engines: {
- "google": "http://127.0.0.1:12321/google?q={}",
+ await new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ search: {
+ default: "google",
+ engines: {
+ google: "http://127.0.0.1:12321/google?q={}",
+ },
},
- },
- }));
+ })
+ );
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
});
- it('should copy current URL by y', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/#should_copy_url'));
- await page.sendKeys('y');
+ it("should copy current URL by y", async () => {
+ const page = await Page.navigateTo(
+ webdriver,
+ server.url("/#should_copy_url")
+ );
+ await page.sendKeys("y");
- await eventually(async() => {
+ await eventually(async () => {
const data = await clipboard.read();
- assert.strictEqual(data, server.url('/#should_copy_url'));
+ assert.strictEqual(data, server.url("/#should_copy_url"));
});
});
- it('should open an URL from clipboard by p', async () => {
- await clipboard.write(server.url('/#open_from_clipboard'));
+ it("should open an URL from clipboard by p", async () => {
+ await clipboard.write(server.url("/#open_from_clipboard"));
const page = await Page.navigateTo(webdriver, server.url());
- await page.sendKeys('p');
+ await page.sendKeys("p");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
- assert.strictEqual(tabs[0].url, server.url('/#open_from_clipboard'));
+ assert.strictEqual(tabs[0].url, server.url("/#open_from_clipboard"));
});
});
- it('should open an URL from clipboard to new tab by P', async () => {
- await clipboard.write(server.url('/#open_to_new_tab'));
+ it("should open an URL from clipboard to new tab by P", async () => {
+ await clipboard.write(server.url("/#open_to_new_tab"));
const 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 () => {
const tabs = await browser.tabs.query({});
- assert.deepStrictEqual(tabs.map((t: any) => t.url), [
- server.url(),
- server.url('/#open_to_new_tab'),
- ]);
+ assert.deepStrictEqual(
+ tabs.map((t: any) => t.url),
+ [server.url(), server.url("/#open_to_new_tab")]
+ );
});
});
- 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`);
const 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 () => {
const tabs = await browser.tabs.query({ active: true });
- assert.strictEqual(tabs[0].url, server.url('/google?q=an%20apple'));
+ assert.strictEqual(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`);
const 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 () => {
const tabs = await browser.tabs.query({});
- assert.deepStrictEqual(tabs.map((t: any) => t.url), [
- server.url(),
- server.url('/google?q=an%20apple'),
- ]);
+ assert.deepStrictEqual(
+ tabs.map((t: any) => t.url),
+ [server.url(), server.url("/google?q=an%20apple")]
+ );
});
});
});
diff --git a/e2e/command_addbookmark.test.ts b/e2e/command_addbookmark.test.ts
index a54c103..4142e68 100644
--- a/e2e/command_addbookmark.test.ts
+++ b/e2e/command_addbookmark.test.ts
@@ -1,51 +1,54 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
-describe('addbookmark command test', () => {
- const server = new TestServer().receiveContent('/happy', `
+describe("addbookmark command test", () => {
+ const server = new TestServer().receiveContent(
+ "/happy",
+ `
<!DOCTYPE html>
- <html lang="en"><head><title>how to be happy</title></head></html>`,
+ <html lang="en"><head><title>how to be happy</title></head></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
- await webdriver.navigate().to(server.url('/happy'));
+ beforeEach(async () => {
+ 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 () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('addbookmark how to be happy');
+ await console.execCommand("addbookmark how to be happy");
- await eventually(async() => {
- const bookmarks = await browser.bookmarks.search({ title: 'how to be happy' });
+ await eventually(async () => {
+ const bookmarks = await browser.bookmarks.search({
+ title: "how to be happy",
+ });
assert.strictEqual(bookmarks.length, 1);
- assert.strictEqual(bookmarks[0].url, server.url('/happy'));
+ assert.strictEqual(bookmarks[0].url, server.url("/happy"));
});
});
});
diff --git a/e2e/command_bdelete.test.ts b/e2e/command_bdelete.test.ts
index c1f27ae..a85ce50 100644
--- a/e2e/command_bdelete.test.ts
+++ b/e2e/command_bdelete.test.ts
@@ -1,155 +1,165 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
-describe('bdelete/bdeletes command test', () => {
- const server = new TestServer().receiveContent('/*', 'ok');
+describe("bdelete/bdeletes command test", () => {
+ const server = new TestServer().receiveContent("/*", "ok");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
- await browser.tabs.update(tabs[0].id, { url: server.url('/site1'), pinned: true });
- await browser.tabs.create({ url: server.url('/site2'), pinned: true });
- await browser.tabs.create({ url: server.url('/site3'), pinned: true });
- await browser.tabs.create({ url: server.url('/site4'), });
- await browser.tabs.create({ url: server.url('/site5'), });
+ await browser.tabs.update(tabs[0].id, {
+ url: server.url("/site1"),
+ pinned: true,
+ });
+ await browser.tabs.create({ url: server.url("/site2"), pinned: true });
+ await browser.tabs.create({ url: server.url("/site3"), pinned: true });
+ await browser.tabs.create({ url: server.url("/site4") });
+ await browser.tabs.create({ url: server.url("/site5") });
- await eventually(async() => {
+ await eventually(async () => {
const handles = await webdriver.getAllWindowHandles();
assert.strictEqual(handles.length, 5);
await webdriver.switchTo().window(handles[2]);
});
});
- it('should delete an unpinned tab by bdelete command', async() => {
+ it("should delete an unpinned tab by bdelete command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdelete site5');
+ await console.execCommand("bdelete site5");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.deepStrictEqual(tabs.map((t: any) => t.url), [
- server.url('/site1'),
- server.url('/site2'),
- server.url('/site3'),
- server.url('/site4'),
- ])
+ assert.deepStrictEqual(
+ tabs.map((t: any) => t.url),
+ [
+ server.url("/site1"),
+ server.url("/site2"),
+ server.url("/site3"),
+ server.url("/site4"),
+ ]
+ );
});
});
- it('should not delete an pinned tab by bdelete command by bdelete command', async() => {
+ it("should not delete an pinned tab by bdelete command by bdelete command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdelete site1');
+ await console.execCommand("bdelete site1");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 5);
});
});
- it('should show an error when no tabs are matched by bdelete command', async() => {
+ it("should show an error when no tabs are matched by bdelete command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdelete xyz');
+ await console.execCommand("bdelete xyz");
- await eventually(async() => {
+ await eventually(async () => {
const text = await console.getErrorMessage();
- assert.strictEqual(text, 'No matching buffer for xyz');
+ assert.strictEqual(text, "No matching buffer for xyz");
});
});
- it('should show an error when more than one tabs are matched by bdelete command', async() => {
+ it("should show an error when more than one tabs are matched by bdelete command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdelete site');
+ await console.execCommand("bdelete site");
- await eventually(async() => {
+ await eventually(async () => {
const text = await console.getErrorMessage();
- assert.strictEqual(text, 'More than one match for site');
+ assert.strictEqual(text, "More than one match for site");
});
});
- it('should delete an unpinned tab by bdelete! command', async() => {
+ it("should delete an unpinned tab by bdelete! command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdelete! site5');
+ await console.execCommand("bdelete! site5");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.deepStrictEqual(tabs.map((t: any) => t.url), [
- server.url('/site1'),
- server.url('/site2'),
- server.url('/site3'),
- server.url('/site4'),
- ])
+ assert.deepStrictEqual(
+ tabs.map((t: any) => t.url),
+ [
+ server.url("/site1"),
+ server.url("/site2"),
+ server.url("/site3"),
+ server.url("/site4"),
+ ]
+ );
});
});
- it('should delete an pinned tab by bdelete! command', async() => {
+ it("should delete an pinned tab by bdelete! command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdelete! site1');
+ await console.execCommand("bdelete! site1");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.deepStrictEqual(tabs.map((t: any) => t.url), [
- server.url('/site2'),
- server.url('/site3'),
- server.url('/site4'),
- server.url('/site5'),
- ])
+ assert.deepStrictEqual(
+ tabs.map((t: any) => t.url),
+ [
+ server.url("/site2"),
+ server.url("/site3"),
+ server.url("/site4"),
+ server.url("/site5"),
+ ]
+ );
});
});
- it('should delete unpinned tabs by bdeletes command', async() => {
+ it("should delete unpinned tabs by bdeletes command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdeletes site');
+ await console.execCommand("bdeletes site");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.deepStrictEqual(tabs.map((t: any) => t.url), [
- server.url('/site1'),
- server.url('/site2'),
- server.url('/site3'),
- ])
+ assert.deepStrictEqual(
+ tabs.map((t: any) => t.url),
+ [server.url("/site1"), server.url("/site2"), server.url("/site3")]
+ );
});
});
- it('should delete both pinned and unpinned tabs by bdeletes! command', async() => {
+ it("should delete both pinned and unpinned tabs by bdeletes! command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('bdeletes! site');
+ await console.execCommand("bdeletes! site");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 1);
});
diff --git a/e2e/command_buffer.test.ts b/e2e/command_buffer.test.ts
index 3fa67ba..114f4b4 100644
--- a/e2e/command_buffer.test.ts
+++ b/e2e/command_buffer.test.ts
@@ -1,160 +1,162 @@
-import * as path from 'path';
-import * as assert from 'assert';
-import { Request, Response } from 'express';
-
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
-
-describe('buffer command test', () => {
- const server = new TestServer().handle('/*', (req: Request, res: Response) => {
- res.send(`
+import * as path from "path";
+import * as assert from "assert";
+import { Request, Response } from "express";
+
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
+
+describe("buffer command test", () => {
+ const server = new TestServer().handle(
+ "/*",
+ (req: Request, res: Response) => {
+ res.send(`
<!DOCTYPE html>
<html lang="en">
<head>
<title>my_${req.path.slice(1)}</title>
</head>
</html>`);
- });
+ }
+ );
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
- await browser.tabs.update(tabs[0].id, { url: server.url('/site1') });
+ await browser.tabs.update(tabs[0].id, { url: server.url("/site1") });
for (let i = 2; i <= 5; ++i) {
- await browser.tabs.create({ url: server.url('/site' + i) });
+ await browser.tabs.create({ url: server.url("/site" + i) });
}
- await eventually(async() => {
+ await eventually(async () => {
const handles = await webdriver.getAllWindowHandles();
assert.strictEqual(handles.length, 5);
await webdriver.switchTo().window(handles[2]);
});
});
- it('should do nothing by buffer command with no parameters', async() => {
+ it("should do nothing by buffer command with no parameters", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('buffer');
+ await console.execCommand("buffer");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
assert.strictEqual(tabs[0].index, 2);
});
});
- it('should select a tab by buffer command with a number', async() => {
+ it("should select a tab by buffer command with a number", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('buffer 1');
+ await console.execCommand("buffer 1");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
assert.strictEqual(tabs[0].index, 0);
});
});
- it('should should an out of range error by buffer commands', async() => {
+ it("should should an out of range error by buffer commands", async () => {
const page = await Page.currentContext(webdriver);
let console = await page.showConsole();
- await console.execCommand('buffer 0');
+ await console.execCommand("buffer 0");
- await eventually(async() => {
+ await eventually(async () => {
const text = await console.getErrorMessage();
- assert.strictEqual(text, 'tab 0 does not exist');
+ assert.strictEqual(text, "tab 0 does not exist");
});
await (webdriver.switchTo() as any).parentFrame();
console = await page.showConsole();
- await console.execCommand('buffer 9');
+ await console.execCommand("buffer 9");
- await eventually(async() => {
+ await eventually(async () => {
const text = await console.getErrorMessage();
- assert.strictEqual(text, 'tab 9 does not exist');
+ assert.strictEqual(text, "tab 9 does not exist");
});
});
- it('should select a tab by buffer command with a title', async() => {
+ it("should select a tab by buffer command with a title", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('buffer my_site1');
+ await console.execCommand("buffer my_site1");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
assert.strictEqual(tabs[0].index, 0);
});
});
- it('should select a tab by buffer command with an URL', async() => {
+ it("should select a tab by buffer command with an URL", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('buffer /site1');
+ await console.execCommand("buffer /site1");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
assert.strictEqual(tabs[0].index, 0);
});
});
- it('should select tabs rotately', async() => {
+ it("should select tabs rotately", async () => {
const handles = await webdriver.getAllWindowHandles();
await webdriver.switchTo().window(handles[4]);
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('buffer site');
+ await console.execCommand("buffer site");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
assert.strictEqual(tabs[0].index, 0);
});
});
- it('should do nothing by ":buffer %"', async() => {
+ it('should do nothing by ":buffer %"', async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('buffer %');
+ await console.execCommand("buffer %");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
assert.strictEqual(tabs[0].index, 2);
});
});
- it('should selects last selected tab by ":buffer #"', async() => {
+ it('should selects last selected tab by ":buffer #"', async () => {
const handles = await webdriver.getAllWindowHandles();
await webdriver.switchTo().window(handles[1]);
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('buffer #');
+ await console.execCommand("buffer #");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
assert.strictEqual(tabs[0].index, 2);
});
diff --git a/e2e/command_help.test.ts b/e2e/command_help.test.ts
index 9f8a459..40d4dde 100644
--- a/e2e/command_help.test.ts
+++ b/e2e/command_help.test.ts
@@ -1,11 +1,11 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("help command test", () => {
const server = new TestServer();
@@ -14,10 +14,9 @@ describe("help command test", () => {
let browser: any;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
@@ -25,25 +24,24 @@ describe("help command test", () => {
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
page = await Page.navigateTo(webdriver, server.url());
});
- it('should open help page by help command ', async() => {
+ it("should open help page by help command ", async () => {
const console = await page.showConsole();
- await console.execCommand('help');
+ await console.execCommand("help");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
- assert.strictEqual(tabs[0].url, 'https://ueokande.github.io/vim-vixen/')
+ assert.strictEqual(tabs[0].url, "https://ueokande.github.io/vim-vixen/");
});
});
});
-
diff --git a/e2e/command_open.test.ts b/e2e/command_open.test.ts
index f4d2aa1..2db522a 100644
--- a/e2e/command_open.test.ts
+++ b/e2e/command_open.test.ts
@@ -1,118 +1,119 @@
-import * as path from 'path';
-import * as assert from 'assert';
-
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import * as path from "path";
+import * as assert from "assert";
+
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
import SettingRepository from "./lib/SettingRepository";
import Settings from "../src/shared/settings/Settings";
describe("open command test", () => {
const server = new TestServer()
- .receiveContent('/google', 'google')
- .receiveContent('/yahoo', 'yahoo');
+ .receiveContent("/google", "google")
+ .receiveContent("/yahoo", "yahoo");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
- await new SettingRepository(browser).saveJSON(Settings.fromJSON({
- search: {
- default: "google",
- engines: {
- "google": server.url('/google?q={}'),
- "yahoo": server.url('/yahoo?q={}'),
+ await new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ search: {
+ default: "google",
+ engines: {
+ google: server.url("/google?q={}"),
+ yahoo: server.url("/yahoo?q={}"),
+ },
},
- },
- }));
+ })
+ );
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
await webdriver.switchTo().defaultContent();
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 () => {
const console = await page.showConsole();
- await console.execCommand('open an apple');
+ await console.execCommand("open an apple");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/google?q=an%20apple'))
+ assert.strictEqual(url.href, server.url("/google?q=an%20apple"));
});
});
- it('should open certain search page for keywords by open command ', async() => {
+ it("should open certain search page for keywords by open command ", async () => {
const console = await page.showConsole();
- await console.execCommand('open yahoo an apple');
+ await console.execCommand("open yahoo an apple");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/yahoo?q=an%20apple'))
+ assert.strictEqual(url.href, server.url("/yahoo?q=an%20apple"));
});
});
- it('should open default engine with empty keywords by open command ', async() => {
+ it("should open default engine with empty keywords by open command ", async () => {
const console = await page.showConsole();
- await console.execCommand('open');
+ await console.execCommand("open");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/google?q='))
+ assert.strictEqual(url.href, server.url("/google?q="));
});
});
- it('should open certain search page for empty keywords by open command ', async() => {
+ it("should open certain search page for empty keywords by open command ", async () => {
const console = await page.showConsole();
- await console.execCommand('open yahoo');
+ await console.execCommand("open yahoo");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/yahoo?q='))
+ assert.strictEqual(url.href, server.url("/yahoo?q="));
});
});
- it('should open a site with domain by open command ', async() => {
+ it("should open a site with domain by open command ", async () => {
const console = await page.showConsole();
- await console.execCommand('open example.com');
+ await console.execCommand("open example.com");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, 'http://example.com/')
+ assert.strictEqual(url.href, "http://example.com/");
});
});
- it('should open a site with URL by open command ', async() => {
+ it("should open a site with URL by open command ", async () => {
const console = await page.showConsole();
- await console.execCommand('open https://example.com/');
+ await console.execCommand("open https://example.com/");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({ active: true });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, 'https://example.com/')
+ assert.strictEqual(url.href, "https://example.com/");
});
});
});
diff --git a/e2e/command_quit.test.ts b/e2e/command_quit.test.ts
index 037ad09..d59abfc 100644
--- a/e2e/command_quit.test.ts
+++ b/e2e/command_quit.test.ts
@@ -1,93 +1,92 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
-describe('quit/quitall command test', () => {
- const server = new TestServer().receiveContent('/*', 'ok');
+describe("quit/quitall command test", () => {
+ const server = new TestServer().receiveContent("/*", "ok");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
- await browser.tabs.update(tabs[0].id, { url: server.url('/site1') });
+ await browser.tabs.update(tabs[0].id, { url: server.url("/site1") });
for (let i = 2; i <= 5; ++i) {
- await browser.tabs.create({ url: server.url('/site' + i) })
+ await browser.tabs.create({ url: server.url("/site" + i) });
}
- await eventually(async() => {
+ await eventually(async () => {
const handles = await webdriver.getAllWindowHandles();
assert.strictEqual(handles.length, 5);
await webdriver.switchTo().window(handles[2]);
});
});
- it('should current tab by q command', async() => {
+ it("should current tab by q command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('q');
+ await console.execCommand("q");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.strictEqual(tabs.length, 4)
+ assert.strictEqual(tabs.length, 4);
});
});
- it('should current tab by quit command', async() => {
+ it("should current tab by quit command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('quit');
+ await console.execCommand("quit");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.strictEqual(tabs.length, 4)
+ assert.strictEqual(tabs.length, 4);
});
});
- it('should current tab by qa command', async() => {
+ it("should current tab by qa command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('qa');
+ await console.execCommand("qa");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.strictEqual(tabs.length, 1)
+ assert.strictEqual(tabs.length, 1);
});
});
- it('should current tab by quitall command', async() => {
+ it("should current tab by quitall command", async () => {
const page = await Page.currentContext(webdriver);
const console = await page.showConsole();
- await console.execCommand('quitall');
+ await console.execCommand("quitall");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
- assert.strictEqual(tabs.length, 1)
+ assert.strictEqual(tabs.length, 1);
});
});
});
diff --git a/e2e/command_tabopen.test.ts b/e2e/command_tabopen.test.ts
index e96c29e..9807a03 100644
--- a/e2e/command_tabopen.test.ts
+++ b/e2e/command_tabopen.test.ts
@@ -1,51 +1,52 @@
-import * as path from 'path';
-import * as assert from 'assert';
-
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import * as path from "path";
+import * as assert from "assert";
+
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
import SettingRepository from "./lib/SettingRepository";
import Settings from "../src/shared/settings/Settings";
describe("tabopen command test", () => {
const server = new TestServer()
- .receiveContent('/google', 'google')
- .receiveContent('/yahoo', 'yahoo');
+ .receiveContent("/google", "google")
+ .receiveContent("/yahoo", "yahoo");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
- await new SettingRepository(browser).saveJSON(Settings.fromJSON({
- search: {
- default: "google",
- engines: {
- "google": server.url('/google?q={}'),
- "yahoo": server.url('/yahoo?q={}'),
+ await new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ search: {
+ default: "google",
+ engines: {
+ google: server.url("/google?q={}"),
+ yahoo: server.url("/yahoo?q={}"),
+ },
},
- },
- }));
+ })
+ );
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
@@ -54,75 +55,75 @@ describe("tabopen command test", () => {
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 () => {
const console = await page.showConsole();
- await console.execCommand('tabopen an apple');
+ await console.execCommand("tabopen an apple");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
const url = new URL(tabs[1].url);
- assert.strictEqual(url.href, server.url('/google?q=an%20apple') )
+ assert.strictEqual(url.href, server.url("/google?q=an%20apple"));
});
});
- it('should open certain search page for keywords by tabopen command ', async() => {
+ it("should open certain search page for keywords by tabopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('tabopen yahoo an apple');
+ await console.execCommand("tabopen yahoo an apple");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
const url = new URL(tabs[1].url);
- assert.strictEqual(url.href, server.url('/yahoo?q=an%20apple'))
+ assert.strictEqual(url.href, server.url("/yahoo?q=an%20apple"));
});
});
- it('should open default engine with empty keywords by tabopen command ', async() => {
+ it("should open default engine with empty keywords by tabopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('tabopen');
+ await console.execCommand("tabopen");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
const url = new URL(tabs[1].url);
- assert.strictEqual(url.href, server.url('/google?q='))
+ assert.strictEqual(url.href, server.url("/google?q="));
});
});
- it('should open certain search page for empty keywords by tabopen command ', async() => {
+ it("should open certain search page for empty keywords by tabopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('tabopen yahoo');
+ await console.execCommand("tabopen yahoo");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
const url = new URL(tabs[1].url);
- assert.strictEqual(url.href, server.url('/yahoo?q='))
+ assert.strictEqual(url.href, server.url("/yahoo?q="));
});
});
- it('should open a site with domain by tabopen command ', async() => {
+ it("should open a site with domain by tabopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('tabopen example.com');
+ await console.execCommand("tabopen example.com");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
const url = new URL(tabs[1].url);
- assert.strictEqual(url.href, 'http://example.com/')
+ assert.strictEqual(url.href, "http://example.com/");
});
});
- it('should open a site with URL by tabopen command ', async() => {
+ it("should open a site with URL by tabopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('tabopen https://example.com/');
+ await console.execCommand("tabopen https://example.com/");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
const url = new URL(tabs[1].url);
- assert.strictEqual(url.href, 'https://example.com/')
+ assert.strictEqual(url.href, "https://example.com/");
});
});
});
diff --git a/e2e/command_winopen.test.ts b/e2e/command_winopen.test.ts
index c9ff8d2..1d13edd 100644
--- a/e2e/command_winopen.test.ts
+++ b/e2e/command_winopen.test.ts
@@ -1,51 +1,52 @@
-import * as path from 'path';
-import * as assert from 'assert';
-
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import * as path from "path";
+import * as assert from "assert";
+
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
import SettingRepository from "./lib/SettingRepository";
import Settings from "../src/shared/settings/Settings";
describe("winopen command test", () => {
const server = new TestServer()
- .receiveContent('/google', 'google')
- .receiveContent('/yahoo', 'yahoo');
+ .receiveContent("/google", "google")
+ .receiveContent("/yahoo", "yahoo");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
- await new SettingRepository(browser).saveJSON(Settings.fromJSON({
- search: {
- default: "google",
- engines: {
- "google": server.url('/google?q={}'),
- "yahoo": server.url('/yahoo?q={}'),
+ await new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ search: {
+ default: "google",
+ engines: {
+ google: server.url("/google?q={}"),
+ yahoo: server.url("/yahoo?q={}"),
+ },
},
- },
- }));
+ })
+ );
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const wins = await browser.windows.getAll();
for (const win of wins.slice(1)) {
await browser.windows.remove(win.id);
@@ -54,87 +55,87 @@ describe("winopen command test", () => {
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 () => {
const console = await page.showConsole();
- await console.execCommand('winopen an apple');
+ await console.execCommand("winopen an apple");
- await eventually(async() => {
+ await eventually(async () => {
const wins = await browser.windows.getAll();
assert.strictEqual(wins.length, 2);
const tabs = await browser.tabs.query({ windowId: wins[1].id });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/google?q=an%20apple'))
+ assert.strictEqual(url.href, server.url("/google?q=an%20apple"));
});
});
- it('should open certain search page for keywords by winopen command ', async() => {
+ it("should open certain search page for keywords by winopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('winopen yahoo an apple');
+ await console.execCommand("winopen yahoo an apple");
- await eventually(async() => {
+ await eventually(async () => {
const wins = await browser.windows.getAll();
assert.strictEqual(wins.length, 2);
const tabs = await browser.tabs.query({ windowId: wins[1].id });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/yahoo?q=an%20apple'))
+ assert.strictEqual(url.href, server.url("/yahoo?q=an%20apple"));
});
});
- it('should open default engine with empty keywords by winopen command ', async() => {
+ it("should open default engine with empty keywords by winopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('winopen');
+ await console.execCommand("winopen");
- await eventually(async() => {
+ await eventually(async () => {
const wins = await browser.windows.getAll();
assert.strictEqual(wins.length, 2);
const tabs = await browser.tabs.query({ windowId: wins[1].id });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/google?q='))
+ assert.strictEqual(url.href, server.url("/google?q="));
});
});
- it('should open certain search page for empty keywords by winopen command ', async() => {
+ it("should open certain search page for empty keywords by winopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('winopen yahoo');
+ await console.execCommand("winopen yahoo");
- await eventually(async() => {
+ await eventually(async () => {
const wins = await browser.windows.getAll();
assert.strictEqual(wins.length, 2);
const tabs = await browser.tabs.query({ windowId: wins[1].id });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, server.url('/yahoo?q='))
+ assert.strictEqual(url.href, server.url("/yahoo?q="));
});
});
- it('should open a site with domain by winopen command ', async() => {
+ it("should open a site with domain by winopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('winopen example.com');
+ await console.execCommand("winopen example.com");
- await eventually(async() => {
+ await eventually(async () => {
const wins = await browser.windows.getAll();
assert.strictEqual(wins.length, 2);
const tabs = await browser.tabs.query({ windowId: wins[1].id });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, 'http://example.com/')
+ assert.strictEqual(url.href, "http://example.com/");
});
});
- it('should open a site with URL by winopen command ', async() => {
+ it("should open a site with URL by winopen command ", async () => {
const console = await page.showConsole();
- await console.execCommand('winopen https://example.com/');
+ await console.execCommand("winopen https://example.com/");
- await eventually(async() => {
+ await eventually(async () => {
const wins = await browser.windows.getAll();
assert.strictEqual(wins.length, 2);
const tabs = await browser.tabs.query({ windowId: wins[1].id });
const url = new URL(tabs[0].url);
- assert.strictEqual(url.href, 'https://example.com/')
+ assert.strictEqual(url.href, "https://example.com/");
});
});
});
diff --git a/e2e/completion.test.ts b/e2e/completion.test.ts
index 1ce430e..bc065d3 100644
--- a/e2e/completion.test.ts
+++ b/e2e/completion.test.ts
@@ -1,93 +1,98 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import Page from './lib/Page';
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("general completion test", () => {
let lanthan: Lanthan;
let webdriver: WebDriver;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
});
- after(async() => {
+ after(async () => {
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
- page = await Page.navigateTo(webdriver, 'about:blank');
+ beforeEach(async () => {
+ page = await Page.navigateTo(webdriver, "about:blank");
});
- it('should all commands on empty line', async() => {
+ it("should all commands on empty line", async () => {
const console = await page.showConsole();
const items = await console.getCompletions();
assert.strictEqual(items.length, 12);
- assert.deepStrictEqual(items[0], { type: 'title', text: 'Console Command' });
- assert.ok(items[1].text.startsWith('set'));
- assert.ok(items[2].text.startsWith('open'));
- assert.ok(items[3].text.startsWith('tabopen'))
+ assert.deepStrictEqual(items[0], {
+ type: "title",
+ text: "Console Command",
+ });
+ assert.ok(items[1].text.startsWith("set"));
+ assert.ok(items[2].text.startsWith("open"));
+ assert.ok(items[3].text.startsWith("tabopen"));
});
- it('should only commands filtered by prefix', async() => {
+ it("should only commands filtered by prefix", async () => {
const console = await page.showConsole();
- await console.inputKeys('b');
+ await console.inputKeys("b");
const items = await console.getCompletions();
assert.strictEqual(items.length, 4);
- assert.deepStrictEqual(items[0], { type: 'title', text: 'Console Command' });
- assert.ok(items[1].text.startsWith('buffer'));
- assert.ok(items[2].text.startsWith('bdelete'));
- assert.ok(items[3].text.startsWith('bdeletes'))
+ assert.deepStrictEqual(items[0], {
+ type: "title",
+ text: "Console Command",
+ });
+ assert.ok(items[1].text.startsWith("buffer"));
+ assert.ok(items[2].text.startsWith("bdelete"));
+ assert.ok(items[3].text.startsWith("bdeletes"));
});
// > byffer
// > bdelete
// > bdeletes
// : b
- it('selects completion items by <Tab>/<S-Tab> keys', async() => {
+ it("selects completion items by <Tab>/<S-Tab> keys", async () => {
const console = await page.showConsole();
- await console.inputKeys('b');
- await eventually(async() => {
+ await console.inputKeys("b");
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 4);
});
await console.sendKeys(Key.TAB);
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.ok(items[1].highlight);
- assert.strictEqual(await console.currentValue(), 'buffer');
+ assert.strictEqual(await console.currentValue(), "buffer");
});
await console.sendKeys(Key.TAB, Key.TAB);
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.ok(items[3].highlight);
- assert.strictEqual(await console.currentValue(), 'bdeletes');
+ assert.strictEqual(await console.currentValue(), "bdeletes");
});
await console.sendKeys(Key.TAB);
- await eventually(async() => {
- assert.strictEqual(await console.currentValue(), 'b');
+ await eventually(async () => {
+ assert.strictEqual(await console.currentValue(), "b");
});
await console.sendKeys(Key.SHIFT, Key.TAB);
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.ok(items[3].highlight);
- assert.strictEqual(await console.currentValue(), 'bdeletes');
+ assert.strictEqual(await console.currentValue(), "bdeletes");
});
});
});
diff --git a/e2e/completion_buffers.test.ts b/e2e/completion_buffers.test.ts
index ac24753..57603f6 100644
--- a/e2e/completion_buffers.test.ts
+++ b/e2e/completion_buffers.test.ts
@@ -1,32 +1,34 @@
-import * as assert from 'assert';
-import * as path from 'path';
+import * as assert from "assert";
+import * as path from "path";
-import { Request, Response } from 'express'
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import { Request, Response } from "express";
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("completion on buffer/bdelete/bdeletes", () => {
- const server = new TestServer().handle('/*', (req: Request, res: Response) => {
- res.send(`
+ const server = new TestServer().handle(
+ "/*",
+ (req: Request, res: Response) => {
+ res.send(`
<!DOCTYPE html>
<html lang="en">
<head>
<title>title_${req.path.slice(1)}</title>
</head>
</html>`);
- });
+ }
+ );
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
@@ -34,26 +36,29 @@ describe("completion on buffer/bdelete/bdeletes", () => {
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
- await browser.tabs.update(tabs[0].id, { url: server.url('/site1'), pinned: true });
- await browser.tabs.create({ url:server.url('/site2'), pinned: true });
+ await browser.tabs.update(tabs[0].id, {
+ url: server.url("/site1"),
+ pinned: true,
+ });
+ await browser.tabs.create({ url: server.url("/site2"), pinned: true });
for (let i = 3; i <= 5; ++i) {
- await browser.tabs.create({ url: server.url('/site' + i) });
+ await browser.tabs.create({ url: server.url("/site" + i) });
}
- await eventually(async() => {
+ await eventually(async () => {
const handles = await webdriver.getAllWindowHandles();
assert.strictEqual(handles.length, 5);
await webdriver.switchTo().window(handles[2]);
@@ -62,114 +67,114 @@ describe("completion on buffer/bdelete/bdeletes", () => {
page = await Page.currentContext(webdriver);
});
- it('should all tabs by "buffer" command with empty params', async() => {
+ it('should all tabs by "buffer" command with empty params', async () => {
const console = await page.showConsole();
- await console.inputKeys('buffer ');
+ await console.inputKeys("buffer ");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 6);
- assert.deepStrictEqual(items[0], { type: 'title', text: 'Buffers' });
- assert.ok(items[1].text.startsWith('1:'));
- assert.ok(items[2].text.startsWith('2:'));
- assert.ok(items[3].text.startsWith('3:'));
- assert.ok(items[4].text.startsWith('4:'));
- assert.ok(items[5].text.startsWith('5:'));
-
- assert.ok(items[3].text.includes('%'));
- assert.ok(items[5].text.includes('#'));
+ assert.deepStrictEqual(items[0], { type: "title", text: "Buffers" });
+ assert.ok(items[1].text.startsWith("1:"));
+ assert.ok(items[2].text.startsWith("2:"));
+ assert.ok(items[3].text.startsWith("3:"));
+ assert.ok(items[4].text.startsWith("4:"));
+ assert.ok(items[5].text.startsWith("5:"));
+
+ assert.ok(items[3].text.includes("%"));
+ assert.ok(items[5].text.includes("#"));
});
});
- it('should filter items with URLs by keywords on "buffer" command', async() => {
+ it('should filter items with URLs by keywords on "buffer" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('buffer title_site2');
+ await console.inputKeys("buffer title_site2");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
- assert.deepStrictEqual(items[0], { type: 'title', text: 'Buffers' });
- assert.ok(items[1].text.startsWith('2:'));
- assert.ok(items[1].text.includes('title_site2'));
- assert.ok(items[1].text.includes(server.url('/site2')));
+ assert.deepStrictEqual(items[0], { type: "title", text: "Buffers" });
+ assert.ok(items[1].text.startsWith("2:"));
+ assert.ok(items[1].text.includes("title_site2"));
+ assert.ok(items[1].text.includes(server.url("/site2")));
});
});
- it('should filter items with titles by keywords on "buffer" command', async() => {
+ it('should filter items with titles by keywords on "buffer" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('buffer /site2');
+ await console.inputKeys("buffer /site2");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
- assert.deepStrictEqual(items[0], { type: 'title', text: 'Buffers' });
- assert.ok(items[1].text.startsWith('2:'));
+ assert.deepStrictEqual(items[0], { type: "title", text: "Buffers" });
+ assert.ok(items[1].text.startsWith("2:"));
});
});
- it('should show one item by number on "buffer" command', async() => {
+ it('should show one item by number on "buffer" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('buffer 2');
+ await console.inputKeys("buffer 2");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 2);
- assert.deepStrictEqual(items[0], { type: 'title', text: 'Buffers' });
- assert.ok(items[1].text.startsWith('2:'));
+ assert.deepStrictEqual(items[0], { type: "title", text: "Buffers" });
+ assert.ok(items[1].text.startsWith("2:"));
});
});
- it('should show unpinned tabs "bdelete" command', async() => {
+ it('should show unpinned tabs "bdelete" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('bdelete site');
+ await console.inputKeys("bdelete site");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 4);
- assert.ok(items[1].text.includes('site3'));
- assert.ok(items[2].text.includes('site4'));
- assert.ok(items[3].text.includes('site5'));
+ assert.ok(items[1].text.includes("site3"));
+ assert.ok(items[2].text.includes("site4"));
+ assert.ok(items[3].text.includes("site5"));
});
});
- it('should show unpinned tabs "bdeletes" command', async() => {
+ it('should show unpinned tabs "bdeletes" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('bdeletes site');
+ await console.inputKeys("bdeletes site");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 4);
- assert.ok(items[1].text.includes('site3'));
- assert.ok(items[2].text.includes('site4'));
- assert.ok(items[3].text.includes('site5'));
+ assert.ok(items[1].text.includes("site3"));
+ assert.ok(items[2].text.includes("site4"));
+ assert.ok(items[3].text.includes("site5"));
});
});
- it('should show both pinned and unpinned tabs "bdelete!" command', async() => {
+ it('should show both pinned and unpinned tabs "bdelete!" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('bdelete! site');
+ await console.inputKeys("bdelete! site");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 6);
- assert.ok(items[1].text.includes('site1'));
- assert.ok(items[2].text.includes('site2'));
- assert.ok(items[3].text.includes('site3'));
- assert.ok(items[4].text.includes('site4'));
- assert.ok(items[5].text.includes('site5'));
+ assert.ok(items[1].text.includes("site1"));
+ assert.ok(items[2].text.includes("site2"));
+ assert.ok(items[3].text.includes("site3"));
+ assert.ok(items[4].text.includes("site4"));
+ assert.ok(items[5].text.includes("site5"));
});
});
- it('should show both pinned and unpinned tabs "bdeletes!" command', async() => {
+ it('should show both pinned and unpinned tabs "bdeletes!" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('bdeletes! site');
+ await console.inputKeys("bdeletes! site");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 6);
- assert.ok(items[1].text.includes('site1'));
- assert.ok(items[2].text.includes('site2'));
- assert.ok(items[3].text.includes('site3'));
- assert.ok(items[4].text.includes('site4'));
- assert.ok(items[5].text.includes('site5'));
+ assert.ok(items[1].text.includes("site1"));
+ assert.ok(items[2].text.includes("site2"));
+ assert.ok(items[3].text.includes("site3"));
+ assert.ok(items[4].text.includes("site4"));
+ assert.ok(items[5].text.includes("site5"));
});
});
});
diff --git a/e2e/completion_open.test.ts b/e2e/completion_open.test.ts
index 95d4175..cefb44f 100644
--- a/e2e/completion_open.test.ts
+++ b/e2e/completion_open.test.ts
@@ -1,159 +1,202 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
import Settings from "../src/shared/settings/Settings";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
import SettingRepository from "./lib/SettingRepository";
describe("completion on open/tabopen/winopen commands", () => {
- const server = new TestServer().receiveContent('/*', 'ok');
+ const server = new TestServer().receiveContent("/*", "ok");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
let page: Page;
- before(async() => {
+ before(async () => {
await server.start();
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
// Add item into hitories
- await webdriver.navigate().to(('https://example.com/'));
+ await webdriver.navigate().to("https://example.com/");
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
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 () => {
const console = await page.showConsole();
- await console.inputKeys('open ');
+ await console.inputKeys("open ");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- assert.ok(completions.find(x => x.type === 'title' && x.text === 'Search Engines'));
- assert.ok(completions.find(x => x.type === 'title' && x.text === 'Bookmarks'));
- assert.ok(completions.find(x => x.type === 'title' && x.text === 'History'));
+ assert.ok(
+ completions.find(
+ (x) => x.type === "title" && x.text === "Search Engines"
+ )
+ );
+ assert.ok(
+ completions.find((x) => x.type === "title" && x.text === "Bookmarks")
+ );
+ assert.ok(
+ completions.find((x) => x.type === "title" && x.text === "History")
+ );
});
});
- it('should filter items with URLs by keywords on "open" command', async() => {
+ it('should filter items with URLs by keywords on "open" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('open https://');
+ await console.inputKeys("open https://");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const items = completions.filter(x => x.type === 'item').map(x => x.text);
- assert.ok(items.every(x => x.includes('https://')));
+ const items = completions
+ .filter((x) => x.type === "item")
+ .map((x) => x.text);
+ assert.ok(items.every((x) => x.includes("https://")));
});
});
- it('should filter items with titles by keywords on "open" command', async() => {
+ it('should filter items with titles by keywords on "open" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('open getting');
+ await console.inputKeys("open getting");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const items = completions.filter(x => x.type === 'item').map(x => x.text);
- assert.ok(items.every(x => x.toLowerCase().includes('getting')));
+ const items = completions
+ .filter((x) => x.type === "item")
+ .map((x) => x.text);
+ assert.ok(items.every((x) => x.toLowerCase().includes("getting")));
});
});
- it('should filter items with titles by keywords on "tabopen" command', async() => {
+ it('should filter items with titles by keywords on "tabopen" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('tabopen getting');
+ await console.inputKeys("tabopen getting");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const items = completions.filter(x => x.type === 'item').map(x => x.text);
- assert.ok(items.every(x => x.includes('https://')));
+ const items = completions
+ .filter((x) => x.type === "item")
+ .map((x) => x.text);
+ assert.ok(items.every((x) => x.includes("https://")));
});
});
- it('should filter items with titles by keywords on "winopen" command', async() => {
+ it('should filter items with titles by keywords on "winopen" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('winopen https://');
+ await console.inputKeys("winopen https://");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const items = completions.filter(x => x.type === 'item').map(x => x.text);
- assert.ok(items.every(x => x.includes('https://')));
+ const items = completions
+ .filter((x) => x.type === "item")
+ .map((x) => x.text);
+ assert.ok(items.every((x) => x.includes("https://")));
});
});
- it('should display only specified items in "complete" property by set command', async() => {
+ it('should display only specified items in "complete" property by set command', async () => {
let console = await page.showConsole();
- await console.execCommand('set complete=sbh');
+ await console.execCommand("set complete=sbh");
await (webdriver.switchTo() as any).parentFrame();
console = await page.showConsole();
- await console.inputKeys('open ');
+ await console.inputKeys("open ");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const titles = completions.filter(x => x.type === 'title').map(x => x.text);
- assert.deepStrictEqual(titles, ['Search Engines', 'Bookmarks', 'History'])
+ const titles = completions
+ .filter((x) => x.type === "title")
+ .map((x) => x.text);
+ assert.deepStrictEqual(titles, [
+ "Search Engines",
+ "Bookmarks",
+ "History",
+ ]);
});
await console.close();
console = await page.showConsole();
- await console.execCommand('set complete=bss');
+ await console.execCommand("set complete=bss");
await (webdriver.switchTo() as any).parentFrame();
console = await page.showConsole();
- await console.inputKeys('open ');
+ await console.inputKeys("open ");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const titles = completions.filter(x => x.type === 'title').map(x => x.text);
- assert.deepStrictEqual(titles, ['Bookmarks', 'Search Engines', 'Search Engines'])
+ const titles = completions
+ .filter((x) => x.type === "title")
+ .map((x) => x.text);
+ assert.deepStrictEqual(titles, [
+ "Bookmarks",
+ "Search Engines",
+ "Search Engines",
+ ]);
});
});
- it('should display only specified items in "complete" property by setting', async() => {
- new SettingRepository(browser).saveJSON(Settings.fromJSON({
- properties: { complete: "sbh" },
- }));
+ it('should display only specified items in "complete" property by setting', async () => {
+ new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ properties: { complete: "sbh" },
+ })
+ );
let console = await page.showConsole();
- await console.inputKeys('open ');
+ await console.inputKeys("open ");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const titles = completions.filter(x => x.type === 'title').map(x => x.text);
- assert.deepStrictEqual(titles, ['Search Engines', 'Bookmarks', 'History'])
+ const titles = completions
+ .filter((x) => x.type === "title")
+ .map((x) => x.text);
+ assert.deepStrictEqual(titles, [
+ "Search Engines",
+ "Bookmarks",
+ "History",
+ ]);
});
await console.close();
await (webdriver.switchTo() as any).parentFrame();
- new SettingRepository(browser).saveJSON(Settings.fromJSON({
- properties: { complete: "bss" },
- }));
+ new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ properties: { complete: "bss" },
+ })
+ );
console = await page.showConsole();
- await console.inputKeys('open ');
+ await console.inputKeys("open ");
- await eventually(async() => {
+ await eventually(async () => {
const completions = await console.getCompletions();
- const titles = completions.filter(x => x.type === 'title').map(x => x.text);
- assert.deepStrictEqual(titles, ['Bookmarks', 'Search Engines', 'Search Engines'])
+ const titles = completions
+ .filter((x) => x.type === "title")
+ .map((x) => x.text);
+ assert.deepStrictEqual(titles, [
+ "Bookmarks",
+ "Search Engines",
+ "Search Engines",
+ ]);
});
});
});
diff --git a/e2e/completion_set.test.ts b/e2e/completion_set.test.ts
index 7e9714c..3a139fe 100644
--- a/e2e/completion_set.test.ts
+++ b/e2e/completion_set.test.ts
@@ -1,57 +1,56 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("completion on set commands", () => {
let lanthan: Lanthan;
let webdriver: WebDriver;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
});
- after(async() => {
+ after(async () => {
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
page = await Page.navigateTo(webdriver, `about:blank`);
});
- it('should show all property names by "set" command with empty params', async() => {
+ it('should show all property names by "set" command with empty params', async () => {
const console = await page.showConsole();
- await console.inputKeys('set ');
+ await console.inputKeys("set ");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 5);
- assert.deepStrictEqual(items[0], { type: 'title', text: 'Properties' });
- assert.ok(items[1].text.startsWith('hintchars'));
- assert.ok(items[2].text.startsWith('smoothscroll'));
- assert.ok(items[3].text.startsWith('nosmoothscroll'));
- assert.ok(items[4].text.startsWith('complete'))
+ assert.deepStrictEqual(items[0], { type: "title", text: "Properties" });
+ assert.ok(items[1].text.startsWith("hintchars"));
+ assert.ok(items[2].text.startsWith("smoothscroll"));
+ assert.ok(items[3].text.startsWith("nosmoothscroll"));
+ assert.ok(items[4].text.startsWith("complete"));
});
});
- it('should show filtered property names by "set" command', async() => {
+ it('should show filtered property names by "set" command', async () => {
const console = await page.showConsole();
- await console.inputKeys('set no');
+ await console.inputKeys("set no");
- await eventually(async() => {
+ await eventually(async () => {
const items = await console.getCompletions();
assert.strictEqual(items.length, 2);
- assert.ok(items[1].text.includes('nosmoothscroll'))
+ assert.ok(items[1].text.includes("nosmoothscroll"));
});
});
});
diff --git a/e2e/console.test.ts b/e2e/console.test.ts
index 1d441f9..18b717f 100644
--- a/e2e/console.test.ts
+++ b/e2e/console.test.ts
@@ -1,90 +1,93 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("console test", () => {
- const server = new TestServer().receiveContent('/',
- `<!DOCTYPE html><html lang="en"><head><title>Hello, world!</title></head></html>`,
+ const server = new TestServer().receiveContent(
+ "/",
+ `<!DOCTYPE html><html lang="en"><head><title>Hello, world!</title></head></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
page = await Page.navigateTo(webdriver, server.url());
});
- it('open console with :', async() => {
- await page.sendKeys(':');
+ it("open console with :", async () => {
+ await page.sendKeys(":");
const console = await page.getConsole();
- assert.strictEqual(await console.currentValue(), '');
+ assert.strictEqual(await console.currentValue(), "");
});
- it('open console with open command by o', async() => {
- await page.sendKeys('o');
+ it("open console with open command by o", async () => {
+ await page.sendKeys("o");
const console = await page.getConsole();
- assert.strictEqual(await console.currentValue(), 'open ');
+ assert.strictEqual(await console.currentValue(), "open ");
});
- it('open console with open command and current URL by O', async() => {
- await page.sendKeys(Key.SHIFT, 'o');
+ it("open console with open command and current URL by O", async () => {
+ await page.sendKeys(Key.SHIFT, "o");
const console = await page.getConsole();
assert.strictEqual(await console.currentValue(), `open ${server.url()}`);
});
- it('open console with tabopen command by t', async() => {
- await page.sendKeys('t');
+ it("open console with tabopen command by t", async () => {
+ await page.sendKeys("t");
const console = await page.getConsole();
- assert.strictEqual(await console.currentValue(), 'tabopen ');
+ assert.strictEqual(await console.currentValue(), "tabopen ");
});
- it('open console with tabopen command and current URL by T', async() => {
- await page.sendKeys(Key.SHIFT, 't');
+ it("open console with tabopen command and current URL by T", async () => {
+ await page.sendKeys(Key.SHIFT, "t");
const console = await page.getConsole();
assert.strictEqual(await console.currentValue(), `tabopen ${server.url()}`);
});
- it('open console with winopen command by w', async() => {
- await page.sendKeys('w');
+ it("open console with winopen command by w", async () => {
+ await page.sendKeys("w");
const console = await page.getConsole();
assert.strictEqual(await console.currentValue(), `winopen `);
});
- it('open console with winopen command and current URL by W', async() => {
- await page.sendKeys(Key.SHIFT, 'W');
+ it("open console with winopen command and current URL by W", async () => {
+ await page.sendKeys(Key.SHIFT, "W");
const console = await page.getConsole();
assert.strictEqual(await console.currentValue(), `winopen ${server.url()}`);
});
- it('open console with buffer command by b', async() => {
- await page.sendKeys('b');
+ it("open console with buffer command by b", async () => {
+ await page.sendKeys("b");
const console = await page.getConsole();
assert.strictEqual(await console.currentValue(), `buffer `);
});
- it('open console with addbookmark command with title by a', async() => {
- await page.sendKeys('a');
+ it("open console with addbookmark command with title by a", async () => {
+ await page.sendKeys("a");
const console = await page.getConsole();
- assert.strictEqual(await console.currentValue(), `addbookmark Hello, world!`);
+ assert.strictEqual(
+ await console.currentValue(),
+ `addbookmark Hello, world!`
+ );
});
});
diff --git a/e2e/eventually.ts b/e2e/eventually.ts
index b0a2dfc..9d21022 100644
--- a/e2e/eventually.ts
+++ b/e2e/eventually.ts
@@ -1,19 +1,19 @@
const defaultInterval = 100;
const defaultTimeout = 2000;
-type Handler = () => void
+type Handler = () => void;
const sleep = (ms: number): Promise<void> => {
- return new Promise(resolve => setTimeout(resolve, ms));
-}
-
+ return new Promise((resolve) => setTimeout(resolve, ms));
+};
+
const eventually = async (
fn: Handler,
timeout = defaultTimeout,
- interval = defaultInterval,
+ interval = defaultInterval
): Promise<void> => {
const start = Date.now();
- const loop = async() => {
+ const loop = async () => {
try {
await fn();
} catch (err) {
diff --git a/e2e/find.test.ts b/e2e/find.test.ts
index 74097ab..accf37b 100644
--- a/e2e/find.test.ts
+++ b/e2e/find.test.ts
@@ -1,42 +1,42 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import eventually from './eventually';
-import TestServer from './lib/TestServer';
-import { Builder, Lanthan } from 'lanthan';
-import { Key, WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import eventually from "./eventually";
+import TestServer from "./lib/TestServer";
+import { Builder, Lanthan } from "lanthan";
+import { Key, WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("find test", () => {
- const server = new TestServer().receiveContent('/',
- `<!DOCTYPE html><html lang="en"><body>--hello--hello--hello--</body></html>`,
+ const server = new TestServer().receiveContent(
+ "/",
+ `<!DOCTYPE html><html lang="en"><body>--hello--hello--hello--</body></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
page = await Page.navigateTo(webdriver, server.url());
});
- it('starts searching', async() => {
- await page.sendKeys('/');
+ it("starts searching", async () => {
+ await page.sendKeys("/");
const console = await page.getConsole();
await console.execCommand("hello");
await page.switchToTop();
@@ -60,53 +60,53 @@ describe("find test", () => {
assert.deepStrictEqual(selection, { from: 16, to: 21 });
});
- it('shows error if pattern not found', async() => {
- await page.sendKeys('/');
+ it("shows error if pattern not found", async () => {
+ await page.sendKeys("/");
let console = await page.getConsole();
- await console.execCommand('world');
+ await console.execCommand("world");
await page.switchToTop();
const selection = await page.getSelection();
assert.deepStrictEqual(selection, { from: 0, to: 0 });
- await eventually(async() => {
+ await eventually(async () => {
console = await page.getConsole();
const message = await console.getErrorMessage();
- assert.strictEqual(message, 'Pattern not found: world');
+ assert.strictEqual(message, "Pattern not found: world");
});
});
- it('search with last keyword if keyword is empty', async() => {
- await page.sendKeys('/');
+ it("search with last keyword if keyword is empty", async () => {
+ await page.sendKeys("/");
let console = await page.getConsole();
- await console.execCommand('hello');
+ await console.execCommand("hello");
await page.switchToTop();
await page.clearSelection();
let selection = await page.getSelection();
assert.deepStrictEqual(selection, { from: 0, to: 0 });
- await page.sendKeys('/');
+ await page.sendKeys("/");
console = await page.getConsole();
- await console.execCommand('');
+ await console.execCommand("");
await page.switchToTop();
selection = await page.getSelection();
assert.deepStrictEqual(selection, { from: 2, to: 7 });
});
- it('search with last keyword on new page', async() => {
- await page.sendKeys('/');
+ it("search with last keyword on new page", async () => {
+ await page.sendKeys("/");
const console = await page.getConsole();
- await console.execCommand('hello');
+ await console.execCommand("hello");
await page.switchToTop();
- await page.sendKeys('n');
+ await page.sendKeys("n");
let selection = await page.getSelection();
assert.deepStrictEqual(selection, { from: 9, to: 14 });
page = await Page.navigateTo(webdriver, server.url());
- await page.sendKeys('n');
+ await page.sendKeys("n");
selection = await page.getSelection();
assert.deepStrictEqual(selection, { from: 2, to: 7 });
});
diff --git a/e2e/follow.test.ts b/e2e/follow.test.ts
index 62a109f..5fb6c58 100644
--- a/e2e/follow.test.ts
+++ b/e2e/follow.test.ts
@@ -1,28 +1,36 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import Page from "./lib/Page";
const newApp = () => {
const server = new TestServer();
- server.receiveContent('/', `
+ server.receiveContent(
+ "/",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<a href="hello">hello</a>
- </body></html>`);
+ </body></html>`
+ );
- server.receiveContent('/follow-input', `
+ server.receiveContent(
+ "/follow-input",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<input>
- </body></html>`);
+ </body></html>`
+ );
- server.receiveContent('/area', `
+ server.receiveContent(
+ "/area",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<img
@@ -34,7 +42,8 @@ const newApp = () => {
<area shape="rect" coords="64,64,64,64" href="/">
<area shape="rect" coords="128,128,64,64" href="/">
</map>
- </body></html>`);
+ </body></html>`
+ );
/*
* test case: link2 is out of the viewport
@@ -46,168 +55,186 @@ const newApp = () => {
* | |
* +-----------------+
*/
- server.receiveContent('/test1', `
+ server.receiveContent(
+ "/test1",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<div><a href="link1">link1</a></div>
<div style="min-height:3000px"></div>
<div><a href="link2">link2</a></div>
- </body></html>`);
-
-/*
- * test case 2: link2 and link3 are out of window of the frame
- * +-----------------+
- * | +-----------+ |
- * | | [link1] | |
- * |=================|
- * | | [link2] | |
- * | +-----------+ |
- * | |
- * +-----------------+
- */
- server.receiveContent('/test2', `
+ </body></html>`
+ );
+
+ /*
+ * test case 2: link2 and link3 are out of window of the frame
+ * +-----------------+
+ * | +-----------+ |
+ * | | [link1] | |
+ * |=================|
+ * | | [link2] | |
+ * | +-----------+ |
+ * | |
+ * +-----------------+
+ */
+ server.receiveContent(
+ "/test2",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<iframe height="5000" src='/test2-frame'>
- </body></html>`);
- server.receiveContent('/test2-frame', `
+ </body></html>`
+ );
+ server.receiveContent(
+ "/test2-frame",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<div><a href="link1">link1</a></div>
<div style="min-height:3000px"></div>
<div><a href="link2">link2</a></div>
- </body></html>`);
-
-/* test case 3: link2 is out of window of the frame
- * +-----------------+
- * | +-----------+ |
- * | | [link1] | |
- * | +-----------+ |
- * | : [link2] : |
- * | + - - - - - + |
- * | |
- * +-----------------+
- */
- server.receiveContent('/test3', `
+ </body></html>`
+ );
+
+ /* test case 3: link2 is out of window of the frame
+ * +-----------------+
+ * | +-----------+ |
+ * | | [link1] | |
+ * | +-----------+ |
+ * | : [link2] : |
+ * | + - - - - - + |
+ * | |
+ * +-----------------+
+ */
+ server.receiveContent(
+ "/test3",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<iframe src='/test3-frame'>
- </body></html>`);
- server.receiveContent('/test3-frame', `
+ </body></html>`
+ );
+ server.receiveContent(
+ "/test3-frame",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<div><a href="link1">link1</a></div>
<div style="min-height:3000px"></div>
<div><a href="link2">link2</a></div>
- </body></html>`);
+ </body></html>`
+ );
return server;
};
-describe('follow test', () => {
+describe("follow test", () => {
const server = newApp();
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- afterEach(async() => {
+ afterEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
});
- it('should focus an input by f', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/follow-input'));
- await page.sendKeys('f');
+ it("should focus an input by f", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/follow-input"));
+ await page.sendKeys("f");
await page.waitAndGetHints();
- await page.sendKeys('a');
+ await page.sendKeys("a");
- const tagName = await webdriver.executeScript(() => document.activeElement!!.tagName) as string;
- assert.strictEqual(tagName.toLowerCase(), 'input');
+ const tagName = (await webdriver.executeScript(
+ () => document.activeElement!!.tagName
+ )) as string;
+ assert.strictEqual(tagName.toLowerCase(), "input");
});
- it('should open a link by f', async () => {
+ it("should open a link by f", async () => {
const page = await Page.navigateTo(webdriver, server.url());
- await page.sendKeys('f');
+ await page.sendKeys("f");
await page.waitAndGetHints();
- await page.sendKeys('a');
+ await page.sendKeys("a");
- await eventually(async() => {
- const hash = await webdriver.executeScript('return location.pathname');
- assert.strictEqual(hash, '/hello');
+ await eventually(async () => {
+ const hash = await webdriver.executeScript("return location.pathname");
+ assert.strictEqual(hash, "/hello");
});
});
- it('should focus an input by F', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/follow-input'));
- await page.sendKeys(Key.SHIFT, 'f');
+ it("should focus an input by F", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/follow-input"));
+ await page.sendKeys(Key.SHIFT, "f");
await page.waitAndGetHints();
- await page.sendKeys('a');
+ await page.sendKeys("a");
- const tagName = await webdriver.executeScript(() => document.activeElement!!.tagName) as string;
- assert.strictEqual(tagName.toLowerCase(), 'input');
+ const tagName = (await webdriver.executeScript(
+ () => document.activeElement!!.tagName
+ )) as string;
+ assert.strictEqual(tagName.toLowerCase(), "input");
});
- it('should open a link to new tab by F', async () => {
+ it("should open a link to new tab by F", async () => {
const page = await Page.navigateTo(webdriver, server.url());
- await page.sendKeys(Key.SHIFT, 'f');
+ await page.sendKeys(Key.SHIFT, "f");
await page.waitAndGetHints();
- await page.sendKeys('a');
+ await page.sendKeys("a");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
- assert.strictEqual(new URL(tabs[1].url).pathname, '/hello');
+ assert.strictEqual(new URL(tabs[1].url).pathname, "/hello");
assert.strictEqual(tabs[1].openerTabId, tabs[0].id);
});
});
- it('should show hints of links in area', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/area'));
- await page.sendKeys(Key.SHIFT, 'f');
+ it("should show hints of links in area", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/area"));
+ await page.sendKeys(Key.SHIFT, "f");
const hints = await page.waitAndGetHints();
assert.strictEqual(hints.length, 3);
});
- it('should shows hints only in viewport', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/test1'));
- await page.sendKeys(Key.SHIFT, 'f');
+ it("should shows hints only in viewport", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/test1"));
+ await page.sendKeys(Key.SHIFT, "f");
const hints = await page.waitAndGetHints();
assert.strictEqual(hints.length, 1);
});
- it('should shows hints only in window of the frame', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/test2'));
- await page.sendKeys(Key.SHIFT, 'f');
+ it("should shows hints only in window of the frame", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/test2"));
+ await page.sendKeys(Key.SHIFT, "f");
await webdriver.switchTo().frame(0);
const hints = await page.waitAndGetHints();
assert.strictEqual(hints.length, 1);
});
- it('should shows hints only in the frame', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/test3'));
- await page.sendKeys(Key.SHIFT, 'f');
+ it("should shows hints only in the frame", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/test3"));
+ await page.sendKeys(Key.SHIFT, "f");
await webdriver.switchTo().frame(0);
const hints = await page.waitAndGetHints();
diff --git a/e2e/follow_properties.test.ts b/e2e/follow_properties.test.ts
index 78597a5..4f2a5b8 100644
--- a/e2e/follow_properties.test.ts
+++ b/e2e/follow_properties.test.ts
@@ -1,16 +1,18 @@
-import * as path from 'path';
-import * as assert from 'assert';
-
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import Page from './lib/Page';
+import * as path from "path";
+import * as assert from "assert";
+
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import Page from "./lib/Page";
import SettingRepository from "./lib/SettingRepository";
import Settings from "../src/shared/settings/Settings";
-describe('follow properties test', () => {
- const server = new TestServer().receiveContent('/', `
+describe("follow properties test", () => {
+ const server = new TestServer().receiveContent(
+ "/",
+ `
<!DOCTYPE html>
<html lang="en"><body>
<a href="/">link1</a>
@@ -18,67 +20,69 @@ describe('follow properties test', () => {
<a href="/">link3</a>
<a href="/">link4</a>
<a href="/">link5</a>
- </body></html>`);
+ </body></html>`
+ );
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
- await new SettingRepository(browser).saveJSON(Settings.fromJSON({
- "keymaps": {
- ":": { "type": "command.show" },
- "f": { "type": "follow.start", "newTab": false },
- "F": { "type": "follow.start", "newTab": true, "background": false },
- "<C-F>": { "type": "follow.start", "newTab": true, "background": true }
- },
- "properties": {
- "hintchars": "jk"
- }
- }));
+ await new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ keymaps: {
+ ":": { type: "command.show" },
+ f: { type: "follow.start", newTab: false },
+ F: { type: "follow.start", newTab: true, background: false },
+ "<C-F>": { type: "follow.start", newTab: true, background: true },
+ },
+ properties: {
+ hintchars: "jk",
+ },
+ })
+ );
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
page = await Page.navigateTo(webdriver, server.url());
});
- afterEach(async() => {
+ afterEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
});
- it('should show hints with hintchars by settings', async () => {
- await page.sendKeys('f');
+ it("should show hints with hintchars by settings", async () => {
+ await page.sendKeys("f");
let hints = await page.waitAndGetHints();
assert.strictEqual(hints.length, 5);
- assert.strictEqual(hints[0].text, 'J');
- assert.strictEqual(hints[1].text, 'K');
- assert.strictEqual(hints[2].text, 'JJ');
- assert.strictEqual(hints[3].text, 'JK');
- assert.strictEqual(hints[4].text, 'KJ');
+ assert.strictEqual(hints[0].text, "J");
+ assert.strictEqual(hints[1].text, "K");
+ assert.strictEqual(hints[2].text, "JJ");
+ assert.strictEqual(hints[3].text, "JK");
+ assert.strictEqual(hints[4].text, "KJ");
- await page.sendKeys('j');
+ await page.sendKeys("j");
hints = await page.waitAndGetHints();
assert.strictEqual(hints[0].displayed, true);
@@ -88,45 +92,45 @@ describe('follow properties test', () => {
assert.strictEqual(hints[4].displayed, false);
});
- it('should open tab in background by background:false', async () => {
- await page.sendKeys(Key.SHIFT, 'f');
+ it("should open tab in background by background:false", async () => {
+ await page.sendKeys(Key.SHIFT, "f");
await page.waitAndGetHints();
- await page.sendKeys('jj');
+ await page.sendKeys("jj");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs[0].active, false);
assert.strictEqual(tabs[1].active, true);
});
});
- it('should open tab in background by background:true', async () => {
- await page.sendKeys(Key.CONTROL, 'f');
+ it("should open tab in background by background:true", async () => {
+ await page.sendKeys(Key.CONTROL, "f");
await page.waitAndGetHints();
- await page.sendKeys('jj');
+ await page.sendKeys("jj");
- await eventually(async() => {
+ await eventually(async () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs[0].active, true);
assert.strictEqual(tabs[1].active, false);
});
});
- it('should show hints with hintchars by settings', async () => {
+ it("should show hints with hintchars by settings", async () => {
const console = await page.showConsole();
- await console.execCommand('set hintchars=abc');
+ await console.execCommand("set hintchars=abc");
await (webdriver.switchTo() as any).parentFrame();
- await page.sendKeys('f');
+ await page.sendKeys("f");
let hints = await page.waitAndGetHints();
assert.strictEqual(hints.length, 5);
- assert.strictEqual(hints[0].text, 'A');
- assert.strictEqual(hints[1].text, 'B');
- assert.strictEqual(hints[2].text, 'C');
- assert.strictEqual(hints[3].text, 'AA');
- assert.strictEqual(hints[4].text, 'AB');
+ assert.strictEqual(hints[0].text, "A");
+ assert.strictEqual(hints[1].text, "B");
+ assert.strictEqual(hints[2].text, "C");
+ assert.strictEqual(hints[3].text, "AA");
+ assert.strictEqual(hints[4].text, "AB");
- await page.sendKeys('a');
+ await page.sendKeys("a");
hints = await page.waitAndGetHints();
assert.strictEqual(hints[0].displayed, true);
assert.strictEqual(hints[1].displayed, false);
diff --git a/e2e/lib/Console.ts b/e2e/lib/Console.ts
index e3bd2d6..68c0e10 100644
--- a/e2e/lib/Console.ts
+++ b/e2e/lib/Console.ts
@@ -1,64 +1,73 @@
-import { WebDriver, By, Key } from 'selenium-webdriver';
+import { WebDriver, By, Key } from "selenium-webdriver";
export type CompletionItem = {
type: string;
text: string;
highlight: boolean;
-}
+};
export class Console {
- constructor(private webdriver: WebDriver) {
- }
+ constructor(private webdriver: WebDriver) {}
async sendKeys(...keys: string[]) {
- const input = await this.webdriver.findElement(By.css('input'));
+ const input = await this.webdriver.findElement(By.css("input"));
input.sendKeys(...keys);
}
async currentValue() {
return await this.webdriver.executeScript(() => {
- const input = document.querySelector('input');
+ const input = document.querySelector("input");
if (input === null) {
- throw new Error('could not find input element');
+ throw new Error("could not find input element");
}
return input.value;
});
}
async execCommand(command: string): Promise<void> {
- const input = await this.webdriver.findElement(By.css('input.vimvixen-console-command-input'));
+ const input = await this.webdriver.findElement(
+ By.css("input.vimvixen-console-command-input")
+ );
await input.sendKeys(command, Key.ENTER);
}
async getErrorMessage(): Promise<string> {
- const p = await this.webdriver.findElement(By.css('.vimvixen-console-error'));
+ const p = await this.webdriver.findElement(
+ By.css(".vimvixen-console-error")
+ );
return p.getText();
}
async getInformationMessage(): Promise<string> {
- const p = await this.webdriver.findElement(By.css('.vimvixen-console-info'));
+ const p = await this.webdriver.findElement(
+ By.css(".vimvixen-console-info")
+ );
return p.getText();
}
async inputKeys(...keys: string[]) {
- const input = await this.webdriver.findElement(By.css('input'));
+ const input = await this.webdriver.findElement(By.css("input"));
await input.sendKeys(...keys);
}
getCompletions(): Promise<CompletionItem[]> {
return this.webdriver.executeScript(() => {
- const items = document.querySelectorAll('.vimvixen-console-completion > li');
+ const items = document.querySelectorAll(
+ ".vimvixen-console-completion > li"
+ );
if (items.length === 0) {
- throw new Error('completion items not found');
+ throw new Error("completion items not found");
}
const objs = [];
for (const li of Array.from(items)) {
- if (li.classList.contains('vimvixen-console-completion-title')) {
- objs.push({ type: 'title', text: li.textContent!!.trim() });
- } else if ('vimvixen-console-completion-item') {
- const highlight = li.classList.contains('vimvixen-completion-selected');
- objs.push({ type: 'item', text: li.textContent!!.trim(), highlight });
+ if (li.classList.contains("vimvixen-console-completion-title")) {
+ objs.push({ type: "title", text: li.textContent!!.trim() });
+ } else if ("vimvixen-console-completion-item") {
+ const highlight = li.classList.contains(
+ "vimvixen-completion-selected"
+ );
+ objs.push({ type: "item", text: li.textContent!!.trim(), highlight });
} else {
throw new Error(`unexpected class: ${li.className}`);
}
@@ -68,10 +77,10 @@ export class Console {
}
async close(): Promise<void> {
- const input = await this.webdriver.findElement(By.css('input'));
+ const input = await this.webdriver.findElement(By.css("input"));
await input.sendKeys(Key.ESCAPE);
// TODO remove sleep
- await new Promise(resolve => setTimeout(resolve, 100));
+ await new Promise((resolve) => setTimeout(resolve, 100));
await (this.webdriver.switchTo() as any).parentFrame();
}
}
diff --git a/e2e/lib/FormOptionPage.ts b/e2e/lib/FormOptionPage.ts
index 33ce2a7..5551684 100644
--- a/e2e/lib/FormOptionPage.ts
+++ b/e2e/lib/FormOptionPage.ts
@@ -1,5 +1,5 @@
-import { Lanthan } from 'lanthan';
-import { WebDriver, By, until } from 'selenium-webdriver';
+import { Lanthan } from "lanthan";
+import { WebDriver, By, until } from "selenium-webdriver";
export default class FormOptionPage {
private webdriver: WebDriver;
@@ -9,92 +9,136 @@ export default class FormOptionPage {
}
async setBlacklist(nth: number, url: string): Promise<void> {
- const selector = '.form-blacklist-form-row > .column-url';
+ const selector = ".form-blacklist-form-row > .column-url";
const inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
- throw new RangeError('Index out of range to set a blacklist')
+ throw new RangeError("Index out of range to set a blacklist");
}
await inputs[nth].sendKeys(url);
- await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
+ await this.webdriver.executeScript(
+ `document.querySelectorAll('${selector}')[${nth}].blur()`
+ );
}
- async setPartialBlacklist(nth: number, url: string, keys: string): Promise<void> {
- let selector = '.form-partial-blacklist-form-row > .column-url';
+ async setPartialBlacklist(
+ nth: number,
+ url: string,
+ keys: string
+ ): Promise<void> {
+ let selector = ".form-partial-blacklist-form-row > .column-url";
let inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
- throw new RangeError('Index out of range to set a partial blacklist')
+ throw new RangeError("Index out of range to set a partial blacklist");
}
await inputs[nth].sendKeys(url);
- await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
+ await this.webdriver.executeScript(
+ `document.querySelectorAll('${selector}')[${nth}].blur()`
+ );
- selector = '.form-partial-blacklist-form-row > .column-keys';
+ selector = ".form-partial-blacklist-form-row > .column-keys";
inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
- throw new RangeError('Index out of range to set a partial blacklist')
+ throw new RangeError("Index out of range to set a partial blacklist");
}
await inputs[nth].sendKeys(keys);
- await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
+ await this.webdriver.executeScript(
+ `document.querySelectorAll('${selector}')[${nth}].blur()`
+ );
}
async setSearchEngine(nth: number, name: string, url: string) {
- let selector = '.form-search-form-row > .column-name';
+ let selector = ".form-search-form-row > .column-name";
let inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
- throw new RangeError('Index out of range to set a search engine')
+ throw new RangeError("Index out of range to set a search engine");
}
await inputs[nth].sendKeys(name);
- await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
+ await this.webdriver.executeScript(
+ `document.querySelectorAll('${selector}')[${nth}].blur()`
+ );
- selector = '.form-search-form-row > .column-url';
+ selector = ".form-search-form-row > .column-url";
inputs = await this.webdriver.findElements(By.css(selector));
if (inputs.length <= nth) {
- throw new RangeError('Index out of range to set a search engine')
+ throw new RangeError("Index out of range to set a search engine");
}
await inputs[nth].sendKeys(url);
- await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
+ await this.webdriver.executeScript(
+ `document.querySelectorAll('${selector}')[${nth}].blur()`
+ );
}
async addBlacklist(): Promise<void> {
- const rows = await this.webdriver.findElements(By.css(`.form-blacklist-form-row`));
- const button = await this.webdriver.findElement(By.css('.form-blacklist-form .ui-add-button'))
+ const rows = await this.webdriver.findElements(
+ By.css(`.form-blacklist-form-row`)
+ );
+ const button = await this.webdriver.findElement(
+ By.css(".form-blacklist-form .ui-add-button")
+ );
await button.click();
- await this.webdriver.wait(until.elementLocated(By.css(`.form-blacklist-form-row:nth-child(${rows.length + 1})`)));
+ await this.webdriver.wait(
+ until.elementLocated(
+ By.css(`.form-blacklist-form-row:nth-child(${rows.length + 1})`)
+ )
+ );
}
async addPartialBlacklist(): Promise<void> {
- const rows = await this.webdriver.findElements(By.css(`.form-partial-blacklist-form-row`));
- const button = await this.webdriver.findElement(By.css('.form-partial-blacklist-form .ui-add-button'))
+ const rows = await this.webdriver.findElements(
+ By.css(`.form-partial-blacklist-form-row`)
+ );
+ const button = await this.webdriver.findElement(
+ By.css(".form-partial-blacklist-form .ui-add-button")
+ );
await button.click();
- await this.webdriver.wait(until.elementLocated(By.css(`.form-partial-blacklist-form-row:nth-child(${rows.length + 2})`)));
+ await this.webdriver.wait(
+ until.elementLocated(
+ By.css(`.form-partial-blacklist-form-row:nth-child(${rows.length + 2})`)
+ )
+ );
}
async removeBlackList(nth: number): Promise<void> {
- const buttons = await this.webdriver.findElements(By.css('.form-blacklist-form-row .ui-delete-button'));
+ const buttons = await this.webdriver.findElements(
+ By.css(".form-blacklist-form-row .ui-delete-button")
+ );
if (buttons.length <= nth) {
- throw new RangeError('Index out of range to remove blacklist')
+ throw new RangeError("Index out of range to remove blacklist");
}
- await buttons[nth].click()
+ await buttons[nth].click();
}
async removePartialBlackList(nth: number): Promise<void> {
- const buttons = await this.webdriver.findElements(By.css('.form-partial-blacklist-form-row .ui-delete-button'));
+ const buttons = await this.webdriver.findElements(
+ By.css(".form-partial-blacklist-form-row .ui-delete-button")
+ );
if (buttons.length <= nth) {
- throw new RangeError('Index out of range to remove partial blacklist')
+ throw new RangeError("Index out of range to remove partial blacklist");
}
- await buttons[nth].click()
+ await buttons[nth].click();
}
async addSearchEngine(): Promise<void> {
- const rows = await this.webdriver.findElements(By.css(`.form-search-form-row > .column-name`));
- const button = await this.webdriver.findElement(By.css('.form-search-form > .ui-add-button'))
+ const rows = await this.webdriver.findElements(
+ By.css(`.form-search-form-row > .column-name`)
+ );
+ const button = await this.webdriver.findElement(
+ By.css(".form-search-form > .ui-add-button")
+ );
await button.click();
- await this.webdriver.wait(until.elementLocated(By.css(`.form-search-form-row:nth-child(${rows.length + 1})`)));
+ await this.webdriver.wait(
+ until.elementLocated(
+ By.css(`.form-search-form-row:nth-child(${rows.length + 1})`)
+ )
+ );
}
async setDefaultSearchEngine(nth: number): Promise<void> {
- const radios = await this.webdriver.findElements(By.css('.form-search-form-row input[type=radio]'));
+ const radios = await this.webdriver.findElements(
+ By.css(".form-search-form-row input[type=radio]")
+ );
if (radios.length <= nth) {
- throw new RangeError('Index out of range to set a default search engine');
+ throw new RangeError("Index out of range to set a default search engine");
}
await radios[nth].click();
}
diff --git a/e2e/lib/JSONOptionPage.ts b/e2e/lib/JSONOptionPage.ts
index d6ed7ee..1c2db5b 100644
--- a/e2e/lib/JSONOptionPage.ts
+++ b/e2e/lib/JSONOptionPage.ts
@@ -1,5 +1,5 @@
-import { Lanthan } from 'lanthan';
-import { WebDriver, By } from 'selenium-webdriver';
+import { Lanthan } from "lanthan";
+import { WebDriver, By } from "selenium-webdriver";
export default class JSONOptionPage {
private webdriver: WebDriver;
@@ -9,14 +9,20 @@ export default class JSONOptionPage {
}
async updateSettings(value: string): Promise<void> {
- const textarea = await this.webdriver.findElement(By.css('textarea'));
- await this.webdriver.executeScript(`document.querySelector('textarea').value = '${value}'`)
- await textarea.sendKeys(' ');
- await this.webdriver.executeScript(() => document.querySelector('textarea')!!.blur());
+ const textarea = await this.webdriver.findElement(By.css("textarea"));
+ await this.webdriver.executeScript(
+ `document.querySelector('textarea').value = '${value}'`
+ );
+ await textarea.sendKeys(" ");
+ await this.webdriver.executeScript(() =>
+ document.querySelector("textarea")!!.blur()
+ );
}
async getErrorMessage(): Promise<string> {
- const error = await this.webdriver.findElement(By.css('.settings-ui-input-error'));
+ const error = await this.webdriver.findElement(
+ By.css(".settings-ui-input-error")
+ );
return error.getText();
}
}
diff --git a/e2e/lib/OptionPage.ts b/e2e/lib/OptionPage.ts
index 9f994a0..e1ea759 100644
--- a/e2e/lib/OptionPage.ts
+++ b/e2e/lib/OptionPage.ts
@@ -1,7 +1,7 @@
-import { Lanthan } from 'lanthan';
-import { WebDriver, By } from 'selenium-webdriver';
-import JSONOptionPage from './JSONOptionPage';
-import FormOptionPage from './FormOptionPage';
+import { Lanthan } from "lanthan";
+import { WebDriver, By } from "selenium-webdriver";
+import JSONOptionPage from "./JSONOptionPage";
+import FormOptionPage from "./FormOptionPage";
export default class OptionPage {
private webdriver: WebDriver;
@@ -11,13 +11,17 @@ export default class OptionPage {
}
static async open(lanthan: Lanthan) {
- const url = await lanthan.getWebExtBrowser().runtime.getURL("build/settings.html")
+ const url = await lanthan
+ .getWebExtBrowser()
+ .runtime.getURL("build/settings.html");
await lanthan.getWebDriver().navigate().to(url);
return new OptionPage(lanthan);
}
async switchToForm(): Promise<FormOptionPage> {
- const useFormInput = await this.webdriver.findElement(By.css('#setting-source-form'));
+ const useFormInput = await this.webdriver.findElement(
+ By.css("#setting-source-form")
+ );
await useFormInput.click();
await this.webdriver.switchTo().alert().accept();
return new FormOptionPage(this.lanthan);
diff --git a/e2e/lib/Page.ts b/e2e/lib/Page.ts
index 31605cb..85bda8d 100644
--- a/e2e/lib/Page.ts
+++ b/e2e/lib/Page.ts
@@ -1,19 +1,18 @@
-import { WebDriver, By, until } from 'selenium-webdriver';
-import { Console } from './Console';
+import { WebDriver, By, until } from "selenium-webdriver";
+import { Console } from "./Console";
type Hint = {
- displayed: boolean,
- text: string,
+ displayed: boolean;
+ text: string;
};
type Selection = {
- from: number,
- to: number,
+ from: number;
+ to: number;
};
export default class Page {
- private constructor(private webdriver: WebDriver) {
- }
+ private constructor(private webdriver: WebDriver) {}
static async currentContext(webdriver: WebDriver): Promise<Page> {
await Page.waitForConsoleLoaded(webdriver);
@@ -26,8 +25,10 @@ export default class Page {
return new Page(webdriver);
}
- async sendKeys(...keys: Array<string|number|Promise<string|number>>): Promise<void> {
- const body = await this.webdriver.findElement(By.css('body'));
+ async sendKeys(
+ ...keys: Array<string | number | Promise<string | number>>
+ ): Promise<void> {
+ const body = await this.webdriver.findElement(By.css("body"));
await body.sendKeys(...keys);
}
@@ -38,17 +39,23 @@ export default class Page {
}
async showConsole(): Promise<Console> {
- const iframe = this.webdriver.findElement(By.css('#vimvixen-console-frame'));
+ const iframe = this.webdriver.findElement(
+ By.css("#vimvixen-console-frame")
+ );
- await this.sendKeys(':');
+ await this.sendKeys(":");
await this.webdriver.wait(until.elementIsVisible(iframe));
await this.webdriver.switchTo().frame(0);
- await this.webdriver.wait(until.elementLocated(By.css('input.vimvixen-console-command-input')));
+ await this.webdriver.wait(
+ until.elementLocated(By.css("input.vimvixen-console-command-input"))
+ );
return new Console(this.webdriver);
}
async getConsole(): Promise<Console> {
- const iframe = this.webdriver.findElement(By.css('#vimvixen-console-frame'));
+ const iframe = this.webdriver.findElement(
+ By.css("#vimvixen-console-frame")
+ );
await this.webdriver.wait(until.elementIsVisible(iframe));
await this.webdriver.switchTo().frame(0);
@@ -68,16 +75,22 @@ export default class Page {
}
pageHeight(): Promise<number> {
- return this.webdriver.executeScript(() => window.document.documentElement.clientHeight);
+ return this.webdriver.executeScript(
+ () => window.document.documentElement.clientHeight
+ );
}
async getSelection(): Promise<Selection> {
- const obj = await this.webdriver.executeScript(`return window.getSelection();`) as any;
+ const obj = (await this.webdriver.executeScript(
+ `return window.getSelection();`
+ )) as any;
return { from: obj.anchorOffset, to: obj.focusOffset };
}
async clearSelection(): Promise<void> {
- await this.webdriver.executeScript(`window.getSelection().removeAllRanges()`);
+ await this.webdriver.executeScript(
+ `window.getSelection().removeAllRanges()`
+ );
}
async switchToTop(): Promise<void> {
@@ -85,15 +98,17 @@ export default class Page {
}
async waitAndGetHints(): Promise<Hint[]> {
- await this.webdriver.wait(until.elementsLocated(By.css('.vimvixen-hint')));
+ await this.webdriver.wait(until.elementsLocated(By.css(".vimvixen-hint")));
- const elements = await this.webdriver.findElements(By.css(`.vimvixen-hint`));
+ const elements = await this.webdriver.findElements(
+ By.css(`.vimvixen-hint`)
+ );
const hints = [];
for (const e of elements) {
- const display = await e.getCssValue('display');
+ const display = await e.getCssValue("display");
const text = await e.getText();
hints.push({
- displayed: display !== 'none',
+ displayed: display !== "none",
text: text,
});
}
@@ -105,7 +120,9 @@ export default class Page {
if (!topFrame) {
return;
}
- await webdriver.wait(until.elementLocated(By.css('iframe.vimvixen-console-frame')));
- await new Promise(resolve => setTimeout(resolve, 100));
+ await webdriver.wait(
+ until.elementLocated(By.css("iframe.vimvixen-console-frame"))
+ );
+ await new Promise((resolve) => setTimeout(resolve, 100));
}
}
diff --git a/e2e/lib/SettingRepository.ts b/e2e/lib/SettingRepository.ts
index 3bdf6d2..87fb50b 100644
--- a/e2e/lib/SettingRepository.ts
+++ b/e2e/lib/SettingRepository.ts
@@ -1,18 +1,15 @@
-import { JSONTextSettings, SettingSource } from '../../src/shared/SettingData';
-import Settings from '../../src/shared/settings/Settings';
+import { JSONTextSettings, SettingSource } from "../../src/shared/SettingData";
+import Settings from "../../src/shared/settings/Settings";
export default class SettingRepository {
- constructor(
- private readonly browser: any,
- ) {
- }
+ constructor(private readonly browser: any) {}
async saveJSON(settings: Settings): Promise<void> {
await this.browser.storage.sync.set({
settings: {
source: SettingSource.JSON,
- json: JSONTextSettings.fromSettings(settings).toJSONText(),
- }
+ json: JSONTextSettings.fromSettings(settings).toJSONText(),
+ },
});
}
}
diff --git a/e2e/lib/TestServer.ts b/e2e/lib/TestServer.ts
index 5b9eee3..e0c711b 100644
--- a/e2e/lib/TestServer.ts
+++ b/e2e/lib/TestServer.ts
@@ -1,6 +1,6 @@
-import * as http from 'http';
-import * as net from 'net'
-import express from 'express';
+import * as http from "http";
+import * as net from "net";
+import express from "express";
type HandlerFunc = (req: express.Request, res: express.Response) => void;
@@ -9,10 +9,7 @@ export default class TestServer {
private app: express.Application;
- constructor(
- private port = 0,
- private address = '127.0.0.1',
- ){
+ constructor(private port = 0, private address = "127.0.0.1") {
this.app = express();
}
@@ -23,30 +20,30 @@ export default class TestServer {
receiveContent(path: string, content: string): TestServer {
this.app.get(path, (_req: express.Request, res: express.Response) => {
- res.status(200).send(content)
+ res.status(200).send(content);
});
return this;
}
-
- url(path = '/'): string {
+
+ url(path = "/"): string {
if (!this.http) {
- throw new Error('http server not started');
+ throw new Error("http server not started");
}
const addr = this.http.address() as net.AddressInfo;
- return `http://${addr.address}:${addr.port}${path}`
+ return `http://${addr.address}:${addr.port}${path}`;
}
- start(): Promise<void> {
+ start(): Promise<void> {
if (this.http) {
- throw new Error('http server already started');
+ throw new Error("http server already started");
}
- this.http = http.createServer(this.app)
+ this.http = http.createServer(this.app);
return new Promise((resolve) => {
this.http!!.listen(this.port, this.address, () => {
resolve();
- })
+ });
});
}
@@ -59,6 +56,6 @@ export default class TestServer {
this.http = undefined;
resolve();
});
- })
+ });
}
}
diff --git a/e2e/lib/clipboard.ts b/e2e/lib/clipboard.ts
index 297b71a..6cc94cb 100644
--- a/e2e/lib/clipboard.ts
+++ b/e2e/lib/clipboard.ts
@@ -1,18 +1,19 @@
-import { spawn } from 'child_process';
+import { spawn } from "child_process";
const readLinux = (): Promise<string> => {
- let stdout = '', stderr = '';
+ let stdout = "",
+ stderr = "";
return new Promise((resolve) => {
- const xsel = spawn('xsel', ['--clipboard', '--output']);
- xsel.stdout.on('data', (data) => {
+ const xsel = spawn("xsel", ["--clipboard", "--output"]);
+ xsel.stdout.on("data", (data) => {
stdout += data;
});
- xsel.stderr.on('data', (data) => {
+ xsel.stderr.on("data", (data) => {
stderr += data;
});
- xsel.on('close', (code) => {
+ xsel.on("close", (code) => {
if (code !== 0) {
- throw new Error(`xsel returns ${code}: ${stderr}`)
+ throw new Error(`xsel returns ${code}: ${stderr}`);
}
resolve(stdout);
});
@@ -20,15 +21,15 @@ const readLinux = (): Promise<string> => {
};
const writeLinux = (data: string): Promise<string> => {
- let stderr = '';
+ let stderr = "";
return new Promise((resolve) => {
- const xsel = spawn('xsel', ['--clipboard', '--input']);
- xsel.stderr.on('data', (data) => {
+ const xsel = spawn("xsel", ["--clipboard", "--input"]);
+ xsel.stderr.on("data", (data) => {
stderr += data;
});
- xsel.on('close', (code) => {
+ xsel.on("close", (code) => {
if (code !== 0) {
- throw new Error(`xsel returns ${code}: ${stderr}`)
+ throw new Error(`xsel returns ${code}: ${stderr}`);
}
resolve();
});
@@ -38,18 +39,19 @@ const writeLinux = (data: string): Promise<string> => {
};
const readDarwin = (): Promise<string> => {
- let stdout = '', stderr = '';
+ let stdout = "",
+ stderr = "";
return new Promise((resolve) => {
- const pbpaste = spawn('pbpaste');
- pbpaste.stdout.on('data', (data) => {
+ const pbpaste = spawn("pbpaste");
+ pbpaste.stdout.on("data", (data) => {
stdout += data;
});
- pbpaste.stderr.on('data', (data) => {
+ pbpaste.stderr.on("data", (data) => {
stderr += data;
});
- pbpaste.on('close', (code) => {
+ pbpaste.on("close", (code) => {
if (code !== 0) {
- throw new Error(`pbpaste returns ${code}: ${stderr}`)
+ throw new Error(`pbpaste returns ${code}: ${stderr}`);
}
resolve(stdout);
});
@@ -57,15 +59,15 @@ const readDarwin = (): Promise<string> => {
};
const writeDarwin = (data: string): Promise<string> => {
- let stderr = '';
+ let stderr = "";
return new Promise((resolve) => {
- const pbcopy = spawn('pbcopy');
- pbcopy.stderr.on('data', (data) => {
+ const pbcopy = spawn("pbcopy");
+ pbcopy.stderr.on("data", (data) => {
stderr += data;
});
- pbcopy.on('close', (code) => {
+ pbcopy.on("close", (code) => {
if (code !== 0) {
- throw new Error(`pbcopy returns ${code}: ${stderr}`)
+ throw new Error(`pbcopy returns ${code}: ${stderr}`);
}
resolve();
});
@@ -83,25 +85,22 @@ class UnsupportedError extends Error {
const read = () => {
switch (process.platform) {
- case 'linux':
- return readLinux();
- case 'darwin':
- return readDarwin();
+ case "linux":
+ return readLinux();
+ case "darwin":
+ return readDarwin();
}
throw new UnsupportedError(process.platform);
-}
+};
const write = (data: string) => {
switch (process.platform) {
- case 'linux':
- return writeLinux(data);
- case 'darwin':
- return writeDarwin(data);
+ case "linux":
+ return writeLinux(data);
+ case "darwin":
+ return writeDarwin(data);
}
throw new UnsupportedError(process.platform);
-}
-
-export {
- read,
- write,
};
+
+export { read, write };
diff --git a/e2e/mark.test.ts b/e2e/mark.test.ts
index c73423b..d7ec26c 100644
--- a/e2e/mark.test.ts
+++ b/e2e/mark.test.ts
@@ -1,102 +1,100 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("mark test", () => {
- const server = new TestServer().receiveContent('/',
- `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`,
+ const server = new TestServer().receiveContent(
+ "/",
+ `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
- await server.start()
+ await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- it('should set a local mark and jump to it', async () => {
+ it("should set a local mark and jump to it", async () => {
const page = await Page.navigateTo(webdriver, server.url());
await page.scrollTo(200, 200);
- await page.sendKeys('m', 'a');
+ await page.sendKeys("m", "a");
await page.scrollTo(500, 500);
- await page.sendKeys('\'', 'a');
+ await page.sendKeys("'", "a");
- await eventually(async() => {
+ await eventually(async () => {
assert.strictEqual(await page.getScrollX(), 200);
assert.strictEqual(await page.getScrollY(), 200);
});
});
- it('should set a global mark and jump to it', async () => {
- let page = await Page.navigateTo(webdriver, server.url('/#first'));
+ it("should set a global mark and jump to it", async () => {
+ let page = await Page.navigateTo(webdriver, server.url("/#first"));
await page.scrollTo(200, 200);
- await page.sendKeys('m', 'A');
+ await page.sendKeys("m", "A");
await page.scrollTo(500, 500);
- await page.sendKeys('\'', 'A');
+ await page.sendKeys("'", "A");
- await eventually(async() => {
+ await eventually(async () => {
assert.strictEqual(await page.getScrollX(), 200);
assert.strictEqual(await page.getScrollY(), 200);
});
- await browser.tabs.create({ url: server.url('/#second') });
+ await browser.tabs.create({ url: server.url("/#second") });
page = await Page.currentContext(webdriver);
- await page.sendKeys('\'', 'A');
+ await page.sendKeys("'", "A");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({ active: true }))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.hash, '#first');
+ assert.strictEqual(url.hash, "#first");
assert.strictEqual(await page.getScrollX(), 200);
assert.strictEqual(await page.getScrollY(), 200);
});
});
- it('set a global mark and creates new tab from gone', async () => {
- let page = await Page.navigateTo(webdriver, server.url('/#first'));
+ it("set a global mark and creates new tab from gone", async () => {
+ let page = await Page.navigateTo(webdriver, server.url("/#first"));
await page.scrollTo(500, 500);
- await page.sendKeys('m', 'A');
+ await page.sendKeys("m", "A");
const tab = (await browser.tabs.query({ active: true }))[0];
- await browser.tabs.create({ url: server.url('/#second') });
+ await browser.tabs.create({ url: server.url("/#second") });
await browser.tabs.remove(tab.id);
let handles: string[];
- await eventually(async() => {
+ await eventually(async () => {
handles = await webdriver.getAllWindowHandles();
assert.strictEqual(handles.length, 2);
});
await webdriver.switchTo().window(handles!![0]);
- page = await Page.navigateTo(webdriver, server.url('/#second'));
- await page.sendKeys('\'', 'A');
+ page = await Page.navigateTo(webdriver, server.url("/#second"));
+ await page.sendKeys("'", "A");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({ active: true }))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.hash, '#first');
+ assert.strictEqual(url.hash, "#first");
});
});
});
-
-
diff --git a/e2e/navigate.test.ts b/e2e/navigate.test.ts
index 37f0520..d0942b6 100644
--- a/e2e/navigate.test.ts
+++ b/e2e/navigate.test.ts
@@ -1,16 +1,16 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import { Options as FirefoxOptions } from 'selenium-webdriver/firefox';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import { Options as FirefoxOptions } from "selenium-webdriver/firefox";
+import Page from "./lib/Page";
const newApp = () => {
const server = new TestServer();
- server.handle('/pagenation-a/:page', (req, res) => {
+ server.handle("/pagenation-a/:page", (req, res) => {
res.status(200).send(`
<!DOCTYPE html>
<html lang="en">
@@ -19,26 +19,33 @@ const newApp = () => {
</html>`);
});
- server.handle('/pagenation-link/:page', (req, res) => {
+ server.handle("/pagenation-link/:page", (req, res) => {
res.status(200).send(`
<!DOCTYPE html>
<html lang="en">
<head>
- <link rel="prev" href="/pagenation-link/${Number(req.params.page) - 1}"></link>
- <link rel="next" href="/pagenation-link/${Number(req.params.page) + 1}"></link>
+ <link rel="prev" href="/pagenation-link/${
+ Number(req.params.page) - 1
+ }"></link>
+ <link rel="next" href="/pagenation-link/${
+ Number(req.params.page) + 1
+ }"></link>
</head>
</html>`);
});
- server.receiveContent('/reload', `
+ server.receiveContent(
+ "/reload",
+ `
<!DOCTYPE html>
<html lang="en">
<head>
<script>window.location.hash = Date.now()</script>
</head>
<body style="width:10000px; height:10000px"></body>
- </html>`);
+ </html>`
+ );
- server.receiveContent('/*', `ok`);
+ server.receiveContent("/*", `ok`);
return server;
};
@@ -49,204 +56,217 @@ describe("navigate test", () => {
let webdriver: WebDriver;
let browser: any;
- before(async() => {
+ before(async () => {
await server.start();
- const opts = (new FirefoxOptions() as any)
- .setPreference('browser.startup.homepage', server.url('/#home'));
- lanthan = await Builder
- .forBrowser('firefox')
+ const opts = (new FirefoxOptions() as any).setPreference(
+ "browser.startup.homepage",
+ server.url("/#home")
+ );
+ lanthan = await Builder.forBrowser("firefox")
.setOptions(opts)
- .spyAddon(path.join(__dirname, '..'))
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
});
- it('should go to parent path without hash by gu', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/a/b/c'));
- await page.sendKeys('g', 'u');
+ it("should go to parent path without hash by gu", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/a/b/c"));
+ await page.sendKeys("g", "u");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, `/a/b/`)
+ assert.strictEqual(url.pathname, `/a/b/`);
});
});
- it('should remove hash by gu', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/a/b/c#hash'));
- await page.sendKeys('g', 'u');
+ it("should remove hash by gu", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/a/b/c#hash"));
+ await page.sendKeys("g", "u");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.hash, '');
- assert.strictEqual(url.pathname, `/a/b/c`)
+ assert.strictEqual(url.hash, "");
+ assert.strictEqual(url.pathname, `/a/b/c`);
});
});
- it('should go to root path by gU', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/a/b/c#hash'));
- await page.sendKeys('g', Key.SHIFT, 'u');
+ it("should go to root path by gU", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/a/b/c#hash"));
+ await page.sendKeys("g", Key.SHIFT, "u");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, `/`)
+ assert.strictEqual(url.pathname, `/`);
});
});
- it('should go back and forward in history by H and L', async () => {
- let page = await Page.navigateTo(webdriver, server.url('/first'));
- await page.navigateTo(server.url('/second'));
- await page.sendKeys(Key.SHIFT, 'h');
+ it("should go back and forward in history by H and L", async () => {
+ let page = await Page.navigateTo(webdriver, server.url("/first"));
+ await page.navigateTo(server.url("/second"));
+ await page.sendKeys(Key.SHIFT, "h");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, `/first`)
+ assert.strictEqual(url.pathname, `/first`);
});
page = await Page.currentContext(webdriver);
- page.sendKeys(Key.SHIFT, 'l');
+ page.sendKeys(Key.SHIFT, "l");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, `/second`)
+ assert.strictEqual(url.pathname, `/second`);
});
});
- it('should go previous and next page in <a> by [[ and ]]', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/pagenation-a/10'));
- await page.sendKeys('[', '[');
+ it("should go previous and next page in <a> by [[ and ]]", async () => {
+ const page = await Page.navigateTo(
+ webdriver,
+ server.url("/pagenation-a/10")
+ );
+ await page.sendKeys("[", "[");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, '/pagenation-a/9');
+ assert.strictEqual(url.pathname, "/pagenation-a/9");
});
});
- it('should go next page in <a> by ]]', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/pagenation-a/10'));
- await page.sendKeys(']', ']');
+ it("should go next page in <a> by ]]", async () => {
+ const page = await Page.navigateTo(
+ webdriver,
+ server.url("/pagenation-a/10")
+ );
+ await page.sendKeys("]", "]");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, '/pagenation-a/11');
+ assert.strictEqual(url.pathname, "/pagenation-a/11");
});
});
- it('should go previous page in <link> by ]]', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/pagenation-link/10'));
- await page.sendKeys('[', '[');
+ it("should go previous page in <link> by ]]", async () => {
+ const page = await Page.navigateTo(
+ webdriver,
+ server.url("/pagenation-link/10")
+ );
+ await page.sendKeys("[", "[");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, '/pagenation-link/9');
+ assert.strictEqual(url.pathname, "/pagenation-link/9");
});
});
- it('should go next page by in <link> by [[', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/pagenation-link/10'));
- await page.sendKeys(']', ']');
+ it("should go next page by in <link> by [[", async () => {
+ const page = await Page.navigateTo(
+ webdriver,
+ server.url("/pagenation-link/10")
+ );
+ await page.sendKeys("]", "]");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.pathname, '/pagenation-link/11');
+ assert.strictEqual(url.pathname, "/pagenation-link/11");
});
});
- it('should go to home page into current tab by gh', async () => {
+ it("should go to home page into current tab by gh", async () => {
const page = await Page.navigateTo(webdriver, server.url());
- await page.sendKeys('g', 'h');
+ await page.sendKeys("g", "h");
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
const url = new URL(tab.url);
- assert.strictEqual(url.hash, '#home');
+ assert.strictEqual(url.hash, "#home");
});
});
- it('should go to home page into current tab by gH', async () => {
+ it("should go to home page into current tab by gH", async () => {
const 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 () => {
const tabs = await browser.tabs.query({});
assert.strictEqual(tabs.length, 2);
- assert.strictEqual(new URL(tabs[0].url).hash, '');
- assert.strictEqual(new URL(tabs[1].url).hash, '#home');
+ assert.strictEqual(new URL(tabs[0].url).hash, "");
+ assert.strictEqual(new URL(tabs[1].url).hash, "#home");
assert.strictEqual(tabs[1].active, true);
});
});
- it('should reload current tab by r', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/reload'));
+ it("should reload current tab by r", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/reload"));
await page.scrollTo(500, 500);
let before: number;
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
- before = Number(new URL(tab.url).hash.split('#')[1]);
+ before = Number(new URL(tab.url).hash.split("#")[1]);
assert.ok(before > 0);
});
- await page.sendKeys('r');
+ await page.sendKeys("r");
let after;
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
- after = Number(new URL(tab.url).hash.split('#')[1]);
+ after = Number(new URL(tab.url).hash.split("#")[1]);
assert.ok(after > before);
});
- await eventually(async() => {
+ await eventually(async () => {
const page = await Page.currentContext(webdriver);
assert.strictEqual(await page.getScrollX(), 500);
});
});
- it('should reload current tab without cache by R', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/reload'));
+ it("should reload current tab without cache by R", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/reload"));
await page.scrollTo(500, 500);
let before: number;
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
- before = Number(new URL(tab.url).hash.split('#')[1]);
+ before = Number(new URL(tab.url).hash.split("#")[1]);
assert.ok(before > 0);
});
- await page.sendKeys(Key.SHIFT, 'R');
+ await page.sendKeys(Key.SHIFT, "R");
let after;
- await eventually(async() => {
+ await eventually(async () => {
const tab = (await browser.tabs.query({}))[0];
- after = Number(new URL(tab.url).hash.split('#')[1]);
+ after = Number(new URL(tab.url).hash.split("#")[1]);
assert.ok(after > before);
});
- await eventually(async() => {
+ await eventually(async () => {
const page = await Page.currentContext(webdriver);
assert.strictEqual(await page.getScrollY(), 0);
});
diff --git a/e2e/options.test.ts b/e2e/options.test.ts
index 91a3dde..64f24be 100644
--- a/e2e/options.test.ts
+++ b/e2e/options.test.ts
@@ -1,25 +1,25 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
-import OptionPage from './lib/OptionPage';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
+import OptionPage from "./lib/OptionPage";
describe("options page", () => {
- const server = new TestServer().receiveContent('/',
- `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`,
+ const server = new TestServer().receiveContent(
+ "/",
+ `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
@@ -27,43 +27,51 @@ describe("options page", () => {
await server.start();
});
- after(async() => {
+ after(async () => {
if (lanthan) {
await lanthan.quit();
}
await server.stop();
});
- beforeEach(async() => {
+ beforeEach(async () => {
const tabs = await browser.tabs.query({});
for (const tab of tabs.slice(1)) {
await browser.tabs.remove(tab.id);
}
});
- it('saves current config on blur', async () => {
+ it("saves current config on blur", async () => {
const page = await OptionPage.open(lanthan);
const jsonPage = await page.asJSONOptionPage();
await jsonPage.updateSettings(`{ "blacklist": [ "https://example.com" ] }`);
- let { settings } = await browser.storage.local.get('settings');
- assert.strictEqual(settings.source, 'json');
- assert.strictEqual(settings.json, '{ "blacklist": [ "https://example.com" ] } ');
+ let { settings } = await browser.storage.local.get("settings");
+ assert.strictEqual(settings.source, "json");
+ assert.strictEqual(
+ settings.json,
+ '{ "blacklist": [ "https://example.com" ] } '
+ );
await jsonPage.updateSettings(`invalid json`);
- settings = (await browser.storage.local.get('settings')).settings;
- assert.strictEqual(settings.source, 'json');
- assert.strictEqual(settings.json, '{ "blacklist": [ "https://example.com" ] } ');
+ settings = (await browser.storage.local.get("settings")).settings;
+ assert.strictEqual(settings.source, "json");
+ assert.strictEqual(
+ settings.json,
+ '{ "blacklist": [ "https://example.com" ] } '
+ );
const message = await jsonPage.getErrorMessage();
- assert.ok(message.startsWith('SyntaxError:'))
+ assert.ok(message.startsWith("SyntaxError:"));
});
- it('updates keymaps without reloading', async () => {
+ it("updates keymaps without reloading", async () => {
const optionPage = await OptionPage.open(lanthan);
const 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: server.url(), active: false });
await new Promise((resolve) => setTimeout(resolve, 100));
@@ -71,11 +79,11 @@ describe("options page", () => {
await webdriver.switchTo().window(handles[1]);
const page = await Page.currentContext(webdriver);
- await page.sendKeys('zz');
+ await page.sendKeys("zz");
- await eventually(async() => {
+ await eventually(async () => {
const y = await page.getScrollY();
assert.strictEqual(y, 640);
});
- })
+ });
});
diff --git a/e2e/options_form.test.ts b/e2e/options_form.test.ts
index 2121348..bb5ebf1 100644
--- a/e2e/options_form.test.ts
+++ b/e2e/options_form.test.ts
@@ -1,17 +1,16 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import { Builder, Lanthan } from 'lanthan';
-import OptionPage from './lib/OptionPage';
+import { Builder, Lanthan } from "lanthan";
+import OptionPage from "./lib/OptionPage";
describe("options form page", () => {
let lanthan: Lanthan;
let browser: any;
- beforeEach(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ beforeEach(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
browser = lanthan.getWebExtBrowser();
@@ -21,109 +20,119 @@ describe("options form page", () => {
}
});
- afterEach(async() => {
+ afterEach(async () => {
if (lanthan) {
await lanthan.quit();
}
});
- it('switch to form settings', async () => {
+ it("switch to form settings", async () => {
const page = await OptionPage.open(lanthan);
await page.switchToForm();
- const { settings } = await browser.storage.local.get('settings');
- assert.strictEqual(settings.source, 'form')
+ const { settings } = await browser.storage.local.get("settings");
+ assert.strictEqual(settings.source, "form");
});
- it('add blacklist item', async () => {
+ it("add blacklist item", async () => {
const page = await OptionPage.open(lanthan);
const forms = await page.switchToForm();
// assert default
- let settings = (await browser.storage.local.get('settings')).settings;
+ let settings = (await browser.storage.local.get("settings")).settings;
assert.deepStrictEqual(settings.form.blacklist, []);
// add blacklist items
await forms.addBlacklist();
- await forms.setBlacklist(0, 'google.com');
+ await forms.setBlacklist(0, "google.com");
- settings = (await browser.storage.local.get('settings')).settings;
- assert.deepStrictEqual(settings.form.blacklist, ['google.com']);
+ settings = (await browser.storage.local.get("settings")).settings;
+ assert.deepStrictEqual(settings.form.blacklist, ["google.com"]);
await forms.addBlacklist();
- await forms.setBlacklist(1, 'yahoo.com');
+ await forms.setBlacklist(1, "yahoo.com");
- settings = (await browser.storage.local.get('settings')).settings;
- assert.deepStrictEqual(settings.form.blacklist, ['google.com', 'yahoo.com']);
+ settings = (await browser.storage.local.get("settings")).settings;
+ assert.deepStrictEqual(settings.form.blacklist, [
+ "google.com",
+ "yahoo.com",
+ ]);
// delete first item
await forms.removeBlackList(0);
- settings = (await browser.storage.local.get('settings')).settings;
- assert.deepStrictEqual(settings.form.blacklist, ['yahoo.com'])
+ settings = (await browser.storage.local.get("settings")).settings;
+ assert.deepStrictEqual(settings.form.blacklist, ["yahoo.com"]);
});
- it('add a partial blacklist item', async () => {
+ it("add a partial blacklist item", async () => {
const page = await OptionPage.open(lanthan);
const forms = await page.switchToForm();
// assert default
- let settings = (await browser.storage.local.get('settings')).settings;
+ let settings = (await browser.storage.local.get("settings")).settings;
assert.deepStrictEqual(settings.form.blacklist, []);
// add blacklist items
await forms.addPartialBlacklist();
- await forms.setPartialBlacklist(0, 'google.com', 'j,k,<C-U>');
+ await forms.setPartialBlacklist(0, "google.com", "j,k,<C-U>");
- settings = (await browser.storage.local.get('settings')).settings;
+ settings = (await browser.storage.local.get("settings")).settings;
assert.deepStrictEqual(settings.form.blacklist, [
- { url: 'google.com', keys: ['j', 'k', '<C-U>'] },
+ { url: "google.com", keys: ["j", "k", "<C-U>"] },
]);
await forms.addPartialBlacklist();
- await forms.setPartialBlacklist(1, 'yahoo.com', 'g,G');
+ await forms.setPartialBlacklist(1, "yahoo.com", "g,G");
- settings = (await browser.storage.local.get('settings')).settings;
+ settings = (await browser.storage.local.get("settings")).settings;
assert.deepStrictEqual(settings.form.blacklist, [
- { url: 'google.com', keys: ['j', 'k', '<C-U>'] },
- { url: 'yahoo.com', keys: ['g', 'G'] },
+ { url: "google.com", keys: ["j", "k", "<C-U>"] },
+ { url: "yahoo.com", keys: ["g", "G"] },
]);
await forms.addBlacklist();
- await forms.setBlacklist(0, 'bing.com');
+ await forms.setBlacklist(0, "bing.com");
- settings = (await browser.storage.local.get('settings')).settings;
+ settings = (await browser.storage.local.get("settings")).settings;
assert.deepStrictEqual(settings.form.blacklist, [
- { url: 'google.com', keys: ['j', 'k', '<C-U>'] },
- { url: 'yahoo.com', keys: ['g', 'G'] },
- 'bing.com',
+ { url: "google.com", keys: ["j", "k", "<C-U>"] },
+ { url: "yahoo.com", keys: ["g", "G"] },
+ "bing.com",
]);
// delete first item
await forms.removePartialBlackList(0);
- settings = (await browser.storage.local.get('settings')).settings;
+ settings = (await browser.storage.local.get("settings")).settings;
assert.deepStrictEqual(settings.form.blacklist, [
- { url: 'yahoo.com', keys: ['g', 'G'] },
- 'bing.com',
- ])
+ { url: "yahoo.com", keys: ["g", "G"] },
+ "bing.com",
+ ]);
});
- it('add search engines', async () => {
+ it("add search engines", async () => {
const page = await OptionPage.open(lanthan);
const forms = await page.switchToForm();
// assert default
- let settings = (await browser.storage.local.get('settings')).settings;
- assert.deepStrictEqual(settings.form.search.default, 'google');
+ let settings = (await browser.storage.local.get("settings")).settings;
+ assert.deepStrictEqual(settings.form.search.default, "google");
// change default
await forms.setDefaultSearchEngine(2);
- settings = (await browser.storage.local.get('settings')).settings;
- assert.deepStrictEqual(settings.form.search.default, 'bing');
+ settings = (await browser.storage.local.get("settings")).settings;
+ assert.deepStrictEqual(settings.form.search.default, "bing");
await forms.addSearchEngine();
- await forms.setSearchEngine(6, 'yippy', 'https://www.yippy.com/search?query={}');
-
- settings = (await browser.storage.local.get('settings')).settings;
- assert.deepStrictEqual(settings.form.search.engines[6], ['yippy', 'https://www.yippy.com/search?query={}']);
+ await forms.setSearchEngine(
+ 6,
+ "yippy",
+ "https://www.yippy.com/search?query={}"
+ );
+
+ settings = (await browser.storage.local.get("settings")).settings;
+ assert.deepStrictEqual(settings.form.search.engines[6], [
+ "yippy",
+ "https://www.yippy.com/search?query={}",
+ ]);
});
});
diff --git a/e2e/partial_blacklist.test.ts b/e2e/partial_blacklist.test.ts
index cb66549..8bc1c0e 100644
--- a/e2e/partial_blacklist.test.ts
+++ b/e2e/partial_blacklist.test.ts
@@ -1,57 +1,57 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
-import Settings from '../src/shared/settings/Settings';
-import SettingRepository from './lib/SettingRepository';
+import TestServer from "./lib/TestServer";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
+import Settings from "../src/shared/settings/Settings";
+import SettingRepository from "./lib/SettingRepository";
describe("partial blacklist test", () => {
- const server = new TestServer().receiveContent('/*',
- `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`,
+ const server = new TestServer().receiveContent(
+ "/*",
+ `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
- const url = server.url().replace('http://', '');
- await new SettingRepository(browser).saveJSON(Settings.fromJSON({
- keymaps: {
- j: { type: 'scroll.vertically', count: 1 },
- k: { type: 'scroll.vertically', count: -1 },
- },
- blacklist: [
- { 'url': url, 'keys': ['k'] }
- ]
- }));
+ const url = server.url().replace("http://", "");
+ await new SettingRepository(browser).saveJSON(
+ Settings.fromJSON({
+ keymaps: {
+ j: { type: "scroll.vertically", count: 1 },
+ k: { type: "scroll.vertically", count: -1 },
+ },
+ blacklist: [{ url: url, keys: ["k"] }],
+ })
+ );
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- it('should disable keys in the partial blacklist', async () => {
- const page = await Page.navigateTo(webdriver, server.url('/'));
+ it("should disable keys in the partial blacklist", async () => {
+ const page = await Page.navigateTo(webdriver, server.url("/"));
- await page.sendKeys('j');
+ await page.sendKeys("j");
let scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 64);
- await page.sendKeys('k');
+ await page.sendKeys("k");
scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 64);
});
diff --git a/e2e/repeat.test.ts b/e2e/repeat.test.ts
index 7c8b5e2..04d1331 100644
--- a/e2e/repeat.test.ts
+++ b/e2e/repeat.test.ts
@@ -1,73 +1,72 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("tab test", () => {
- const server = new TestServer().receiveContent('/*', 'ok');
+ const server = new TestServer().receiveContent("/*", "ok");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- it('repeats last command', async () => {
+ it("repeats last command", async () => {
let page = await Page.navigateTo(webdriver, server.url());
const console = await page.showConsole();
- await console.execCommand(`tabopen ${server.url('/newtab')}`);
+ await console.execCommand(`tabopen ${server.url("/newtab")}`);
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({ url: `*://*/newtab` });
assert.strictEqual(current.length, 1);
});
page = await Page.currentContext(webdriver);
- await page.sendKeys('.');
+ await page.sendKeys(".");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({ url: `*://*/newtab` });
assert.strictEqual(current.length, 2);
});
});
- it('repeats last operation', async () => {
+ it("repeats last operation", async () => {
for (let i = 1; i < 5; ++i) {
- await browser.tabs.create({ url: server.url('/#' + i) });
+ await browser.tabs.create({ url: server.url("/#" + i) });
}
const before = await browser.tabs.query({});
let page = await Page.currentContext(webdriver);
- await page.sendKeys('d');
+ await page.sendKeys("d");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({});
- assert.strictEqual(current.length, before.length - 1);
+ assert.strictEqual(current.length, before.length - 1);
});
await browser.tabs.update(before[2].id, { active: true });
page = await Page.currentContext(webdriver);
- await page.sendKeys('.');
+ await page.sendKeys(".");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({});
assert.strictEqual(current.length, before.length - 2);
});
diff --git a/e2e/repeat_n_times.test.ts b/e2e/repeat_n_times.test.ts
index a646112..303aa34 100644
--- a/e2e/repeat_n_times.test.ts
+++ b/e2e/repeat_n_times.test.ts
@@ -1,24 +1,24 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("tab test", () => {
- const server = new TestServer().receiveContent('/',
- `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`,
+ const server = new TestServer().receiveContent(
+ "/",
+ `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
@@ -27,32 +27,35 @@ describe("tab test", () => {
browser = browser;
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- it('repeats scroll 3-times', async () => {
+ it("repeats scroll 3-times", async () => {
const page = await Page.navigateTo(webdriver, server.url());
- await page.sendKeys('3', 'j');
+ await page.sendKeys("3", "j");
const scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 64 * 3);
});
- it('repeats tab deletion 3-times', async () => {
- const win = await browser.windows.create({ url: server.url('/#0') });
+ it("repeats tab deletion 3-times", async () => {
+ const win = await browser.windows.create({ url: server.url("/#0") });
for (let i = 1; i < 5; ++i) {
- await browser.tabs.create({ url: server.url('/#' + i), windowId: win.id });
- await webdriver.navigate().to(server.url('/#' + i));
+ await browser.tabs.create({
+ url: server.url("/#" + i),
+ windowId: win.id,
+ });
+ await webdriver.navigate().to(server.url("/#" + i));
}
const page = await Page.navigateTo(webdriver, server.url());
- await page.sendKeys('3', 'd');
+ await page.sendKeys("3", "d");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, 2);
});
diff --git a/e2e/scroll.test.ts b/e2e/scroll.test.ts
index 9b39a2e..277bb2e 100644
--- a/e2e/scroll.test.ts
+++ b/e2e/scroll.test.ts
@@ -1,134 +1,141 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("scroll test", () => {
- const server = new TestServer().receiveContent('/',
- `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`,
+ const server = new TestServer().receiveContent(
+ "/",
+ `<!DOCTYPE html><html lang="en"><body style="width:10000px; height:10000px"></body></html>`
);
let lanthan: Lanthan;
let webdriver: WebDriver;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
+ beforeEach(async () => {
await webdriver.navigate().to(server.url());
page = await Page.currentContext(webdriver);
});
-
- it('scrolls up by j', async () => {
- await page.sendKeys('j');
+ it("scrolls up by j", async () => {
+ await page.sendKeys("j");
const scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 64);
});
- it('scrolls down by k', async () => {
+ it("scrolls down by k", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 200));
- await page.sendKeys('k');
+ await page.sendKeys("k");
const scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 136);
});
- it('scrolls left by h', async () => {
+ it("scrolls left by h", async () => {
await webdriver.executeScript(() => window.scrollTo(100, 100));
- await page.sendKeys('h');
+ await page.sendKeys("h");
- const pageXOffset = await webdriver.executeScript(() => window.pageXOffset) as number;
+ const pageXOffset = (await webdriver.executeScript(
+ () => window.pageXOffset
+ )) as number;
assert.strictEqual(pageXOffset, 36);
});
- it('scrolls left by l', async () => {
+ it("scrolls left by l", async () => {
await webdriver.executeScript(() => window.scrollTo(100, 100));
- await page.sendKeys('l');
+ await page.sendKeys("l");
- const pageXOffset = await webdriver.executeScript(() => window.pageXOffset) as number;
+ const pageXOffset = (await webdriver.executeScript(
+ () => window.pageXOffset
+ )) as number;
assert.strictEqual(pageXOffset, 164);
});
- it('scrolls top by gg', async () => {
+ it("scrolls top by gg", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 100));
- await page.sendKeys('g', 'g');
+ await page.sendKeys("g", "g");
const scrollY = await page.getScrollY();
assert.strictEqual(scrollY, 0);
});
- it('scrolls bottom by G', async () => {
+ it("scrolls bottom by G", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 100));
- await page.sendKeys(Key.SHIFT, 'g');
+ await page.sendKeys(Key.SHIFT, "g");
const scrollY = await page.getScrollY();
assert.ok(scrollY > 5000);
});
- it('scrolls bottom by 0', async () => {
+ it("scrolls bottom by 0", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 100));
- await page.sendKeys(Key.SHIFT, '0');
+ await page.sendKeys(Key.SHIFT, "0");
- const pageXOffset = await webdriver.executeScript(() => window.pageXOffset) as number;
+ const pageXOffset = (await webdriver.executeScript(
+ () => window.pageXOffset
+ )) as number;
assert.ok(pageXOffset === 0);
});
- it('scrolls bottom by $', async () => {
+ it("scrolls bottom by $", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 100));
- await page.sendKeys(Key.SHIFT, '$');
+ await page.sendKeys(Key.SHIFT, "$");
- const pageXOffset = await webdriver.executeScript(() => window.pageXOffset) as number;
+ const pageXOffset = (await webdriver.executeScript(
+ () => window.pageXOffset
+ )) as number;
assert.ok(pageXOffset > 5000);
});
- it('scrolls bottom by <C-U>', async () => {
+ it("scrolls bottom by <C-U>", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 1000));
- await page.sendKeys(Key.CONTROL, 'u');
+ await page.sendKeys(Key.CONTROL, "u");
const pageHeight = await page.pageHeight();
const scrollY = await page.getScrollY();
assert.ok(Math.abs(scrollY - (1000 - Math.floor(pageHeight / 2))) < 5);
});
- it('scrolls bottom by <C-D>', async () => {
+ it("scrolls bottom by <C-D>", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 1000));
- await page.sendKeys(Key.CONTROL, 'd');
+ await page.sendKeys(Key.CONTROL, "d");
const pageHeight = await page.pageHeight();
const scrollY = await page.getScrollY();
assert.ok(Math.abs(scrollY - (1000 + Math.floor(pageHeight / 2))) < 5);
});
- it('scrolls bottom by <C-B>', async () => {
+ it("scrolls bottom by <C-B>", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 1000));
- await page.sendKeys(Key.CONTROL, 'b');
+ await page.sendKeys(Key.CONTROL, "b");
const pageHeight = await page.pageHeight();
const scrollY = await page.getScrollY();
assert.ok(Math.abs(scrollY - (1000 - pageHeight)) < 5);
});
- it('scrolls bottom by <C-F>', async () => {
+ it("scrolls bottom by <C-F>", async () => {
await webdriver.executeScript(() => window.scrollTo(0, 1000));
- await page.sendKeys(Key.CONTROL, 'f');
+ await page.sendKeys(Key.CONTROL, "f");
const pageHeight = await page.pageHeight();
const scrollY = await page.getScrollY();
diff --git a/e2e/tab.test.ts b/e2e/tab.test.ts
index 6a8e815..98ec9f8 100644
--- a/e2e/tab.test.ts
+++ b/e2e/tab.test.ts
@@ -1,57 +1,59 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import TestServer from './lib/TestServer';
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver, Key } from 'selenium-webdriver';
-import Page from './lib/Page';
+import TestServer from "./lib/TestServer";
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver, Key } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("tab test", () => {
- const server = new TestServer().receiveContent('/*', 'ok');
+ const server = new TestServer().receiveContent("/*", "ok");
let lanthan: Lanthan;
let webdriver: WebDriver;
let browser: any;
let win: any;
let tabs: any[];
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
await server.start();
});
- after(async() => {
+ after(async () => {
await server.stop();
if (lanthan) {
await lanthan.quit();
}
});
- beforeEach(async() => {
- win = await browser.windows.create({ url: server.url('/#0') });
+ beforeEach(async () => {
+ win = await browser.windows.create({ url: server.url("/#0") });
for (let i = 1; i < 5; ++i) {
- await browser.tabs.create({ url: server.url('/#' + i), windowId: win.id });
- await webdriver.navigate().to(server.url('/#' + i));
+ await browser.tabs.create({
+ url: server.url("/#" + i),
+ windowId: win.id,
+ });
+ await webdriver.navigate().to(server.url("/#" + i));
}
tabs = await browser.tabs.query({ windowId: win.id });
tabs.sort((t1: any, t2: any) => t1.index - t2.index);
});
- afterEach(async() => {
+ afterEach(async () => {
await browser.windows.remove(win.id);
});
- it('deletes tab and selects right by d', async () => {
+ it("deletes tab and selects right by d", async () => {
await browser.tabs.update(tabs[3].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('d');
+ await page.sendKeys("d");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, tabs.length - 1);
assert.strictEqual(current[3].active, true);
@@ -59,34 +61,34 @@ describe("tab test", () => {
});
});
- it('deletes tab and selects left by D', async () => {
+ it("deletes tab and selects left by D", async () => {
await browser.tabs.update(tabs[3].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys(Key.SHIFT, 'D');
+ await page.sendKeys(Key.SHIFT, "D");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, tabs.length - 1);
assert.strictEqual(current[2].active, true);
assert.strictEqual(current[2].id, tabs[2].id);
- })
+ });
});
- it('deletes all tabs to the right by x$', async () => {
+ it("deletes all tabs to the right by x$", async () => {
await browser.tabs.update(tabs[1].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('x', '$');
+ await page.sendKeys("x", "$");
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, 2);
});
- it('duplicates tab by zd', async () => {
+ it("duplicates tab by zd", async () => {
await browser.tabs.update(tabs[0].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('z', 'd');
+ await page.sendKeys("z", "d");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({ windowId: win.id });
current.sort((t1: any, t2: any) => t1.index - t2.index);
assert.strictEqual(current.length, tabs.length + 1);
@@ -94,118 +96,121 @@ describe("tab test", () => {
});
});
- it('makes pinned by zp', async () => {
+ it("makes pinned by zp", async () => {
await browser.tabs.update(tabs[0].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('z', 'p');
+ await page.sendKeys("z", "p");
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current[0].pinned, true);
});
- it('selects previous tab by K', async () => {
+ it("selects previous tab by K", async () => {
await browser.tabs.update(tabs[2].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys(Key.SHIFT, 'K');
+ await page.sendKeys(Key.SHIFT, "K");
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current[1].active, true);
});
- it('selects previous tab by K rotatory', async () => {
+ it("selects previous tab by K rotatory", async () => {
await browser.tabs.update(tabs[0].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys(Key.SHIFT, 'K');
+ await page.sendKeys(Key.SHIFT, "K");
const current = await browser.tabs.query({ windowId: win.id });
- assert.strictEqual(current[current.length - 1].active, true)
+ assert.strictEqual(current[current.length - 1].active, true);
});
- it('selects next tab by J', async () => {
+ it("selects next tab by J", async () => {
await browser.tabs.update(tabs[2].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys(Key.SHIFT, 'J');
+ await page.sendKeys(Key.SHIFT, "J");
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current[3].active, true);
});
- it('selects previous tab by J rotatory', async () => {
+ it("selects previous tab by J rotatory", async () => {
await browser.tabs.update(tabs[tabs.length - 1].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys(Key.SHIFT, 'J');
+ await page.sendKeys(Key.SHIFT, "J");
const current = await browser.tabs.query({ windowId: win.id });
- assert.strictEqual(current[0].active, true)
+ assert.strictEqual(current[0].active, true);
});
- it('selects first tab by g0', async () => {
+ it("selects first tab by g0", async () => {
await browser.tabs.update(tabs[2].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('g', '0');
+ await page.sendKeys("g", "0");
const current = await browser.tabs.query({ windowId: win.id });
- assert.strictEqual(current[0].active, true)
+ assert.strictEqual(current[0].active, true);
});
- it('selects last tab by g$', async () => {
+ it("selects last tab by g$", async () => {
await browser.tabs.update(tabs[2].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('g', '$');
+ await page.sendKeys("g", "$");
const current = await browser.tabs.query({ windowId: win.id });
- assert.strictEqual(current[current.length - 1].active, true)
+ assert.strictEqual(current[current.length - 1].active, true);
});
- it('selects last selected tab by <C-6>', async () => {
+ it("selects last selected tab by <C-6>", async () => {
await browser.tabs.update(tabs[1].id, { active: true });
await browser.tabs.update(tabs[4].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys(Key.CONTROL, '6');
+ await page.sendKeys(Key.CONTROL, "6");
const current = await browser.tabs.query({ windowId: win.id });
- assert.strictEqual(current[1].active, true)
+ assert.strictEqual(current[1].active, true);
});
// browser.sessions.getRecentlyClosed() sometime throws "An unexpected error occurred"
// This might be a bug in Firefox.
- it.skip('reopen tab by u', async () => {
+ it.skip("reopen tab by u", async () => {
await browser.tabs.remove(tabs[1].id);
const page = await Page.currentContext(webdriver);
- await page.sendKeys('u');
+ await page.sendKeys("u");
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, tabs.length);
});
- it('does not delete pinned tab by d', async () => {
+ it("does not delete pinned tab by d", async () => {
await browser.tabs.update(tabs[0].id, { active: true, pinned: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('d');
+ await page.sendKeys("d");
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, tabs.length);
});
- it('deletes pinned tab by !d', async () => {
+ it("deletes pinned tab by !d", async () => {
await browser.tabs.update(tabs[0].id, { active: true, pinned: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('!', 'd');
+ await page.sendKeys("!", "d");
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, tabs.length - 1);
});
- it('opens view-source by gf', async () => {
+ it("opens view-source by gf", async () => {
await browser.tabs.update(tabs[0].id, { active: true });
const page = await Page.currentContext(webdriver);
- await page.sendKeys('g', 'f');
+ await page.sendKeys("g", "f");
- await eventually(async() => {
+ await eventually(async () => {
const current = await browser.tabs.query({ windowId: win.id });
assert.strictEqual(current.length, tabs.length + 1);
- assert.strictEqual(current[current.length - 1].url, `view-source:${server.url('/#0')}`);
+ assert.strictEqual(
+ current[current.length - 1].url,
+ `view-source:${server.url("/#0")}`
+ );
});
});
});
diff --git a/e2e/zoom.test.ts b/e2e/zoom.test.ts
index d089097..5e21774 100644
--- a/e2e/zoom.test.ts
+++ b/e2e/zoom.test.ts
@@ -1,10 +1,10 @@
-import * as path from 'path';
-import * as assert from 'assert';
+import * as path from "path";
+import * as assert from "assert";
-import eventually from './eventually';
-import { Builder, Lanthan } from 'lanthan';
-import { WebDriver } from 'selenium-webdriver';
-import Page from './lib/Page';
+import eventually from "./eventually";
+import { Builder, Lanthan } from "lanthan";
+import { WebDriver } from "selenium-webdriver";
+import Page from "./lib/Page";
describe("zoom test", () => {
let lanthan: Lanthan;
@@ -13,10 +13,9 @@ describe("zoom test", () => {
let tab: any;
let page: Page;
- before(async() => {
- lanthan = await Builder
- .forBrowser('firefox')
- .spyAddon(path.join(__dirname, '..'))
+ before(async () => {
+ lanthan = await Builder.forBrowser("firefox")
+ .spyAddon(path.join(__dirname, ".."))
.build();
webdriver = lanthan.getWebDriver();
browser = lanthan.getWebExtBrowser();
@@ -24,42 +23,41 @@ describe("zoom test", () => {
page = await Page.currentContext(webdriver);
});
- after(async() => {
+ after(async () => {
await lanthan.quit();
});
- beforeEach(async() => {
- await webdriver.navigate().to('about:blank');
+ beforeEach(async () => {
+ await webdriver.navigate().to("about:blank");
});
- it('should zoom in by zi', async () => {
+ it("should zoom in by zi", async () => {
const before = await browser.tabs.getZoom(tab.id);
- await page.sendKeys('zi');
+ await page.sendKeys("zi");
- await eventually(async() => {
+ await eventually(async () => {
const actual = await browser.tabs.getZoom(tab.id);
assert.ok(before < actual);
});
});
- it('should zoom out by zo', async () => {
+ it("should zoom out by zo", async () => {
const before = await browser.tabs.getZoom(tab.id);
- await page.sendKeys('zo');
+ await page.sendKeys("zo");
- await eventually(async() => {
+ await eventually(async () => {
const actual = await browser.tabs.getZoom(tab.id);
assert.ok(before > actual);
});
});
- it('should reset zoom by zz', async () => {
+ it("should reset zoom by zz", async () => {
await browser.tabs.setZoom(tab.id, 2);
- await page.sendKeys('zz');
+ await page.sendKeys("zz");
- await eventually(async() => {
+ await eventually(async () => {
const actual = await browser.tabs.getZoom(tab.id);
assert.strictEqual(actual, 1);
});
});
});
-