 e89f2f4b7b
			
		
	
	e89f2f4b7b
	
	
	
		
			
			Created 10 detailed GitHub issues covering: - Project activation and management UI (#1-2) - Worker node coordination and visualization (#3-4) - Automated GitHub repository scanning (#5) - Intelligent model-to-issue matching (#6) - Multi-model task execution system (#7) - N8N workflow integration (#8) - Hive-Bzzz P2P bridge (#9) - Peer assistance protocol (#10) Each issue includes detailed specifications, acceptance criteria, technical implementation notes, and dependency mapping. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			738 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			738 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Release Notes
 | |
| 
 | |
| ## Note
 | |
| 
 | |
| As of 3.0.0, the ReleaseNotes.md file has been deprecated. [Please refer to the release notes available on Github](https://github.com/chaijs/chai/releases). Or
 | |
| [the release notes on the chaijs.com website](https://chaijs.com/releases).
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## 2.3.0 / 2015-04-26
 | |
| 
 | |
| Added `ownPropertyDescriptor` assertion:
 | |
| 
 | |
| ```js
 | |
| expect('test').to.have.ownPropertyDescriptor('length');
 | |
| expect('test').to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 4 });
 | |
| expect('test').not.to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 3 });
 | |
| expect('test').ownPropertyDescriptor('length').to.have.property('enumerable', false);
 | |
| expect('test').ownPropertyDescriptor('length').to.have.keys('value');
 | |
| ```
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| #### Code Features & Fixes
 | |
| 
 | |
|  * [#408](https://github.com/chaijs/chai/pull/408) Add `ownPropertyDescriptor`
 | |
|    assertion.
 | |
|    By [@ljharb](https://github.com/ljharb)
 | |
|  * [#422](https://github.com/chaijs/chai/pull/422) Improve ownPropertyDescriptor
 | |
|    tests.
 | |
|    By [@ljharb](https://github.com/ljharb)
 | |
| 
 | |
| #### Documentation fixes
 | |
| 
 | |
|  * [#417](https://github.com/chaijs/chai/pull/417) Fix documentation typo
 | |
|  By [@astorije](https://github.com/astorije)
 | |
|  * [#423](https://github.com/chaijs/chai/pull/423) Fix inconsistency in docs.
 | |
|  By [@ehntoo](https://github.com/ehntoo)
 | |
| 
 | |
| 
 | |
| ## 2.2.0 / 2015-03-26
 | |
| 
 | |
| Deep property strings can now be escaped using `\\` - for example:
 | |
| 
 | |
| ```js
 | |
| var deepCss = { '.link': { '[target]': 42 }};
 | |
| expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42)
 | |
| ```
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| #### Code Features & Fixes
 | |
| 
 | |
|  * [#402](https://github.com/chaijs/chai/pull/402) Allow escaping of deep
 | |
|    property keys.
 | |
|    By [@umireon](https://github.com/umireon)
 | |
| 
 | |
| #### Documentation fixes
 | |
| 
 | |
|  * [#405](https://github.com/chaijs/chai/pull/405) Tweak documentation around
 | |
|  deep property escaping.
 | |
|  By [@keithamus](https://github.com/keithamus)
 | |
| 
 | |
| 
 | |
| ## 2.1.2 / 2015-03-15
 | |
| 
 | |
| A minor bug fix. No new features.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| #### Code Features & Fixes
 | |
| 
 | |
|  * [#395](https://github.com/chaijs/chai/pull/395) Fix eval-related bugs with
 | |
|    assert.operator ([#386](https://github.com/chaijs/chai/pull/386)).
 | |
|    By [@cjqed](https://github.com/cjqed)
 | |
| 
 | |
| ## 2.1.1 / 2015-03-04
 | |
| 
 | |
| Two minor bugfixes. No new features.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| #### Code Features & Fixes
 | |
| 
 | |
|  * [#385](https://github.com/chaijs/chai/pull/385) Fix a bug (also described in
 | |
|    [#387](https://github.com/chaijs/chai/pull/385)) where `deep.property` would not work with single
 | |
|    key names. By [@eldritch-fossicker](https://github.com/eldritch-fossicker)
 | |
|  * [#379](https://github.com/chaijs/chai/pull/379) Fix bug where tools which overwrite
 | |
|    primitive prototypes, such as Babel or core-js would fail.
 | |
|    By [@dcneiner](https://github.com/dcneiner)
 | |
| 
 | |
| #### Documentation fixes
 | |
| 
 | |
|  * [#382](https://github.com/chaijs/chai/pull/382) Add doc for showDiff argument in assert.
 | |
|    By [@astorije](https://github.com/astorije)
 | |
|  * [#383](https://github.com/chaijs/chai/pull/383) Improve wording for truncateTreshold docs
 | |
|    By [@gurdiga](https://github.com/gurdiga)
 | |
|  * [#381](https://github.com/chaijs/chai/pull/381) Improve wording for assert.empty docs
 | |
|    By [@astorije](https://github.com/astorije)
 | |
| 
 | |
| ## 2.1.0 / 2015-02-23
 | |
| 
 | |
| Small release; fixes an issue where the Chai lib was incorrectly reporting the
 | |
| version number.
 | |
| 
 | |
| Adds new `should.fail()` and `expect.fail()` methods, which are convinience
 | |
| methods to throw Assertion Errors.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| #### Code Features & Fixes
 | |
| 
 | |
|  * [#356](https://github.com/chaijs/chai/pull/356) Add should.fail(), expect.fail(). By [@Soviut](https://github.com/Soviut)
 | |
|  * [#374](https://github.com/chaijs/chai/pull/374) Increment version. By [@jmm](https://github.com/jmm)
 | |
| 
 | |
| ## 2.0.0 / 2015-02-09
 | |
| 
 | |
| Unfortunately with 1.10.0 - compatibility broke with older versions because of
 | |
| the `addChainableNoop`. This change has been reverted.
 | |
| 
 | |
| Any plugins using `addChainableNoop` should cease to do so.
 | |
| 
 | |
| Any developers wishing for this behaviour can use [dirty-chai](https://www.npmjs.com/package/dirty-chai)
 | |
| by [@joshperry](https://github.com/joshperry)
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| #### Code Features & Fixes
 | |
| 
 | |
|  * [#361](https://github.com/chaijs/chai/pull/361) `.keys()` now accepts Objects, extracting keys from them. By [@gregglind](https://github.com/gregglind)
 | |
|  * [#359](https://github.com/chaijs/chai/pull/359) `.keys()` no longer mutates passed arrays. By [@gregglind](https://github.com/gregglind)
 | |
|  * [#349](https://github.com/chaijs/chai/pull/349) Add a new chainable keyword - `.which`. By [@toastynerd](https://github.com/toastynerd)
 | |
|  * [#333](https://github.com/chaijs/chai/pull/333) Add `.change`, `.increase` and `.decrease` assertions. By [@cmpolis](https://github.com/cmpolis)
 | |
|  * [#335](https://github.com/chaijs/chai/pull/335) `chai.util` is now exposed [@DingoEatingFuzz](https://github.com/DingoEatingFuzz)
 | |
|  * [#328](https://github.com/chaijs/chai/pull/328) Add `.includes` and `.contains` aliases (for `.include` and `.contain`). By [@lo1tuma](https://github.com/lo1tuma)
 | |
|  * [#313](https://github.com/chaijs/chai/pull/313) Add `.any.keys()` and `.all.keys()` qualifiers. By [@cjqed](https://github.com/cjqed)
 | |
|  * [#312](https://github.com/chaijs/chai/pull/312) Add `assert.sameDeepMembers()`. By [@cjqed](https://github.com/cjqed)
 | |
|  * [#311](https://github.com/chaijs/chai/pull/311) Add `assert.isAbove()` and `assert.isBelow()`. By [@cjqed](https://github.com/cjqed)
 | |
|  * [#308](https://github.com/chaijs/chai/pull/308) `property` and `deep.property` now pass if a value is set to `undefined`. By [@prodatakey](https://github.com/prodatakey)
 | |
|  * [#309](https://github.com/chaijs/chai/pull/309) optimize deep equal in Arrays. By [@ericdouglas](https://github.com/ericdouglas)
 | |
|  * [#306](https://github.com/chaijs/chai/pull/306) revert #297 - allowing lint-friendly tests. By [@keithamus](https://github.com/keithamus)
 | |
| 
 | |
| #### Documentation fixes
 | |
| 
 | |
|  * [#357](https://github.com/chaijs/chai/pull/357) Copyright year updated in docs. By [@danilovaz](https://github.com/danilovaz)
 | |
|  * [#325](https://github.com/chaijs/chai/pull/325) Fix documentation for overwriteChainableMethod. By [@chasenlehara](https://github.com/chasenlehara)
 | |
|  * [#334](https://github.com/chaijs/chai/pull/334) Typo fix. By [@hurrymaplelad](https://github.com/hurrymaplelad)
 | |
|  * [#317](https://github.com/chaijs/chai/pull/317) Typo fix. By [@jasonkarns](https://github.com/jasonkarns)
 | |
|  * [#318](https://github.com/chaijs/chai/pull/318) Typo fix. By [@jasonkarns](https://github.com/jasonkarns)
 | |
|  * [#316](https://github.com/chaijs/chai/pull/316) Typo fix. By [@jasonkarns](https://github.com/jasonkarns)
 | |
| 
 | |
| 
 | |
| ## 1.10.0 / 2014-11-10
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required
 | |
| - **Plugin Developers:**
 | |
|   - Review `addChainableNoop` notes below.
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Noop Function for Terminating Assertion Properties
 | |
| 
 | |
| The following assertions can now also be used in the function-call form:
 | |
| 
 | |
| * ok
 | |
| * true
 | |
| * false
 | |
| * null
 | |
| * undefined
 | |
| * exist
 | |
| * empty
 | |
| * arguments
 | |
| * Arguments
 | |
| 
 | |
| The above list of assertions are property getters that assert immediately on
 | |
| access. Because of that, they were written to be used by terminating the assertion
 | |
| chain with a property access.
 | |
| 
 | |
| ```js
 | |
| expect(true).to.be.true;
 | |
| foo.should.be.ok;
 | |
| ```
 | |
| 
 | |
| This syntax is definitely aesthetically pleasing but, if you are linting your
 | |
| test code, your linter will complain with an error something like "Expected an
 | |
| assignment or function call and instead saw an expression." Since the linter
 | |
| doesn't know about the property getter it assumes this line has no side-effects,
 | |
| and throws a warning in case you made a mistake.
 | |
| 
 | |
| Squelching these errors is not a good solution as test code is getting to be
 | |
| just as important as, if not more than, production code. Catching syntactical
 | |
| errors in tests using static analysis is a great tool to help make sure that your
 | |
| tests are well-defined and free of typos.
 | |
| 
 | |
| A better option was to provide a function-call form for these assertions so that
 | |
| the code's intent is more clear and the linters stop complaining about something
 | |
| looking off. This form is added in addition to the existing property access form
 | |
| and does not impact existing test code.
 | |
| 
 | |
| ```js
 | |
| expect(true).to.be.true();
 | |
| foo.should.be.ok();
 | |
| ```
 | |
| 
 | |
| These forms can also be mixed in any way, these are all functionally identical:
 | |
| 
 | |
| ```js
 | |
| expect(true).to.be.true.and.not.false();
 | |
| expect(true).to.be.true().and.not.false;
 | |
| expect(true).to.be.true.and.not.false;
 | |
| ```
 | |
| 
 | |
| #### Plugin Authors
 | |
| 
 | |
| If you would like to provide this function-call form for your terminating assertion
 | |
| properties, there is a new function to register these types of asserts. Instead
 | |
| of using `addProperty` to register terminating assertions, simply use `addChainableNoop`
 | |
| instead; the arguments to both are identical. The latter will make the assertion
 | |
| available in both the attribute and function-call forms and should have no impact
 | |
| on existing users of your plugin.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#297](https://github.com/chaijs/chai/pull/297) Allow writing lint-friendly tests. [@joshperry](https://github.com/joshperry)
 | |
| - [#298](https://github.com/chaijs/chai/pull/298) Add check for logging `-0`. [@dasilvacontin](https://github.com/dasilvacontin)
 | |
| - [#300](https://github.com/chaijs/chai/pull/300) Fix #299: the test is defining global variables [@julienw](https://github.com/julienw)
 | |
| 
 | |
| Thank you to all who took time to contribute!
 | |
| 
 | |
| ## 1.9.2 / 2014-09-29
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required
 | |
| - **Plugin Developers:**
 | |
|   - No changes required
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#264](https://github.com/chaijs/chai/pull/264) Show diff for keys assertions [@cjthompson](https://github.com/cjthompson)
 | |
| - [#267](https://github.com/chaijs/chai/pull/267) Use SVG badges [@shinnn](https://github.com/shinnn)
 | |
| - [#268](https://github.com/chaijs/chai/pull/268) Allow messages to be functions (sinon-compat) [@charlierudolph](https://github.com/charlierudolph)
 | |
| - [#269](https://github.com/chaijs/chai/pull/269) Remove unused argument for #lengthOf [@charlierudolph](https://github.com/charlierudolph)
 | |
| - [#275](https://github.com/chaijs/chai/pull/275) Rewrite pretty-printing HTML elements to prevent throwing internal errors [@DrRataplan](https://github.com/DrRataplan)
 | |
| - [#277](https://github.com/chaijs/chai/pull/277) Fix assert documentation for #sameMembers [@charlierudolph](https://github.com/charlierudolph)
 | |
| - [#279](https://github.com/chaijs/chai/pull/279) closeTo should check value's type before assertion [@mohayonao](https://github.com/mohayonao)
 | |
| - [#289](https://github.com/chaijs/chai/pull/289) satisfy is called twice [@charlierudolph](https://github.com/charlierudolph)
 | |
| - [#292](https://github.com/chaijs/chai/pull/292) resolve conflicts with node-webkit and global usage [@boneskull](https://github.com/boneskull)
 | |
| 
 | |
| Thank you to all who took time to contribute!
 | |
| 
 | |
| ## 1.9.1 / 2014-03-19
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - Migrate configuration options to new interface. (see notes)
 | |
| - **Plugin Developers:**
 | |
|   - No changes required
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Configuration
 | |
| 
 | |
| There have been requests for changes and additions to the configuration mechanisms
 | |
| and their impact in the Chai architecture. As such, we have decoupled the
 | |
| configuration from the `Assertion` constructor. This not only allows for centralized
 | |
| configuration, but will allow us to shift the responsibility from the `Assertion`
 | |
| constructor to the `assert` interface in future releases.
 | |
| 
 | |
| These changes have been implemented in a non-breaking way, but a depretiation
 | |
| warning will be presented to users until they migrate. The old config method will
 | |
| be removed in either `v1.11.0` or `v2.0.0`, whichever comes first.
 | |
| 
 | |
| #### Quick Migration
 | |
| 
 | |
| ```js
 | |
| // change this:
 | |
| chai.Assertion.includeStack = true;
 | |
| chai.Assertion.showDiff = false;
 | |
| 
 | |
| // ... to this:
 | |
| chai.config.includeStack = true;
 | |
| chai.config.showDiff = false;
 | |
| ```
 | |
| 
 | |
| #### All Config Options
 | |
| 
 | |
| ##### config.includeStack
 | |
| 
 | |
| - **@param** _{Boolean}_
 | |
| - **@default** `false`
 | |
| 
 | |
| User configurable property, influences whether stack trace is included in
 | |
| Assertion error message. Default of `false` suppresses stack trace in the error
 | |
| message.
 | |
| 
 | |
| ##### config.showDiff
 | |
| 
 | |
| - **@param** _{Boolean}_
 | |
| - **@default** `true`
 | |
| 
 | |
| User configurable property, influences whether or not the `showDiff` flag
 | |
| should be included in the thrown AssertionErrors. `false` will always be `false`;
 | |
| `true` will be true when the assertion has requested a diff be shown.
 | |
| 
 | |
| ##### config.truncateThreshold **(NEW)**
 | |
| 
 | |
| - **@param** _{Number}_
 | |
| - **@default** `40`
 | |
| 
 | |
| User configurable property, sets length threshold for actual and expected values
 | |
| in assertion errors. If this threshold is exceeded, the value is truncated.
 | |
| 
 | |
| Set it to zero if you want to disable truncating altogether.
 | |
| 
 | |
| ```js
 | |
| chai.config.truncateThreshold = 0; // disable truncating
 | |
| ```
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#228](https://github.com/chaijs/chai/pull/228) Deep equality check for memebers. [@duncanbeevers](https://github.com/duncanbeevers)
 | |
| - [#247](https://github.com/chaijs/chai/pull/247) Proofreading. [@didorellano](https://github.com/didoarellano)
 | |
| - [#244](https://github.com/chaijs/chai/pull/244) Fix `contain`/`include` 1.9.0 regression. [@leider](https://github.com/leider)
 | |
| - [#233](https://github.com/chaijs/chai/pull/233) Improvements to `ssfi` for `assert` interface. [@refack](https://github.com/refack)
 | |
| - [#251](https://github.com/chaijs/chai/pull/251) New config option: object display threshold. [@romario333](https://github.com/romario333)
 | |
| 
 | |
| Thank you to all who took time to contribute!
 | |
| 
 | |
| ### Other Bug Fixes
 | |
| 
 | |
| - [#183](https://github.com/chaijs/chai/issues/183) Allow `undefined` for actual. (internal api)
 | |
| - Update Karam(+plugins)/Istanbul to most recent versions.
 | |
| 
 | |
| ## 1.9.0 / 2014-01-29
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required
 | |
| - **Plugin Developers:**
 | |
|   - Review [#219](https://github.com/chaijs/chai/pull/219).
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#202](https://github.com/chaijs/chai/pull/201) Improve error message for .throw(). [@andreineculau](https://github.com/andreineculau)
 | |
| - [#217](https://github.com/chaijs/chai/pull/217) Chai tests can be run with `--watch`. [@demands](https://github.com/demands)
 | |
| - [#219](https://github.com/chaijs/chai/pull/219) Add overwriteChainableMethod utility. [@demands](https://github.com/demands)
 | |
| - [#224](https://github.com/chaijs/chai/pull/224) Return error on throw method to chain on error properties. [@vbardales](https://github.com/vbardales)
 | |
| - [#226](https://github.com/chaijs/chai/pull/226) Add `has` to language chains. [@duncanbeevers](https://github.com/duncanbeevers)
 | |
| - [#230](https://github.com/chaijs/chai/pull/230) Support `{a:1,b:2}.should.include({a:1})` [@jkroso](https://github.com/jkroso)
 | |
| - [#231](https://github.com/chaijs/chai/pull/231) Update Copyright notices to 2014 [@duncanbeevers](https://github.com/duncanbeevers)
 | |
| - [#232](https://github.com/chaijs/chai/pull/232) Avoid error instantiation if possible on assert.throws. [@laconbass](https://github.com/laconbass)
 | |
| 
 | |
| Thank you to all who took time to contribute!
 | |
| 
 | |
| ### Other Bug Fixes
 | |
| 
 | |
| - [#225](https://github.com/chaijs/chai/pull/225) Improved AMD wrapper provided by upstream `component(1)`.
 | |
| - [#185](https://github.com/chaijs/chai/issues/185) `assert.throws()` returns thrown error for further assertions.
 | |
| - [#237](https://github.com/chaijs/chai/pull/237) Remove coveralls/jscoverage, include istanbul coverage report in travis test.
 | |
| - Update Karma and Sauce runner versions for consistent CI results. No more karma@canary.
 | |
| 
 | |
| ## 1.8.1 / 2013-10-10
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| - **Plugin Developers:**
 | |
|   - No changes required
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Browserify
 | |
| 
 | |
| This is a small patch that updates the dependency tree so browserify users can install
 | |
| chai. (Remove conditional requires)
 | |
| 
 | |
| ## 1.8.0 / 2013-09-18
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - See `deep.equal` notes.
 | |
| - **Plugin Developers:**
 | |
|   - No changes required
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Deep Equals
 | |
| 
 | |
| This version of Chai focused on a overhaul to the deep equal utility. The code for this
 | |
| tool has been removed from the core lib and can now be found at:
 | |
| [chai / deep-eql](https://github.com/chaijs/deep-eql). As stated in previous releases,
 | |
| this is part of a larger initiative to provide transparency, independent testing, and coverage for
 | |
| some of the more complicated internal tools.
 | |
| 
 | |
| For the most part `.deep.equal` will behave the same as it has. However, in order to provide a
 | |
| consistent ruleset across all types being tested, the following changes have been made and _might_
 | |
| require changes to your tests.
 | |
| 
 | |
| **1.** Strict equality for non-traversable nodes according to [egal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
 | |
| 
 | |
| _Previously:_ Non-traversable equal via `===`.
 | |
| 
 | |
| ```js
 | |
| expect(NaN).to.deep.equal(NaN);
 | |
| expect(-0).to.not.deep.equal(+0);
 | |
| ```
 | |
| 
 | |
| **2.** Arguments are not Arrays (and all types must be equal):
 | |
| 
 | |
| _Previously:_ Some crazy nonsense that led to empty arrays deep equaling empty objects deep equaling dates.
 | |
| 
 | |
| ```js
 | |
| expect(arguments).to.not.deep.equal([]);
 | |
| expect(Array.prototype.slice.call(arguments)).to.deep.equal([]);
 | |
| ```
 | |
| 
 | |
| - [#156](https://github.com/chaijs/chai/issues/156) Empty object is eql to empty array
 | |
| - [#192](https://github.com/chaijs/chai/issues/192) empty object is eql to a Date object
 | |
| - [#194](https://github.com/chaijs/chai/issues/194) refactor deep-equal utility
 | |
| 
 | |
| ### CI and Browser Testing
 | |
| 
 | |
| Chai now runs the browser CI suite using [Karma](http://karma-runner.github.io/) directed at
 | |
| [SauceLabs](https://saucelabs.com/). This means we get to know where our browser support stands...
 | |
| and we get a cool badge:
 | |
| 
 | |
| [](https://saucelabs.com/u/logicalparadox)
 | |
| 
 | |
| Look for the list of browsers/versions to expand over the coming releases.
 | |
| 
 | |
| - [#195](https://github.com/chaijs/chai/issues/195) karma test framework
 | |
| 
 | |
| ## 1.7.2 / 2013-06-27
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required.
 | |
| - **Plugin Developers:**
 | |
|   - No changes required
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Coverage Reporting
 | |
| 
 | |
| Coverage reporting has always been available for core-developers but the data has never been published
 | |
| for our end users. In our ongoing effort to improve accountability this data will now be published via
 | |
| the [coveralls.io](https://coveralls.io/) service. A badge has been added to the README and the full report
 | |
| can be viewed online at the [chai coveralls project](https://coveralls.io/r/chaijs/chai). Furthermore, PRs
 | |
| will receive automated messages indicating how their PR impacts test coverage. This service is tied to TravisCI.
 | |
| 
 | |
| ### Other Fixes
 | |
| 
 | |
| - [#175](https://github.com/chaijs/chai/issues/175) Add `bower.json`. (Fix ignore all)
 | |
| 
 | |
| ## 1.7.1 / 2013-06-24
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required.
 | |
| - **Plugin Developers:**
 | |
|   - No changes required
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### Official Bower Support
 | |
| 
 | |
| Support has been added for the Bower Package Manager ([bower.io])(http://bower.io/). Though
 | |
| Chai could be installed via Bower in the past, this update adds official support via the `bower.json`
 | |
| specification file.
 | |
| 
 | |
| - [#175](https://github.com/chaijs/chai/issues/175) Add `bower.json`.
 | |
| 
 | |
| ## 1.7.0 / 2013-06-17
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required.
 | |
| - **Plugin Developers:**
 | |
|   - Review AssertionError update notice.
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated dependencies.
 | |
| 
 | |
| ### AssertionError Update Notice
 | |
| 
 | |
| Chai now uses [chaijs/assertion-error](https://github.com/chaijs/assertion-error) instead an internal
 | |
| constructor. This will allow for further iteration/experimentation of the AssertionError constructor
 | |
| independant of Chai. Future plans include stack parsing for callsite support.
 | |
| 
 | |
| This update constructor has a different constructor param signature that conforms more with the standard
 | |
| `Error` object. If your plugin throws and `AssertionError` directly you will need to update your plugin
 | |
| with the new signature.
 | |
| 
 | |
| ```js
 | |
| var AssertionError = require('chai').AssertionError;
 | |
| 
 | |
| /**
 | |
|  * previous
 | |
|  *
 | |
|  * @param {Object} options
 | |
|  */
 | |
| 
 | |
| throw new AssertionError({
 | |
|     message: 'An assertion error occurred'
 | |
|   , actual: actual
 | |
|   , expect: expect
 | |
|   , startStackFunction: arguments.callee
 | |
|   , showStack: true
 | |
| });
 | |
| 
 | |
| /**
 | |
|  * new
 | |
|  *
 | |
|  * @param {String} message
 | |
|  * @param {Object} options
 | |
|  * @param {Function} start stack function
 | |
|  */
 | |
| 
 | |
| throw new AssertionError('An assertion error occurred', {
 | |
|     actual: actual
 | |
|   , expect: expect
 | |
|   , showStack: true
 | |
| }, arguments.callee);
 | |
| 
 | |
| // other signatures
 | |
| throw new AssertionError('An assertion error occurred');
 | |
| throw new AssertionError('An assertion error occurred', null, arguments.callee);
 | |
| ```
 | |
| 
 | |
| #### External Dependencies
 | |
| 
 | |
| This is the first non-developement dependency for Chai. As Chai continues to evolve we will begin adding
 | |
| more; the next will likely be improved type detection and deep equality. With Chai's userbase continually growing
 | |
| there is an higher need for accountability and documentation. External dependencies will allow us to iterate and
 | |
| test on features independent from our interfaces.
 | |
| 
 | |
| Note: The browser packaged version `chai.js` will ALWAYS contain all dependencies needed to run Chai.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#169](https://github.com/chaijs/chai/pull/169) Fix deep equal comparison for Date/Regexp types. [@katsgeorgeek](https://github.com/katsgeorgeek)
 | |
| - [#171](https://github.com/chaijs/chai/pull/171) Add `assert.notOk()`. [@Bartvds](https://github.com/Bartvds)
 | |
| - [#173](https://github.com/chaijs/chai/pull/173) Fix `inspect` utility. [@domenic](https://github.com/domenic)
 | |
| 
 | |
| Thank you to all who took the time to contribute!
 | |
| 
 | |
| ## 1.6.1 / 2013-06-05
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required.
 | |
| - **Plugin Developers:**
 | |
|   - No changes required.
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated developement dependencies.
 | |
| 
 | |
| ### Deep Equality
 | |
| 
 | |
| Regular Expressions are now tested as part of all deep equality assertions. In previous versions
 | |
| they silently passed for all scenarios. Thanks to [@katsgeorgeek](https://github.com/katsgeorgeek) for the contribution.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#161](https://github.com/chaijs/chai/pull/161) Fix documented name for assert interface's isDefined method. [@brandonpayton](https://github.com/brandonpayton)
 | |
| - [#168](https://github.com/chaijs/chai/pull/168) Fix comparison equality of two regexps for when using deep equality. [@katsgeorgeek](https://github.com/katsgeorgeek)
 | |
| 
 | |
| Thank you to all who took the time to contribute!
 | |
| 
 | |
| ### Additional Notes
 | |
| 
 | |
| - Mocha has been locked at version `1.8.x` to ensure `mocha-phantomjs` compatibility.
 | |
| 
 | |
| ## 1.6.0 / 2013-04-29
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - No changes required.
 | |
| - **Plugin Developers:**
 | |
|   - No changes required.
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated developement dependencies.
 | |
| 
 | |
| ### New Assertions
 | |
| 
 | |
| #### Array Members Inclusion
 | |
| 
 | |
| Asserts that the target is a superset of `set`, or that the target and `set` have the same members.
 | |
| Order is not taken into account. Thanks to [@NickHeiner](https://github.com/NickHeiner) for the contribution.
 | |
| 
 | |
| ```js
 | |
| // (expect/should) full set
 | |
| expect([4, 2]).to.have.members([2, 4]);
 | |
| expect([5, 2]).to.not.have.members([5, 2, 1]);
 | |
| 
 | |
| // (expect/should) inclusion
 | |
| expect([1, 2, 3]).to.include.members([3, 2]);
 | |
| expect([1, 2, 3]).to.not.include.members([3, 2, 8]);
 | |
| 
 | |
| // (assert) full set
 | |
| assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members');
 | |
| 
 | |
| // (assert) inclusion
 | |
| assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members');
 | |
| 
 | |
| ```
 | |
| 
 | |
| #### Non-inclusion for Assert Interface
 | |
| 
 | |
| Most `assert` functions have a negative version, like `instanceOf()` has a corresponding `notInstaceOf()`.
 | |
| However `include()` did not have a corresponding `notInclude()`. This has been added.
 | |
| 
 | |
| ```js
 | |
| assert.notInclude([ 1, 2, 3 ], 8);
 | |
| assert.notInclude('foobar', 'baz');
 | |
| ```
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#140](https://github.com/chaijs/chai/pull/140) Restore `call`/`apply` methods for plugin interface. [@RubenVerborgh](https://github.com/RubenVerborgh)
 | |
| - [#148](https://github.com/chaijs/chai/issues/148)/[#153](https://github.com/chaijs/chai/pull/153) Add `members` and `include.members` assertions. [#NickHeiner](https://github.com/NickHeiner)
 | |
| 
 | |
| Thank you to all who took time to contribute!
 | |
| 
 | |
| ### Other Bug Fixes
 | |
| 
 | |
| - [#142](https://github.com/chaijs/chai/issues/142) `assert#include` will no longer silently pass on wrong-type haystack.
 | |
| - [#158](https://github.com/chaijs/chai/issues/158) `assert#notInclude` has been added.
 | |
| - Travis-CI now tests Node.js `v0.10.x`. Support for `v0.6.x` has been removed. `v0.8.x` is still tested as before.
 | |
| 
 | |
| ## 1.5.0 / 2013-02-03
 | |
| 
 | |
| ### Migration Requirements
 | |
| 
 | |
| The following changes are required if you are upgrading from the previous version:
 | |
| 
 | |
| - **Users:**
 | |
|   - _Update [2013-02-04]:_ Some users may notice a small subset of deep equality assertions will no longer pass. This is the result of
 | |
|   [#120](https://github.com/chaijs/chai/issues/120), an improvement to our deep equality algorithm. Users will need to revise their assertions
 | |
|   to be more granular should this occur. Further information: [#139](https://github.com/chaijs/chai/issues/139).
 | |
| - **Plugin Developers:**
 | |
|   - No changes required.
 | |
| - **Core Contributors:**
 | |
|   - Refresh `node_modules` folder for updated developement dependencies.
 | |
| 
 | |
| ### Community Contributions
 | |
| 
 | |
| - [#126](https://github.com/chaijs/chai/pull/126): Add `eqls` alias for `eql`. [@RubenVerborgh](https://github.com/RubenVerborgh)
 | |
| - [#127](https://github.com/chaijs/chai/issues/127): Performance refactor for chainable methods. [@RubenVerborgh](https://github.com/RubenVerborgh)
 | |
| - [#133](https://github.com/chaijs/chai/pull/133): Assertion `.throw` support for primitives. [@RubenVerborgh](https://github.com/RubenVerborgh)
 | |
| - [#137](https://github.com/chaijs/chai/issues/137): Assertion `.throw` support for empty messages. [@timnew](https://github.com/timnew)
 | |
| - [#136](https://github.com/chaijs/chai/pull/136): Fix backward negation messages when using `.above()` and `.below()`. [@whatthejeff](https://github.com/whatthejeff)
 | |
| 
 | |
| Thank you to all who took time to contribute!
 | |
| 
 | |
| ### Other Bug Fixes
 | |
| 
 | |
| - Improve type detection of `.a()`/`.an()` to work in cross-browser scenarios.
 | |
| - [#116](https://github.com/chaijs/chai/issues/116): `.throw()` has cleaner display of errors when WebKit browsers.
 | |
| - [#120](https://github.com/chaijs/chai/issues/120): `.eql()` now works to compare dom nodes in browsers.
 | |
| 
 | |
| 
 | |
| ### Usage Updates
 | |
| 
 | |
| #### For Users
 | |
| 
 | |
| **1. Component Support:** Chai now included the proper configuration to be installed as a
 | |
| [component](https://github.com/component/component). Component users are encouraged to consult
 | |
| [chaijs.com](http://chaijs.com) for the latest version number as using the master branch
 | |
| does not gaurantee stability.
 | |
| 
 | |
| ```js
 | |
| // relevant component.json
 | |
|   devDependencies: {
 | |
|     "chaijs/chai": "1.5.0"
 | |
|   }
 | |
| ```
 | |
| 
 | |
| Alternatively, bleeding-edge is available:
 | |
| 
 | |
|     $ component install chaijs/chai
 | |
| 
 | |
| **2. Configurable showDiff:** Some test runners (such as [mocha](http://visionmedia.github.com/mocha/))
 | |
| include support for showing the diff of strings and objects when an equality error occurs. Chai has
 | |
| already included support for this, however some users may not prefer this display behavior. To revert to
 | |
| no diff display, the following configuration is available:
 | |
| 
 | |
| ```js
 | |
| chai.Assertion.showDiff = false; // diff output disabled
 | |
| chai.Assertion.showDiff = true; // default, diff output enabled
 | |
| ```
 | |
| 
 | |
| #### For Plugin Developers
 | |
| 
 | |
| **1. New Utility - type**: The new utility `.type()` is available as a better implementation of `typeof`
 | |
| that can be used cross-browser. It handles the inconsistencies of Array, `null`, and `undefined` detection.
 | |
| 
 | |
| - **@param** _{Mixed}_ object to detect type of
 | |
| - **@return** _{String}_ object type
 | |
| 
 | |
| ```js
 | |
| chai.use(function (c, utils) {
 | |
|   // some examples
 | |
|   utils.type({}); // 'object'
 | |
|   utils.type(null); // `null'
 | |
|   utils.type(undefined); // `undefined`
 | |
|   utils.type([]); // `array`
 | |
| });
 | |
| ```
 | |
| 
 | |
| #### For Core Contributors
 | |
| 
 | |
| **1. Browser Testing**: Browser testing of the `./chai.js` file is now available in the command line
 | |
| via PhantomJS. `make test` and Travis-CI will now also rebuild and test `./chai.js`. Consequently, all
 | |
| pull requests will now be browser tested in this way.
 | |
| 
 | |
| _Note: Contributors opening pull requests should still NOT include the browser build._
 | |
| 
 | |
| **2. SauceLabs Testing**: Early SauceLab support has been enabled with the file `./support/mocha-cloud.js`.
 | |
| Those interested in trying it out should create a free [Open Sauce](https://saucelabs.com/signup/plan) account
 | |
| and include their credentials in `./test/auth/sauce.json`.
 |