ReactTestRenderer package (#7362)
Dustan Kasten committed
Jul 29, 2016 at 00:39 UTC
7e874f59f5097f3800539172b5a0e2ee0d898b49
6 files changed
+101
Gruntfile.js
+6
@@ -90,6 +90,10 @@ module.exports = function(grunt) {
90
grunt.registerTask('npm-react-addons:release', npmReactAddonsTasks.buildReleases);
91
grunt.registerTask('npm-react-addons:pack', npmReactAddonsTasks.packReleases);
92
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
+
97
grunt.registerTask('version-check', function() {
98
// Use gulp here.
99
spawnGulp(['version-check'], null, this.async());
@@ -146,6 +150,8 @@ module.exports = function(grunt) {
150
'npm-react-native:pack',
151
'npm-react-addons:release',
152
'npm-react-addons:pack',
153
+ 'npm-react-test:release',
154
+ 'npm-react-test:pack',
155
'compare_size',
156
]);
157
grunt/tasks/npm-react-test.js
new
+46
@@ -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
@@ -27,6 +27,8 @@ module.exports = function(gulp, plugins) {
27
'packages/react-addons/package.json (react dependency)':
28
// Get the "version" without the range bit
29
addonsData.peerDependencies.react.slice(1),
30
+ 'packages/react-test-renderer/package.json':
31
+ require('../../packages/react-test-renderer/package.json').version,
32
'src/ReactVersion.js': require('../../src/ReactVersion'),
33
};
34
packages/react-test-renderer/README.md
new
+22
@@ -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
new
+4
@@ -0,0 +1,4 @@
1
+
2
+'use strict';
3
+
4
+module.exports = require('react/lib/ReactTestRenderer');
packages/react-test-renderer/package.json
new
+21
@@ -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
+