diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-05-14 20:57:39 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-14 20:57:39 +0900 |
commit | e9a6fb85583a891cba2683f2abb05f34e13bff43 (patch) | |
tree | f9879006fc6475a1cf9fd98bffd1b9541f5aa4c9 /e2e/contents | |
parent | c6c885345e212bedc2723e9105488d3e5fe9f8be (diff) | |
parent | a8d3de42434153d90eebdcceb536ce0537c9167f (diff) |
Merge pull request #392 from ueokande/e2e-testing
Add e2e test cases
Diffstat (limited to 'e2e/contents')
-rw-r--r-- | e2e/contents/follow.test.js | 121 | ||||
-rw-r--r-- | e2e/contents/navigate.test.js | 156 | ||||
-rw-r--r-- | e2e/contents/scroll.test.js | 5 | ||||
-rw-r--r-- | e2e/contents/tab.test.js | 104 | ||||
-rw-r--r-- | e2e/contents/zoom.test.js | 7 |
5 files changed, 358 insertions, 35 deletions
diff --git a/e2e/contents/follow.test.js b/e2e/contents/follow.test.js new file mode 100644 index 0000000..f852dc0 --- /dev/null +++ b/e2e/contents/follow.test.js @@ -0,0 +1,121 @@ +import * as windows from "../ambassador/src/client/windows"; +import * as tabs from "../ambassador/src/client/tabs"; +import * as keys from "../ambassador/src/client/keys"; +import { CLIENT_URL } from '../web-server/url'; + +describe("tab test", () => { + let targetWindow; + + beforeEach(() => { + return windows.create(CLIENT_URL).then((win) => { + targetWindow = win; + }); + }); + + afterEach(() => { + return windows.remove(targetWindow.id); + }); + + it('follows link by `f`', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'f'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return keys.press(targetTab.id, 'a'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/follow#a'); + }); + }); + + it('follows link into new tab by `F`', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'F', { shiftKey: true }); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return keys.press(targetTab.id, 'a'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 500) }); + }).then(() => { + return windows.get(targetWindow.id); + }).then((win) => { + let urls = win.tabs.map(t => t.url); + expect(urls).to.have.lengthOf(3); + expect(urls).to.include(CLIENT_URL + '/'); + expect(urls).to.include(CLIENT_URL + '/follow'); + expect(urls).to.include(CLIENT_URL + '/follow#a'); + }); + }); + + it('follows link with target=_blank into new tab by `f`', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'f'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return keys.press(targetTab.id, 'b'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 500) }); + }).then(() => { + return windows.get(targetWindow.id); + }).then((win) => { + let urls = win.tabs.map(t => t.url); + expect(urls).to.have.lengthOf(3); + expect(urls).to.include(CLIENT_URL + '/'); + expect(urls).to.include(CLIENT_URL + '/follow'); + expect(urls).to.include(CLIENT_URL + '/follow#external'); + }); + }); + + it('follows link with target=_blank into new tab by `F`', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'F', { shiftKey: true }); + }).then(() => { + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return keys.press(targetTab.id, 'b'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 500) }); + }).then(() => { + return windows.get(targetWindow.id); + }).then((win) => { + let urls = win.tabs.map(t => t.url); + expect(urls).to.have.lengthOf(3); + expect(urls).to.include(CLIENT_URL + '/'); + expect(urls).to.include(CLIENT_URL + '/follow'); + expect(urls).to.include(CLIENT_URL + '/follow#external'); + }); + }); + + it('follows area by `F`', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/follow').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'f'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return keys.press(targetTab.id, 'c'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/follow#area'); + }); + }); +}); diff --git a/e2e/contents/navigate.test.js b/e2e/contents/navigate.test.js new file mode 100644 index 0000000..b3f5f32 --- /dev/null +++ b/e2e/contents/navigate.test.js @@ -0,0 +1,156 @@ +import * as windows from "../ambassador/src/client/windows"; +import * as tabs from "../ambassador/src/client/tabs"; +import * as keys from "../ambassador/src/client/keys"; +import * as scrolls from "../ambassador/src/client/scrolls"; +import { CLIENT_URL } from '../web-server/url'; + +describe("navigate test", () => { + let targetWindow; + + before(() => { + return windows.create().then((win) => { + targetWindow = win; + return tabs.create(targetWindow.id, CLIENT_URL); + }); + }); + + after(() => { + return windows.remove(targetWindow.id); + }); + + it('goes to parent', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'g'); + }).then(() => { + return keys.press(targetTab.id, 'u'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/a/b/'); + }); + }); + + it('removes hash', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c#navigate').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'g'); + }).then(() => { + return keys.press(targetTab.id, 'u'); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/a/b/c#'); + }); + }); + + it('goes to root', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/a/b/c').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'g'); + }).then(() => { + return keys.press(targetTab.id, 'U', { shiftKey: true }); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/'); + }); + }); + + it('goes back and forward in history', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/#navigate').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, 'g'); + }).then(() => { + return keys.press(targetTab.id, 'u'); + }).then(() => { + return keys.press(targetTab.id, 'H', { shiftKey: true }); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url, 'go back in history').to.be.equal(CLIENT_URL + '/#navigate'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return keys.press(targetTab.id, 'L', { shiftKey: true }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url, 'go next in history').to.be.equal(CLIENT_URL + '/#'); + }); + }); + + it('goes previous page by <a>', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/a-pagenation?page=10').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, '['); + }).then(() => { + return keys.press(targetTab.id, '['); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/a-pagenation?page=9'); + }); + }) + + it('goes next page by <a>', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/a-pagenation?page=10').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, ']'); + }).then(() => { + return keys.press(targetTab.id, ']'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/a-pagenation?page=11'); + }); + }) + + it('goes previous page by <link>', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/link-pagenation?page=10').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, '['); + }).then(() => { + return keys.press(targetTab.id, '['); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/link-pagenation?page=9'); + }); + }) + + it('goes next page by <link>', () => { + let targetTab; + return tabs.create(targetWindow.id, CLIENT_URL + '/link-pagenation?page=10').then((tab) => { + targetTab = tab; + return keys.press(targetTab.id, ']'); + }).then(() => { + return keys.press(targetTab.id, ']'); + }).then(() => { + return new Promise(resolve => { setTimeout(() => resolve(), 10) }); + }).then(() => { + return tabs.get(targetTab.id); + }).then((tab) => { + expect(tab.url).to.be.equal(CLIENT_URL + '/link-pagenation?page=11'); + }); + }) +}); diff --git a/e2e/contents/scroll.test.js b/e2e/contents/scroll.test.js index 0a896b3..9410343 100644 --- a/e2e/contents/scroll.test.js +++ b/e2e/contents/scroll.test.js @@ -2,8 +2,7 @@ import * as windows from "../ambassador/src/client/windows"; import * as tabs from "../ambassador/src/client/tabs"; import * as keys from "../ambassador/src/client/keys"; import * as scrolls from "../ambassador/src/client/scrolls"; - -const SERVER_URL = "localhost:11111"; +import { CLIENT_URL } from '../web-server/url'; describe("scroll test", () => { let targetWindow; @@ -12,7 +11,7 @@ describe("scroll test", () => { before(() => { return windows.create().then((win) => { targetWindow = win; - return tabs.create(targetWindow.id, SERVER_URL); + return tabs.create(targetWindow.id, CLIENT_URL + '/scroll'); }).then((tab) => { targetTab = tab; }); diff --git a/e2e/contents/tab.test.js b/e2e/contents/tab.test.js index 880deb8..72479b9 100644 --- a/e2e/contents/tab.test.js +++ b/e2e/contents/tab.test.js @@ -1,14 +1,13 @@ import * as windows from "../ambassador/src/client/windows"; import * as tabs from "../ambassador/src/client/tabs"; import * as keys from "../ambassador/src/client/keys"; - -const SERVER_URL = "localhost:11111/"; +import { CLIENT_URL } from '../web-server/url'; describe("tab test", () => { let targetWindow; beforeEach(() => { - return windows.create(SERVER_URL).then((win) => { + return windows.create(CLIENT_URL).then((win) => { targetWindow = win; }); }); @@ -20,7 +19,7 @@ describe("tab test", () => { it('deletes tab by d', () => { let before; let targetTab; - return tabs.create(targetWindow.id, SERVER_URL).then((tab) => { + return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => { targetTab = tab; return windows.get(targetWindow.id); }).then((win) => { @@ -36,7 +35,7 @@ describe("tab test", () => { it('duplicates tab by zd', () => { let before; let targetTab; - return tabs.create(targetWindow.id, SERVER_URL).then((tab) => { + return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => { targetTab = tab; return windows.get(targetWindow.id) }).then((win) => {; @@ -54,7 +53,7 @@ describe("tab test", () => { it('makes pinned by zp', () => { let before; let targetTab; - return tabs.create(targetWindow.id, SERVER_URL).then((tab) => { + return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => { targetTab = tab; return windows.get(targetWindow.id) }).then((win) => {; @@ -71,11 +70,11 @@ describe("tab test", () => { it('selects previous tab by K', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1') + return tabs.create(targetWindow.id, CLIENT_URL + '#1') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#2') + return tabs.create(targetWindow.id, CLIENT_URL + '#2') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#3'); + return tabs.create(targetWindow.id, CLIENT_URL + '#3'); }).then(() => { return tabs.selectAt(targetWindow.id, 2); }).then((tab) => { @@ -89,11 +88,11 @@ describe("tab test", () => { it('selects previous tab by K rotatory', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1') + return tabs.create(targetWindow.id, CLIENT_URL + '#1') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#2') + return tabs.create(targetWindow.id, CLIENT_URL + '#2') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#3'); + return tabs.create(targetWindow.id, CLIENT_URL + '#3'); }).then(() => { return tabs.selectAt(targetWindow.id, 0); }).then((tab) => { @@ -107,11 +106,11 @@ describe("tab test", () => { it('selects next tab by J', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1') + return tabs.create(targetWindow.id, CLIENT_URL + '#1') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#2') + return tabs.create(targetWindow.id, CLIENT_URL + '#2') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#3'); + return tabs.create(targetWindow.id, CLIENT_URL + '#3'); }).then(() => { return tabs.selectAt(targetWindow.id, 2); }).then((tab) => { @@ -125,11 +124,11 @@ describe("tab test", () => { it('selects previous tab by J rotatory', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1') + return tabs.create(targetWindow.id, CLIENT_URL + '#1') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#2') + return tabs.create(targetWindow.id, CLIENT_URL + '#2') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#3'); + return tabs.create(targetWindow.id, CLIENT_URL + '#3'); }).then(() => { return tabs.selectAt(targetWindow.id, 3); }).then((tab) => { @@ -143,11 +142,11 @@ describe("tab test", () => { it('selects first tab by g0', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1') + return tabs.create(targetWindow.id, CLIENT_URL + '#1') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#2') + return tabs.create(targetWindow.id, CLIENT_URL + '#2') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#3'); + return tabs.create(targetWindow.id, CLIENT_URL + '#3'); }).then(() => { return tabs.selectAt(targetWindow.id, 2); }).then((tab) => { @@ -163,11 +162,11 @@ describe("tab test", () => { it('selects last tab by g$', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1') + return tabs.create(targetWindow.id, CLIENT_URL + '#1') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#2') + return tabs.create(targetWindow.id, CLIENT_URL + '#2') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#3'); + return tabs.create(targetWindow.id, CLIENT_URL + '#3'); }).then(() => { return tabs.selectAt(targetWindow.id, 2); }).then((tab) => { @@ -183,11 +182,11 @@ describe("tab test", () => { it('selects last selected tab by <C-6>', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1') + return tabs.create(targetWindow.id, CLIENT_URL + '#1') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#2') + return tabs.create(targetWindow.id, CLIENT_URL + '#2') }).then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#3'); + return tabs.create(targetWindow.id, CLIENT_URL + '#3'); }).then(() => { return tabs.selectAt(targetWindow.id, 1); }).then(() => { @@ -203,13 +202,62 @@ describe("tab test", () => { it('deletes tab by d', () => { return Promise.resolve().then(() => { - return tabs.create(targetWindow.id, SERVER_URL + '#1'); + return tabs.create(targetWindow.id, CLIENT_URL + '#1'); + }).then((tab) => { + return keys.press(tab.id, 'd'); + }).then(() => { + return windows.get(targetWindow.id); + }).then((win) => { + expect(win.tabs).to.have.lengthOf(1); + }); + }); + + it('reopen tab by u', () => { + return Promise.resolve().then(() => { + return tabs.create(targetWindow.id, CLIENT_URL + '#1'); }).then((tab) => { return keys.press(tab.id, 'd'); }).then(() => { return windows.get(targetWindow.id); }).then((win) => { expect(win.tabs).to.have.lengthOf(1); + return keys.press(win.tabs[0].id, 'u'); + }).then(() => { + return windows.get(targetWindow.id); + }).then((win) => { + expect(win.tabs).to.have.lengthOf(2); + }); + }); + + it('does not delete pinned tab by d', () => { + return Promise.resolve().then(() => { + return tabs.create(targetWindow.id, CLIENT_URL + '#1'); + }).then((tab) => { + return tabs.update(tab.id, { pinned: true }); + }).then((tab) => { + return keys.press(tab.id, 'd'); + }).then(() => { + return windows.get(targetWindow.id); + }).then((win) => { + expect(win.tabs).to.have.lengthOf(2); + }); + }); + + it('deletes pinned tab by !d', () => { + let target; + return Promise.resolve().then(() => { + return tabs.create(targetWindow.id, CLIENT_URL + '#1'); + }).then((tab) => { + return tabs.update(tab.id, { pinned: true }); + }).then((tab) => { + target = tab; + return keys.press(target.id, '!'); + }).then(() => { + return keys.press(target.id, 'd'); + }).then(() => { + return windows.get(targetWindow.id); + }).then((win) => { + expect(win.tabs).to.have.lengthOf(1); }); }); }); diff --git a/e2e/contents/zoom.test.js b/e2e/contents/zoom.test.js index 10b7cca..c7efc93 100644 --- a/e2e/contents/zoom.test.js +++ b/e2e/contents/zoom.test.js @@ -1,15 +1,14 @@ import * as windows from "../ambassador/src/client/windows"; import * as tabs from "../ambassador/src/client/tabs"; import * as keys from "../ambassador/src/client/keys"; - -const SERVER_URL = "localhost:11111/"; +import { CLIENT_URL } from '../web-server/url'; describe("zoom test", () => { let targetWindow; let targetTab; before(() => { - return windows.create(SERVER_URL).then((win) => { + return windows.create(CLIENT_URL).then((win) => { targetWindow = win; }); }); @@ -19,7 +18,7 @@ describe("zoom test", () => { }); beforeEach(() => { - return tabs.create(targetWindow.id, SERVER_URL).then((tab) => { + return tabs.create(targetWindow.id, CLIENT_URL).then((tab) => { targetTab = tab; }); }); |