detox 20.0.8-prerelease.0 → 20.0.10-prerelease.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. package/Detox-android/com/wix/detox/{20.0.8-prerelease.0/detox-20.0.8-prerelease.0-javadoc.jar → 20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar} +0 -0
  2. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.md5 +1 -0
  3. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha1 +1 -0
  4. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha256 +1 -0
  5. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-javadoc.jar.sha512 +1 -0
  6. package/Detox-android/com/wix/detox/{20.0.8-prerelease.0/detox-20.0.8-prerelease.0-sources.jar → 20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar} +0 -0
  7. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.md5 +1 -0
  8. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha1 +1 -0
  9. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha256 +1 -0
  10. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0-sources.jar.sha512 +1 -0
  11. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar +0 -0
  12. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.md5 +1 -0
  13. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha1 +1 -0
  14. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha256 +1 -0
  15. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.aar.sha512 +1 -0
  16. package/Detox-android/com/wix/detox/{20.0.8-prerelease.0/detox-20.0.8-prerelease.0.pom → 20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom} +1 -1
  17. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.md5 +1 -0
  18. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha1 +1 -0
  19. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha256 +1 -0
  20. package/Detox-android/com/wix/detox/20.0.10-prerelease.0/detox-20.0.10-prerelease.0.pom.sha512 +1 -0
  21. package/Detox-android/com/wix/detox/maven-metadata.xml +4 -4
  22. package/Detox-android/com/wix/detox/maven-metadata.xml.md5 +1 -1
  23. package/Detox-android/com/wix/detox/maven-metadata.xml.sha1 +1 -1
  24. package/Detox-android/com/wix/detox/maven-metadata.xml.sha256 +1 -1
  25. package/Detox-android/com/wix/detox/maven-metadata.xml.sha512 +1 -1
  26. package/Detox-ios-src.tbz +0 -0
  27. package/Detox-ios.tbz +0 -0
  28. package/android/detox/src/main/java/com/wix/detox/common/TextFileReader.kt +1 -1
  29. package/internals.d.ts +11 -0
  30. package/local-cli/build.js +1 -1
  31. package/local-cli/init.js +59 -20
  32. package/local-cli/templates/jest.js +11 -10
  33. package/package.json +2 -2
  34. package/runners/jest/testEnvironment/index.js +25 -10
  35. package/src/logger/DetoxLogger.js +5 -3
  36. package/src/{utils → logger/utils}/streamUtils.js +28 -1
  37. package/src/realms/DetoxContext.js +8 -0
  38. package/src/realms/DetoxInternalsFacade.js +1 -1
  39. package/src/realms/DetoxPrimaryContext.js +2 -5
  40. package/src/symbols.js +2 -0
  41. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-javadoc.jar.md5 +0 -1
  42. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-javadoc.jar.sha1 +0 -1
  43. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-javadoc.jar.sha256 +0 -1
  44. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-javadoc.jar.sha512 +0 -1
  45. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-sources.jar.md5 +0 -1
  46. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-sources.jar.sha1 +0 -1
  47. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-sources.jar.sha256 +0 -1
  48. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0-sources.jar.sha512 +0 -1
  49. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.aar +0 -0
  50. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.aar.md5 +0 -1
  51. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.aar.sha1 +0 -1
  52. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.aar.sha256 +0 -1
  53. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.aar.sha512 +0 -1
  54. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.pom.md5 +0 -1
  55. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.pom.sha1 +0 -1
  56. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.pom.sha256 +0 -1
  57. package/Detox-android/com/wix/detox/20.0.8-prerelease.0/detox-20.0.8-prerelease.0.pom.sha512 +0 -1
