Skip to content

Commit 7e874f5

Browse files
iamdustanzpao
authored andcommitted
ReactTestRenderer package (facebook#7362)
1 parent c9dc2ab commit 7e874f5

File tree

6 files changed

+101
-0
lines changed

6 files changed

+101
-0
lines changed

Gruntfile.js

+6
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ module.exports = function(grunt) {
9090
grunt.registerTask('npm-react-addons:release', npmReactAddonsTasks.buildReleases);
9191
grunt.registerTask('npm-react-addons:pack', npmReactAddonsTasks.packReleases);
9292

93+
var npmReactTestRendererTasks = require('./grunt/tasks/npm-react-test');
94+
grunt.registerTask('npm-react-test:release', npmReactTestRendererTasks.buildRelease);
95+
grunt.registerTask('npm-react-test:pack', npmReactTestRendererTasks.packRelease);
96+
9397
grunt.registerTask('version-check', function() {
9498
// Use gulp here.
9599
spawnGulp(['version-check'], null, this.async());
@@ -146,6 +150,8 @@ module.exports = function(grunt) {
146150
'npm-react-native:pack',
147151
'npm-react-addons:release',
148152
'npm-react-addons:pack',
153+
'npm-react-test:release',
154+
'npm-react-test:pack',
149155
'compare_size',
150156
]);
151157

grunt/tasks/npm-react-test.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
'use strict';
2+
3+
var fs = require('fs');
4+
var grunt = require('grunt');
5+
6+
var src = 'packages/react-test-renderer/';
7+
var dest = 'build/packages/react-test-renderer/';
8+
9+
function buildRelease() {
10+
if (grunt.file.exists(dest)) {
11+
grunt.file.delete(dest);
12+
}
13+
14+
// Copy to build/packages/react-native-renderer
15+
var mappings = [].concat(
16+
grunt.file.expandMapping('**/*', dest, {cwd: src}),
17+
grunt.file.expandMapping('{LICENSE,PATENTS}', dest)
18+
);
19+
mappings.forEach(function(mapping) {
20+
var mappingSrc = mapping.src[0];
21+
var mappingDest = mapping.dest;
22+
if (grunt.file.isDir(mappingSrc)) {
23+
grunt.file.mkdir(mappingDest);
24+
} else {
25+
grunt.file.copy(mappingSrc, mappingDest);
26+
}
27+
});
28+
}
29+
30+
function packRelease() {
31+
var done = this.async();
32+
var spawnCmd = {
33+
cmd: 'npm',
34+
args: ['pack', 'packages/react-test-renderer'],
35+
};
36+
grunt.util.spawn(spawnCmd, function() {
37+
var buildSrc = 'react-test-renderer-' + grunt.config.data.pkg.version + '.tgz';
38+
var buildDest = 'build/packages/react-test-renderer.tgz';
39+
fs.rename(buildSrc, buildDest, done);
40+
});
41+
}
42+
43+
module.exports = {
44+
buildRelease: buildRelease,
45+
packRelease: packRelease,
46+
};

gulp/tasks/version-check.js

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ module.exports = function(gulp, plugins) {
2727
'packages/react-addons/package.json (react dependency)':
2828
// Get the "version" without the range bit
2929
addonsData.peerDependencies.react.slice(1),
30+
'packages/react-test-renderer/package.json':
31+
require('../../packages/react-test-renderer/package.json').version,
3032
'src/ReactVersion.js': require('../../src/ReactVersion'),
3133
};
3234

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# `react-test-renderer`
2+
3+
This package provides an experimental React renderer that can be used to render React components to pure JavaScript objects, without depending on the DOM or a native mobile environment.
4+
5+
Essentially, this package makes it easy to grab a snapshot of the "DOM tree" rendered by a React DOM or React Native component without using a browser or jsdom.
6+
7+
Usage:
8+
9+
```jsx
10+
const ReactTestRenderer = require('react-test-renderer');
11+
12+
const renderer = ReactTestRenderer.create(
13+
<Link page="https://www.facebook.com/">Facebook</Link>
14+
);
15+
16+
console.log(renderer.toJSON());
17+
// { type: 'a',
18+
// props: { href: 'https://www.facebook.com/' },
19+
// children: [ 'Facebook' ] }
20+
```
21+
22+
You can also use Jest's snapshot testing feature to automatically save a copy of the JSON tree to a file and check in your tests that it hasn't changed: http://facebook.github.io/jest/blog/2016/07/27/jest-14.html.

packages/react-test-renderer/index.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
'use strict';
3+
4+
module.exports = require('react/lib/ReactTestRenderer');
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "react-test-renderer",
3+
"version": "16.0.0-alpha",
4+
"description": "React package for snapshot testing.",
5+
"main": "index.js",
6+
"repository": "facebook/react",
7+
"keywords": [
8+
"react",
9+
"react-native",
10+
"react-testing"
11+
],
12+
"license": "BSD-3-Clause",
13+
"bugs": {
14+
"url": "https://github.com/facebook/react/issues"
15+
},
16+
"homepage": "https://facebook.github.io/react/",
17+
"peerDependencies": {
18+
"react": "^16.0.0-alpha"
19+
}
20+
}
21+

0 commit comments

Comments
 (0)