@samitouri / QOS-React / commits / 7e874f59f5

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 +