Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
## [11.0.0-canary.1](v10.1.0...v11.0.0-canary.1) (2023-01-16) ### 💥 BREAKING CHANGES 💥 * 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`). * `babelOptions.filename` is now set to `filepath` by default rather than `undefined`. * **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. * **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 `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). * **`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. * **`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. * **`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**. * **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. * **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. * **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. * 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](https://github.com/babel-utils/babel-plugin-tester#pluginname-inference-caveat). #### ✨ Features * Add support for testing presets ([73b90b3](73b90b3)) * Implement default filepath inference using Error stack trace ([9d1b321](9d1b321)) * **src:** add `exec`/`execFixture` support via Node's VM module ([4754f42](4754f42)) * **src:** add support for "only", "skip", and "title" test options in fixtures ([#90](#90)) ([89b58b5](89b58b5)) * **src:** add support for arbitrary run order of plugin under test ([#91](#91)) ([8c8b858](8c8b858)) * **src:** add support for loading prettier configuration files in fixtures ([f54deda](f54deda)) * **src:** add TEST_SKIP/TEST_NUM_SKIP/TEST_ONLY/TEST_NUM_ONLY env variable support ([13626d1](13626d1)) * **src:** bring back (lightweight) plugin name inference ([#92](#92)) ([f9ad903](f9ad903)) * **src:** implement `titleNumbering` and `restartTitleNumbering` options ([09e792d](09e792d)) * **src:** implement standard `setup`/`teardown` run order ([4ea283f](4ea283f)) * **src:** provide debug output support via debug package ([4c7c6e7](4c7c6e7)) * Windows support ([f214995](f214995)) #### 🪄 Fixes * **src:** ensure test function errors are not swallowed by teardown function errors ([2acfe37](2acfe37)) * **src:** fix fixtureOutputExt being ignored in root options.json ([#89](#89)) ([481be19](481be19)) * **src:** fix plugin run order for fixtures to match tests ([#88](#88)) ([fbb6c19](fbb6c19)) #### ⚙️ Build system * **deps:** bump prettier from 2.8.0 to 2.8.1 ([#98](#98)) ([0bdb351](0bdb351)) * **package:** restore @babel/[email protected] as minimum supported version ([00712c0](00712c0)) * Transmute codebase to TypeScript ([#96](#96)) ([5f588e9](5f588e9)) * Update tooling ([d5b4d9c](d5b4d9c)) #### 🔥 Reverted * *"test: make debugging names shorter and sweeter"* ([0b869bb](0b869bb)) #### 🧙🏿 Refactored * Lodash.mergeWith customizer now allows unsetting options by setting them to `undefined` ([74af680](74af680)) * Reorganize source into unified extensible tester pipeline w/ first-class fixtures support ([0c44392](0c44392))
- Loading branch information