Iterating on DevTools tests: Trying to run tests against pre-build react-dom and react-test-renderers
Brian Vaughn committed
Aug 26, 2019 at 13:43 UTC
a48593a8d36f5e1c26d0d98b6ceae77642aed5cb
6 files changed
+105
-40
.circleci/config.yml
+10
-10
@@ -84,16 +84,6 @@ jobs:
84
- *run_yarn
85
- run: yarn test-persistent --maxWorkers=2
86
87
- test_source_devtools:
88
- docker: *docker
89
- environment: *environment
90
-
91
- steps:
92
- - checkout
93
- - *restore_yarn_cache
94
- - *run_yarn
95
- - run: yarn test-devtools --maxWorkers=2
96
-
87
test_source_prod:
88
docker: *docker
89
environment: *environment
@@ -168,6 +158,16 @@ jobs:
158
- *run_yarn
159
- run: yarn test-build --maxWorkers=2
160
161
+ test_build_devtools:
162
+ docker: *docker
163
+ environment: *environment
164
+ steps:
165
+ - checkout
166
+ - attach_workspace: *attach_workspace
167
+ - *restore_yarn_cache
168
+ - *run_yarn
169
+ - run: yarn test-build-devtools --maxWorkers=2
170
+
171
test_dom_fixtures:
172
docker: *docker
173
environment: *environment
package.json
+1
-2
@@ -102,14 +102,13 @@
102
"postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json && node ./scripts/flow/createFlowConfigs.js",
103
"debug-test": "cross-env NODE_ENV=development node --inspect-brk node_modules/.bin/jest --config ./scripts/jest/config.source.js --runInBand",
104
"test": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.source.js",
105
- "test-devtools": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.source-devtools.js",
106
- "debug-test-devtools": "cross-env NODE_ENV=development node --inspect-brk node_modules/.bin/jest --config ./scripts/jest/config.source-devtools.js --runInBand",
105
"test-persistent": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.source-persistent.js",
106
"debug-test-persistent": "cross-env NODE_ENV=development node --inspect-brk node_modules/.bin/jest --config ./scripts/jest/config.source-persistent.js --runInBand",
107
"test-prod": "cross-env NODE_ENV=production jest --config ./scripts/jest/config.source.js",
108
"test-prod-build": "yarn test-build-prod",
109
"test-build": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.build.js",
110
"test-build-prod": "cross-env NODE_ENV=production jest --config ./scripts/jest/config.build.js",
111
+ "test-build-devtools": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.build-devtools.js",
112
"test-dom-fixture": "cd fixtures/dom && yarn && yarn prestart && yarn test",
113
"flow": "node ./scripts/tasks/flow.js",
114
"flow-ci": "node ./scripts/tasks/flow-ci.js",
packages/react-devtools-shared/package.json
+4
@@ -2,6 +2,10 @@
2
"private": true,
3
"name": "react-devtools-shared",
4
"version": "0.0.0",
5
+ "devDependencies": {
6
+ "react-15": "npm:react@^15",
7
+ "react-dom-15": "npm:react-dom@^15"
8
+ },
9
"dependencies": {
10
"@babel/runtime": "^7.0.0",
11
"@reach/menu-button": "^0.1.17",
scripts/jest/config.build-devtools.js
new
+67
@@ -0,0 +1,67 @@
1
+'use strict';
2
+
3
+const {readdirSync, statSync} = require('fs');
4
+const {join} = require('path');
5
+const baseConfig = require('./config.base');
6
+
7
+// Find all folders in packages/* with package.json
8
+const packagesRoot = join(__dirname, '..', '..', 'packages');
9
+const packages = readdirSync(packagesRoot).filter(dir => {
10
+ if (dir.charAt(0) === '.') {
11
+ return false;
12
+ }
13
+ if (dir.includes('react-devtools')) {
14
+ return false;
15
+ }
16
+ const packagePath = join(packagesRoot, dir, 'package.json');
17
+ return statSync(packagePath).isFile();
18
+});
19
+
20
+// Create a module map to point React packages to the build output
21
+const moduleNameMapper = {};
22
+
23
+// Allow bundle tests to read (but not write!) default feature flags.
24
+// This lets us determine whether we're running in different modes
25
+// without making relevant tests internal-only.
26
+moduleNameMapper[
27
+ '^shared/ReactFeatureFlags'
28
+] = `<rootDir>/packages/shared/forks/ReactFeatureFlags.readonly`;
29
+
30
+// Map packages to bundles
31
+packages.forEach(name => {
32
+ // Root entry point
33
+ moduleNameMapper[`^${name}$`] = `<rootDir>/build/node_modules/${name}`;
34
+ // Named entry points
35
+ moduleNameMapper[
36
+ `^${name}\/([^\/]+)$`
37
+ ] = `<rootDir>/build/node_modules/${name}/$1`;
38
+});
39
+
40
+module.exports = Object.assign({}, baseConfig, {
41
+ // Redirect imports to the compiled bundles
42
+ moduleNameMapper,
43
+ // Don't run bundle tests on -test.internal.* files
44
+ testPathIgnorePatterns: ['/node_modules/', '-test.internal.js$'],
45
+ // Exclude the build output from transforms
46
+ transformIgnorePatterns: ['/node_modules/', '<rootDir>/build/'],
47
+ testRegex: 'packages/react-devtools-shared/src/__tests__/[^]+.test.js$',
48
+ snapshotSerializers: [
49
+ require.resolve(
50
+ '../../packages/react-devtools-shared/src/__tests__/inspectedElementSerializer.js'
51
+ ),
52
+ require.resolve(
53
+ '../../packages/react-devtools-shared/src/__tests__/storeSerializer.js'
54
+ ),
55
+ ],
56
+ setupFiles: [
57
+ ...baseConfig.setupFiles,
58
+ require.resolve('./setupTests.build.js'),
59
+ require.resolve(
60
+ '../../packages/react-devtools-shared/src/__tests__/setupEnv.js'
61
+ ),
62
+ ],
63
+ // TODO (Jest v24) Rename "setupFilesAfterEnv" after Jest upgrade
64
+ setupTestFrameworkScriptFile: require.resolve(
65
+ '../../packages/react-devtools-shared/src/__tests__/setupTests.js'
66
+ ),
67
+});
scripts/jest/config.source-devtools.js
deleted
-26
@@ -1,26 +0,0 @@
1
-'use strict';
2
-
3
-const baseConfig = require('./config.base');
4
-
5
-module.exports = Object.assign({}, baseConfig, {
6
- testRegex: 'packages/react-devtools-shared/src/__tests__/[^]+.test.js$',
7
- snapshotSerializers: [
8
- require.resolve(
9
- '../../packages/react-devtools-shared/src/__tests__/inspectedElementSerializer.js'
10
- ),
11
- require.resolve(
12
- '../../packages/react-devtools-shared/src/__tests__/storeSerializer.js'
13
- ),
14
- ],
15
- setupFiles: [
16
- ...baseConfig.setupFiles,
17
- require.resolve('./setupHostConfigs.js'),
18
- require.resolve(
19
- '../../packages/react-devtools-shared/src/__tests__/setupEnv.js'
20
- ),
21
- ],
22
- // TODO (Jest v24) Rename "setupFilesAfterEnv" after Jest upgrade
23
- setupTestFrameworkScriptFile: require.resolve(
24
- '../../packages/react-devtools-shared/src/__tests__/setupTests.js'
25
- ),
26
-});
yarn.lock
+23
-2
@@ -3632,7 +3632,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
3632
safe-buffer "^5.0.1"
3633
sha.js "^2.4.8"
3634
3635
-create-react-class@^15.6.2, create-react-class@^15.6.3:
3635
+create-react-class@^15.6.0, create-react-class@^15.6.2, create-react-class@^15.6.3:
3636
version "15.6.3"
3637
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
3638
dependencies:
@@ -9731,7 +9731,7 @@ prompts@^0.1.9:
9731
kleur "^2.0.1"
9732
sisteransi "^0.1.1"
9733
9734
-prop-types@^15.6.0, prop-types@^15.7.2:
9734
+prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.7.2:
9735
version "15.7.2"
9736
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
9737
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@@ -9971,6 +9971,27 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.1, rc@^1.2.7, rc@^1.2.8:
9971
minimist "^1.2.0"
9972
strip-json-comments "~2.0.1"
9973
9974
+"react-15@npm:react@^15":
9975
+ version "15.6.2"
9976
+ resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72"
9977
+ integrity sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=
9978
+ dependencies:
9979
+ create-react-class "^15.6.0"
9980
+ fbjs "^0.8.9"
9981
+ loose-envify "^1.1.0"
9982
+ object-assign "^4.1.0"
9983
+ prop-types "^15.5.10"
9984
+
9985
+"react-dom-15@npm:react-dom@^15":
9986
+ version "15.6.2"
9987
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730"
9988
+ integrity sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=
9989
+ dependencies:
9990
+ fbjs "^0.8.9"
9991
+ loose-envify "^1.1.0"
9992
+ object-assign "^4.1.0"
9993
+ prop-types "^15.5.10"
9994
+
9995
react-lifecycles-compat@^3.0.2:
9996
version "3.0.2"
9997
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.2.tgz#7279047275bd727a912e25f734c0559527e84eff"