Skip to content

asvetliakov/run-current-test

Repository files navigation

Run currest test

Features

  • Run current test at cursor position
  • AST parser, no regex checks
  • Configurable
  • Supports Jest, Mocha, Ava

features

Requirements

You must set run or runAndUpdateSnapshots command:

Way 1 (preferred): Define your test command in package.json, for example:

    "scripts": {
        "test": "jest"
    }

Then define commands in .vscode/settings.json similar to these (example for jest):

    "runCurrentTest.run": "npm run test -- ${relativeTestPath} --runTestsByPath --testNamePattern \"^${fullTestName}$\"",
    "runCurrentTest.runAndUpdateSnapshots": "npm run test -- -u ${relativeTestPath} --runTestsByPath --testNamePattern \"^${fullTestName}$\""

Way 2: Use full path without involing npm scripts, similar to these:

For Jest:

    "runCurrentTest.run": "${workspaceRoot}/node_modules/.bin/jest ${relativeTestPath} --runTestsByPath --testNamePattern \"${fullTestName}\"",
    "runCurrentTest.runAndUpdateSnapshots": "${workspaceRoot}/node_modules/.bin/jest -u ${relativeTestPath} --runTestsByPath --testNamePattern \"${fullTestName}\""
    // windows
    "runCurrentTest.run": "${workspaceRoot}\\node_modules\\.bin\\jest.cmd ${relativeTestPath} --runTestsByPath --testNamePattern \"${fullTestName}\"",
    "runCurrentTest.runAndUpdateSnapshots": "${workspaceRoot}\\node_modules\\.bin\\jest.cmd -u ${relativeTestPath} --runTestsByPath --testNamePattern \"${fullTestName}\""

For ava:

    "runCurrentTest.run": "${workspaceRoot}/node_modules/.bin/ava ${relativeTestPath} --match \"${fullTestName}\"",
    "runCurrentTest.runAndUpdateSnapshots": "${workspaceRoot}/node_modules/.bin/ava -u ${relativeTestPath} --match \"${fullTestName}\""
    // windows
    "runCurrentTest.run": "${workspaceRoot}\\node_modules\\.bin\\ava.cmd ${relativeTestPath} --match \"${fullTestName}\"",
    "runCurrentTest.runAndUpdateSnapshots": "${workspaceRoot}\\node_modules\\.bin\\ava.cmd -u ${relativeTestPath} --match \"${fullTestName}\""

For mocha:

    "runCurrentTest.run": "${workspaceRoot}/node_modules/.bin/mocha ${relativeTestPath} --grep \"${fullTestName}\"",
    // windows
    "runCurrentTest.run": "${workspaceRoot}\\node_modules\\.bin\\mocha.cmd ${relativeTestPath} --grep \"${fullTestName}\"",

You can pass any command here, for example if you need to additionally set NODE_ENV=test:

    "runCurrentTest.run": "NODE_ENV=test ${workspaceRoot}/node_modules/.bin/jest ${relativeTestPath} --testNamePattern \"${fullTestName}\"",

I'd recommend to use test setup file instead though.

You can use following templates for substitution in run commands:

  • ${workspaceRoot} - Will be replaced with absolute path to workspace root
  • ${testFilePath} - Will be replaced with absolute path to current test file
  • ${relativeTestPath} - Will be replaced with relative current test file to workspace root
  • ${testName} - Will be replaced with single current test name block
  • ${fullTestName} - Will be replaced with full path to current test name block. Full path is the all parent block paths + the current one, i.e "describe innerdescribe test"

Extension Settings

  • runCurrentTest.run - See above
  • runCurrentTest.runAndUpdateSnapshots - See above
  • runCurrentTest.autoSave - Auto-save dirty editor when running run command. Default is true
  • runCurrentTest.usePreviousTestCommand - Use previous test command if no test blocks (it(), describe(), etc) were found in the file. Useful when have opened test & source side-by-side and keep forgetting to switch to test side to run command
  • runCurrentTest.testBlockIdentifiers - Set to the name of test block identifiers (i.e. describe, it, etc...). The default ones provide good match
  • runCurrentTest.testNameSeparator - Separator between block names used in ${fullTestName}. Default is \\s which is space
  • runCurrentTest.unknownTestNameLiteral - Identifier used as block name if block name couldn't be determined. Default is .*

TODO

Debug current test

Release Notes

[0.1.0]

  • Support multi-root workspaces
  • Added license (MIT)
  • Run previous test command if no test blocks were found (configurable, default true)

0.0.2

Added few more identifiers to default test blocks Test block titles are now being escaped properly Close previous opened terminal when running command again

0.0.1

Initial release of 'Run current test'