appium-mac2-driver 1.0.2 → 1.1.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/README.md +24 -0
- package/WebDriverAgentMac/WebDriverAgentLib/Commands/FBScreenshotCommands.m +32 -0
- package/build/lib/commands/execute.js +3 -2
- package/build/lib/commands/index.js +4 -2
- package/build/lib/commands/screenshots.js +26 -0
- package/lib/commands/execute.js +2 -0
- package/lib/commands/index.js +2 -0
- package/lib/commands/screenshots.js +32 -0
- package/npm-shrinkwrap.json +11 -11
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
Appium Mac2 Driver
|
|
2
2
|
====
|
|
3
3
|
|
|
4
|
+
[](https://npmjs.org/package/appium-mac2-driver)
|
|
5
|
+
[](https://npmjs.org/package/appium-mac2-driver)
|
|
6
|
+
|
|
7
|
+
[](https://github.com/appium/appium-mac2-driver/actions/workflows/publish.js.yml)
|
|
8
|
+
|
|
9
|
+
|
|
4
10
|
This is Appium driver for automating macOS applications using Apple's [XCTest](https://developer.apple.com/documentation/xctest) framework.
|
|
5
11
|
The driver operates in scope of [W3C WebDriver protocol](https://www.w3.org/TR/webdriver/) with several custom extensions to cover operating-system specific scenarios.
|
|
6
12
|
The original idea and parts of the source code are borrowed from the Facebook's [WebDriverAgent](https://github.com/facebookarchive/WebDriverAgent) project.
|
|
@@ -484,6 +490,24 @@ formFields | Map or `Array<Pair>` | no | Additional form fields for multipart ht
|
|
|
484
490
|
|
|
485
491
|
Base64-encoded content of the recorded media file if `remotePath` parameter is falsy or an empty string.
|
|
486
492
|
|
|
493
|
+
### macos: screenshots
|
|
494
|
+
|
|
495
|
+
Retrieves a screenshot of each display available to macOS.
|
|
496
|
+
|
|
497
|
+
#### Arguments
|
|
498
|
+
|
|
499
|
+
Name | Type | Required | Description | Example
|
|
500
|
+
--- | --- | --- | --- | ---
|
|
501
|
+
displayId | number | no | Display identifier to take a screenshot for. If not provided then all display screenshots are going to be returned. If no matches were found then an error is thrown. | 1
|
|
502
|
+
|
|
503
|
+
#### Returns
|
|
504
|
+
|
|
505
|
+
A dictionary where each key contains a unique display identifier
|
|
506
|
+
and values are dictionaries with following items:
|
|
507
|
+
- `id`: Display identifier
|
|
508
|
+
- `isMain`: Whether this display is the main one
|
|
509
|
+
- `payload`: The actual PNG screenshot data encoded to base64 string
|
|
510
|
+
|
|
487
511
|
|
|
488
512
|
## Application Under Test Concept
|
|
489
513
|
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
#import "FBScreenshotCommands.h"
|
|
11
11
|
|
|
12
12
|
#import "XCTest/XCTest.h"
|
|
13
|
+
#import "FBRouteRequest.h"
|
|
13
14
|
|
|
14
15
|
@implementation FBScreenshotCommands
|
|
15
16
|
|
|
@@ -21,6 +22,9 @@
|
|
|
21
22
|
@[
|
|
22
23
|
[[FBRoute GET:@"/screenshot"].withoutSession respondWithTarget:self action:@selector(handleGetScreenshot:)],
|
|
23
24
|
[[FBRoute GET:@"/screenshot"] respondWithTarget:self action:@selector(handleGetScreenshot:)],
|
|
25
|
+
|
|
26
|
+
[[FBRoute POST:@"/wda/screenshots"].withoutSession respondWithTarget:self action:@selector(handleGetScreenshots:)],
|
|
27
|
+
[[FBRoute POST:@"/wda/screenshots"] respondWithTarget:self action:@selector(handleGetScreenshots:)],
|
|
24
28
|
];
|
|
25
29
|
}
|
|
26
30
|
|
|
@@ -39,4 +43,32 @@
|
|
|
39
43
|
return FBResponseWithObject(screenshot);
|
|
40
44
|
}
|
|
41
45
|
|
|
46
|
+
+ (id<FBResponsePayload>)handleGetScreenshots:(FBRouteRequest *)request
|
|
47
|
+
{
|
|
48
|
+
NSNumber *desiredId = request.arguments[@"displayId"];
|
|
49
|
+
NSMutableDictionary <NSString *, NSDictionary<NSString *, id> *> *result = [NSMutableDictionary new];
|
|
50
|
+
NSMutableArray <NSNumber *> *availableDisplayIds = [NSMutableArray new];
|
|
51
|
+
for (XCUIScreen *screen in XCUIScreen.screens) {
|
|
52
|
+
NSNumber *displayId = [screen valueForKey:@"_displayID"];
|
|
53
|
+
if (nil == displayId || (nil != desiredId && ![desiredId isEqualToNumber:displayId])) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
[availableDisplayIds addObject:displayId];
|
|
58
|
+
result[displayId.stringValue] = @{
|
|
59
|
+
@"id": displayId,
|
|
60
|
+
@"isMain": [screen valueForKey:@"_isMainScreen"] ?: NSNull.null,
|
|
61
|
+
@"payload": [screen.screenshot.PNGRepresentation
|
|
62
|
+
base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength] ?: NSNull.null
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (nil != desiredId && 0 == [result count]) {
|
|
66
|
+
NSString *message = [NSString stringWithFormat:@"The screen identified by %@ is not available to XCTest. Only the following identifiers are available: %@",
|
|
67
|
+
desiredId, availableDisplayIds];
|
|
68
|
+
return FBResponseWithStatus([FBCommandStatus unableToCaptureScreenErrorWithMessage:message
|
|
69
|
+
traceback:nil]);
|
|
70
|
+
}
|
|
71
|
+
return FBResponseWithObject(result.copy);
|
|
72
|
+
}
|
|
73
|
+
|
|
42
74
|
@end
|
|
@@ -39,7 +39,8 @@ const EXTENSION_COMMANDS_MAPPING = {
|
|
|
39
39
|
queryAppState: 'macosQueryAppState',
|
|
40
40
|
appleScript: 'macosExecAppleScript',
|
|
41
41
|
startRecordingScreen: 'startRecordingScreen',
|
|
42
|
-
stopRecordingScreen: 'stopRecordingScreen'
|
|
42
|
+
stopRecordingScreen: 'stopRecordingScreen',
|
|
43
|
+
screenshots: 'macosScreenshots'
|
|
43
44
|
};
|
|
44
45
|
|
|
45
46
|
commands.execute = async function execute(script, args) {
|
|
@@ -65,4 +66,4 @@ var _default = commands;
|
|
|
65
66
|
exports.default = _default;require('source-map-support').install();
|
|
66
67
|
|
|
67
68
|
|
|
68
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkciLCJzZXRWYWx1ZSIsImNsaWNrIiwic2Nyb2xsIiwic3dpcGUiLCJyaWdodENsaWNrIiwiaG92ZXIiLCJkb3VibGVDbGljayIsImNsaWNrQW5kRHJhZyIsImNsaWNrQW5kRHJhZ0FuZEhvbGQiLCJrZXlzIiwidGFwIiwiZG91YmxlVGFwIiwicHJlc3MiLCJwcmVzc0FuZERyYWciLCJwcmVzc0FuZERyYWdBbmRIb2xkIiwic291cmNlIiwibGF1bmNoQXBwIiwiYWN0aXZhdGVBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJxdWVyeUFwcFN0YXRlIiwiYXBwbGVTY3JpcHQiLCJzdGFydFJlY29yZGluZ1NjcmVlbiIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJzY3JlZW5zaG90cyIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJsb2ciLCJpbmZvIiwicmVwbGFjZSIsInRyaW0iLCJleGVjdXRlTWFjb3NDb21tYW5kIiwiXyIsImlzQXJyYXkiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiY29tbWFuZCIsIm9wdHMiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjtBQUVBLE1BQU1DLDBCQUEwQixHQUFHO0FBQ2pDQyxFQUFBQSxRQUFRLEVBQUUsZUFEdUI7QUFFakNDLEVBQUFBLEtBQUssRUFBRSxZQUYwQjtBQUdqQ0MsRUFBQUEsTUFBTSxFQUFFLGFBSHlCO0FBSWpDQyxFQUFBQSxLQUFLLEVBQUUsWUFKMEI7QUFLakNDLEVBQUFBLFVBQVUsRUFBRSxpQkFMcUI7QUFNakNDLEVBQUFBLEtBQUssRUFBRSxZQU4wQjtBQU9qQ0MsRUFBQUEsV0FBVyxFQUFFLGtCQVBvQjtBQVFqQ0MsRUFBQUEsWUFBWSxFQUFFLG1CQVJtQjtBQVNqQ0MsRUFBQUEsbUJBQW1CLEVBQUUsMEJBVFk7QUFVakNDLEVBQUFBLElBQUksRUFBRSxXQVYyQjtBQVlqQ0MsRUFBQUEsR0FBRyxFQUFFLFVBWjRCO0FBYWpDQyxFQUFBQSxTQUFTLEVBQUUsZ0JBYnNCO0FBY2pDQyxFQUFBQSxLQUFLLEVBQUUsWUFkMEI7QUFlakNDLEVBQUFBLFlBQVksRUFBRSxtQkFmbUI7QUFnQmpDQyxFQUFBQSxtQkFBbUIsRUFBRSwwQkFoQlk7QUFrQmpDQyxFQUFBQSxNQUFNLEVBQUUsYUFsQnlCO0FBb0JqQ0MsRUFBQUEsU0FBUyxFQUFFLGdCQXBCc0I7QUFxQmpDQyxFQUFBQSxXQUFXLEVBQUUsa0JBckJvQjtBQXNCakNDLEVBQUFBLFlBQVksRUFBRSxtQkF0Qm1CO0FBdUJqQ0MsRUFBQUEsYUFBYSxFQUFFLG9CQXZCa0I7QUF5QmpDQyxFQUFBQSxXQUFXLEVBQUUsc0JBekJvQjtBQTJCakNDLEVBQUFBLG9CQUFvQixFQUFFLHNCQTNCVztBQTRCakNDLEVBQUFBLG1CQUFtQixFQUFFLHFCQTVCWTtBQThCakNDLEVBQUFBLFdBQVcsRUFBRTtBQTlCb0IsQ0FBbkM7O0FBaUNBekIsUUFBUSxDQUFDMEIsT0FBVCxHQUFtQixlQUFlQSxPQUFmLENBQXdCQyxNQUF4QixFQUFnQ0MsSUFBaEMsRUFBc0M7QUFDdkQsTUFBSUQsTUFBTSxDQUFDRSxLQUFQLENBQWEsU0FBYixDQUFKLEVBQTZCO0FBQzNCQyxvQkFBSUMsSUFBSixDQUFVLGdDQUErQkosTUFBTyxHQUFoRDs7QUFDQUEsSUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNLLE9BQVAsQ0FBZSxTQUFmLEVBQTBCLEVBQTFCLEVBQThCQyxJQUE5QixFQUFUO0FBQ0EsV0FBTyxNQUFNLEtBQUtDLG1CQUFMLENBQXlCUCxNQUF6QixFQUFpQ1EsZ0JBQUVDLE9BQUYsQ0FBVVIsSUFBVixJQUFrQkEsSUFBSSxDQUFDLENBQUQsQ0FBdEIsR0FBNEJBLElBQTdELENBQWI7QUFDRDs7QUFDRCxRQUFNLElBQUlTLG1CQUFPQyxtQkFBWCxFQUFOO0FBQ0QsQ0FQRDs7QUFTQXRDLFFBQVEsQ0FBQ2tDLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLENBQW9DSyxPQUFwQyxFQUE2Q0MsSUFBSSxHQUFHLEVBQXBELEVBQXdEO0FBQ3JGLE1BQUksQ0FBQ0wsZ0JBQUVNLEdBQUYsQ0FBTXhDLDBCQUFOLEVBQWtDc0MsT0FBbEMsQ0FBTCxFQUFpRDtBQUMvQyxVQUFNLElBQUlGLG1CQUFPSyxtQkFBWCxDQUFnQyw4QkFBNkJILE9BQVEsS0FBdEMsR0FDbEMsUUFBT0osZ0JBQUV4QixJQUFGLENBQU9WLDBCQUFQLENBQW1DLDBCQUR2QyxDQUFOO0FBRUQ7O0FBQ0QsU0FBTyxNQUFNLEtBQUtBLDBCQUEwQixDQUFDc0MsT0FBRCxDQUEvQixFQUEwQ0MsSUFBMUMsQ0FBYjtBQUNELENBTkQ7O2VBUWV4QyxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBFWFRFTlNJT05fQ09NTUFORFNfTUFQUElORyA9IHtcbiAgc2V0VmFsdWU6ICdtYWNvc1NldFZhbHVlJyxcbiAgY2xpY2s6ICdtYWNvc0NsaWNrJyxcbiAgc2Nyb2xsOiAnbWFjb3NTY3JvbGwnLFxuICBzd2lwZTogJ21hY29zU3dpcGUnLFxuICByaWdodENsaWNrOiAnbWFjb3NSaWdodENsaWNrJyxcbiAgaG92ZXI6ICdtYWNvc0hvdmVyJyxcbiAgZG91YmxlQ2xpY2s6ICdtYWNvc0RvdWJsZUNsaWNrJyxcbiAgY2xpY2tBbmREcmFnOiAnbWFjb3NDbGlja0FuZERyYWcnLFxuICBjbGlja0FuZERyYWdBbmRIb2xkOiAnbWFjb3NDbGlja0FuZERyYWdBbmRIb2xkJyxcbiAga2V5czogJ21hY29zS2V5cycsXG5cbiAgdGFwOiAnbWFjb3NUYXAnLFxuICBkb3VibGVUYXA6ICdtYWNvc0RvdWJsZVRhcCcsXG4gIHByZXNzOiAnbWFjb3NQcmVzcycsXG4gIHByZXNzQW5kRHJhZzogJ21hY29zUHJlc3NBbmREcmFnJyxcbiAgcHJlc3NBbmREcmFnQW5kSG9sZDogJ21hY29zUHJlc3NBbmREcmFnQW5kSG9sZCcsXG5cbiAgc291cmNlOiAnbWFjb3NTb3VyY2UnLFxuXG4gIGxhdW5jaEFwcDogJ21hY29zTGF1bmNoQXBwJyxcbiAgYWN0aXZhdGVBcHA6ICdtYWNvc0FjdGl2YXRlQXBwJyxcbiAgdGVybWluYXRlQXBwOiAnbWFjb3NUZXJtaW5hdGVBcHAnLFxuICBxdWVyeUFwcFN0YXRlOiAnbWFjb3NRdWVyeUFwcFN0YXRlJyxcblxuICBhcHBsZVNjcmlwdDogJ21hY29zRXhlY0FwcGxlU2NyaXB0JyxcblxuICBzdGFydFJlY29yZGluZ1NjcmVlbjogJ3N0YXJ0UmVjb3JkaW5nU2NyZWVuJyxcbiAgc3RvcFJlY29yZGluZ1NjcmVlbjogJ3N0b3BSZWNvcmRpbmdTY3JlZW4nLFxuXG4gIHNjcmVlbnNob3RzOiAnbWFjb3NTY3JlZW5zaG90cycsXG59O1xuXG5jb21tYW5kcy5leGVjdXRlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmIChzY3JpcHQubWF0Y2goL15tYWNvczovKSkge1xuICAgIGxvZy5pbmZvKGBFeGVjdXRpbmcgZXh0ZW5zaW9uIGNvbW1hbmQgJyR7c2NyaXB0fSdgKTtcbiAgICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZSgvXm1hY29zOi8sICcnKS50cmltKCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU1hY29zQ29tbWFuZChzY3JpcHQsIF8uaXNBcnJheShhcmdzKSA/IGFyZ3NbMF0gOiBhcmdzKTtcbiAgfVxuICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbn07XG5cbmNvbW1hbmRzLmV4ZWN1dGVNYWNvc0NvbW1hbmQgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTWFjb3NDb21tYW5kIChjb21tYW5kLCBvcHRzID0ge30pIHtcbiAgaWYgKCFfLmhhcyhFWFRFTlNJT05fQ09NTUFORFNfTUFQUElORywgY29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoYFVua25vd24gZXh0ZW5zaW9uIGNvbW1hbmQgXCIke2NvbW1hbmR9XCIuIGAgK1xuICAgICAgYE9ubHkgJHtfLmtleXMoRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW0VYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HW2NvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -23,11 +23,13 @@ var _applescript = _interopRequireDefault(require("./applescript"));
|
|
|
23
23
|
|
|
24
24
|
var _recordScreen = _interopRequireDefault(require("./record-screen"));
|
|
25
25
|
|
|
26
|
+
var _screenshots = _interopRequireDefault(require("./screenshots"));
|
|
27
|
+
|
|
26
28
|
const commands = {};
|
|
27
29
|
exports.commands = commands;
|
|
28
|
-
Object.assign(commands, _find.default, _execute.default, _gestures.default, _source.default, _appManagement.default, _applescript.default, _recordScreen.default);
|
|
30
|
+
Object.assign(commands, _find.default, _execute.default, _gestures.default, _source.default, _appManagement.default, _applescript.default, _recordScreen.default, _screenshots.default);
|
|
29
31
|
var _default = commands;
|
|
30
32
|
exports.default = _default;require('source-map-support').install();
|
|
31
33
|
|
|
32
34
|
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImZpbmRDbWRzIiwiZXhlY3V0ZUNtZHMiLCJnZXN0dXJlQ21kcyIsInNvdXJjZUNtZHMiLCJhcHBNYW5hZ2VtZW50Q21kcyIsImFwcGxlU2NyaXB0Q21kcyIsInNjcmVlblJlY29yZGluZ0NtZHMiLCJzY3JlZW5zaG90c0NtZHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQUNBQyxNQUFNLENBQUNDLE1BQVAsQ0FDRUYsUUFERixFQUVFRyxhQUZGLEVBR0VDLGdCQUhGLEVBSUVDLGlCQUpGLEVBS0VDLGVBTEYsRUFNRUMsc0JBTkYsRUFPRUMsb0JBUEYsRUFRRUMscUJBUkYsRUFTRUMsb0JBVEY7ZUFjZVYsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaW5kQ21kcyBmcm9tICcuL2ZpbmQnO1xuaW1wb3J0IGV4ZWN1dGVDbWRzIGZyb20gJy4vZXhlY3V0ZSc7XG5pbXBvcnQgZ2VzdHVyZUNtZHMgZnJvbSAnLi9nZXN0dXJlcyc7XG5pbXBvcnQgc291cmNlQ21kcyBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQgYXBwTWFuYWdlbWVudENtZHMgZnJvbSAnLi9hcHAtbWFuYWdlbWVudCc7XG5pbXBvcnQgYXBwbGVTY3JpcHRDbWRzIGZyb20gJy4vYXBwbGVzY3JpcHQnO1xuaW1wb3J0IHNjcmVlblJlY29yZGluZ0NtZHMgZnJvbSAnLi9yZWNvcmQtc2NyZWVuJztcbmltcG9ydCBzY3JlZW5zaG90c0NtZHMgZnJvbSAnLi9zY3JlZW5zaG90cyc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBjb21tYW5kcyxcbiAgZmluZENtZHMsXG4gIGV4ZWN1dGVDbWRzLFxuICBnZXN0dXJlQ21kcyxcbiAgc291cmNlQ21kcyxcbiAgYXBwTWFuYWdlbWVudENtZHMsXG4gIGFwcGxlU2NyaXB0Q21kcyxcbiAgc2NyZWVuUmVjb3JkaW5nQ21kcyxcbiAgc2NyZWVuc2hvdHNDbWRzLFxuICAvLyBhZGQgb3RoZXIgY29tbWFuZCB0eXBlcyBoZXJlXG4pO1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.commands = void 0;
|
|
7
|
+
|
|
8
|
+
require("source-map-support/register");
|
|
9
|
+
|
|
10
|
+
const commands = {};
|
|
11
|
+
exports.commands = commands;
|
|
12
|
+
|
|
13
|
+
commands.macosScreenshots = async function macosScreenshots(opts = {}) {
|
|
14
|
+
const {
|
|
15
|
+
displayId
|
|
16
|
+
} = opts;
|
|
17
|
+
return await this.wda.proxy.command('/wda/screenshots', 'POST', {
|
|
18
|
+
displayId
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
var _default = commands;
|
|
23
|
+
exports.default = _default;require('source-map-support').install();
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zY3JlZW5zaG90cy5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIm1hY29zU2NyZWVuc2hvdHMiLCJvcHRzIiwiZGlzcGxheUlkIiwid2RhIiwicHJveHkiLCJjb21tYW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7OztBQXlCQUEsUUFBUSxDQUFDQyxnQkFBVCxHQUE0QixlQUFlQSxnQkFBZixDQUFpQ0MsSUFBSSxHQUFHLEVBQXhDLEVBQTRDO0FBQ3RFLFFBQU07QUFBQ0MsSUFBQUE7QUFBRCxNQUFjRCxJQUFwQjtBQUNBLFNBQU8sTUFBTSxLQUFLRSxHQUFMLENBQVNDLEtBQVQsQ0FBZUMsT0FBZixDQUF1QixrQkFBdkIsRUFBMkMsTUFBM0MsRUFBbUQ7QUFBQ0gsSUFBQUE7QUFBRCxHQUFuRCxDQUFiO0FBQ0QsQ0FIRDs7ZUFNZUgsUSIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2NyZWVuc2hvdHNJbmZvXG4gKlxuICogQSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5IGNvbnRhaW5zIGEgdW5pcXVlIGRpc3BsYXkgaWRlbnRpZmllclxuICogYW5kIHZhbHVlcyBhcmUgZGljdGlvbmFyaWVzIHdpdGggZm9sbG93aW5nIGl0ZW1zOlxuICogLSBpZDogRGlzcGxheSBpZGVudGlmaWVyXG4gKiAtIGlzTWFpbjogV2hldGhlciB0aGlzIGRpc3BsYXkgaXMgdGhlIG1haW4gb25lXG4gKiAtIHBheWxvYWQ6IFRoZSBhY3R1YWwgUE5HIHNjcmVlbnNob3QgZGF0YSBlbmNvZGVkIHRvIGJhc2U2NCBzdHJpbmdcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNjcmVlbnNob3RzT3B0c1xuICogQHByb3BlcnR5IHtudW1iZXI/fSBkaXNwbGF5SWQgbWFjT1MgZGlzcGxheSBpZGVudGlmaWVyIHRvIHRha2UgYSBzY3JlZW5zaG90IGZvci5cbiAqIElmIG5vdCBwcm92aWRlZCB0aGVuIHNjcmVlbnNob3RzIG9mIGFsbCBkaXNwbGF5cyBhcmUgZ29pbmcgdG8gYmUgcmV0dXJuZWQuXG4gKiBJZiBubyBtYXRjaGVzIHdlcmUgZm91bmQgdGhlbiBhbiBlcnJvciBpcyB0aHJvd24uXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgc2NyZWVuc2hvdHMgb2YgZWFjaCBkaXNwbGF5IGF2YWlsYWJsZSB0byBtYWNPU1xuICpcbiAqIEBwYXJhbSB7U2NyZWVuc2hvdHNPcHRzfSBvcHRzXG4gKiBAcmV0dXJucyB7U2NyZWVuc2hvdHNJbmZvfVxuICovXG5jb21tYW5kcy5tYWNvc1NjcmVlbnNob3RzID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NTY3JlZW5zaG90cyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtkaXNwbGF5SWR9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQoJy93ZGEvc2NyZWVuc2hvdHMnLCAnUE9TVCcsIHtkaXNwbGF5SWR9KTtcbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL3NjcmVlbnNob3RzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
package/lib/commands/execute.js
CHANGED
package/lib/commands/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import sourceCmds from './source';
|
|
|
5
5
|
import appManagementCmds from './app-management';
|
|
6
6
|
import appleScriptCmds from './applescript';
|
|
7
7
|
import screenRecordingCmds from './record-screen';
|
|
8
|
+
import screenshotsCmds from './screenshots';
|
|
8
9
|
|
|
9
10
|
const commands = {};
|
|
10
11
|
Object.assign(
|
|
@@ -16,6 +17,7 @@ Object.assign(
|
|
|
16
17
|
appManagementCmds,
|
|
17
18
|
appleScriptCmds,
|
|
18
19
|
screenRecordingCmds,
|
|
20
|
+
screenshotsCmds,
|
|
19
21
|
// add other command types here
|
|
20
22
|
);
|
|
21
23
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const commands = {};
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {Object} ScreenshotsInfo
|
|
5
|
+
*
|
|
6
|
+
* A dictionary where each key contains a unique display identifier
|
|
7
|
+
* and values are dictionaries with following items:
|
|
8
|
+
* - id: Display identifier
|
|
9
|
+
* - isMain: Whether this display is the main one
|
|
10
|
+
* - payload: The actual PNG screenshot data encoded to base64 string
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @typedef {Object} ScreenshotsOpts
|
|
15
|
+
* @property {number?} displayId macOS display identifier to take a screenshot for.
|
|
16
|
+
* If not provided then screenshots of all displays are going to be returned.
|
|
17
|
+
* If no matches were found then an error is thrown.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves screenshots of each display available to macOS
|
|
22
|
+
*
|
|
23
|
+
* @param {ScreenshotsOpts} opts
|
|
24
|
+
* @returns {ScreenshotsInfo}
|
|
25
|
+
*/
|
|
26
|
+
commands.macosScreenshots = async function macosScreenshots (opts = {}) {
|
|
27
|
+
const {displayId} = opts;
|
|
28
|
+
return await this.wda.proxy.command('/wda/screenshots', 'POST', {displayId});
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { commands };
|
|
32
|
+
export default commands;
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-mac2-driver",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -571,11 +571,11 @@
|
|
|
571
571
|
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
|
572
572
|
},
|
|
573
573
|
"axios": {
|
|
574
|
-
"version": "0.
|
|
575
|
-
"resolved": "https://registry.npmjs.org/axios/-/axios-0.
|
|
576
|
-
"integrity": "sha512-
|
|
574
|
+
"version": "0.26.0",
|
|
575
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
|
|
576
|
+
"integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
|
|
577
577
|
"requires": {
|
|
578
|
-
"follow-redirects": "^1.14.
|
|
578
|
+
"follow-redirects": "^1.14.8"
|
|
579
579
|
}
|
|
580
580
|
},
|
|
581
581
|
"balanced-match": {
|
|
@@ -986,9 +986,9 @@
|
|
|
986
986
|
"integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
|
|
987
987
|
},
|
|
988
988
|
"follow-redirects": {
|
|
989
|
-
"version": "1.14.
|
|
990
|
-
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.
|
|
991
|
-
"integrity": "sha512-
|
|
989
|
+
"version": "1.14.9",
|
|
990
|
+
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
|
|
991
|
+
"integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
|
|
992
992
|
},
|
|
993
993
|
"form-data": {
|
|
994
994
|
"version": "4.0.0",
|
|
@@ -1398,9 +1398,9 @@
|
|
|
1398
1398
|
}
|
|
1399
1399
|
},
|
|
1400
1400
|
"minimatch": {
|
|
1401
|
-
"version": "3.
|
|
1402
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.
|
|
1403
|
-
"integrity": "sha512-
|
|
1401
|
+
"version": "3.1.2",
|
|
1402
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
1403
|
+
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
1404
1404
|
"requires": {
|
|
1405
1405
|
"brace-expansion": "^1.1.7"
|
|
1406
1406
|
}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"mac",
|
|
7
7
|
"XCTest"
|
|
8
8
|
],
|
|
9
|
-
"version": "1.0
|
|
9
|
+
"version": "1.1.0",
|
|
10
10
|
"author": "appium",
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"repository": {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@appium/eslint-config-appium": "^5.0.0",
|
|
63
63
|
"@babel/core": "^7.16.0",
|
|
64
64
|
"@babel/eslint-parser": "^7.16.3",
|
|
65
|
-
"@semantic-release/git": "^
|
|
65
|
+
"@semantic-release/git": "^10.0.1",
|
|
66
66
|
"chai": "^4.1.2",
|
|
67
67
|
"chai-as-promised": "^7.1.1",
|
|
68
68
|
"eslint": "^7.32.0",
|