diff options
Diffstat (limited to 'e2e')
| -rw-r--r-- | e2e/ambassador/src/background/index.js | 7 | ||||
| -rw-r--r-- | e2e/ambassador/src/background/tabs.js | 10 | ||||
| -rw-r--r-- | e2e/ambassador/src/client/tabs.js | 14 | ||||
| -rw-r--r-- | e2e/ambassador/src/shared/messages.js | 2 | ||||
| -rw-r--r-- | e2e/contents/tab.test.js | 170 | 
5 files changed, 195 insertions, 8 deletions
| diff --git a/e2e/ambassador/src/background/index.js b/e2e/ambassador/src/background/index.js index c3e9dc1..6425b54 100644 --- a/e2e/ambassador/src/background/index.js +++ b/e2e/ambassador/src/background/index.js @@ -1,6 +1,6 @@  import {    WINDOWS_CREATE, WINDOWS_REMOVE, WINDOWS_GET, -  TABS_CREATE, +  TABS_CREATE, TABS_SELECT_AT,    EVENT_KEYPRESS, EVENT_KEYDOWN, EVENT_KEYUP,    SCROLL_GET, SCROLL_SET,  } from '../shared/messages'; @@ -20,6 +20,11 @@ receiveContentMessage((message) => {        url: message.url,        windowId: message.windowId,      }); +  case TABS_SELECT_AT: +    return tabs.selectAt({ +      windowId: message.windowId, +      index: message.index, +    });    case EVENT_KEYPRESS:    case EVENT_KEYDOWN:    case EVENT_KEYUP: diff --git a/e2e/ambassador/src/background/tabs.js b/e2e/ambassador/src/background/tabs.js index 93d47a3..d049500 100644 --- a/e2e/ambassador/src/background/tabs.js +++ b/e2e/ambassador/src/background/tabs.js @@ -13,6 +13,14 @@ const create = (props = {}) => {    });  }; +const selectAt = (props = {}) => { +  return browser.tabs.query({ windowId: props.windowId }).then((tabs) => { +    let target = tabs[props.index]; +    return browser.tabs.update(target.id, { active: true }); +  }); +}; + +  export { -  create, +  create, selectAt  }; diff --git a/e2e/ambassador/src/client/tabs.js b/e2e/ambassador/src/client/tabs.js index 4db3c11..6aaefbd 100644 --- a/e2e/ambassador/src/client/tabs.js +++ b/e2e/ambassador/src/client/tabs.js @@ -1,4 +1,6 @@ -import { TABS_CREATE } from '../shared/messages'; +import { +  TABS_CREATE, TABS_SELECT_AT, +} from '../shared/messages';  import * as ipc from './ipc';  const create = (windowId, url) => { @@ -9,4 +11,12 @@ const create = (windowId, url) => {    });  }; -export { create }; +const selectAt = (windowId, index) => { +  return ipc.send({ +    type: TABS_SELECT_AT, +    windowId, +    index, +  }); +}; + +export { create, selectAt }; diff --git a/e2e/ambassador/src/shared/messages.js b/e2e/ambassador/src/shared/messages.js index dd389db..9fd1054 100644 --- a/e2e/ambassador/src/shared/messages.js +++ b/e2e/ambassador/src/shared/messages.js @@ -4,6 +4,7 @@ const WINDOWS_CREATE = 'windows.create';  const WINDOWS_REMOVE = 'windows.remove';  const WINDOWS_GET = 'windows.get';  const TABS_CREATE = 'tabs.create'; +const TABS_SELECT_AT = 'tabs.selectAt';  const EVENT_KEYPRESS = 'event.keypress';  const EVENT_KEYDOWN = 'event.keydown';  const EVENT_KEYUP = 'event.keyup'; @@ -19,6 +20,7 @@ export {    WINDOWS_GET,    TABS_CREATE, +  TABS_SELECT_AT,    EVENT_KEYPRESS,    EVENT_KEYDOWN, diff --git a/e2e/contents/tab.test.js b/e2e/contents/tab.test.js index 707acef..be4288f 100644 --- a/e2e/contents/tab.test.js +++ b/e2e/contents/tab.test.js @@ -3,18 +3,18 @@ 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"; +const SERVER_URL = "localhost:11111/";  describe("tab test", () => {    let targetWindow; -  before(() => { -    return windows.create().then((win) => { +  beforeEach(() => { +    return windows.create(SERVER_URL).then((win) => {        targetWindow = win;      });    }); -  after(() => { +  afterEach(() => {      return windows.remove(targetWindow.id);    }); @@ -51,4 +51,166 @@ describe("tab test", () => {        expect(actual.tabs).to.have.lengthOf(before.tabs.length + 1);      });    }) + +  it('makes pinned by zd', () => { +    let before; +    let targetTab; +    return tabs.create(targetWindow.id, SERVER_URL).then((tab) => { +      targetTab = tab; +      return windows.get(targetWindow.id) +    }).then((win) => {; +      before = win; +      return keys.press(targetTab.id, 'z'); +    }).then(() => { +      return keys.press(targetTab.id, 'p'); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((actual) => { +      expect(actual.tabs[0].pinned).to.be.true; +    }); +  }) + +  it('selects previous tab by K', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#1') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#2') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#3'); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 2); +    }).then((tab) => { +      return keys.press(tab.id, 'K', { shiftKey: true }); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((win) => { +      expect(win.tabs[1].active).to.be.true; +    }); +  }); + +  it('selects previous tab by K rotatory', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#1') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#2') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#3'); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 0); +    }).then((tab) => { +      return keys.press(tab.id, 'K', { shiftKey: true }); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((win) => { +      expect(win.tabs[3].active).to.be.true; +    }); +  }); + +  it('selects next tab by J', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#1') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#2') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#3'); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 2); +    }).then((tab) => { +      return keys.press(tab.id, 'J', { shiftKey: true }); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((win) => { +      expect(win.tabs[3].active).to.be.true; +    }); +  }); + +  it('selects previous tab by J rotatory', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#1') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#2') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#3'); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 3); +    }).then((tab) => { +      return keys.press(tab.id, 'J', { shiftKey: true }); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((win) => { +      expect(win.tabs[0].active).to.be.true; +    }); +  }); + +  it('selects first tab by g0', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#1') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#2') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#3'); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 2); +    }).then((tab) => { +      return keys.press(tab.id, 'g').then(() => tab); +    }).then((tab) => { +      return keys.press(tab.id, '0'); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((win) => { +      expect(win.tabs[0].active).to.be.true; +    }); +  }); + +  it('selects last tab by g$', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#1') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#2') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#3'); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 2); +    }).then((tab) => { +      return keys.press(tab.id, 'g').then(() => tab); +    }).then((tab) => { +      return keys.press(tab.id, '$'); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((win) => { +      expect(win.tabs[3].active).to.be.true; +    }); +  }); + +  it('selects last selected tab by <C-6>', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#1') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#2') +    }).then(() => { +      return tabs.create(targetWindow.id, SERVER_URL + '#3'); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 1); +    }).then(() => { +      return tabs.selectAt(targetWindow.id, 3); +    }).then((tab) => { +      return keys.press(tab.id, '6', { ctrlKey: true }); +    }).then(() => { +      return windows.get(targetWindow.id); +    }).then((win) => { +      expect(win.tabs[1].active).to.be.true; +    }); +  }); + +  it('deletes tab by d', () => { +    return Promise.resolve().then(() => { +      return tabs.create(targetWindow.id, SERVER_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); +    }); +  });  }); | 
