diff --git a/QA.md b/QA.md
index 8cba39f..404f50f 100644
--- a/QA.md
+++ b/QA.md
@@ -1,12 +1,12 @@
## Checklist for testing Vim Vixen
-### Operations
+### Keybindings in JSON settings
Test operations with default key maps.
#### Scrolling
-- [ ] k or Ctrl+Y, j or Ctrl+E: scroll up and down
+- [ ] k, j: scroll up and down
- [ ] h, l: scroll left and right
- [ ] Ctrl+U, Ctrl+D: scroll up and down by half of screen
- [ ] Ctrl+B, Ctrl+F: scroll up and down by a screen
@@ -48,6 +48,55 @@ The behaviors of the console are tested in [Console section](#consoles).
- [ ] y: yank current URL and show a message
- [ ] Toggle enabled/disabled of plugin bu Shift+Esc
+### Keybindings in form settings
+
+Test operations with default key maps.
+
+#### Scrolling
+
+- [ ] k, j: scroll up and down
+- [ ] h, l: scroll left and right
+- [ ] Ctrl+U, Ctrl+D: scroll up and down by half of screen
+- [ ] Ctrl+B, Ctrl+F: scroll up and down by a screen
+- [ ] 0, $: scroll to leftmost and rightmost
+- [ ] gg, G: scroll to top and bottom
+
+#### Console
+
+The behaviors of the console are tested in [Console section](#consoles).
+
+- [ ] :: open empty console
+- [ ] o, t, w: open a console with `open`, `tabopen`, `winopen`
+- [ ] O, T, W: open a console with `open`, `tabopen`, `winopen` and current URL
+- [ ] b: open a consolw with `buffer`
+
+#### Tabs
+
+- [ ] d: delete current tab
+- [ ] u: reopen close tab
+- [ ] K, J: select prev and next tab
+- [ ] g0, g$: select first and last tab
+- [ ] r: reload current tab
+- [ ] R: reload current tab without cache
+- [ ] zd: duplicate current tab
+- [ ] zp: toggle pin/unpin state on current tab
+
+#### Navigation
+
+- [ ] H, L: go back and forward in histories
+- [ ] [[, ]]: Open next/prev link in `` tags.
+- [ ] [[, ]]: find prev and next links and open it
+- [ ] gu: go to parent directory
+- [ ] gU: go to root directory
+
+#### Misc
+
+- [ ] zi, zo: zoom-in and zoom-out
+- [ ] zz: set zoom level as default
+- [ ] y: yank current URL and show a message
+- [ ] Toggle enabled/disabled of plugin bu Shift+Esc
+
+
### Following links
- [ ] f: start following links
@@ -83,7 +132,7 @@ The behaviors of the console are tested in [Console section](#consoles).
- [ ] `buffer`,`buffer`: do nothing
- [ ] `buffer `, `buffer `: select tab which has an title matched with
- [ ] `buffer 1`: select leftmost tab
-- [ ] `buffer 0`, `buffer 99`: shows an error
+- [ ] `buffer 0`, `buffer `: shows an error
- [ ] select tabs rotationally when more than two tabs are matched
### Completions
@@ -110,20 +159,22 @@ The behaviors of the console are tested in [Console section](#consoles).
### Settings
-#### Validations
+#### JSON Settings
+
+##### Validations
- [ ] show error on invalid json
- [ ] show error when top-level keys has keys other than `keymaps`, `search`, and `blacklist`
-##### `"keymaps"` section
+###### `"keymaps"` section
- [ ] show error on unknown operation name in `"keymaps"`
-##### `"search"` section
+###### `"search"` section
- validations in `"search"` section are not tested in this release
-#### `"blacklist"` section
+##### `"blacklist"` section
- [ ] `github.com/a` blocks `github.com/a`, and not blocks `github.com/aa`
- [ ] `github.com/a*` blocks both `github.com/a` and `github.com/aa`
@@ -131,13 +182,44 @@ The behaviors of the console are tested in [Console section](#consoles).
- [ ] `github.com` blocks both `github.com/` and `github.com/a`
- [ ] `*.github.com` blocks `gist.github.com/`, and not `github.com`
-#### Updating
+##### Updating
- [ ] changes are updated on textarea blure when no errors
- [ ] changes are not updated on textarea blure when errors occurs
- [ ] keymap settings are applied to open tabs without reload
- [ ] search settings are applied to open tabs without reload
+#### Form Settings
+
+
+
+##### Search Engines
+
+- [ ] able to change default
+- [ ] able to remove item
+- [ ] able to add item
+
+##### `"blacklist"` section
+
+- [ ] able to add item
+- [ ] able to remove item
+- [ ] `github.com/a` blocks `github.com/a`, and not blocks `github.com/aa`
+- [ ] `github.com/a*` blocks both `github.com/a` and `github.com/aa`
+- [ ] `github.com/` blocks `github.com/`, and not blocks `github.com/a`
+- [ ] `github.com` blocks both `github.com/` and `github.com/a`
+- [ ] `*.github.com` blocks `gist.github.com/`, and not `github.com`
+
+##### Updating
+
+- [ ] keymap settings are applied to open tabs without reload
+- [ ] search settings are applied to open tabs without reload
+
+### Settings source
+
+- [ ] show confirmation dialog on switched from json to form
+- [ ] state is saved on source changed
+- [ ] on switching form -> json -> form, first and last form setting is equivalent to first one
+
### For certain sites
- [ ] scoll on Hacker News