detox 20.39.0 → 20.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0-sources.jar → 20.40.0/detox-20.40.0-sources.jar} +0 -0
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.0-sources.jar.md5 +1 -0
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.0-sources.jar.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.0-sources.jar.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.0-sources.jar.sha512 +1 -0
- package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.pom → 20.40.0/detox-20.40.0.pom} +1 -1
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.0.pom.md5 +1 -0
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.0.pom.sha1 +1 -0
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.0.pom.sha256 +1 -0
- package/Detox-android/com/wix/detox/20.40.0/detox-20.40.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-framework.tbz +0 -0
- package/Detox-ios-src.tbz +0 -0
- package/Detox-ios-xcuitest.tbz +0 -0
- package/package.json +8 -8
- package/src/android/core/NativeElement.js +2 -1
- package/src/artifacts/templates/artifact/FileArtifact.js +2 -1
- package/src/artifacts/utils/temporaryPath.js +2 -1
- package/src/devices/allocation/drivers/android/emulator/AVDsResolver.js +1 -1
- package/src/devices/allocation/drivers/android/genycloud/GenyAllocDriver.js +0 -11
- package/src/devices/allocation/drivers/android/genycloud/GenyRecipeQuerying.js +3 -0
- package/src/devices/allocation/drivers/android/genycloud/services/GenyRecipesService.js +9 -6
- package/src/devices/allocation/drivers/ios/SimulatorAllocDriver.js +4 -1
- package/src/devices/common/drivers/ios/tools/AppleSimUtils.js +13 -2
- package/src/ios/expectTwo.js +2 -1
- package/src/utils/environment.js +8 -0
- package/src/utils/tempfile.js +18 -0
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0-sources.jar.md5 +0 -1
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0-sources.jar.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0-sources.jar.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0-sources.jar.sha512 +0 -1
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0.pom.md5 +0 -1
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0.pom.sha1 +0 -1
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0.pom.sha256 +0 -1
- package/Detox-android/com/wix/detox/20.39.0/detox-20.39.0.pom.sha512 +0 -1
- /package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.aar → 20.40.0/detox-20.40.0.aar} +0 -0
- /package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.aar.md5 → 20.40.0/detox-20.40.0.aar.md5} +0 -0
- /package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.aar.sha1 → 20.40.0/detox-20.40.0.aar.sha1} +0 -0
- /package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.aar.sha256 → 20.40.0/detox-20.40.0.aar.sha256} +0 -0
- /package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.aar.sha512 → 20.40.0/detox-20.40.0.aar.sha512} +0 -0
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
979a04ae79086d3aedcb79ae3ad77665
|
@@ -0,0 +1 @@
|
|
1
|
+
0bf2a44800742f2a45bab1072dd4e09a65d3504c
|
@@ -0,0 +1 @@
|
|
1
|
+
1e2cf7c9101332a67c7ebda6b3a9efb7e0a5b3002715149966c9ca904ff88974
|
@@ -0,0 +1 @@
|
|
1
|
+
1d194775b962f29d6a8e1a39472e398b0b96c577ae51e58b9d396fc3f9dad79074cbe31bf277360e74eff277500079fbe0303397e133d344dae2a58c65479724
|
@@ -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.
|
6
|
+
<version>20.40.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
|
+
fb9db06cd18e4b9daadb322a8f105a3f
|
@@ -0,0 +1 @@
|
|
1
|
+
1eb8a8b40ce354a2cd0aeab507bbaede730f6530
|
@@ -0,0 +1 @@
|
|
1
|
+
4d961549582781c365fc649c2d107855562c3b528bfb0ff2f225a8b51f99e614
|
@@ -0,0 +1 @@
|
|
1
|
+
df8bf51b83eec8945ba37c30b38f981e4bc4bb5c99203081f5a4c11e3717d526617453ab41618a9d25cb3bf60360d0dbd326c08b2febf1d919ca909c01acf66d
|
@@ -3,11 +3,11 @@
|
|
3
3
|
<groupId>com.wix</groupId>
|
4
4
|
<artifactId>detox</artifactId>
|
5
5
|
<versioning>
|
6
|
-
<latest>20.
|
7
|
-
<release>20.
|
6
|
+
<latest>20.40.0</latest>
|
7
|
+
<release>20.40.0</release>
|
8
8
|
<versions>
|
9
|
-
<version>20.
|
9
|
+
<version>20.40.0</version>
|
10
10
|
</versions>
|
11
|
-
<lastUpdated>
|
11
|
+
<lastUpdated>20250706104311</lastUpdated>
|
12
12
|
</versioning>
|
13
13
|
</metadata>
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
597cffefd8dca86bc2f3a99881989a39
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
1ce40fa56c4f59b2e29c5e443047a639e5258e28
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
abb50f781c46a7b36e1389d15850b5aa677da295bb5a13eb06f3699070155df1
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2630330915347b2ba7b35a855ac61aac4ed1737e54e6295695e6ec7192f405aea19d4aba671264a359294a110a3161879f3c3980b564b0cf477837f84b0f6ed5
|
package/Detox-ios-framework.tbz
CHANGED
Binary file
|
package/Detox-ios-src.tbz
CHANGED
Binary file
|
package/Detox-ios-xcuitest.tbz
CHANGED
Binary file
|
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.
|
4
|
+
"version": "20.40.0",
|
5
5
|
"bin": {
|
6
6
|
"detox": "local-cli/cli.js"
|
7
7
|
},
|
@@ -37,10 +37,10 @@
|
|
37
37
|
"@react-native-community/cli": "15.0.1",
|
38
38
|
"@react-native-community/cli-platform-android": "15.0.1",
|
39
39
|
"@react-native-community/cli-platform-ios": "15.0.1",
|
40
|
-
"@react-native/babel-preset": "0.
|
41
|
-
"@react-native/eslint-config": "0.
|
42
|
-
"@react-native/metro-config": "0.
|
43
|
-
"@react-native/typescript-config": "0.
|
40
|
+
"@react-native/babel-preset": "0.78.2",
|
41
|
+
"@react-native/eslint-config": "0.78.2",
|
42
|
+
"@react-native/metro-config": "0.78.2",
|
43
|
+
"@react-native/typescript-config": "0.78.2",
|
44
44
|
"@tsconfig/react-native": "^3.0.0",
|
45
45
|
"@types/bunyan": "^1.8.8",
|
46
46
|
"@types/child-process-promise": "^2.2.1",
|
@@ -62,7 +62,7 @@
|
|
62
62
|
"jest-allure2-reporter": "^2.0.0-beta.18",
|
63
63
|
"metro-react-native-babel-preset": "0.76.8",
|
64
64
|
"prettier": "^3.1.1",
|
65
|
-
"react-native": "0.
|
65
|
+
"react-native": "0.78.2",
|
66
66
|
"react-native-codegen": "^0.0.8",
|
67
67
|
"typescript": "~5.3.3",
|
68
68
|
"wtfnode": "^0.9.1"
|
@@ -98,7 +98,7 @@
|
|
98
98
|
"stream-json": "^1.7.4",
|
99
99
|
"strip-ansi": "^6.0.1",
|
100
100
|
"telnet-client": "1.2.8",
|
101
|
-
"
|
101
|
+
"tmp": "^0.2.1",
|
102
102
|
"trace-event-lib": "^1.3.1",
|
103
103
|
"which": "^1.3.1",
|
104
104
|
"ws": "^7.0.0",
|
@@ -120,5 +120,5 @@
|
|
120
120
|
"browserslist": [
|
121
121
|
"node 14"
|
122
122
|
],
|
123
|
-
"gitHead": "
|
123
|
+
"gitHead": "5216c77b39caf721671a3be3f5b039053a482979"
|
124
124
|
}
|
@@ -1,13 +1,14 @@
|
|
1
1
|
const path = require('path');
|
2
2
|
|
3
3
|
const fs = require('fs-extra');
|
4
|
-
|
4
|
+
|
5
5
|
|
6
6
|
const DetoxRuntimeError = require('../../errors/DetoxRuntimeError');
|
7
7
|
const invoke = require('../../invoke');
|
8
8
|
const { removeMilliseconds } = require('../../utils/dateUtils');
|
9
9
|
const { actionDescription } = require('../../utils/invocationTraceDescriptions');
|
10
10
|
const mapLongPressArguments = require('../../utils/mapLongPressArguments');
|
11
|
+
const tempfile = require('../../utils/tempfile');
|
11
12
|
const actions = require('../actions/native');
|
12
13
|
const DetoxMatcherApi = require('../espressoapi/DetoxMatcher');
|
13
14
|
const { ActionInteraction } = require('../interactions/native');
|
@@ -2,9 +2,10 @@
|
|
2
2
|
const path = require('path');
|
3
3
|
|
4
4
|
const fs = require('fs-extra');
|
5
|
-
const tempfile = require('tempfile');
|
6
5
|
|
7
6
|
const appendFile = require('../../../utils/appendFile');
|
7
|
+
const tempfile = require('../../../utils/tempfile');
|
8
|
+
|
8
9
|
|
9
10
|
const Artifact = require('./Artifact');
|
10
11
|
|
@@ -3,9 +3,10 @@ const { promisify } = require('util');
|
|
3
3
|
|
4
4
|
const glob = require('glob');
|
5
5
|
const _ = require('lodash');
|
6
|
-
const tempfile = require('tempfile');
|
7
6
|
|
8
7
|
const { useForwardSlashes } = require('../../utils/shellUtils');
|
8
|
+
const tempfile = require('../../utils/tempfile');
|
9
|
+
|
9
10
|
|
10
11
|
const globSync = glob.sync;
|
11
12
|
const globAsync = promisify(glob);
|
@@ -3,7 +3,6 @@
|
|
3
3
|
* @typedef {import('../../../../common/drivers/android/cookies').GenycloudEmulatorCookie} GenycloudEmulatorCookie
|
4
4
|
*/
|
5
5
|
|
6
|
-
const { DetoxRuntimeError } = require('../../../../../errors');
|
7
6
|
const Timer = require('../../../../../utils/Timer');
|
8
7
|
const log = require('../../../../../utils/logger').child({ cat: 'device' });
|
9
8
|
|
@@ -56,7 +55,6 @@ class GenyAllocDriver {
|
|
56
55
|
async allocate(deviceConfig) {
|
57
56
|
const deviceQuery = deviceConfig.device;
|
58
57
|
const recipe = await this._recipeQuerying.getRecipeFromQuery(deviceQuery);
|
59
|
-
this._assertRecipe(deviceQuery, recipe);
|
60
58
|
|
61
59
|
let instance = this._genyRegistry.findFreeInstance(recipe);
|
62
60
|
if (!instance) {
|
@@ -151,15 +149,6 @@ class GenyAllocDriver {
|
|
151
149
|
this._reportGlobalCleanupSummary(instances);
|
152
150
|
}
|
153
151
|
|
154
|
-
_assertRecipe(deviceQuery, recipe) {
|
155
|
-
if (!recipe) {
|
156
|
-
throw new DetoxRuntimeError({
|
157
|
-
message: `No Genymotion-Cloud template found to match the configured lookup query: ${JSON.stringify(deviceQuery)}`,
|
158
|
-
hint: `Revisit your detox configuration. Genymotion templates list is available at: https://cloud.geny.io/recipes#custom`,
|
159
|
-
});
|
160
|
-
}
|
161
|
-
}
|
162
|
-
|
163
152
|
_reportGlobalCleanupSummary(deletionLeaks) {
|
164
153
|
if (deletionLeaks.length) {
|
165
154
|
log.warn(events.GENYCLOUD_TEARDOWN, 'WARNING! Detected a Genymotion SaaS instance leakage, for the following instances:');
|
@@ -1,4 +1,4 @@
|
|
1
|
-
const
|
1
|
+
const { DetoxRuntimeError } = require('../../../../../../errors');
|
2
2
|
|
3
3
|
const Recipe = require('./dto/GenyRecipe');
|
4
4
|
|
@@ -10,15 +10,18 @@ class GenyRecipesService {
|
|
10
10
|
async getRecipeByName(recipeName) {
|
11
11
|
const { recipes } = await this.genyCloudExec.getRecipe(recipeName);
|
12
12
|
if (!recipes.length) {
|
13
|
-
|
13
|
+
throw new DetoxRuntimeError({
|
14
|
+
message: `No Genymotion-Cloud recipe found for recipe name "${recipeName}"`,
|
15
|
+
hint: `Please check your recipe name or use recipe UUID instead.`,
|
16
|
+
});
|
14
17
|
}
|
15
18
|
|
16
19
|
if (recipes.length > 1) {
|
17
20
|
const recipesInfoList = recipes.map((recipe) => ` ${recipe.name} (${recipe.uuid})`).join('\n');
|
18
|
-
|
19
|
-
|
20
|
-
`
|
21
|
-
);
|
21
|
+
throw new DetoxRuntimeError({
|
22
|
+
message: `More than one Genymotion-Cloud recipe found for recipe name ${recipeName}:\n${recipesInfoList}`,
|
23
|
+
hint: `Please specify a unique recipe name or use recipe UUID instead.`,
|
24
|
+
});
|
22
25
|
}
|
23
26
|
return new Recipe(recipes[0]);
|
24
27
|
}
|
@@ -170,7 +170,10 @@ class SimulatorAllocDriver {
|
|
170
170
|
async _queryDevices(deviceQuery) {
|
171
171
|
const result = await this._applesimutils.list(
|
172
172
|
deviceQuery,
|
173
|
-
|
173
|
+
{
|
174
|
+
trying: `Searching for device ${deviceQuery} ...`,
|
175
|
+
fields: ['udid', 'os', 'identifier'],
|
176
|
+
}
|
174
177
|
);
|
175
178
|
|
176
179
|
if (_.isEmpty(result)) {
|
@@ -2,6 +2,7 @@
|
|
2
2
|
const path = require('path');
|
3
3
|
|
4
4
|
const _ = require('lodash');
|
5
|
+
const semver = require('semver');
|
5
6
|
|
6
7
|
const DetoxRuntimeError = require('../../../../../errors/DetoxRuntimeError');
|
7
8
|
const { joinArgs } = require('../../../../../utils/argparse');
|
@@ -131,8 +132,9 @@ class AppleSimUtils {
|
|
131
132
|
}
|
132
133
|
|
133
134
|
async list(query, listOptions = {}) {
|
135
|
+
const fields = await this._buildFields(listOptions.fields);
|
134
136
|
const options = {
|
135
|
-
args: `--list ${joinArgs(query)}`,
|
137
|
+
args: `--list ${joinArgs(query)} ${fields}`,
|
136
138
|
retries: 1,
|
137
139
|
statusLogs: listOptions.trying ? { trying: listOptions.trying } : undefined,
|
138
140
|
maxBuffer: 4 * 1024 * 1024,
|
@@ -174,7 +176,7 @@ class AppleSimUtils {
|
|
174
176
|
}
|
175
177
|
|
176
178
|
async _findDeviceByUDID(udid) {
|
177
|
-
const [device] = await this.list({ byId: udid, maxResults: 1 });
|
179
|
+
const [device] = await this.list({ byId: udid, maxResults: 1 }, { fields: ['udid', 'os', 'version', 'state'] });
|
178
180
|
if (!device) {
|
179
181
|
throw new DetoxRuntimeError(`Can't find device with UDID = "${udid}"`);
|
180
182
|
}
|
@@ -579,6 +581,15 @@ class AppleSimUtils {
|
|
579
581
|
|
580
582
|
return Number.NaN;
|
581
583
|
}
|
584
|
+
|
585
|
+
async _buildFields(fields) {
|
586
|
+
const version = await environment.getAppleSimUtilsVersion();
|
587
|
+
if (fields && semver.gt(version, '0.9.10')) {
|
588
|
+
return `--fields ${fields.join(',')}`;
|
589
|
+
}
|
590
|
+
|
591
|
+
return '';
|
592
|
+
}
|
582
593
|
}
|
583
594
|
|
584
595
|
module.exports = AppleSimUtils;
|
package/src/ios/expectTwo.js
CHANGED
@@ -3,7 +3,7 @@ const path = require('path');
|
|
3
3
|
|
4
4
|
const fs = require('fs-extra');
|
5
5
|
const _ = require('lodash');
|
6
|
-
|
6
|
+
|
7
7
|
|
8
8
|
const { assertTraceDescription, assertEnum, assertNormalized } = require('../utils/assertArgument');
|
9
9
|
const { removeMilliseconds } = require('../utils/dateUtils');
|
@@ -11,6 +11,7 @@ const { actionDescription, expectDescription } = require('../utils/invocationTra
|
|
11
11
|
const { isRegExp } = require('../utils/isRegExp');
|
12
12
|
const log = require('../utils/logger').child({ cat: 'ws-client, ws' });
|
13
13
|
const mapLongPressArguments = require('../utils/mapLongPressArguments');
|
14
|
+
const tempfile = require('../utils/tempfile');
|
14
15
|
const traceInvocationCall = require('../utils/traceInvocationCall').bind(null, log);
|
15
16
|
|
16
17
|
const { systemElement, systemMatcher, systemExpect, isSystemElement } = require('./system');
|
package/src/utils/environment.js
CHANGED
@@ -177,6 +177,13 @@ const getDetoxVersion = _.once(() => {
|
|
177
177
|
return require(path.join(__dirname, '../../package.json')).version;
|
178
178
|
});
|
179
179
|
|
180
|
+
const getAppleSimUtilsVersion = _.once(async () => {
|
181
|
+
const command = `applesimutils --version`;
|
182
|
+
const output = await execAsync(command);
|
183
|
+
const match = output.match(/(\d+\.\d+\.\d+)$/);
|
184
|
+
return match ? match[1] : '0.0.0';
|
185
|
+
});
|
186
|
+
|
180
187
|
const getBuildFolderName = _.once(async () => {
|
181
188
|
const detoxVersion = getDetoxVersion();
|
182
189
|
const xcodeVersion = await execAsync('xcodebuild -version');
|
@@ -232,6 +239,7 @@ module.exports = {
|
|
232
239
|
getAvdHome,
|
233
240
|
getAvdDir,
|
234
241
|
getAvdManagerPath,
|
242
|
+
getAppleSimUtilsVersion,
|
235
243
|
getAndroidSdkManagerPath,
|
236
244
|
getGmsaasPath,
|
237
245
|
getDetoxVersion,
|
@@ -0,0 +1,18 @@
|
|
1
|
+
const tmp = require('tmp');
|
2
|
+
|
3
|
+
tmp.setGracefulCleanup();
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Creates a temporary file path. If extension is provided, it will be appended to the path.
|
7
|
+
* @param {string} [extension] - Optional file extension to append to the temporary file path
|
8
|
+
* @returns {string} Path to a temporary file
|
9
|
+
*/
|
10
|
+
module.exports = function(extension) {
|
11
|
+
const _extension = (extension && extension.startsWith('.'))
|
12
|
+
? extension
|
13
|
+
: (extension && `.${extension}`);
|
14
|
+
|
15
|
+
return tmp.tmpNameSync({
|
16
|
+
template: `detox-${process.pid}-XXXXXX${_extension || ''}`,
|
17
|
+
});
|
18
|
+
};
|
@@ -1 +0,0 @@
|
|
1
|
-
dbe1858e2fa04f133bb976b0984f9464
|
@@ -1 +0,0 @@
|
|
1
|
-
f592be31cd02ff6bb6c80929c36def3f33a12473
|
@@ -1 +0,0 @@
|
|
1
|
-
a3093f21ec523b6fb8b0627582d0926a7c5b5e79d392af8e7c56b0a4fc63a4d7
|
@@ -1 +0,0 @@
|
|
1
|
-
1982c22f8098b52b4086c430c2691e5ac43fddde61dc98e44c9594e381bb50654eb98b71ad28322bfdaf634154c3335ab9a29bb60facea09961da436724ac0a5
|
@@ -1 +0,0 @@
|
|
1
|
-
c6f307ea5344738bf5a1d3515051abad
|
@@ -1 +0,0 @@
|
|
1
|
-
4170cd61d614306ea769c51c5ee014bc4944328a
|
@@ -1 +0,0 @@
|
|
1
|
-
6ecee3d1e30d164ba31da9c3446f22a31394c5d0f5a4d091b5d869c124517efb
|
@@ -1 +0,0 @@
|
|
1
|
-
ff58bdfc6ab51f6f018c121c1e68732dfa23238272e93d6aac2f9fe7c948eaa0bb2005d65df62af2e87c03f91d5965ad5e957fa69ba04e89d08bda24184f9e0f
|
/package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.aar → 20.40.0/detox-20.40.0.aar}
RENAMED
File without changes
|
/package/Detox-android/com/wix/detox/{20.39.0/detox-20.39.0.aar.md5 → 20.40.0/detox-20.40.0.aar.md5}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|