@@ -0,0 +1 @@
1
+ 6f4375b8d626c5e56010bb9079d2def1daf66206
@@ -0,0 +1 @@
1
+ 5f2296afd84c0b9887d0f69d5ce484c193e2337f457156755dd5dbd1b18e1f2e
@@ -0,0 +1 @@
1
+ 9d30f9d43a3483289b0d34cd1c7f052328167aaf404558cb174f3134561d5cfda3440439af1c58239447ab8b18f6386ac3e3e06acde12db9753993d45fadb254
@@ -0,0 +1 @@
1
+ b39c10ee0d40e56d89210314cf5ddaf2d2aa96bb
@@ -0,0 +1 @@
1
+ 83099d2c42349ecefa7540645d893fd1f57545a3d4a4176e64b6ea775cd1e624
@@ -0,0 +1 @@
1
+ ef17949935df0db02792f2b6c75ed22010258c48da606b417bd69e5ad41e9951810739c19f607f77ca245059573399e76310ac70fb5cfbcb1784be605fefb0d8
@@ -0,0 +1 @@
1
+ 7a46662622c24f8677074374fd81b604
@@ -0,0 +1 @@
1
+ 43bfd8fb25e7b0c24e0d1ed4b250f138b8f21537
@@ -0,0 +1 @@
1
+ 0df8f8ebf03215da2f15fe8e6a093b65dd808d6870b69eabbb4ae8f680b18bdc
@@ -0,0 +1 @@
1
+ e0721afc0568f85c754e4741cc58a885a77c8f6f485b9eda322290d906eae9707473016ca97ea6cef6583c9f98e82622dd13343d0fa5a7f9d77daf62f97791df
@@ -3,7 +3,7 @@
3
3
  <modelVersion>4.0.0</modelVersion>
4
4
  <groupId>com.wix</groupId>
5
5
  <artifactId>detox</artifactId>
6
- <version>20.0.8-prerelease.0</version>
6
+ <version>20.0.10-prerelease.0</version>
7
7
  <packaging>aar</packaging>
8
8
  <name>Detox</name>
9
9
  <description>Gray box end-to-end testing and automation library for mobile apps</description>
@@ -0,0 +1 @@
1
+ 332c4d3da54dd80f67e23eda984e156b
@@ -0,0 +1 @@
1
+ c67b0ded2e25005ab37a36e40f69f2c7ddac7afc
@@ -0,0 +1 @@
1
+ f888b95186a4212d022b0288320cf4408d343bc0070522d91ebad8254f4fc20b
@@ -0,0 +1 @@
1
+ 67a61376843dba1e684c928d6cab78c2682f7b20424cd75d06f67aae3a9a782ac3f9ca1208c68f5568067698fe7e909c236723a0a7ca11f67033d09292b55fe6
@@ -3,11 +3,11 @@
3
3
  <groupId>com.wix</groupId>
4
4
  <artifactId>detox</artifactId>
5
5
  <versioning>
6
- <latest>20.0.8-prerelease.0</latest>
7
- <release>20.0.8-prerelease.0</release>
6
+ <latest>20.0.10-prerelease.0</latest>
7
+ <release>20.0.10-prerelease.0</release>
8
8
  <versions>
9
- <version>20.0.8-prerelease.0</version>
9
+ <version>20.0.10-prerelease.0</version>
10
10
  </versions>
11
- <lastUpdated>20220907153612</lastUpdated>
11
+ <lastUpdated>20220915145552</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- e922bb0e5ca1b5b017338c3185a6ef89
1
+ 1191a5f6183621bd8fee757b41eb2d43
@@ -1 +1 @@
1
- e4c6e03fcf50237cac24bda1c7a5d1bd5476b0fa
1
+ 0aff1596476fa2a5c51711508d7d9afdb1bb1464
@@ -1 +1 @@
1
- 282b526b0da3c6dd360a2379d3c2d6e176cf67f32564fdb11d64295582d29ac9
1
+ 2f27894de27a5a63d47e2fce362ad81bb48dd9ea28c4ff01ede9f19158626db6
@@ -1 +1 @@
1
- 012dafdd2fbae8b112f7a8baccd7214cc3f716af5a54878f580d3ea40a4a571c268462b579a1f8033e1af185450bd696a626fb99143ae4c356f27593e7c89a32
1
+ 2a3a2ba69037611029babb76220f61d51b9b586ea450b6604f7ce9ae7dddfee84712b308ec877f5a626daf4b5ba8c16aca10168017180b0266a7904577c6ac33
package/Detox-ios-src.tbz CHANGED
Binary file
package/Detox-ios.tbz CHANGED
Binary file
@@ -3,5 +3,5 @@ package com.wix.detox.common
3
3
  import java.io.File
4
4
 
5
5
  internal class TextFileReader(private val fileName: String) {
6
- fun read() = File(fileName).inputStream().readBytes().toString(Charsets.UTF_8)
6
+ fun read() = File(fileName).readText(Charsets.UTF_8)
7
7
  }
