Skip to content

Commit

Permalink
release: 11.0.0-canary.1 [skip ci]
Browse files Browse the repository at this point in the history
## [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
Xunnamius committed Jan 16, 2023
1 parent a3ad18d commit b817a5f
Show file tree
Hide file tree
Showing 3 changed files with 709 additions and 8 deletions.
Loading

0 comments on commit b817a5f

Please sign in to comment.