diff options
-rw-r--r-- | QA.md | 14 | ||||
-rw-r--r-- | e2e/completion_open.test.js | 123 |
2 files changed, 124 insertions, 13 deletions
@@ -26,19 +26,10 @@ The behaviors of the console are tested in [Console section](#consoles). - [ ] Select link and open it in the frame in `<iframe>`/`<frame`> on following by <kbd>f</kbd> - [ ] Select link and open it in new tab in `<iframe>`/`<frame`> on following by <kbd>F</kbd> - [ ] Select link and open it in `<area>` tags, for <kbd>f</kbd> and <kbd>F</kbd> -- [ ] Open new tab in background by `"background": true` - [ ] Opened tabs is in child on Tree Style Tab ### Consoles -#### Exec a command - -- [ ] `<EMPTY>`: do nothing - -#### Misc - -- [ ] Select next item by <kbd>Tab</kbd> and previous item by <kbd>Shift</kbd>+<kbd>Tab</kbd> - ### Properties - [ ] Configure custom hint character by `:set hintchars=012345678` @@ -47,10 +38,7 @@ The behaviors of the console are tested in [Console section](#consoles). - [ ] Smooth scroll by `:set smoothscroll` - [ ] Non-smooth scroll by `:set nosmoothscroll` - [ ] Configure smooth scroll by settings `"smoothscroll": true`, `"smoothscroll": false` - -- [ ] Show search engine, bookmark and history items in order by `:set complete=sbh` -- [ ] Show bookmark, search engine, and search engine items in order by `:set complete=bss` -- [ ] Configure completion items by setting `"complete": "sbh"`, `"complete": "bss"` +- [ ] Open new tab in background by `"background": true` ### Settings diff --git a/e2e/completion_open.test.js b/e2e/completion_open.test.js index 59d6b83..80628b3 100644 --- a/e2e/completion_open.test.js +++ b/e2e/completion_open.test.js @@ -129,4 +129,127 @@ describe("completion on open/tabopen/winopen commands", () => { assert(items.every(x => x.includes('https://'))); }); }) + + it('should display only specified items in "complete" property by set command', async() => { + let c = new Console(session); + + const execCommand = async(line) => { + await body.sendKeys(':'); + await session.switchToFrame(0); + await c.sendKeys(line, Key.Enter); + await session.switchToParentFrame(); + } + + const typeCommand = async(...keys) => { + await body.sendKeys(':'); + await session.switchToFrame(0); + await c.sendKeys(...keys); + } + + const cancel = async() => { + await c.sendKeys(Key.Escape); + await session.switchToParentFrame(); + } + + await execCommand('set complete=sbh'); + await typeCommand('open '); + + await eventually(async() => { + let completions = await c.getCompletions(); + let titles = completions.filter(x => x.type === 'title').map(x => x.text); + assert.deepEqual(titles, ['Search Engines', 'Bookmarks', 'History']) + }); + + await cancel(); + await execCommand('set complete=bss'); + await typeCommand('open '); + + await eventually(async() => { + let completions = await c.getCompletions(); + let titles = completions.filter(x => x.type === 'title').map(x => x.text); + assert.deepEqual(titles, ['Bookmarks', 'Search Engines', 'Search Engines']) + }); + }) + + it('should display only specified items in "complete" property by setting', async() => { + const settings = { + source: 'json', + json: `{ + "keymaps": { + ":": { "type": "command.show" } + }, + "search": { + "default": "google", + "engines": { "google": "https://google.com/search?q={}" } + }, + "properties": { + "complete": "sbh" + } + }`, + }; + await browser.storage.local.set({ settings, }); + + let c = new Console(session); + + const typeCommand = async(...keys) => { + await body.sendKeys(':'); + await session.switchToFrame(0); + await c.sendKeys(...keys); + } + + const cancel = async() => { + await c.sendKeys(Key.Escape); + await session.switchToParentFrame(); + } + + await browser.storage.local.set({ settings: { + source: 'json', + json: `{ + "keymaps": { + ":": { "type": "command.show" } + }, + "search": { + "default": "google", + "engines": { "google": "https://google.com/search?q={}" } + }, + "properties": { + "complete": "sbh" + } + }`, + }}); + await typeCommand('open '); + + await eventually(async() => { + let completions = await c.getCompletions(); + let titles = completions.filter(x => x.type === 'title').map(x => x.text); + assert.deepEqual(titles, ['Search Engines', 'Bookmarks', 'History']) + }); + + await cancel(); + + await browser.storage.local.set({ settings: { + source: 'json', + json: `{ + "keymaps": { + ":": { "type": "command.show" } + }, + "search": { + "default": "google", + "engines": { "google": "https://google.com/search?q={}" } + }, + "properties": { + "complete": "bss" + } + }`, + }}); + await typeCommand('open '); + + await eventually(async() => { + let completions = await c.getCompletions(); + let titles = completions.filter(x => x.type === 'title').map(x => x.text); + assert.deepEqual(titles, ['Bookmarks', 'Search Engines', 'Search Engines']) + }); + + + }) }); |