package/internals.d.ts CHANGED
@@ -67,6 +67,17 @@ declare global {
67
67
  readonly config: RuntimeConfig;
68
68
  readonly log: Detox.Logger;
69
69
  readonly session: SessionState;
70
+ readonly tracing: {
71
+ /**
72
+ * Creates a readable stream of the currently recorded events in Chrome Trace Event format.
73
+ *
74
+ * @see {@link https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU}
75
+ * @see {import('trace-event-lib').DurationBeginEvent}
76
+ * @see {import('trace-event-lib').DurationEndEvent}
77
+ * @see {import('trace-event-lib').InstantEvent}
78
+ */
79
+ createEventStream(): NodeJS.ReadableStream;
80
+ };
70
81
 
71
82
  readonly worker: Worker;
72
83
  }
@@ -65,7 +65,7 @@ module.exports.handler = async function build(argv) {
65
65
  }
66
66
 
67
67
  if (app.binaryPath && !fs.existsSync(app.binaryPath)) {
68
- detox.log.warn('\nImportant: after running the build command, Detox could not find your app at the given binary path:\n\t' + app.binaryPath + "\nMake sure it is correct, otherwise you'll get an error on an attempt to install your app.\n");
68
+ detox.log.warn('After running the build command, Detox could not find your app at the given binary path:\n\t' + app.binaryPath + "\nMake sure it is correct, otherwise you'll get an error on an attempt to install your app.\n");
69
69
  }
70
70
  }
71
71
  };
package/local-cli/init.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
+ const util = require('util');
3
4
 
4
5
  const detox = require('../internals');
5
6
 
@@ -12,6 +13,7 @@ module.exports.desc = 'Scaffold initial E2E test folder structure for Detox';
12
13
  module.exports.builder = {};
13
14
 
14
15
  module.exports.handler = async function init() {
16
+ createDetoxConfig();
15
17
  createJestFolderE2E();
16
18
  process.exit(exitCode); // eslint-disable-line
17
19
  };
