Testing overview
Какие
- unit - 1/3 функционала
- интеграционные - важные связи
- функциональные - на устоявшийся функционал
facebook/jest


Airbnb/enzyme
import React from 'react';
import { shallow } from 'enzyme';
import MyComponent from './MyComponent';
import Foo from './Foo';
describe('<MyComponent />', () => {
it('renders three <Foo /> components', () => {
const wrapper = shallow(<MyComponent />);
expect(wrapper.find(Foo)).to.have.lengthOf(3);
});
it('renders children when passed in', () => {
const wrapper = shallow((
<MyComponent>
<div className="unique" />
</MyComponent>
));
expect(wrapper.contains(<div className="unique" />)).to.equal(true);
});
it('simulates click events', () => {
const onButtonClick = sinon.spy();
const wrapper = shallow(<Foo onButtonClick={onButtonClick} />);
wrapper.find('button').simulate('click');
expect(onButtonClick).to.have.property('callCount', 1);
});
});Snapshot Testing with Jest
import React from 'react';
import Link from '../Link.react';
import renderer from 'react-test-renderer';
it('renders correctly', () => {
const tree = renderer
.create(<Link page="http://www.facebook.com">Facebook</Link>)
.toJSON();
expect(tree).toMatchSnapshot();
});exports[`renders correctly 1`] = `
<a
className="normal"
href="http://www.facebook.com"
onMouseEnter={[Function]}
onMouseLeave={[Function]}
>
Facebook
</a>
`;visual regression (screenshots) testing

Algoritm
- Create screenshot of page (puppeteer)
- Compare with old screenshot (jest-image-snapshot)
- See resulted image


Example



result of test execution

e2e (Nightwatch.js)
module.exports = {
'Demo test Google' : function (browser) {
browser
.url('http://www.google.com')
.waitForElementVisible('body', 1000)
.setValue('input[type=text]', 'nightwatch')
.waitForElementVisible('button[name=btnG]', 1000)
.click('button[name=btnG]')
.pause(1000)
.assert.containsText('#main', 'Night Watch')
.end();
}
};
Советы
- Тестируем старый функционал и популярные компоненты в первую очередь
- Функциональные тесты - тестировщику
- Искать методы борьбы с зависимостями
- Snapshots тестирование это не хорошо
- Screenshots тестирование это хорошо
- Performance testing
- Monkey testing
PageSpeed Insights


gremlins.js





reading list
deck
By Denis Bogush
deck
- 97