babel-plugin-tester
Advanced tools
Changelog
[11.0.4][3] (2023-01-25)
Changelog
[11.0.3][5] (2023-01-24)
Changelog
[11.0.2][7] (2023-01-23)
Changelog
[11.0.1][11] (2023-01-18)
config
option is still supported by prettierFormatter
([e48badf][12]) <sup>closes [#139][13]</sup>Changelog
[11.0.0][14] (2023-01-18)
error
no longer accepts arbitrary class constructors
error
(aka throws
) no longer accepts arbitrary class constructors. Any
provided class constructor must extend Error
, e.g. built-ins like
SyntaxError
or custom error classes like class MyError extends Error
. Thanks
to the nature of JavaScript, providing a class constructor that does not
extend Error
will lead to undefined behavior.
error
only captures exceptions from Babel
error
(aka throws
) no longer potentially captures exceptions thrown by the
formatResult
function. If the formatResult
function throws, the entire test
will fail immediately.
TypeError
for config error; AssertionError
for test error
All configuration-related issues now throw TypeError
instead of
AssertionError
. AssertionError
is now exclusively used for failing tests.
Additionally, the text of some error messages has been updated.
All test titles are now numbered
All test titles are now numbered (e.g. "1. ..."
, "2. ..."
, etc), including
fixtures tests and tests with custom titles.
Built-in TypeScript support
TypeScript types are now included within the package itself, obviating the need to install a separate types package. Installing the old types package alongside this version of babel-plugin-tester will cause conflicts.
Fixture configuration schema is standardized
In previous versions of babel-plugin-tester, you could provide any key to
options.json
and it would be passed as-is to the plugin under test. This made
it impossible to allow fixtures to be configured with the same flexibility as
test objects. In this version of babel-plugin-tester, fixture options.json
(and options.js
) files must return a standard set of options. Non-standard
properties are silently ignored. For instance: to pass options to the plugin
under test, they must be provided via pluginOptions
.
Global describe
and it
functions must be defined
babel-plugin-tester will refuse to run if describe
, it
, it.only
, or
it.skip
are not globally available.
Global setup
/teardown
no longer overwrites local versions
In previous versions of babel-plugin-tester, test-level setup
and teardown
functions overrode global setup
and teardown
functions. In this version of
babel-plugin-tester, the global setup
and teardown
functions will be called
alongside their test-level counterparts for each test and in a well-defined
order (see documentation).
Implicit "global" options merging is no longer supported
In previous versions of babel-plugin-tester, any test object and fixture
configuration option could be passed directly to babel-plugin-tester and apply
"globally" across all test objects and fixtures. This was even the case for
options that made no sense in a "global" context, such as only
, skip
, and
code
. In this version of babel-plugin-tester, only options explicitly listed
in the documentation can be passed directly and applied globally. Unrecognized
"rest" options are silently ignored.
Test/fixture configuration is resolved early and consistently
In previous versions of babel-plugin-tester, test object and fixture
configuration options were resolved in various places, with some options getting
finalized before it(...)
and describe(...)
were called and others being
determined as Jest was executing the test. In this version, all configuration
options are resolved and finalized before it(...)
and describe(...)
are
called. This also means configurations are finalized before hooks like
beforeAll
get called by the testing framework.
babelOptions.filename
is now set to filepath
by default rather than undefined
.
In previous versions, the lodash.mergeWith customizer skipped source properties
that resolved to undefined
. With this version, the customizer now unsets these properties
(sets them to undefined
), allowing the end user to easily unset defaults (e.g. filename
).
Minimum recommended node version bumped from 10.13.0 to 14.20.0
Plugin names are once again automatically determined by analyzing the return value of the plugin function. Though this is implemented in a backwards-compatible way, there is a [small caveat][15].
exec
/execFixture
support via Node's VM module ([4754f42][18])titleNumbering
and restartTitleNumbering
options ([09e792d][27])setup
/teardown
run order ([4ea283f][28])undefined
([74af680][43])Changelog
[10.1.0][45] (2021-05-29)
Changelog
[10.0.0][48] (2020-10-02)
Changelog
[9.2.0][52] (2020-05-27)