From fa13ed6d791106135d2ab8d7a82ee4285615ebf0 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 24 Mar 2024 12:00:03 -0400 Subject: [PATCH] doc: add section explaining todo tests This commit adds a section to the test runner docs explaining what a TODO test is. Refs: https://github.com/nodejs/node/issues/49013 PR-URL: https://github.com/nodejs/node/pull/52204 Reviewed-By: Chemi Atlow Reviewed-By: Luigi Pinca Reviewed-By: Moshe Atlow --- doc/api/test.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/doc/api/test.md b/doc/api/test.md index 2cceaf9d7208e4..a0c2462b1d700d 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -162,6 +162,37 @@ test('skip() method with message', (t) => { }); ``` +## TODO tests + +Individual tests can be marked as flaky or incomplete by passing the `todo` +option to the test, or by calling the test context's `todo()` method, as shown +in the following example. These tests represent a pending implementation or bug +that needs to be fixed. TODO tests are executed, but are not treated as test +failures, and therefore do not affect the process exit code. If a test is marked +as both TODO and skipped, the TODO option is ignored. + +```js +// The todo option is used, but no message is provided. +test('todo option', { todo: true }, (t) => { + // This code is executed, but not treated as a failure. + throw new Error('this does not fail the test'); +}); + +// The todo option is used, and a message is provided. +test('todo option with message', { todo: 'this is a todo test' }, (t) => { + // This code is executed. +}); + +test('todo() method', (t) => { + t.todo(); +}); + +test('todo() method with message', (t) => { + t.todo('this is a todo test and is not treated as a failure'); + throw new Error('this does not fail the test'); +}); +``` + ## `describe()` and `it()` aliases Suites and tests can also be written using the `describe()` and `it()`