Skip to main content

skipWhen: Conditional Exclusion

In some cases we might need to skip a test or a group based on a given condition, for example - based on the intermediate state of the currently running suite. To allow this, you can use skipWhen. skipWhen takes a boolean expression and a callback with tests. If the expression is true, the tests within the callback will be skipped. Otherwise, the tests will run as normal.


When using skipWhen the tests within the block will be skipped, but will still be counted against isValid, so as long as the tests don't run - the suite will not be marked as valid. If you wish these tests to override suite validity, use omitWhen instead.


Conditionalboolean/function*The conditional expression to be evaluated. When Truthy, the tests within skipWhen will be skipped.
BodyfunctionA callback function containing the tests to either skip or run.

* When using the function conditional, the function will be passed the current validation result as an argument, so it can be used to skip tests based on the current validation result.

Usage Example

In the following example, we're skipping the server side verification of the username if the username is invalid to begin with:

import { create, test, enforce, skipWhen } from 'vest';

export default create((data = {}) => {
test('username', 'Username is required', () => {

res => res.hasErrors('username'),
() => {
test('username', 'Username already exists', () => {
// this is an example for a server call
return doesUserExist(data.username);