A Neovim plugin to easily run and debug Jest tests
Last updated Jun 16, 2026
213
Stars
13
Forks
4
Issues
0
Stars/day
Attention Score
29
Language breakdown
Lua 100.0%
โธ Files
click to expand
README
jester
A Neovim plugin to easily run and debug Jest tests.

Installation
Requirements: Neovim, nvim-treesitter, for debugging nvim-dap.
Make sure that the JavaScript/TypeScript parser for nvim-treesitter is installed and enabled.
For vim-plug:
Plug 'David-Kunz/jester' For packer: use 'David-Kunz/jester'
Usage
Run nearest test(s) under the cursor
:lua require"jester".run()
Run current file
:lua require"jester".run_file()
Run last test(s)
:lua require"jester".run_last()
Debug nearest test(s) under the cursor
:lua require"jester".debug()
Debug current file
:lua require"jester".debug_file()
Debug last test(s)
:lua require"jester".debug_last()
Options
You can specify global options using the setup function.
Example:
require("jester").setup({
dap = {
console = "externalTerminal"
}
})
These are the defaults:
{
cmd = "jest -t '$result' -- $file", -- run command
identifiers = {"test", "it"}, -- used to identify tests
prepend = {"describe"}, -- prepend describe blocks
expressions = {"call_expression"}, -- tree-sitter object used to scan for tests/describe blocks
pathtojest_run = 'jest', -- used to run tests
pathtojestdebug = './nodemodules/.bin/jest', -- used for debugging
terminal_cmd = ":vsplit | terminal", -- used to spawn a terminal for running tests, for debugging refer to nvim-dap's config
dap = { -- debug adapter configuration
type = 'node2',
request = 'launch',
cwd = vim.fn.getcwd(),
runtimeArgs = {'--inspect-brk', '$pathtojest', '--no-coverage', '-t', '$result', '--', '$file'},
args = { '--no-cache' },
sourceMaps = false,
protocol = 'inspector',
skipFiles = {'<node_internals>/*/.js'},
console = 'integratedTerminal',
port = 9229,
disableOptimisticBPs = true
}
}
You can also overwrite the options for each function call, for example
:lua require"jester".debug({ dap = { console = "externalTerminal" } })
Tip
Jest usually transforms the files causing breakpoints to be inserted in the wrong line. To prevent this, add this .babelrc file to your project's root:
{
"retainLines": true,
"sourceMap": "inline"
}๐ More in this category