appium-android-driver 13.3.0 → 13.3.2
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/CHANGELOG.md +12 -0
- package/build/lib/commands/media-projection.js +2 -2
- package/build/lib/commands/media-projection.js.map +1 -1
- package/build/lib/commands/time.d.ts.map +1 -1
- package/build/lib/commands/time.js +23 -8
- package/build/lib/commands/time.js.map +1 -1
- package/build/lib/doctor/checks.d.ts +0 -1
- package/build/lib/doctor/checks.d.ts.map +1 -1
- package/build/lib/doctor/checks.js +5 -6
- package/build/lib/doctor/checks.js.map +1 -1
- package/build/lib/logger.d.ts +2 -1
- package/build/lib/logger.d.ts.map +1 -1
- package/build/lib/logger.js.map +1 -1
- package/lib/commands/media-projection.ts +2 -2
- package/lib/commands/time.ts +26 -8
- package/lib/doctor/checks.ts +6 -9
- package/lib/logger.ts +2 -1
- package/package.json +3 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [13.3.2](https://github.com/appium/appium-android-driver/compare/v13.3.1...v13.3.2) (2026-07-08)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* Replace moment with dayjs ([#1078](https://github.com/appium/appium-android-driver/issues/1078)) ([8bdea5d](https://github.com/appium/appium-android-driver/commit/8bdea5d5b6eec3304eac81dc2e56672f0de2e6d4))
|
|
6
|
+
|
|
7
|
+
## [13.3.1](https://github.com/appium/appium-android-driver/compare/v13.3.0...v13.3.1) (2026-07-08)
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* Drop colors dependency ([#1079](https://github.com/appium/appium-android-driver/issues/1079)) ([fab47d5](https://github.com/appium/appium-android-driver/commit/fab47d529759ec7608fea5903b4150db6922d8d2))
|
|
12
|
+
|
|
1
13
|
## [13.3.0](https://github.com/appium/appium-android-driver/compare/v13.2.9...v13.3.0) (2026-07-04)
|
|
2
14
|
|
|
3
15
|
### Features
|
|
@@ -8,7 +8,7 @@ exports.mobileIsMediaProjectionRecordingRunning = mobileIsMediaProjectionRecordi
|
|
|
8
8
|
exports.mobileStopMediaProjectionRecording = mobileStopMediaProjectionRecording;
|
|
9
9
|
const support_1 = require("@appium/support");
|
|
10
10
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
-
const
|
|
11
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
12
12
|
const node_path_1 = __importDefault(require("node:path"));
|
|
13
13
|
// https://github.com/appium/io.appium.settings#internal-audio--video-recording
|
|
14
14
|
const DEFAULT_EXT = '.mp4';
|
|
@@ -35,7 +35,7 @@ const DEFAULT_FILENAME_FORMAT = 'YYYY-MM-DDTHH-mm-ss';
|
|
|
35
35
|
async function mobileStartMediaProjectionRecording(resolution, priority, maxDurationSec, filename) {
|
|
36
36
|
await verifyMediaProjectionRecordingIsSupported(this.adb);
|
|
37
37
|
const recorder = this.settingsApp.makeMediaProjectionRecorder();
|
|
38
|
-
const fname = adjustMediaExtension(filename || (0,
|
|
38
|
+
const fname = adjustMediaExtension(filename || (0, dayjs_1.default)().format(DEFAULT_FILENAME_FORMAT));
|
|
39
39
|
const didStart = await recorder.start({
|
|
40
40
|
resolution,
|
|
41
41
|
priority,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":";;;;;AA2CA,kFAyBC;AAOD,0FAOC;AAwBD,gFA2CC;AArJD,6CAA8C;AAE9C,oDAAuB;AACvB,
|
|
1
|
+
{"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../lib/commands/time.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../lib/commands/time.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAO7C;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,MAAgC,GACvC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/F;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAczF"}
|
|
@@ -6,25 +6,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getDeviceTime = getDeviceTime;
|
|
7
7
|
exports.mobileGetDeviceTime = mobileGetDeviceTime;
|
|
8
8
|
exports.adjustTimeZone = adjustTimeZone;
|
|
9
|
-
const
|
|
10
|
-
const
|
|
9
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
10
|
+
const utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
11
|
+
const customParseFormat_1 = __importDefault(require("dayjs/plugin/customParseFormat"));
|
|
12
|
+
dayjs_1.default.extend(utc_1.default);
|
|
13
|
+
dayjs_1.default.extend(customParseFormat_1.default);
|
|
14
|
+
const DATETIME_FORMAT_ISO8601 = 'YYYY-MM-DDTHH:mm:ssZ';
|
|
11
15
|
/**
|
|
12
16
|
* Gets the current device time.
|
|
13
17
|
*
|
|
14
18
|
* @param format The format string for the time. Defaults to ISO8601 format.
|
|
15
19
|
* @returns Promise that resolves to the formatted device time string.
|
|
16
20
|
*/
|
|
17
|
-
async function getDeviceTime(format =
|
|
18
|
-
this.log.debug(
|
|
21
|
+
async function getDeviceTime(format = DATETIME_FORMAT_ISO8601) {
|
|
22
|
+
this.log.debug(`Attempting to capture Android device date and time. The format specifier is '${format}'`);
|
|
19
23
|
const deviceTimestamp = (await this.adb.shell(['date', '+%Y-%m-%dT%T%z'])).trim();
|
|
20
24
|
this.log.debug(`Got device timestamp: ${deviceTimestamp}`);
|
|
21
|
-
const parsedTimestamp =
|
|
25
|
+
const parsedTimestamp = dayjs_1.default.utc(deviceTimestamp, 'YYYY-MM-DDTHH:mm:ssZZ');
|
|
22
26
|
if (!parsedTimestamp.isValid()) {
|
|
23
27
|
this.log.warn('Cannot parse the returned timestamp. Returning as is');
|
|
24
28
|
return deviceTimestamp;
|
|
25
29
|
}
|
|
26
|
-
|
|
27
|
-
return parsedTimestamp.utcOffset(
|
|
30
|
+
const offset = parseOffset(deviceTimestamp);
|
|
31
|
+
return parsedTimestamp.utcOffset(offset).format(format);
|
|
28
32
|
}
|
|
29
33
|
/**
|
|
30
34
|
* Gets the current device time.
|
|
@@ -43,7 +47,7 @@ async function mobileGetDeviceTime(format) {
|
|
|
43
47
|
* @throws {Error} If the time zone identifier is not known.
|
|
44
48
|
*/
|
|
45
49
|
async function adjustTimeZone(zoneName) {
|
|
46
|
-
if (!
|
|
50
|
+
if (!isValidTimeZone(zoneName)) {
|
|
47
51
|
throw new Error(`The provided time zone identifier '${zoneName}' is not known. ` +
|
|
48
52
|
`Please choose a valid TZ identifier from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones`);
|
|
49
53
|
}
|
|
@@ -55,4 +59,15 @@ async function adjustTimeZone(zoneName) {
|
|
|
55
59
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/apex/jobscheduler/framework/java/android/app/IAlarmManager.aidl;l=1?q=IAlarmManager
|
|
56
60
|
await this.adb.shell(['service', 'call', 'alarm', '3', 's16', zoneName]);
|
|
57
61
|
}
|
|
62
|
+
function parseOffset(timestamp) {
|
|
63
|
+
const m = timestamp.match(/([+-])(\d{2})(\d{2})$/);
|
|
64
|
+
if (!m) {
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
const sign = m[1] === '+' ? 1 : -1;
|
|
68
|
+
return sign * (Number(m[2]) * 60 + Number(m[3]));
|
|
69
|
+
}
|
|
70
|
+
function isValidTimeZone(zoneName) {
|
|
71
|
+
return Intl.supportedValuesOf('timeZone').includes(zoneName);
|
|
72
|
+
}
|
|
58
73
|
//# sourceMappingURL=time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../lib/commands/time.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../lib/commands/time.ts"],"names":[],"mappings":";;;;;AAgBA,sCAgBC;AAQD,kDAEC;AASD,wCAcC;AAjED,kDAA0B;AAC1B,2DAAmC;AACnC,uFAA+D;AAG/D,eAAK,CAAC,MAAM,CAAC,aAAG,CAAC,CAAC;AAClB,eAAK,CAAC,MAAM,CAAC,2BAAiB,CAAC,CAAC;AAEhC,MAAM,uBAAuB,GAAG,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACI,KAAK,UAAU,aAAa,CAEjC,SAAiB,uBAAuB;IAExC,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,gFAAgF,MAAM,GAAG,CAC1F,CAAC;IACF,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,eAAK,CAAC,GAAG,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;IAC5E,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5C,OAAO,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CAAsB,MAAe;IAC5E,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,cAAc,CAAsB,QAAgB;IACxE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,sCAAsC,QAAQ,kBAAkB;YAC9D,uGAAuG,CAC1G,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,QAAQ,GAAG,CAAC,CAAC;IAC/D,oEAAoE;IACpE,uEAAuE;IACvE,kCAAkC;IAClC,oBAAoB;IACpB,oKAAoK;IACpK,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB;IACpC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../lib/doctor/checks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../lib/doctor/checks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAcjF,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,cAAM,kBAAmB,YAAW,YAAY;IAC9C,GAAG,EAAG,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,kBAAkB,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB;IAKpD,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6BtC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAO5B,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;CAGtB;AACD,eAAO,MAAM,gBAAgB,oBAA4D,CAAC;AAC1F,eAAO,MAAM,aAAa,oBAAyD,CAAC;AAEpF,qBAAa,kBAAmB,YAAW,YAAY;IACrD,GAAG,EAAG,YAAY,CAAC;IAEb,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiBtC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAO5B,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;CAGtB;AACD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC;AAE3D,qBAAa,eAAgB,YAAW,YAAY;IAClD,GAAG,EAAG,YAAY,CAAC;IAEnB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAuB;IAE9C,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAwBtC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAO5B,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;CAGtB;AACD,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAErD,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,GAAG,EAAG,YAAY,CAAC;IAEb,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAOtC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAS5B,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;CAGtB;AACD,eAAO,MAAM,uBAAuB,yBAAgC,CAAC;AAErE,qBAAa,sBAAuB,YAAW,YAAY;IACzD,GAAG,EAAG,YAAY,CAAC;IACnB,gBAAgB,SAAuD;IACvE,kBAAkB,SAAwD;IAEpE,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAatC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAO5B,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;CAGtB;AACD,eAAO,MAAM,sBAAsB,wBAA+B,CAAC;AAEnE,qBAAa,mBAAoB,YAAW,YAAY;IACtD,GAAG,EAAG,YAAY,CAAC;IACnB,aAAa,SAA+C;IAEtD,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAQtC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAO5B,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;CAGtB;AACD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
|
|
@@ -7,7 +7,6 @@ exports.optionalFfmpegCheck = exports.OptionalFfmpegCheck = exports.optionalGstr
|
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
const support_1 = require("@appium/support");
|
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
require("@colors/colors");
|
|
11
10
|
const appium_adb_1 = require("appium-adb");
|
|
12
11
|
const JAVA_HOME_VAR_NAME = support_1.system.isWindows() ? '%JAVA_HOME%' : '$JAVA_HOME';
|
|
13
12
|
const ENVIRONMENT_VARS_TUTORIAL_URL = 'https://github.com/appium/java-client/blob/master/docs/environment.md';
|
|
@@ -47,7 +46,7 @@ class EnvVarAndPathCheck {
|
|
|
47
46
|
return support_1.doctor.ok(`${this.varName} is set to: ${varValue}`);
|
|
48
47
|
}
|
|
49
48
|
async fix() {
|
|
50
|
-
return (`Make sure the environment variable ${this.varName
|
|
49
|
+
return (`Make sure the environment variable ${support_1.console.styleText('bold', this.varName)} is properly configured for the Appium process. ` +
|
|
51
50
|
`Refer ${ENVIRONMENT_VARS_TUTORIAL_URL} for more details.`);
|
|
52
51
|
}
|
|
53
52
|
hasAutofix() {
|
|
@@ -112,7 +111,7 @@ class AndroidSdkCheck {
|
|
|
112
111
|
return support_1.doctor.ok(`${listOfTools} exist in '${sdkRoot}'`);
|
|
113
112
|
}
|
|
114
113
|
async fix() {
|
|
115
|
-
return (`Manually install ${'Android SDK'
|
|
114
|
+
return (`Manually install ${support_1.console.styleText('bold', 'Android SDK')} and set ${support_1.console.styleText('bold', 'ANDROID_HOME')}. ` +
|
|
116
115
|
`Read ${[ANDROID_SDK_LINK1, ANDROID_SDK_LINK2].join(' and ')}.`);
|
|
117
116
|
}
|
|
118
117
|
hasAutofix() {
|
|
@@ -133,7 +132,7 @@ class OptionalBundletoolCheck {
|
|
|
133
132
|
: support_1.doctor.nokOptional('bundletool.jar cannot be found');
|
|
134
133
|
}
|
|
135
134
|
async fix() {
|
|
136
|
-
return (`${'bundletool.jar'
|
|
135
|
+
return (`${support_1.console.styleText('bold', 'bundletool.jar')} is used to handle Android App bundles. ` +
|
|
137
136
|
`Please download the binary from ${BUNDLETOOL_RELEASES_LINK} and store it ` +
|
|
138
137
|
`to any folder listed in the PATH environment variable. Folders that ` +
|
|
139
138
|
`are currently present in PATH: ${process.env.PATH}`);
|
|
@@ -159,7 +158,7 @@ class OptionalGstreamerCheck {
|
|
|
159
158
|
: support_1.doctor.nokOptional(`${this.GSTREAMER_BINARY} and/or ${this.GST_INSPECT_BINARY} cannot be found`);
|
|
160
159
|
}
|
|
161
160
|
async fix() {
|
|
162
|
-
return (`${`${this.GSTREAMER_BINARY} and ${this.GST_INSPECT_BINARY}
|
|
161
|
+
return (`${`${support_1.console.styleText('bold', this.GSTREAMER_BINARY)} and ${support_1.console.styleText('bold', this.GST_INSPECT_BINARY)}`} are used to stream the screen of the device under test. ` +
|
|
163
162
|
`Please read ${GSTREAMER_INSTALL_LINK}.`);
|
|
164
163
|
}
|
|
165
164
|
hasAutofix() {
|
|
@@ -181,7 +180,7 @@ class OptionalFfmpegCheck {
|
|
|
181
180
|
: support_1.doctor.nokOptional(`${this.FFMPEG_BINARY} cannot be found`);
|
|
182
181
|
}
|
|
183
182
|
async fix() {
|
|
184
|
-
return (`${
|
|
183
|
+
return (`${support_1.console.styleText('bold', this.FFMPEG_BINARY)} is used to capture screen recordings from the device under test. ` +
|
|
185
184
|
`Please read ${FFMPEG_INSTALL_LINK}.`);
|
|
186
185
|
}
|
|
187
186
|
hasAutofix() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../lib/doctor/checks.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../lib/doctor/checks.ts"],"names":[],"mappings":"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"}
|
package/build/lib/logger.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,GAAG,EAAE,YAAgD,CAAC"}
|
package/build/lib/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAG1B,QAAA,GAAG,GAAiB,gBAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {fs, net, util} from '@appium/support';
|
|
2
2
|
import type {NetOptions, HttpUploadOptions} from '@appium/support';
|
|
3
3
|
import _ from 'lodash';
|
|
4
|
-
import
|
|
4
|
+
import dayjs from 'dayjs';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import type {HTTPMethod, StringRecord} from '@appium/types';
|
|
7
7
|
import type {AndroidDriver} from '../driver';
|
|
@@ -51,7 +51,7 @@ export async function mobileStartMediaProjectionRecording(
|
|
|
51
51
|
await verifyMediaProjectionRecordingIsSupported(this.adb);
|
|
52
52
|
|
|
53
53
|
const recorder = this.settingsApp.makeMediaProjectionRecorder();
|
|
54
|
-
const fname = adjustMediaExtension(filename ||
|
|
54
|
+
const fname = adjustMediaExtension(filename || dayjs().format(DEFAULT_FILENAME_FORMAT));
|
|
55
55
|
const didStart = await recorder.start({
|
|
56
56
|
resolution,
|
|
57
57
|
priority,
|
package/lib/commands/time.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
import utc from 'dayjs/plugin/utc';
|
|
3
|
+
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
2
4
|
import type {AndroidDriver} from '../driver';
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
dayjs.extend(utc);
|
|
7
|
+
dayjs.extend(customParseFormat);
|
|
8
|
+
|
|
9
|
+
const DATETIME_FORMAT_ISO8601 = 'YYYY-MM-DDTHH:mm:ssZ';
|
|
5
10
|
|
|
6
11
|
/**
|
|
7
12
|
* Gets the current device time.
|
|
@@ -11,20 +16,20 @@ const MOMENT_FORMAT_ISO8601 = 'YYYY-MM-DDTHH:mm:ssZ';
|
|
|
11
16
|
*/
|
|
12
17
|
export async function getDeviceTime(
|
|
13
18
|
this: AndroidDriver,
|
|
14
|
-
format: string =
|
|
19
|
+
format: string = DATETIME_FORMAT_ISO8601,
|
|
15
20
|
): Promise<string> {
|
|
16
21
|
this.log.debug(
|
|
17
|
-
|
|
22
|
+
`Attempting to capture Android device date and time. The format specifier is '${format}'`,
|
|
18
23
|
);
|
|
19
24
|
const deviceTimestamp = (await this.adb.shell(['date', '+%Y-%m-%dT%T%z'])).trim();
|
|
20
25
|
this.log.debug(`Got device timestamp: ${deviceTimestamp}`);
|
|
21
|
-
const parsedTimestamp =
|
|
26
|
+
const parsedTimestamp = dayjs.utc(deviceTimestamp, 'YYYY-MM-DDTHH:mm:ssZZ');
|
|
22
27
|
if (!parsedTimestamp.isValid()) {
|
|
23
28
|
this.log.warn('Cannot parse the returned timestamp. Returning as is');
|
|
24
29
|
return deviceTimestamp;
|
|
25
30
|
}
|
|
26
|
-
|
|
27
|
-
return parsedTimestamp.utcOffset(
|
|
31
|
+
const offset = parseOffset(deviceTimestamp);
|
|
32
|
+
return parsedTimestamp.utcOffset(offset).format(format);
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
/**
|
|
@@ -45,7 +50,7 @@ export async function mobileGetDeviceTime(this: AndroidDriver, format?: string):
|
|
|
45
50
|
* @throws {Error} If the time zone identifier is not known.
|
|
46
51
|
*/
|
|
47
52
|
export async function adjustTimeZone(this: AndroidDriver, zoneName: string): Promise<void> {
|
|
48
|
-
if (!
|
|
53
|
+
if (!isValidTimeZone(zoneName)) {
|
|
49
54
|
throw new Error(
|
|
50
55
|
`The provided time zone identifier '${zoneName}' is not known. ` +
|
|
51
56
|
`Please choose a valid TZ identifier from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones`,
|
|
@@ -59,3 +64,16 @@ export async function adjustTimeZone(this: AndroidDriver, zoneName: string): Pro
|
|
|
59
64
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/apex/jobscheduler/framework/java/android/app/IAlarmManager.aidl;l=1?q=IAlarmManager
|
|
60
65
|
await this.adb.shell(['service', 'call', 'alarm', '3', 's16', zoneName]);
|
|
61
66
|
}
|
|
67
|
+
|
|
68
|
+
function parseOffset(timestamp: string): number {
|
|
69
|
+
const m = timestamp.match(/([+-])(\d{2})(\d{2})$/);
|
|
70
|
+
if (!m) {
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
const sign = m[1] === '+' ? 1 : -1;
|
|
74
|
+
return sign * (Number(m[2]) * 60 + Number(m[3]));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function isValidTimeZone(zoneName: string): boolean {
|
|
78
|
+
return Intl.supportedValuesOf('timeZone').includes(zoneName);
|
|
79
|
+
}
|
package/lib/doctor/checks.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {resolveExecutablePath} from './utils';
|
|
2
|
-
import {system, fs, doctor} from '@appium/support';
|
|
2
|
+
import {system, fs, doctor, console} from '@appium/support';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import '@colors/colors';
|
|
5
4
|
import {getAndroidBinaryPath, getSdkRootFromEnv} from 'appium-adb';
|
|
6
5
|
import type {IDoctorCheck, AppiumLogger, DoctorCheckResult} from '@appium/types';
|
|
7
6
|
|
|
@@ -63,7 +62,7 @@ class EnvVarAndPathCheck implements IDoctorCheck {
|
|
|
63
62
|
|
|
64
63
|
async fix(): Promise<string> {
|
|
65
64
|
return (
|
|
66
|
-
`Make sure the environment variable ${this.varName
|
|
65
|
+
`Make sure the environment variable ${console.styleText('bold', this.varName)} is properly configured for the Appium process. ` +
|
|
67
66
|
`Refer ${ENVIRONMENT_VARS_TUTORIAL_URL} for more details.`
|
|
68
67
|
);
|
|
69
68
|
}
|
|
@@ -147,7 +146,7 @@ export class AndroidSdkCheck implements IDoctorCheck {
|
|
|
147
146
|
|
|
148
147
|
async fix(): Promise<string> {
|
|
149
148
|
return (
|
|
150
|
-
`Manually install ${'Android SDK'
|
|
149
|
+
`Manually install ${console.styleText('bold', 'Android SDK')} and set ${console.styleText('bold', 'ANDROID_HOME')}. ` +
|
|
151
150
|
`Read ${[ANDROID_SDK_LINK1, ANDROID_SDK_LINK2].join(' and ')}.`
|
|
152
151
|
);
|
|
153
152
|
}
|
|
@@ -174,7 +173,7 @@ export class OptionalBundletoolCheck implements IDoctorCheck {
|
|
|
174
173
|
|
|
175
174
|
async fix(): Promise<string> {
|
|
176
175
|
return (
|
|
177
|
-
`${'bundletool.jar'
|
|
176
|
+
`${console.styleText('bold', 'bundletool.jar')} is used to handle Android App bundles. ` +
|
|
178
177
|
`Please download the binary from ${BUNDLETOOL_RELEASES_LINK} and store it ` +
|
|
179
178
|
`to any folder listed in the PATH environment variable. Folders that ` +
|
|
180
179
|
`are currently present in PATH: ${process.env.PATH}`
|
|
@@ -211,9 +210,7 @@ export class OptionalGstreamerCheck implements IDoctorCheck {
|
|
|
211
210
|
|
|
212
211
|
async fix(): Promise<string> {
|
|
213
212
|
return (
|
|
214
|
-
`${
|
|
215
|
-
`${this.GSTREAMER_BINARY} and ${this.GST_INSPECT_BINARY}`.bold
|
|
216
|
-
} are used to stream the screen of the device under test. ` +
|
|
213
|
+
`${`${console.styleText('bold', this.GSTREAMER_BINARY)} and ${console.styleText('bold', this.GST_INSPECT_BINARY)}`} are used to stream the screen of the device under test. ` +
|
|
217
214
|
`Please read ${GSTREAMER_INSTALL_LINK}.`
|
|
218
215
|
);
|
|
219
216
|
}
|
|
@@ -242,7 +239,7 @@ export class OptionalFfmpegCheck implements IDoctorCheck {
|
|
|
242
239
|
|
|
243
240
|
async fix(): Promise<string> {
|
|
244
241
|
return (
|
|
245
|
-
`${
|
|
242
|
+
`${console.styleText('bold', this.FFMPEG_BINARY)} is used to capture screen recordings from the device under test. ` +
|
|
246
243
|
`Please read ${FFMPEG_INSTALL_LINK}.`
|
|
247
244
|
);
|
|
248
245
|
}
|
package/lib/logger.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-android-driver",
|
|
3
|
-
"version": "13.3.
|
|
3
|
+
"version": "13.3.2",
|
|
4
4
|
"description": "Android UiAutomator and Chrome support for Appium",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"appium",
|
|
@@ -47,17 +47,15 @@
|
|
|
47
47
|
"singleQuote": true
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@appium/support": "^7.2.
|
|
51
|
-
"@colors/colors": "^1.6.0",
|
|
50
|
+
"@appium/support": "^7.2.5",
|
|
52
51
|
"appium-adb": "^15.0.0",
|
|
53
52
|
"appium-chromedriver": "^8.4.4",
|
|
54
53
|
"asyncbox": "^6.1.0",
|
|
55
54
|
"axios": "^1.16.0",
|
|
55
|
+
"dayjs": "^1.11.21",
|
|
56
56
|
"io.appium.settings": "^7.1.3",
|
|
57
57
|
"lodash": "^4.17.4",
|
|
58
58
|
"lru-cache": "^11.1.0",
|
|
59
|
-
"moment": "^2.24.0",
|
|
60
|
-
"moment-timezone": "^0.x",
|
|
61
59
|
"portscanner": "^2.2.0",
|
|
62
60
|
"semver": "^7.0.0",
|
|
63
61
|
"teen_process": "^4.0.7",
|