detox 20.0.10-prerelease.0 → 20.0.12-prerelease.0
Sign up to get free protection for your applications and to get access to all the features.
- package/Detox-android/com/wix/detox/{20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar → 20.0.12-prerelease.0/detox-20.0.12-prerelease.0-javadoc.jar} +0 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-javadoc.jar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-javadoc.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-javadoc.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-javadoc.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar → 20.0.12-prerelease.0/detox-20.0.12-prerelease.0-sources.jar} +0 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-sources.jar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-sources.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-sources.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0-sources.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar → 20.0.12-prerelease.0/detox-20.0.12-prerelease.0.aar} +0 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.aar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.aar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.aar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.aar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom → 20.0.12-prerelease.0/detox-20.0.12-prerelease.0.pom} +1 -1
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.pom.md5 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.pom.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.pom.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.0.12-prerelease.0/detox-20.0.12-prerelease.0.pom.sha512 +1 -0
- package/Detox-android/com/wix/detox/maven-metadata.xml +4 -4
- package/Detox-android/com/wix/detox/maven-metadata.xml.md5 +1 -1
- package/Detox-android/com/wix/detox/maven-metadata.xml.sha1 +1 -1
- package/Detox-android/com/wix/detox/maven-metadata.xml.sha256 +1 -1
- package/Detox-android/com/wix/detox/maven-metadata.xml.sha512 +1 -1
- package/Detox-ios-src.tbz +0 -0
- package/Detox-ios.tbz +0 -0
- package/README.md +1 -1
- package/android/detox/proguard-rules.pro +3 -0
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/IdlingResourceDescription.kt +19 -13
- package/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/NetworkIdlingResource.java +33 -30
- package/android/detox/src/testFull/java/com/wix/detox/reactnative/idlingresources/NetworkIdlingResourcesTest.kt +61 -0
- package/index.d.ts +25 -2
- package/internals.d.ts +36 -14
- package/local-cli/cli.js +7 -5
- package/local-cli/init.js +2 -1
- package/local-cli/reset-lock-file.js +16 -0
- package/local-cli/templates/jest.js +3 -1
- package/local-cli/test.test.js +58 -14
- package/local-cli/testCommand/TestRunnerCommand.js +10 -3
- package/package.json +2 -2
- package/runners/deprecation.js +2 -2
- package/runners/jest/reporters/DetoxReporter.js +22 -2
- package/runners/jest/testEnvironment/index.js +83 -82
- package/runners/jest/testEnvironment/listeners/DetoxCoreListener.js +9 -24
- package/runners/jest/testEnvironment/listeners/DetoxPlatformFilterListener.js +1 -1
- package/src/client/actions/formatters/sync-resources/NetworkFormatter.js +1 -1
- package/src/configuration/composeAppsConfig.js +4 -0
- package/src/configuration/composeRunnerConfig.js +4 -2
- package/src/devices/allocation/drivers/android/emulator/AVDValidator.js +4 -4
- package/src/devices/allocation/drivers/android/emulator/EmulatorAllocDriver.js +1 -1
- package/src/devices/common/drivers/ios/tools/AppleSimUtils.js +25 -1
- package/src/devices/lifecycle/GenyGlobalLifecycleHandler.js +2 -2
- package/src/devices/runtime/RuntimeDevice.js +10 -0
- package/src/errors/DetoxConfigErrorComposer.js +8 -0
- package/src/ipc/IPCClient.js +9 -5
- package/src/ipc/IPCServer.js +17 -13
- package/src/ipc/SessionState.js +2 -4
- package/src/realms/DetoxContext.js +2 -2
- package/src/realms/DetoxInternalsFacade.js +1 -1
- package/src/realms/DetoxPrimaryContext.js +6 -8
- package/src/realms/DetoxSecondaryContext.js +2 -2
- package/src/symbols.js +2 -2
- package/src/utils/Timer.js +55 -38
- package/src/utils/errorUtils.js +20 -0
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.md5 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha512 +0 -1
package/src/ipc/IPCClient.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
const { IPC } = require('node-ipc');
|
2
2
|
|
3
3
|
const { DetoxInternalError } = require('../errors');
|
4
|
+
const { serializeObjectWithError } = require('../utils/errorUtils');
|
4
5
|
|
5
6
|
class IPCClient {
|
6
7
|
constructor({ id, logger, state }) {
|
@@ -47,15 +48,18 @@ class IPCClient {
|
|
47
48
|
}
|
48
49
|
|
49
50
|
async registerWorker(workerId) {
|
50
|
-
await this._emit('registerWorker', { workerId });
|
51
|
+
const sessionState = await this._emit('registerWorker', { workerId });
|
52
|
+
this._state.patch(sessionState);
|
51
53
|
}
|
52
54
|
|
53
55
|
/**
|
54
|
-
* @param {
|
55
|
-
* @param {Boolean} permanent
|
56
|
+
* @param {DetoxInternals.DetoxTestFileReport[]} testResults
|
56
57
|
*/
|
57
|
-
async
|
58
|
-
await this._emit('
|
58
|
+
async reportTestResults(testResults) {
|
59
|
+
const sessionState = await this._emit('reportTestResults', {
|
60
|
+
testResults: testResults.map(r => serializeObjectWithError(r, 'testExecError')),
|
61
|
+
});
|
62
|
+
this._state.patch(sessionState);
|
59
63
|
}
|
60
64
|
|
61
65
|
async _connectToServer() {
|
package/src/ipc/IPCServer.js
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
const { uniqBy } = require('lodash');
|
1
2
|
const { IPC } = require('node-ipc');
|
2
3
|
|
4
|
+
const { serializeObjectWithError } = require('../utils/errorUtils');
|
5
|
+
|
3
6
|
class IPCServer {
|
4
7
|
/**
|
5
8
|
* @param {object} options
|
@@ -27,12 +30,12 @@ class IPCServer {
|
|
27
30
|
this._ipc.config.appspace = 'detox.';
|
28
31
|
this._ipc.config.logger = (msg) => this._logger.trace(msg);
|
29
32
|
|
30
|
-
|
33
|
+
await new Promise((resolve) => {
|
31
34
|
// TODO: handle reject
|
32
35
|
this._ipc.serve(() => resolve());
|
33
36
|
this._ipc.server.on('registerContext', this.onRegisterContext.bind(this));
|
34
37
|
this._ipc.server.on('registerWorker', this.onRegisterWorker.bind(this));
|
35
|
-
this._ipc.server.on('
|
38
|
+
this._ipc.server.on('reportTestResults', this.onReportTestResults.bind(this));
|
36
39
|
this._ipc.server.start();
|
37
40
|
});
|
38
41
|
}
|
@@ -53,8 +56,7 @@ class IPCServer {
|
|
53
56
|
this._sessionState.contexts.push(id);
|
54
57
|
|
55
58
|
this._ipc.server.emit(socket, 'registerContextDone', {
|
56
|
-
|
57
|
-
testFilesToRetry: this._sessionState.testFilesToRetry,
|
59
|
+
testResults: this._sessionState.testResults,
|
58
60
|
testSessionIndex: this._sessionState.testSessionIndex,
|
59
61
|
});
|
60
62
|
}
|
@@ -73,20 +75,22 @@ class IPCServer {
|
|
73
75
|
}
|
74
76
|
}
|
75
77
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
78
|
+
onReportTestResults({ testResults }, socket = null) {
|
79
|
+
const merged = uniqBy([
|
80
|
+
...testResults.map(r => serializeObjectWithError(r, 'testExecError')),
|
81
|
+
...this._sessionState.testResults
|
82
|
+
], 'testFilePath');
|
83
|
+
|
84
|
+
this._sessionState.testResults.splice(0, Infinity, ...merged);
|
82
85
|
|
83
86
|
if (socket) {
|
84
|
-
this._ipc.server.emit(socket, '
|
87
|
+
this._ipc.server.emit(socket, 'reportTestResultsDone', {
|
88
|
+
testResults: this._sessionState.testResults,
|
89
|
+
});
|
85
90
|
}
|
86
91
|
|
87
92
|
this._ipc.server.broadcast('sessionStateUpdate', {
|
88
|
-
|
89
|
-
testFilesToRetry: this._sessionState.testFilesToRetry,
|
93
|
+
testResults: this._sessionState.testResults,
|
90
94
|
});
|
91
95
|
}
|
92
96
|
}
|
package/src/ipc/SessionState.js
CHANGED
@@ -9,8 +9,7 @@ class SessionState {
|
|
9
9
|
detoxConfigSnapshotPath = '',
|
10
10
|
detoxConfig = null,
|
11
11
|
detoxIPCServer = '',
|
12
|
-
|
13
|
-
testFilesToRetry = [],
|
12
|
+
testResults = [],
|
14
13
|
testSessionIndex = 0,
|
15
14
|
workersCount = 0
|
16
15
|
}) {
|
@@ -19,8 +18,7 @@ class SessionState {
|
|
19
18
|
this.detoxConfigSnapshotPath = detoxConfigSnapshotPath;
|
20
19
|
this.detoxConfig = detoxConfig;
|
21
20
|
this.detoxIPCServer = detoxIPCServer;
|
22
|
-
this.
|
23
|
-
this.testFilesToRetry = testFilesToRetry;
|
21
|
+
this.testResults = testResults;
|
24
22
|
this.testSessionIndex = testSessionIndex;
|
25
23
|
this.workersCount = workersCount;
|
26
24
|
}
|
@@ -36,7 +36,7 @@ class DetoxContext {
|
|
36
36
|
};
|
37
37
|
|
38
38
|
this[symbols.getStatus] = this[symbols.getStatus].bind(this);
|
39
|
-
this[symbols.
|
39
|
+
this[symbols.reportTestResults] = this[symbols.reportTestResults].bind(this);
|
40
40
|
this[symbols.resolveConfig] = this[symbols.resolveConfig].bind(this);
|
41
41
|
this[symbols.installWorker] = this[symbols.installWorker].bind(this);
|
42
42
|
this[symbols.uninstallWorker] = this[symbols.uninstallWorker].bind(this);
|
@@ -103,7 +103,7 @@ class DetoxContext {
|
|
103
103
|
},
|
104
104
|
});
|
105
105
|
/** @abstract */
|
106
|
-
[symbols.
|
106
|
+
[symbols.reportTestResults](_testResults) {}
|
107
107
|
/**
|
108
108
|
* @abstract
|
109
109
|
* @param {Partial<DetoxInternals.DetoxInitOptions>} _opts
|
@@ -26,7 +26,7 @@ class DetoxInternalsFacade {
|
|
26
26
|
this.onTestFnStart = context[symbols.onTestFnStart];
|
27
27
|
this.onTestFnSuccess = context[symbols.onTestFnSuccess];
|
28
28
|
this.onTestStart = context[symbols.onTestStart];
|
29
|
-
this.
|
29
|
+
this.reportTestResults = context[symbols.reportTestResults];
|
30
30
|
this.resolveConfig = context[symbols.resolveConfig];
|
31
31
|
this.session = context[symbols.session];
|
32
32
|
this.tracing = context[symbols.tracing];
|
@@ -46,9 +46,9 @@ class DetoxPrimaryContext extends DetoxContext {
|
|
46
46
|
}
|
47
47
|
|
48
48
|
//#region Internal members
|
49
|
-
async [symbols.
|
49
|
+
async [symbols.reportTestResults](testResults) {
|
50
50
|
if (this[_ipcServer]) {
|
51
|
-
this[_ipcServer].
|
51
|
+
this[_ipcServer].onReportTestResults({ testResults });
|
52
52
|
}
|
53
53
|
}
|
54
54
|
|
@@ -236,15 +236,14 @@ class DetoxPrimaryContext extends DetoxContext {
|
|
236
236
|
const { rootDir } = this[symbols.config].artifacts;
|
237
237
|
|
238
238
|
await fs.mkdirp(rootDir);
|
239
|
-
const [out1Stream, out2Stream
|
239
|
+
const [out1Stream, out2Stream] = ['detox.log', 'detox.trace.json']
|
240
240
|
.map((filename) => fs.createWriteStream(path.join(rootDir, filename)));
|
241
241
|
|
242
242
|
const mergedStream = streamUtils.uniteSessionLogs(sessionId);
|
243
243
|
|
244
244
|
await Promise.all([
|
245
|
-
pipe(mergedStream, streamUtils.
|
246
|
-
pipe(mergedStream, streamUtils.
|
247
|
-
pipe(mergedStream, streamUtils.chromeTraceStream(), streamUtils.writeJSON(), out3Stream),
|
245
|
+
pipe(mergedStream, streamUtils.debugStream(this[symbols.logger].config.options), out1Stream),
|
246
|
+
pipe(mergedStream, streamUtils.chromeTraceStream(), streamUtils.writeJSON(), out2Stream),
|
248
247
|
]);
|
249
248
|
}
|
250
249
|
|
@@ -286,8 +285,7 @@ class DetoxPrimaryContext extends DetoxContext {
|
|
286
285
|
return true;
|
287
286
|
}
|
288
287
|
|
289
|
-
|
290
|
-
return failedTestFiles.length + testFilesToRetry.length > 0;
|
288
|
+
return this[$sessionState].testResults.some(r => !r.success);
|
291
289
|
}
|
292
290
|
|
293
291
|
async[_resetLockFile]() {
|
@@ -29,9 +29,9 @@ class DetoxSecondaryContext extends DetoxContext {
|
|
29
29
|
}
|
30
30
|
|
31
31
|
//#region Internal members
|
32
|
-
async [symbols.
|
32
|
+
async [symbols.reportTestResults](testResults) {
|
33
33
|
if (this[_ipcClient]) {
|
34
|
-
await this[_ipcClient].
|
34
|
+
await this[_ipcClient].reportTestResults(testResults);
|
35
35
|
} else {
|
36
36
|
throw new DetoxInternalError('Detected an attempt to report failed tests using a non-initialized context.');
|
37
37
|
}
|
package/src/symbols.js
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
* readonly onTestFnStart: unique symbol;
|
19
19
|
* readonly onTestFnSuccess: unique symbol;
|
20
20
|
* readonly onTestStart: unique symbol;
|
21
|
-
* readonly
|
21
|
+
* readonly reportTestResults: unique symbol;
|
22
22
|
* readonly resolveConfig: unique symbol;
|
23
23
|
* readonly session: unique symbol;
|
24
24
|
* readonly tracing: unique symbol;
|
@@ -43,7 +43,7 @@ module.exports = {
|
|
43
43
|
//#endregion
|
44
44
|
|
45
45
|
//#region IPC
|
46
|
-
|
46
|
+
reportTestResults: Symbol('reportTestResults'),
|
47
47
|
//#endregion
|
48
48
|
|
49
49
|
//#region Main
|
package/src/utils/Timer.js
CHANGED
@@ -1,65 +1,82 @@
|
|
1
|
-
|
2
|
-
const DetoxRuntimeError = require('../errors/DetoxRuntimeError');
|
1
|
+
const { DetoxRuntimeError, DetoxInternalError } = require('../errors');
|
3
2
|
|
4
3
|
const Deferred = require('./Deferred');
|
5
4
|
|
6
5
|
class Timer {
|
6
|
+
constructor() {
|
7
|
+
/** @private */
|
8
|
+
this._eta = NaN;
|
9
|
+
/** @private */
|
10
|
+
this._timeout = NaN;
|
11
|
+
/** @type {NodeJS.Timer | null} */
|
12
|
+
this._timeoutHandle = null;
|
13
|
+
/** @type {Deferred | null} */
|
14
|
+
this._timeoutDeferred = null;
|
15
|
+
}
|
16
|
+
|
17
|
+
clear() {
|
18
|
+
if (this._timeoutHandle) {
|
19
|
+
clearTimeout(this._timeoutHandle);
|
20
|
+
this._timeoutHandle = null;
|
21
|
+
}
|
22
|
+
|
23
|
+
this._eta = NaN;
|
24
|
+
this._timeout = NaN;
|
25
|
+
this._timeoutDeferred = null;
|
26
|
+
}
|
27
|
+
|
28
|
+
get expired() {
|
29
|
+
return this._timeoutDeferred ? this._timeoutDeferred.isResolved() : false;
|
30
|
+
}
|
31
|
+
|
7
32
|
/**
|
8
|
-
* @param {string} description - gives more context for thrown errors
|
9
33
|
* @param {number} timeout - maximal allowed duration in milliseconds
|
10
34
|
*/
|
11
|
-
|
12
|
-
|
35
|
+
schedule(timeout) {
|
36
|
+
this.clear();
|
37
|
+
|
38
|
+
this._eta = Date.now() + timeout;
|
13
39
|
this._timeout = timeout;
|
14
|
-
|
15
|
-
this.
|
40
|
+
this._timeoutDeferred = new Deferred();
|
41
|
+
this._timeoutHandle = setTimeout(() => {
|
42
|
+
this._timeoutDeferred.resolve();
|
43
|
+
}, this._timeout);
|
16
44
|
|
17
|
-
this
|
45
|
+
return this;
|
18
46
|
}
|
19
47
|
|
20
|
-
|
21
|
-
this.
|
22
|
-
|
48
|
+
extend(ms) {
|
49
|
+
if (this.expired) {
|
50
|
+
return this.schedule(ms);
|
51
|
+
}
|
52
|
+
|
53
|
+
clearTimeout(this._timeoutHandle);
|
54
|
+
this._eta += ms;
|
55
|
+
this._timeout += ms;
|
23
56
|
this._timeoutHandle = setTimeout(() => {
|
24
57
|
this._timeoutDeferred.resolve();
|
25
|
-
}, this.
|
58
|
+
}, this._eta - Date.now());
|
26
59
|
}
|
27
60
|
|
28
|
-
async run(action) {
|
61
|
+
async run(description, action) {
|
62
|
+
if (!this._timeoutDeferred) {
|
63
|
+
throw new DetoxInternalError('Cannot run a timer action from an uninitialized timer');
|
64
|
+
}
|
65
|
+
|
29
66
|
const error = new DetoxRuntimeError({
|
30
|
-
message: `Exceeded timeout of ${this._timeout}ms while ${
|
67
|
+
message: `Exceeded timeout of ${this._timeout}ms while ${description}`,
|
31
68
|
noStack: true,
|
32
69
|
});
|
33
70
|
|
71
|
+
if (this.expired) {
|
72
|
+
throw error;
|
73
|
+
}
|
74
|
+
|
34
75
|
return Promise.race([
|
35
76
|
this._timeoutDeferred.promise.then(() => { throw error; }),
|
36
77
|
Promise.resolve().then(action),
|
37
78
|
]);
|
38
79
|
}
|
39
|
-
|
40
|
-
dispose() {
|
41
|
-
clearTimeout(this._timeoutHandle);
|
42
|
-
}
|
43
|
-
|
44
|
-
reset(extraDelayMs) {
|
45
|
-
this._timeout = extraDelayMs;
|
46
|
-
|
47
|
-
if (this._timeoutDeferred.status !== Deferred.PENDING) {
|
48
|
-
this._schedule();
|
49
|
-
} else {
|
50
|
-
clearTimeout(this._timeoutHandle);
|
51
|
-
this._timeoutHandle = setTimeout(() => this._timeoutDeferred.resolve(), extraDelayMs);
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
static async run({ description, timeout, fn }) {
|
56
|
-
const timer = new Timer({ description, timeout });
|
57
|
-
try {
|
58
|
-
await timer.run(fn);
|
59
|
-
} finally {
|
60
|
-
timer.dispose();
|
61
|
-
}
|
62
|
-
}
|
63
80
|
}
|
64
81
|
|
65
82
|
module.exports = Timer;
|
package/src/utils/errorUtils.js
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
const { isError } = require('lodash');
|
2
|
+
const { deserializeError, serializeError } = require('serialize-error');
|
3
|
+
|
2
4
|
const CLEAN_AT = /\n\s*at [\s\S]*/m;
|
3
5
|
|
4
6
|
function filterErrorStack(error, predicate) {
|
@@ -38,9 +40,27 @@ function asError(error) {
|
|
38
40
|
return isError(error) ? error : new Error(error);
|
39
41
|
}
|
40
42
|
|
43
|
+
function serializeObjectWithError(obj, errorKey) {
|
44
|
+
if (obj[errorKey]) {
|
45
|
+
return { ...obj, [errorKey]: serializeError(obj[errorKey]) };
|
46
|
+
}
|
47
|
+
|
48
|
+
return obj;
|
49
|
+
}
|
50
|
+
|
51
|
+
function deserializeObjectWithError(obj, errorKey) {
|
52
|
+
if (typeof obj[errorKey] === 'object' && !(obj[errorKey] instanceof Error)) {
|
53
|
+
return { ...obj, [errorKey]: deserializeError(obj[errorKey]) };
|
54
|
+
}
|
55
|
+
|
56
|
+
return obj;
|
57
|
+
}
|
58
|
+
|
41
59
|
module.exports = {
|
42
60
|
asError,
|
43
61
|
replaceErrorStack,
|
44
62
|
filterErrorStack,
|
45
63
|
createErrorWithUserStack,
|
64
|
+
serializeObjectWithError,
|
65
|
+
deserializeObjectWithError,
|
46
66
|
};
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.md5
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
9bde09ebc6c2e1d48446c96c8c395bf0
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
6f4375b8d626c5e56010bb9079d2def1daf66206
|
@@ -1 +0,0 @@
|
|
1
|
-
5f2296afd84c0b9887d0f69d5ce484c193e2337f457156755dd5dbd1b18e1f2e
|
@@ -1 +0,0 @@
|
|
1
|
-
9d30f9d43a3483289b0d34cd1c7f052328167aaf404558cb174f3134561d5cfda3440439af1c58239447ab8b18f6386ac3e3e06acde12db9753993d45fadb254
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.md5
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
215ed320f30e45f5ea71f65aa033306e
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
b39c10ee0d40e56d89210314cf5ddaf2d2aa96bb
|
@@ -1 +0,0 @@
|
|
1
|
-
83099d2c42349ecefa7540645d893fd1f57545a3d4a4176e64b6ea775cd1e624
|
@@ -1 +0,0 @@
|
|
1
|
-
ef17949935df0db02792f2b6c75ed22010258c48da606b417bd69e5ad41e9951810739c19f607f77ca245059573399e76310ac70fb5cfbcb1784be605fefb0d8
|
@@ -1 +0,0 @@
|
|
1
|
-
7a46662622c24f8677074374fd81b604
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
43bfd8fb25e7b0c24e0d1ed4b250f138b8f21537
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha256
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0df8f8ebf03215da2f15fe8e6a093b65dd808d6870b69eabbb4ae8f680b18bdc
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha512
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
e0721afc0568f85c754e4741cc58a885a77c8f6f485b9eda322290d906eae9707473016ca97ea6cef6583c9f98e82622dd13343d0fa5a7f9d77daf62f97791df
|
@@ -1 +0,0 @@
|
|
1
|
-
332c4d3da54dd80f67e23eda984e156b
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha1
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
c67b0ded2e25005ab37a36e40f69f2c7ddac7afc
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha256
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
f888b95186a4212d022b0288320cf4408d343bc0070522d91ebad8254f4fc20b
|
package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha512
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
67a61376843dba1e684c928d6cab78c2682f7b20424cd75d06f67aae3a9a782ac3f9ca1208c68f5568067698fe7e909c236723a0a7ca11f67033d09292b55fe6
|