developit / Preact Jsx Chai
Licence: mit
✅ Add JSX assertions to Chai, with support for Preact Components.
Stars: ✭ 56
Programming Languages
javascript
184084 projects - #8 most used programming language
Projects that are alternatives of or similar to Preact Jsx Chai
Javascript Testing Best Practices
📗🌐 🚢 Comprehensive and exhaustive JavaScript & Node.js testing best practices (August 2021)
Stars: ✭ 13,976 (+24857.14%)
Mutual labels: test, chai
patent-free-react-ecosystem-migration-plan
Patent Free React Ecosystem Migration Plan
Stars: ✭ 15 (-73.21%)
Mutual labels: preact, chai
Chai Immutable
Chai assertions for Facebook's Immutable library for JavaScript collections
Stars: ✭ 161 (+187.5%)
Mutual labels: test, chai
Preact Render Spy
Render preact components with access to the produced virtual dom for testing.
Stars: ✭ 178 (+217.86%)
Mutual labels: test, preact
Chakram
REST API test framework. BDD and exploits promises
Stars: ✭ 912 (+1528.57%)
Mutual labels: test, chai
Should Enzyme
Useful functions for testing React Components with Enzyme.
Stars: ✭ 41 (-26.79%)
Mutual labels: test
Ts Preact Starter
Barebones starter project for Preact with TypeScript
Stars: ✭ 49 (-12.5%)
Mutual labels: preact
Razzle Unrouted
Blazingly fast server-rendered MVC Webapps with Preact and Webpack
Stars: ✭ 39 (-30.36%)
Mutual labels: preact
Backbone Faux Server
A framework for mocking up server-side persistence / processing for Backbone.js
Stars: ✭ 55 (-1.79%)
Mutual labels: test
Aws Testing Library
Chai (https://chaijs.com) and Jest (https://jestjs.io/) assertions for testing services built with aws
Stars: ✭ 52 (-7.14%)
Mutual labels: chai
Testify
A unit testing framework written in bash for bash scripts
Stars: ✭ 45 (-19.64%)
Mutual labels: test
Powerslim
Fitnesse Slim implementation in PowerShell. PowerSlim makes it possible to use PowerShell in the acceptance testing
Stars: ✭ 49 (-12.5%)
Mutual labels: test
Kahlan
✔️ PHP Test Framework for Freedom, Truth, and Justice
Stars: ✭ 1,065 (+1801.79%)
Mutual labels: test
Blaze
⚡ File sharing progressive web app built using WebTorrent and WebSockets
Stars: ✭ 991 (+1669.64%)
Mutual labels: preact
Ezxss
ezXSS is an easy way for penetration testers and bug bounty hunters to test (blind) Cross Site Scripting.
Stars: ✭ 1,022 (+1725%)
Mutual labels: test
Navi
Open Source Project for Grow with Google Udacity Scholarship Challenge - Navigation app using offline first strategy and google maps api - To get started please refer to the README.md - CONTRIBUTING.md and the project Wiki
Stars: ✭ 51 (-8.93%)
Mutual labels: preact
preact-jsx-chai
Extend Chai with support for asserting JSX equality & contents with support for Preact Components.
(Heavily) inspired by jsx-chai.
Usage
import { h } from 'preact'; /** @jsx h */
import chai, { expect } from 'chai';
import assertJsx from 'preact-jsx-chai';
chai.use(assertJsx);
// check if two JSX DOMs are deeply equal:
expect(
<div id="1">a</div>
).to.deep.equal(
<div id="1">a</div>
);
// check if a given JSX DOM contains the given fragment:
expect(
<div> <span>foo!</span> </div>
).to.contain(
<span>foo!</span>
);
Note: in environments like Karma where chai is available as a global,
preact-jsx-chai
will automatically register itself on import. Don't worry, though, this plugin is smart enough to avoid registering itself multiple times.
Options
There are a few global options available to customize how preact-jsx-chai
asserts over VNodes.
Name | Type | Default | Description |
---|---|---|---|
isJsx |
Function | auto | Override the detection of values as being JSX VNodes. |
functions |
Boolean | true | If false , props with function values will be omitted from the comparison entirely |
functionNames |
Boolean | true | If false , ignores function names and bound state, asserting only that the compared props are functions |
To set these options:
import { options } from 'preact-jsx-chai';
options.functions = false;
// or:
import jsxChai from 'preact-jsx-chai';
jsxChai.options.functions = false;
Assertions
Deep, fully rendered equality/inclusion is checked for: .deep.equal
, .eql
, .include
, and .contain
Shallow, JSX only equality/inclusion is checked for: .equal
, .shallow.include
, and .shallow.contain
let Outer = ({a}) => <Inner a={a}/>
let Inner = ({a}) => <div>{a}</div>
// JSX tests
expect(<Outer />).to.be.jsx
expect('Outer').to.not.be.jsx
// Deep equality tests
expect(<Outer a="foo"/>).to.deep.equal(<Inner a="foo" notRenderedProp="x" />)
expect(<Outer a="foo"/>).to.deep.equal(<div>foo</div>/>)
expect(<Outer a="foo"/>).to.not.deep.equal(<Inner a="NotBar"/>)
expect(<Outer />).to.eql(<Outer />) // .eql is shorthand for .deep.equal
expect(<Outer a="foo"/>).to.not.eql(<Inner a="NotFoo"/>)
// Shallow Equality tests
expect(<Outer a="foo"/>).to.equal(<Inner a="foo" />)
expect(<Outer a="foo"/>).to.not.equal(<Inner a="foo" verifiedJSXProp="x" />)
expect(<Outer a="foo"/>).to.not.equal(<div>foo</div>) // <Inner /> is not rendered
let WrappedOuter = ({a}) => <div id="outer"><Inner a={a} /></div>
// Deep includes/contains tests
expect(<WrappedOuter a="foo" />).to.include(<div>foo</div>)
expect(<WrappedOuter a="foo" />).to.contain(<div>foo</div>)
expect(<WrappedOuter a="foo" />).to.contain(<Inner a="foo" />)
expect(<WrappedOuter a="foo" />).to.not.include(<div>Bad Div</div>)
// Shallow includes/contains tests
expect(<WrappedOuter a="foo" />).to.shallow.contain(<Inner a="foo" />)
expect(<WrappedOuter a="foo" />).to.not.shallow.include(<div>foo</div>)
License
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].