diff --git a/doc/api/test.md b/doc/api/test.md index ef5fd0bcad61..c18116d981d0 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -1956,6 +1956,10 @@ changes: If the number of assertions run in the test does not match the number specified in the plan, the test will fail. **Default:** `undefined`. + * `fn` {Function|AsyncFunction} The function under test. If provided, it will take + precedence over the `fn` parameter. + * `name` {string} The name of the test. If provided, it will take precedence over the + `name` parameter. * `fn` {Function|AsyncFunction} The function under test. The first argument to this function is a [`TestContext`][] object. If the test uses callbacks, the callback function is passed as the second argument. **Default:** A no-op diff --git a/test/parallel/test-runner-option-precedence.js b/test/parallel/test-runner-option-precedence.js new file mode 100644 index 000000000000..a2b1097b28e8 --- /dev/null +++ b/test/parallel/test-runner-option-precedence.js @@ -0,0 +1,41 @@ +'use strict'; +require('../common'); +const { test, suite } = require('node:test'); + +suite('test runner option precedence', () => { + test( + 'overridden test name', + { name: 'options.name overrides test name', plan: 1 }, + (t) => { + t.assert.strictEqual(t.name, 'options.name overrides test name'); + }, + ); + + test( + 'options.fn overrides test function', + { + fn: (t) => { + t.assert.ok(true); + }, + plan: 1, + }, + (t) => { + t.assert.fail('should not be called'); + }, + ); + + test('options.fn only', { + plan: 1, + fn: (t) => { + t.assert.ok(true); + }, + }); + + test({ + name: 'single parameter options', + plan: 1, + fn: (t) => { + t.assert.ok(true); + }, + }); +});