test-samurai.nvim
A Neovim plugin to run tests across multiple languages and frameworks with a unified UX and an extensible runner architecture.
Requirements
- Neovim >= 0.11.4
- Lua
- Test runners are provided as separate Lua modules
Installation (Lazy.nvim)
Use the GitHub repository. The example below shows how to add the Go runner as a dependency and configure it in setup():
{
"m13r/test-samurai.nvim",
dependencies = {
"m13r/test-samurai-go-runner",
-- furthur samurai runners
},
config = function()
require("test-samurai").setup({
runner_modules = {
"test-samurai-go-runner",
-- furthur samurai runners
},
})
end,
}
Configuration
Runner modules (required)
test-samurai does not ship with any built-in runners. You must explicitly configure the runners you want to use:
require("test-samurai").setup({
runner_modules = {
"my-runners.go",
"my-runners.js",
},
})
If no runner matches the current test file, test-samurai will show:
[test-samurai] no runner installed for this kind of test
Commands and keymaps
TSamNearest-><leader>tnTSamFile-><leader>tfTSamAll-><leader>taTSamLast-><leader>tlTSamFailedOnly-><leader>teTSamShowOutput-><leader>to
Additional keymaps:
<leader>qn-> close the testing floats and jump to the first quickfix entry<leader>nf-> jump to the next[ FAIL ]entry in the Test-Listing-Float (wraps to the first)<leader>pf-> jump to the previous[ FAIL ]entry in the Test-Listing-Float (wraps to the last)
Output UI
- Output is shown in a floating container called Testing-Float.
- The Test-Listing-Float is the left subwindow and shows the test result list.
- The Detail-Float is the right subwindow and shows detailed output for a selected test.
- After
TSamNearest,TSamFile,TSamAll,TSamFailedOnly, etc., the UI opens in listing mode (only Test-Listing-Float visible). - Press
<cr>on a[ FAIL ] ...line in the listing to open/update the Detail-Float as a 20/80 split (left 20% listing, right 80% detail). - ANSI color translation is only applied in the Detail-Float; the Test-Listing-Float shows raw text without ANSI translation.
<esc><esc>hides the floating window;TSamShowOutputreopens it.
Runner architecture
Runners are standalone Lua modules. All runner modules are expected to implement the full interface so every command and keymap works. Required functions:
is_test_filefind_nearestbuild_commandbuild_file_commandbuild_all_commandbuild_failed_commandcollect_failed_locations
No runner for your environment exists? No problem: use runners-agents.md to guide an AI-assisted runner implementation tailored to your stack.
Known runners
m13r/test-samurai-go-runnerm13r/test-samurai-jest-runnerm13r/test-samurai-mocha-runnerm13r/test-samurai-vitest-runner
Development
Tests are written with plenary.nvim / busted. Mocks and stubs are allowed.
Run tests:
bash run_test.sh