@@ -51,44 +53,65 @@ function createFile(filename, content) {
51
53
 
52
54
  function createJestFolderE2E() {
53
55
  createFolder('e2e', {
54
- 'config.json': jestTemplates.runnerConfig,
56
+ 'jest.config.js': jestTemplates.runnerConfig,
55
57
  'starter.test.js': jestTemplates.starter,
56
58
  });
59
+ }
57
60
 
58
- createFile('.detoxrc.json', JSON.stringify({
59
- testRunner: {
60
- args: {
61
- config: 'e2e/config.json'
62
- },
63
- },
64
-
65
- ...createDefaultConfigurations(),
66
- }, null, 2));
61
+ function createDetoxConfig() {
62
+ createFile('.detoxrc.js',
63
+ '/** @type {Detox.DetoxConfig} */\n' +
64
+ 'module.exports = ' +
65
+ util.inspect(createDefaultConfigurations(), { compact: false, depth: Infinity }) +
66
+ ';\n'
67
+ );
67
68
  }
68
69
 
70
+ /** @returns {Detox.DetoxConfig} */
69
71
  function createDefaultConfigurations() {
70
72
  return {
71
73
  testRunner: {
72
74
  args: {
73
75
  $0: 'jest',
74
- config: 'e2e/config.json',
76
+ config: 'e2e/jest.config.js',
77
+ },
78
+ jest: {
79
+ initTimeout: 120000,
75
80
  },
76
81
  },
77
82
  apps: {
78
- ios: {
83
+ 'ios.debug': {
79
84
  type: 'ios.app',
80
- binaryPath: 'SPECIFY_PATH_TO_YOUR_APP_BINARY',
85
+ binaryPath: 'ios/build/Build/Products/Debug-iphonesimulator/YOUR_APP.app',
86
+ build: 'xcodebuild -workspace ios/YOUR_APP.xcworkspace -scheme YOUR_APP -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build',
87
+ },
88
+ 'ios.release': {
89
+ type: 'ios.app',
90
+ binaryPath: 'ios/build/Build/Products/Release-iphonesimulator/YOUR_APP.app',
91
+ build: 'xcodebuild -workspace ios/YOUR_APP.xcworkspace -scheme YOUR_APP -configuration Release -sdk iphonesimulator -derivedDataPath ios/build',
92
+ },
93
+ 'android.debug': {
94
+ type: 'android.apk',
95
+ binaryPath: 'android/app/build/outputs/apk/debug/app-debug.apk',
96
+ build: 'cd android ; ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug ; cd -',
81
97
  },
82
- android: {
98
+ 'android.release': {
83
99
  type: 'android.apk',
84
- binaryPath: 'SPECIFY_PATH_TO_YOUR_APP_BINARY',
100
+ binaryPath: 'android/app/build/outputs/apk/release/app-release.apk',
101
+ build: 'cd android ; ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release ; cd -',
85
102
  },
86
103
  },
87
104
  devices: {
88
105
  simulator: {
89
106
  type: 'ios.simulator',
90
107
  device: {
91
- type: 'iPhone 11',
108
+ type: 'iPhone 12',
109
+ },
110
+ },
111
+ attached: {
112
+ type: 'android.attached',
113
+ device: {
114
+ adbName: '.*',
92
115
  },
93
116
  },
94
117
  emulator: {
@@ -99,13 +122,29 @@ function createDefaultConfigurations() {
99
122
  },
100
123
  },
101
124
  configurations: {
102
- ios: {
125
+ 'ios.sim.debug': {
126
+ device: 'simulator',
127
+ app: 'ios.debug',
128
+ },
129
+ 'ios.sim.release': {
103
130
  device: 'simulator',
104
- app: 'ios',
131
+ app: 'ios.release',
132
+ },
133
+ 'android.att.debug': {
134
+ device: 'attached',
135
+ app: 'android.debug',
136
+ },
137
+ 'android.att.release': {
138
+ device: 'attached',
139
+ app: 'android.release',
140
+ },
141
+ 'android.emu.debug': {
142
+ device: 'emulator',
143
+ app: 'android.debug',
105
144
  },
106
- android: {
145
+ 'android.emu.release': {
107
146
  device: 'emulator',
108
- app: 'android',
147
+ app: 'android.release',
109
148
  },
110
149
  },
111
150
  };
@@ -1,15 +1,16 @@
1
1
  const firstTestContent = require('./firstTestContent');
2
2
 
3
- const runnerConfig = `{
4
- "globalSetup": "detox/runners/jest/globalSetup",
5
- "globalTeardown": "detox/runners/jest/globalTeardown",
6
- "maxWorkers": 1,
7
- "reporters": ["detox/runners/jest/reporter"],
8
- "testEnvironment": "detox/runners/jest/testEnvironment",
9
- "testMatch": ["<rootDir>/e2e/**/*.test.js"],
10
- "testTimeout": 120000,
11
- "verbose": true
12
- }
3
+ const runnerConfig = `module.exports = {
4
+ rootDir: '..',
5
+ testMatch: ['<rootDir>/e2e/**/*.test.js'],
6
+ testTimeout: 120000,
7
+ maxWorkers: 1,
8
+ globalSetup: 'detox/runners/jest/globalSetup',
9
+ globalTeardown: 'detox/runners/jest/globalTeardown',
10
+ reporters: ['detox/runners/jest/reporter'],
11
+ testEnvironment: 'detox/runners/jest/testEnvironment',
12
+ verbose: true,
13
+ };
13
14
  `;
14
15
 
15
16
  exports.starter = firstTestContent;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "detox",
3
3
  "description": "E2E tests and automation for mobile",
4
- "version": "20.0.8-prerelease.0",
4
+ "version": "20.0.10-prerelease.0",
5
5
  "bin": {
6
6
  "detox": "local-cli/cli.js"
7
7
  },
@@ -184,5 +184,5 @@
184
184
  }
185
185
  }
186
186
  },
187
- "gitHead": "205099aa94b9c7c5e0fa47985e24255f8aee3b1b"
187
+ "gitHead": "3116a188b0e4d57613dc2f7d26ca80292b74f192"
188
188
  }
@@ -45,6 +45,8 @@ class DetoxCircusEnvironment extends NodeEnvironment {
45
45
  };
46
46
  /** @private */
47
47
  this._shouldManageDetox = detox.getStatus() === 'inactive';
48
+ /** @private */
49
+ this._setupFailed = false;
48
50
  /** @internal */
49
51
  this.testPath = context.testPath;
50
52
  /** @protected */
@@ -67,15 +69,20 @@ class DetoxCircusEnvironment extends NodeEnvironment {
67
69
 
68
70
  /** @override */
69
71
  async setup() {
70
- await super.setup();
71
- await Timer.run({
72
- description: `setting up Detox environment`,
73
- timeout: this.initTimeout,
74
- fn: async () => {
75
- await this.initDetox();
76
- this._instantiateListeners();
77
- },
78
- });
72
+ try {
73
+ await super.setup();
74
+ await Timer.run({
75
+ description: `setting up Detox environment`,
76
+ timeout: this.initTimeout,
77
+ fn: async () => {
78
+ await this.initDetox();
79
+ this._instantiateListeners();
80
+ },
81
+ });
82
+ } catch (e) {
83
+ this._setupFailed = true;
84
+ throw e;
85
+ }
79
86
  }
80
87
 
81
88
  /** @override */
@@ -115,7 +122,15 @@ class DetoxCircusEnvironment extends NodeEnvironment {
115
122
  await Timer.run({
116
123
  description: `tearing down Detox environment`,
117
124
  timeout: this.initTimeout,
118
- fn: async () => await this.cleanupDetox(),
125
+ fn: async () => {
126
+ try {
127
+ if (this._setupFailed) {
128
+ await detox.reportFailedTests([this.testPath], false);
129
+ }
130
+ } finally {
131
+ await this.cleanupDetox();
132
+ }
133
+ },
119
134
  });
120
135
  }
121
136
 
@@ -57,9 +57,11 @@ class DetoxLogger {
57
57
  level: 'info',
58
58
  overrideConsole: 'none',
59
59
  options: {
60
- showDate: true,
61
- showLoggerName: true,
62
- showPid: true,
60
+ showDate: false,
61
+ showLoggerName: false,
62
+ showProcess: false,
63
+ showPid: false,
64
+ showLevel: false,
63
65
  showPrefixes: false,
64
66
  showMetadata: false,
65
67
  },
@@ -2,13 +2,16 @@ const { PassThrough, Transform } = require('stream');
2
2
 
3
3
  const bunyanDebugStream = require('bunyan-debug-stream');
4
4
  const duplexify = require('duplexify');
5
+ const fs = require('fs-extra');
6
+ const glob = require('glob');
5
7
  const multiSort = require('multi-sort-stream');
6
8
  const pipe = require('multipipe');
7
9
  const JsonlParser = require('stream-json/jsonl/Parser');
8
10
  const stripAnsi = require('strip-ansi');
9
11
  const { AbstractEventBuilder } = require('trace-event-lib');
10
12
 
11
- const log = require('./logger').child({ cat: 'logger' });
13
+ const temporary = require('../../artifacts/utils/temporaryPath');
14
+ const log = require('../../utils/logger').child({ cat: 'logger' });
12
15
 
13
16
  function compareTimestamps(a, b) {
14
17
  return +(a.value.time > b.value.time) - +(a.value.time < b.value.time);
@@ -203,6 +206,29 @@ function readJSONL() {
203
206
  return duplexify.obj(preventErrorSubscriptions(writable), writable.pipe(readable));
204
207
  }
205
208
 
209
+ /**
210
+ * @param {string} sessionId
211
+ * @returns {NodeJS.ReadableStream}
212
+ */
213
+ function uniteSessionLogs(sessionId) {
214
+ const readable = through();
215
+
216
+ glob(temporary.for.jsonl(`${sessionId}.*`), function (err, logs) {
217
+ if (err) {
218
+ return readable.emit('error', err);
219
+ }
220
+
221
+ if (logs.length === 0) {
222
+ return;
223
+ }
224
+
225
+ const jsonlStreams = logs.map(filePath => fs.createReadStream(filePath).pipe(readJSONL()));
226
+ mergeSortedJSONL(jsonlStreams).pipe(readable);
227
+ });
228
+
229
+ return readable;
230
+ }
231
+
206
232
  module.exports = {
207
233
  readJSONL,
208
234
  writeJSON,
@@ -210,4 +236,5 @@ module.exports = {
210
236
  mergeSortedJSONL,
211
237
  debugStream,
212
238
  chromeTraceStream,
239
+ uniteSessionLogs,
213
240
  };
@@ -94,6 +94,14 @@ class DetoxContext {
94
94
  [symbols.onRunFinish] = (...args) => this[symbols.worker].onRunFinish(...args);
95
95
  [symbols.config] = funpermaproxy(() => this[symbols.session].detoxConfig);
96
96
  [symbols.session] = funpermaproxy(() => this[$sessionState]);
97
+ [symbols.tracing] = Object.freeze({
98
+ createEventStream: () => {
99
+ const streamUtils = require('../logger/utils/streamUtils');
100
+ return streamUtils
101
+ .uniteSessionLogs(this[$sessionState].id)
102
+ .pipe(streamUtils.chromeTraceStream());
103
+ },
104
+ });
97
105
  /** @abstract */
98
106
  [symbols.reportFailedTests](_testFilePaths, _permanent) {}
99
107
  /**
@@ -29,7 +29,7 @@ class DetoxInternalsFacade {
29
29
  this.reportFailedTests = context[symbols.reportFailedTests];
30
30
  this.resolveConfig = context[symbols.resolveConfig];
31
31
  this.session = context[symbols.session];
32
- this.trace = context.trace;
32
+ this.tracing = context[symbols.tracing];
33
33
  this.worker = funpermaproxy(() => context[symbols.worker]);
34
34
  }
35
35
  }
@@ -232,17 +232,14 @@ class DetoxPrimaryContext extends DetoxContext {
232
232
  }
233
233
 
234
234
  if (this[_areLogsEnabled]()) {
235
- const streamUtils = require('../utils/streamUtils');
235
+ const streamUtils = require('../logger/utils/streamUtils');
236
236
  const { rootDir } = this[symbols.config].artifacts;
237
237
 
238
238
  await fs.mkdirp(rootDir);
239
239
  const [out1Stream, out2Stream, out3Stream] = ['detox.log.jsonl', 'detox.log', 'detox.trace.json']
240
240
  .map((filename) => fs.createWriteStream(path.join(rootDir, filename)));
241
241
 
242
- const mergedStream = streamUtils
243
- .mergeSortedJSONL(
244
- logs.map(filePath => fs.createReadStream(filePath).pipe(streamUtils.readJSONL()))
245
- );
242
+ const mergedStream = streamUtils.uniteSessionLogs(sessionId);
246
243
 
247
244
  await Promise.all([
248
245
  pipe(mergedStream, streamUtils.writeJSONL(), out1Stream),
package/src/symbols.js CHANGED
@@ -21,6 +21,7 @@
21
21
  * readonly reportFailedTests: unique symbol;
22
22
  * readonly resolveConfig: unique symbol;
23
23
  * readonly session: unique symbol;
24
+ * readonly tracing: unique symbol;
24
25
  * readonly uninstallWorker: unique symbol;
25
26
  * readonly worker: unique symbol;
26
27
  * }}
@@ -54,6 +55,7 @@ module.exports = {
54
55
  logger: Symbol('logger'),
55
56
  resolveConfig: Symbol('resolveConfig'),
56
57
  session: Symbol('session'),
58
+ tracing: Symbol('tracing'),
57
59
  uninstallWorker: Symbol('uninstallWorker'),
58
60
  worker: Symbol('worker'),
59
61
  //#endregion
@@ -1 +0,0 @@
1
- c822315686adf622857908c74ac136e1a053bf8f
@@ -1 +0,0 @@
1
- 05c829e58cafe9ae9c7f186ecc23f105eb795180020e98cb9fcc6519e6a4c1c3
@@ -1 +0,0 @@
1
- ec9749320550216fc8e85faf96c3cae741b6c0db3a0d65053e8837131e2545a060c8aa836f212b2be53b1b6fd588cef55b4c4a51ca10eb5dbc5cc43f9752ab48
@@ -1 +0,0 @@
1
- 1d05d4bdb8a07e3dc2f4b8350f673d5cca5ea9fe
@@ -1 +0,0 @@
1
- b9d8c4f11d73bd0dd4e7536d4d160b2a71cd6464848a4079a656c9a1af4a5514
@@ -1 +0,0 @@
1
- 6f78b1dd5b0ac9ee3e64744fda135e4fc637187fddbd85f625e2cf36d0c5ac7c8fd01f31155536f49fae1cfce75fe9ed2abb8c2e0522fbf278a433ee4292e1f1
@@ -1 +0,0 @@
1
- fdd88ee21e7da1b14bda4b49205eceec
@@ -1 +0,0 @@
1
- c03bccd8a1a300d6859c75672e06c0aa49fb4965
@@ -1 +0,0 @@
1
- 251e1ca4bd82c503575e86cc6506d957e7fee327ecd19280a35f4761d11cf422
@@ -1 +0,0 @@
1
- d51f289616a8d801d977b4ef996ec23139c65084e8f3f2a0d62603b712706caa6e6e7ee40949abb4d36c77064c3af6966851d2bd7601525c4d17092dbf4f55cc
@@ -1 +0,0 @@
1
- 9511a52e99b74eba29e508b05a893e99
@@ -1 +0,0 @@
1
- 27eace42fa75812951d39c03e36ed07797946718
@@ -1 +0,0 @@
1
- 93da305e085d1ab09802a1983f1f706b7171f701082f5a5161f2bd606b0fdc36
@@ -1 +0,0 @@
1
- 6a2bce2993c09e8c261339e10b6f2c9af48910789dc7b76233cf7b6090226746571edfae4b6c90e451fbc2d26a871720732c507ad1892f467be9db8a693267d3