@mablhq/mabl-cli 1.61.8 → 2.0.3
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/Globals.js +11 -7
- package/api/basicApiClient.js +10 -10
- package/api/mablApiClient.js +39 -1
- package/browserLauncher/playwrightBrowserLauncher/playwrightBrowser.js +6 -6
- package/browserLauncher/playwrightBrowserLauncher/playwrightPage.js +8 -0
- package/cli.js +1 -0
- package/commands/app-files/app-files.js +5 -0
- package/commands/app-files/app-files_cmds/create.js +98 -0
- package/commands/app-files/app-files_cmds/delete.js +31 -0
- package/commands/app-files/app-files_cmds/download.js +50 -0
- package/commands/app-files/app-files_cmds/list.js +72 -0
- package/commands/config/config_cmds/install.js +92 -0
- package/commands/constants.js +10 -3
- package/commands/tests/testsUtil.js +45 -15
- package/commands/tests/tests_cmds/run-mobile.js +218 -0
- package/commands/tests/tests_cmds/run.js +11 -9
- package/core/util.js +36 -2
- package/env/defaultEnv.js +2 -1
- package/env/dev.js +2 -1
- package/env/env.js +3 -1
- package/env/local.js +2 -1
- package/env/prod.js +2 -1
- package/execution/index.js +13 -1
- package/execution/runAppiumServer.js +133 -0
- package/http/MablHttpAgent.js +4 -1
- package/http/RequestFilteringHttpAgent.js +3 -3
- package/http/axiosProxyConfig.js +27 -22
- package/http/httpUtil.js +6 -10
- package/mablApi/index.js +1 -1
- package/mablscript/MablAction.js +1 -1
- package/mablscript/MablStep.js +28 -2
- package/mablscript/MablStepV2.js +51 -0
- package/mablscript/MablSymbol.js +6 -2
- package/mablscript/actions/ExtractAction.js +11 -6
- package/mablscript/actions/FindAction.js +5 -5
- package/mablscript/actions/JavaScriptAction.js +19 -12
- package/mablscript/importer.js +97 -14
- package/mablscript/mobile/steps/CreateVariableMobileStep.js +53 -0
- package/mablscript/mobile/steps/EnterTextStep.js +41 -0
- package/mablscript/mobile/steps/NavigateBackStep.js +20 -0
- package/mablscript/mobile/steps/NavigateHomeStep.js +21 -0
- package/mablscript/mobile/steps/ScrollStep.js +37 -0
- package/mablscript/mobile/steps/SetOrientationStep.js +20 -0
- package/mablscript/mobile/steps/TapStep.js +37 -0
- package/mablscript/mobile/steps/actions/MobileFindAction.js +23 -0
- package/mablscript/mobile/steps/stepUtil.js +71 -0
- package/mablscript/mobile/tests/StepTestsUtil.js +20 -0
- package/mablscript/mobile/tests/TestMobileFindDescriptors.js +215 -0
- package/mablscript/mobile/tests/steps/CreateVariableMobileStep.mobiletest.js +287 -0
- package/mablscript/mobile/tests/steps/EnterTextStep.mobiletest.js +74 -0
- package/mablscript/mobile/tests/steps/GeneralHumanization.mobiletest.js +167 -0
- package/mablscript/mobile/tests/steps/NavigateBackStep.mobiletest.js +22 -0
- package/mablscript/mobile/tests/steps/NavigateHomeStep.mobiletest.js +22 -0
- package/mablscript/mobile/tests/steps/ScrollStep.mobiletest.js +112 -0
- package/mablscript/mobile/tests/steps/SetOrientationStep.mobiletest.js +27 -0
- package/mablscript/mobile/tests/steps/TapStep.mobiletest.js +53 -0
- package/mablscript/steps/AssertStep.js +48 -38
- package/mablscript/steps/AssertStepOld.js +30 -2
- package/mablscript/steps/CreateVariableStep.js +9 -2
- package/mablscript/steps/EchoStep.js +4 -3
- package/mablscript/steps/ElseIfConditionStep.js +8 -2
- package/mablscript/steps/ElseStep.js +2 -1
- package/mablscript/steps/EndStep.js +2 -1
- package/mablscript/steps/EvaluateJavaScriptStep.js +6 -1
- package/mablscript/steps/IfConditionStep.js +17 -10
- package/mablscript/steps/SendHttpRequestStep.js +4 -3
- package/mablscript/steps/WaitStep.js +4 -3
- package/mablscript/types/GetVariableDescriptor.js +8 -3
- package/mablscript/types/mobile/CreateVariableMobileStepDescriptor.js +9 -0
- package/mablscript/types/mobile/EnterTextStepDescriptor.js +2 -0
- package/mablscript/types/mobile/NavigateBackStepDescriptor.js +2 -0
- package/mablscript/types/mobile/NavigateHomeStepDescriptor.js +2 -0
- package/mablscript/types/mobile/ScrollStepDescriptor.js +2 -0
- package/mablscript/types/mobile/SetOrientationStepDescriptor.js +8 -0
- package/mablscript/types/mobile/StepWithMobileFindDescriptor.js +2 -0
- package/mablscript/types/mobile/TapStepDescriptor.js +8 -0
- package/mablscriptFind/index.js +1 -1
- package/package.json +13 -6
- package/resources/pdf-viewer/embeddedPdfDetection.js +1 -14
- package/resources/webdriver.js +21 -0
- package/upload/index.js +5 -0
- package/util/FileCache.js +180 -0
- package/util/Lazy.js +90 -0
- package/util/MobileAppFileCache.js +102 -0
- package/util/RichPromise.js +3 -1
- package/webdriver/index.js +41 -0
package/mablscript/MablAction.js
CHANGED
|
@@ -34,7 +34,7 @@ class MablAction {
|
|
|
34
34
|
}
|
|
35
35
|
static findUniqueVariableReferencesInValue(value) {
|
|
36
36
|
const variableReferences = [];
|
|
37
|
-
if (
|
|
37
|
+
if ((0, MablSymbol_1.isMablSymbolObject)(value)) {
|
|
38
38
|
return [value.name];
|
|
39
39
|
}
|
|
40
40
|
else if (typeof value === 'string') {
|
package/mablscript/MablStep.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.buildObjectString = exports.buildSourceRepresentationOfObject = exports.MablStep = void 0;
|
|
6
|
+
exports.isMablStepV1 = exports.buildObjectString = exports.buildSourceRepresentationOfObject = exports.MablStep = void 0;
|
|
7
7
|
const domUtil_1 = require("../domUtil");
|
|
8
8
|
const MablAction_1 = require("./MablAction");
|
|
9
9
|
const MablSymbol_1 = require("./MablSymbol");
|
|
@@ -11,8 +11,12 @@ const fast_json_stable_stringify_1 = __importDefault(require("fast-json-stable-s
|
|
|
11
11
|
class MablStep extends MablAction_1.MablAction {
|
|
12
12
|
constructor(name, args, actions) {
|
|
13
13
|
super(name, args);
|
|
14
|
+
this.stepVersion = 1;
|
|
14
15
|
this.actions = actions;
|
|
15
16
|
}
|
|
17
|
+
getStepVersion() {
|
|
18
|
+
return this.stepVersion;
|
|
19
|
+
}
|
|
16
20
|
canContinueOnFailure() {
|
|
17
21
|
return false;
|
|
18
22
|
}
|
|
@@ -51,7 +55,7 @@ class MablStep extends MablAction_1.MablAction {
|
|
|
51
55
|
return (((_a = this.annotation) === null || _a === void 0 ? void 0 : _a.description) || this.description || this.getStepName());
|
|
52
56
|
}
|
|
53
57
|
substituteMablscriptVariable(argument) {
|
|
54
|
-
if (
|
|
58
|
+
if ((0, MablSymbol_1.isMablSymbolObject)(argument)) {
|
|
55
59
|
return argument.name;
|
|
56
60
|
}
|
|
57
61
|
if ((0, MablAction_1.argumentIsMablVariable)(argument)) {
|
|
@@ -104,6 +108,20 @@ class MablStep extends MablAction_1.MablAction {
|
|
|
104
108
|
};
|
|
105
109
|
return (0, fast_json_stable_stringify_1.default)(lineDiffProperties);
|
|
106
110
|
}
|
|
111
|
+
static cloneAndRemoveUndefinedEntriesFromObject(obj) {
|
|
112
|
+
const clone = {};
|
|
113
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
114
|
+
if (value !== undefined) {
|
|
115
|
+
if (typeof value !== 'object' || Array.isArray(value)) {
|
|
116
|
+
clone[key] = value;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
clone[key] = MablStep.cloneAndRemoveUndefinedEntriesFromObject(value);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return clone;
|
|
124
|
+
}
|
|
107
125
|
}
|
|
108
126
|
exports.MablStep = MablStep;
|
|
109
127
|
MablStep.mablScriptStepNames = ['mablStep'];
|
|
@@ -150,3 +168,11 @@ function buildObjectString(objectString) {
|
|
|
150
168
|
return final;
|
|
151
169
|
}
|
|
152
170
|
exports.buildObjectString = buildObjectString;
|
|
171
|
+
function isMablStepV1(value) {
|
|
172
|
+
if (value === undefined || value === null) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const mablStep = value;
|
|
176
|
+
return !!mablStep.getStepVersion && mablStep.getStepVersion() === 1;
|
|
177
|
+
}
|
|
178
|
+
exports.isMablStepV1 = isMablStepV1;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMablStepV2 = exports.MablStepV2 = void 0;
|
|
4
|
+
const MablStep_1 = require("./MablStep");
|
|
5
|
+
class MablStepV2 extends MablStep_1.MablStep {
|
|
6
|
+
constructor(name, descriptor) {
|
|
7
|
+
super(name, [], []);
|
|
8
|
+
this.stepVersion = 2;
|
|
9
|
+
this.descriptor = descriptor;
|
|
10
|
+
}
|
|
11
|
+
static fromYaml(stepName, stepDescriptor) {
|
|
12
|
+
return new MablStepV2(stepName, stepDescriptor);
|
|
13
|
+
}
|
|
14
|
+
getStepName() {
|
|
15
|
+
return this.name;
|
|
16
|
+
}
|
|
17
|
+
toStepDescriptor() {
|
|
18
|
+
return this.descriptor;
|
|
19
|
+
}
|
|
20
|
+
getFormattedStep(_fullLocatorsOn) {
|
|
21
|
+
return {
|
|
22
|
+
[this.getStepName()]: this.descriptor,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
stepDescription() {
|
|
26
|
+
throw new Error('Step description not implemented');
|
|
27
|
+
}
|
|
28
|
+
isDisabled() {
|
|
29
|
+
return !!this.descriptor.disabled;
|
|
30
|
+
}
|
|
31
|
+
setDisabled(disabled) {
|
|
32
|
+
this.descriptor.disabled = disabled;
|
|
33
|
+
}
|
|
34
|
+
getDescriptionForLogging() {
|
|
35
|
+
var _a;
|
|
36
|
+
return (((_a = this.annotation) === null || _a === void 0 ? void 0 : _a.description) ||
|
|
37
|
+
this.stepDescription() ||
|
|
38
|
+
this.getStepName());
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.MablStepV2 = MablStepV2;
|
|
42
|
+
MablStepV2.mablScriptStepNames = [];
|
|
43
|
+
MablStepV2.yamlMablScriptNames = ['MablStepV2'];
|
|
44
|
+
function isMablStepV2(value) {
|
|
45
|
+
if (value === undefined || value === null) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const mablStep = value;
|
|
49
|
+
return !!mablStep.getStepVersion && mablStep.getStepVersion() === 2;
|
|
50
|
+
}
|
|
51
|
+
exports.isMablStepV2 = isMablStepV2;
|
package/mablscript/MablSymbol.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatSymbol = exports.MablSymbol = exports.SINGLE_VARIABLE_PATTERN_REGEX = exports.VARIABLE_PATTERN_REGEX = void 0;
|
|
3
|
+
exports.isMablSymbolObject = exports.formatSymbol = exports.MablSymbol = exports.SINGLE_VARIABLE_PATTERN_REGEX = exports.VARIABLE_PATTERN_REGEX = void 0;
|
|
4
4
|
exports.VARIABLE_PATTERN_REGEX = /{{@([_.a-zA-Z0-9]+)}}/g;
|
|
5
5
|
exports.SINGLE_VARIABLE_PATTERN_REGEX = /^{{@([_.a-zA-Z0-9]+)}}$/;
|
|
6
6
|
class MablSymbol {
|
|
@@ -23,9 +23,13 @@ class MablSymbol {
|
|
|
23
23
|
}
|
|
24
24
|
exports.MablSymbol = MablSymbol;
|
|
25
25
|
function formatSymbol(symbol) {
|
|
26
|
-
if (symbol
|
|
26
|
+
if (isMablSymbolObject(symbol)) {
|
|
27
27
|
return '{{@' + symbol.name + '}}';
|
|
28
28
|
}
|
|
29
29
|
return '{{@' + symbol + '}}';
|
|
30
30
|
}
|
|
31
31
|
exports.formatSymbol = formatSymbol;
|
|
32
|
+
function isMablSymbolObject(value) {
|
|
33
|
+
return !!((value === null || value === void 0 ? void 0 : value.name) && (value === null || value === void 0 ? void 0 : value.tokens));
|
|
34
|
+
}
|
|
35
|
+
exports.isMablSymbolObject = isMablSymbolObject;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExtractAction = exports.CSS_EXTRACTION_VALUE = exports.EXTRACTION_TYPE_KEY = void 0;
|
|
3
|
+
exports.ExtractAction = exports.ExtractTypeName = exports.CSS_EXTRACTION_VALUE = exports.EXTRACTION_TYPE_KEY = void 0;
|
|
4
4
|
const MablAction_1 = require("../MablAction");
|
|
5
5
|
const ExtractDescriptor_1 = require("../types/ExtractDescriptor");
|
|
6
6
|
exports.EXTRACTION_TYPE_KEY = 'extraction_type';
|
|
7
7
|
exports.CSS_EXTRACTION_VALUE = 'css';
|
|
8
|
+
var ExtractTypeName;
|
|
9
|
+
(function (ExtractTypeName) {
|
|
10
|
+
ExtractTypeName["CssProperty"] = "CssProperty";
|
|
11
|
+
ExtractTypeName["ElementAttribute"] = "ElementAttribute";
|
|
12
|
+
ExtractTypeName["EmailAttribute"] = "EmailAttribute";
|
|
13
|
+
})(ExtractTypeName = exports.ExtractTypeName || (exports.ExtractTypeName = {}));
|
|
8
14
|
class ExtractAction extends MablAction_1.MablAction {
|
|
9
15
|
constructor(name, args) {
|
|
10
16
|
super(name, args);
|
|
@@ -18,8 +24,7 @@ class ExtractAction extends MablAction_1.MablAction {
|
|
|
18
24
|
if (this.name === ExtractDescriptor_1.ExtractType.EXTRACT_ATTRIBUTE && this.args.length > 1) {
|
|
19
25
|
const extractionOptions = this.args[1];
|
|
20
26
|
const metaExtractionType = extractionOptions.extraction_type;
|
|
21
|
-
if (metaExtractionType
|
|
22
|
-
metaExtractionType.toLowerCase() === exports.CSS_EXTRACTION_VALUE) {
|
|
27
|
+
if ((metaExtractionType === null || metaExtractionType === void 0 ? void 0 : metaExtractionType.toLowerCase()) === exports.CSS_EXTRACTION_VALUE) {
|
|
23
28
|
this.extractionType = ExtractDescriptor_1.ExtractType.EXTRACT_CSS_PROPERTIES.toString();
|
|
24
29
|
}
|
|
25
30
|
else {
|
|
@@ -60,7 +65,7 @@ ExtractAction.mablScriptStepNames = [
|
|
|
60
65
|
'extract_inner_text',
|
|
61
66
|
];
|
|
62
67
|
ExtractAction.mablscriptToYamlType = {
|
|
63
|
-
extract_attribute:
|
|
64
|
-
extract_css_property:
|
|
65
|
-
extract_email_attribute:
|
|
68
|
+
extract_attribute: ExtractTypeName.ElementAttribute,
|
|
69
|
+
extract_css_property: ExtractTypeName.CssProperty,
|
|
70
|
+
extract_email_attribute: ExtractTypeName.EmailAttribute,
|
|
66
71
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.normalizeEmail = exports.isEmailSelectorOrDescriptor = exports.normalize = exports.isElementSelector = exports.FindAction = exports.findTypesToFormattedType = void 0;
|
|
3
|
+
exports.normalizeEmail = exports.isEmailSelectorOrDescriptor = exports.normalize = exports.isElementSelector = exports.FindAction = exports.formattedFindTypeToMablscript = exports.findTypesToFormattedType = void 0;
|
|
4
4
|
const domUtil_1 = require("../../domUtil");
|
|
5
5
|
const mablscriptFind_1 = require("../../mablscriptFind");
|
|
6
6
|
const MablAction_1 = require("../MablAction");
|
|
@@ -14,8 +14,8 @@ exports.findTypesToFormattedType = {
|
|
|
14
14
|
find_tab: 'FindTab',
|
|
15
15
|
find_last: 'FindLast',
|
|
16
16
|
};
|
|
17
|
-
|
|
18
|
-
Object.entries(exports.findTypesToFormattedType).forEach(([findType, field]) => (formattedFindTypeToMablscript[field] = findType));
|
|
17
|
+
exports.formattedFindTypeToMablscript = {};
|
|
18
|
+
Object.entries(exports.findTypesToFormattedType).forEach(([findType, field]) => (exports.formattedFindTypeToMablscript[field] = findType));
|
|
19
19
|
class FindAction extends MablAction_1.MablAction {
|
|
20
20
|
constructor(name, args) {
|
|
21
21
|
super(name, args);
|
|
@@ -114,8 +114,8 @@ class FindAction extends MablAction_1.MablAction {
|
|
|
114
114
|
}
|
|
115
115
|
else {
|
|
116
116
|
findType = stepArgs.findType
|
|
117
|
-
? formattedFindTypeToMablscript[stepArgs.findType]
|
|
118
|
-
: formattedFindTypeToMablscript.FindOne;
|
|
117
|
+
? exports.formattedFindTypeToMablscript[stepArgs.findType]
|
|
118
|
+
: exports.formattedFindTypeToMablscript.FindOne;
|
|
119
119
|
}
|
|
120
120
|
if (!stepArgs.selectorAncestors) {
|
|
121
121
|
return new FindAction(findType, [
|
|
@@ -105,24 +105,27 @@ class JavaScriptAction extends MablAction_1.MablAction {
|
|
|
105
105
|
throw new Error(`Invalid javascript action descriptor: ${JSON.stringify(descriptor)}`);
|
|
106
106
|
}
|
|
107
107
|
toYaml() {
|
|
108
|
+
return JavaScriptAction.toYamlFromJavaScriptDescriptor(this.javaScript);
|
|
109
|
+
}
|
|
110
|
+
static toYamlFromJavaScriptDescriptor(javaScript) {
|
|
108
111
|
const actionYaml = {};
|
|
109
|
-
if ((0, JavaScriptDescriptor_1.isReusableSnippetDescriptor)(
|
|
110
|
-
actionYaml.snippetId =
|
|
111
|
-
actionYaml.snippetInvariantId =
|
|
112
|
-
actionYaml.parameterOverrides =
|
|
112
|
+
if ((0, JavaScriptDescriptor_1.isReusableSnippetDescriptor)(javaScript)) {
|
|
113
|
+
actionYaml.snippetId = javaScript.snippetId;
|
|
114
|
+
actionYaml.snippetInvariantId = javaScript.snippetInvariantId;
|
|
115
|
+
actionYaml.parameterOverrides = javaScript.parameterOverrides;
|
|
113
116
|
}
|
|
114
|
-
else if ((0, JavaScriptDescriptor_1.isInlineSnippetDescriptor)(
|
|
115
|
-
actionYaml.snippet =
|
|
116
|
-
actionYaml.parameterOverrides =
|
|
117
|
+
else if ((0, JavaScriptDescriptor_1.isInlineSnippetDescriptor)(javaScript)) {
|
|
118
|
+
actionYaml.snippet = { ...actionYaml, ...javaScript.inlineSnippet };
|
|
119
|
+
actionYaml.parameterOverrides = javaScript.parameterOverrides;
|
|
117
120
|
}
|
|
118
|
-
else if ((0, JavaScriptDescriptor_1.isLegacyReusableSnippetDescriptor)(
|
|
119
|
-
actionYaml.snippetId =
|
|
121
|
+
else if ((0, JavaScriptDescriptor_1.isLegacyReusableSnippetDescriptor)(javaScript)) {
|
|
122
|
+
actionYaml.snippetId = javaScript.snippetInvariantId;
|
|
120
123
|
}
|
|
121
|
-
else if ((0, JavaScriptDescriptor_1.isLegacyInlineJavaScriptDescriptor)(
|
|
122
|
-
actionYaml.code =
|
|
124
|
+
else if ((0, JavaScriptDescriptor_1.isLegacyInlineJavaScriptDescriptor)(javaScript)) {
|
|
125
|
+
actionYaml.code = javaScript.encodedJS;
|
|
123
126
|
}
|
|
124
127
|
else {
|
|
125
|
-
throw new Error(`Cannot export action to yaml: ${JSON.stringify(
|
|
128
|
+
throw new Error(`Cannot export action to yaml: ${JSON.stringify(javaScript)}`);
|
|
126
129
|
}
|
|
127
130
|
return actionYaml;
|
|
128
131
|
}
|
|
@@ -137,6 +140,10 @@ class JavaScriptAction extends MablAction_1.MablAction {
|
|
|
137
140
|
if (formatted.code) {
|
|
138
141
|
args.push(formatted.code);
|
|
139
142
|
}
|
|
143
|
+
else if (formatted.body) {
|
|
144
|
+
delete formatted.parameterOverrides;
|
|
145
|
+
args.push(formatted);
|
|
146
|
+
}
|
|
140
147
|
else if (formatted.snippet) {
|
|
141
148
|
args.push(formatted.snippet);
|
|
142
149
|
}
|
package/mablscript/importer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractOutputVariables = exports.extractInputVariables = exports.parseMablScriptIntoSteps = exports.mablscriptTheLoadedSteps = exports.loadYamlSteps = exports.yamlifyTheLoadedSteps = exports.loadMablScriptIntoSteps = exports.parseMablScript = void 0;
|
|
3
|
+
exports.getSnippetIdsFromJsonFlow = exports.parseMablScriptIntoV2Step = exports.extractOutputVariables = exports.extractInputVariables = exports.parseMablScriptIntoSteps = exports.mablscriptTheLoadedSteps = exports.interpretStepsFromObjects = exports.loadYamlSteps = exports.yamlifyTheLoadedSteps = exports.loadMablScriptIntoSteps = exports.parseMablScript = void 0;
|
|
4
4
|
const esprima_1 = require("esprima");
|
|
5
5
|
const estraverse_1 = require("estraverse");
|
|
6
6
|
const AssertStep_1 = require("./steps/AssertStep");
|
|
@@ -53,6 +53,16 @@ const AccessibilityCheck_1 = require("./steps/AccessibilityCheck");
|
|
|
53
53
|
const EvaluateFlowStep_1 = require("./steps/EvaluateFlowStep");
|
|
54
54
|
const RightClickStep_1 = require("./steps/RightClickStep");
|
|
55
55
|
const EnterAuthCodeStep_1 = require("./steps/EnterAuthCodeStep");
|
|
56
|
+
const TapStep_1 = require("./mobile/steps/TapStep");
|
|
57
|
+
const EnterTextStep_2 = require("./mobile/steps/EnterTextStep");
|
|
58
|
+
const SetOrientationStep_1 = require("./mobile/steps/SetOrientationStep");
|
|
59
|
+
const ScrollStep_1 = require("./mobile/steps/ScrollStep");
|
|
60
|
+
const CreateVariableMobileStep_1 = require("./mobile/steps/CreateVariableMobileStep");
|
|
61
|
+
const NavigateBackStep_1 = require("./mobile/steps/NavigateBackStep");
|
|
62
|
+
const NavigateHomeStep_1 = require("./mobile/steps/NavigateHomeStep");
|
|
63
|
+
const CreateVariableStepDescriptor_1 = require("./types/CreateVariableStepDescriptor");
|
|
64
|
+
const JavaScriptDescriptor_1 = require("./types/JavaScriptDescriptor");
|
|
65
|
+
const MablStepV2_1 = require("./MablStepV2");
|
|
56
66
|
const ActionTypes = [
|
|
57
67
|
AwaitDownloadAction_1.AwaitDownloadAction,
|
|
58
68
|
AwaitPDFDownloadAction_1.AwaitPDFDownloadAction,
|
|
@@ -103,6 +113,16 @@ const StepTypes = [
|
|
|
103
113
|
VisitUrlStep_1.VisitUrlStep,
|
|
104
114
|
WaitStep_1.WaitStep,
|
|
105
115
|
];
|
|
116
|
+
const MobileStepTypes = [
|
|
117
|
+
AssertStep_1.AssertStep,
|
|
118
|
+
CreateVariableMobileStep_1.CreateVariableMobileStep,
|
|
119
|
+
NavigateBackStep_1.NavigateBackStep,
|
|
120
|
+
NavigateHomeStep_1.NavigateHomeStep,
|
|
121
|
+
TapStep_1.TapStep,
|
|
122
|
+
EnterTextStep_2.EnterTextStep,
|
|
123
|
+
SetOrientationStep_1.SetOrientationStep,
|
|
124
|
+
ScrollStep_1.ScrollStep,
|
|
125
|
+
];
|
|
106
126
|
function parseMablScript(mablscript) {
|
|
107
127
|
const ast = (0, esprima_1.parseScript)(mablscript, { loc: true });
|
|
108
128
|
const stepStack = {};
|
|
@@ -172,31 +192,50 @@ function yamlifyTheLoadedSteps(translatedSteps, fullLocatorsOn = true) {
|
|
|
172
192
|
return (0, js_yaml_1.dump)(steps);
|
|
173
193
|
}
|
|
174
194
|
exports.yamlifyTheLoadedSteps = yamlifyTheLoadedSteps;
|
|
175
|
-
const
|
|
195
|
+
const yamlMablscriptToObjectsStepV1Map = {};
|
|
176
196
|
StepTypes.forEach((step) => {
|
|
177
|
-
step.yamlMablScriptNames.forEach((name) => (
|
|
197
|
+
step.yamlMablScriptNames.forEach((name) => (yamlMablscriptToObjectsStepV1Map[name] = step.fromYaml));
|
|
178
198
|
});
|
|
179
|
-
|
|
199
|
+
const yamlMablscriptToObjectsMobileStepMap = {};
|
|
200
|
+
MobileStepTypes.forEach((step) => {
|
|
201
|
+
step.yamlMablScriptNames.forEach((name) => (yamlMablscriptToObjectsMobileStepMap[name] = step.fromYaml));
|
|
202
|
+
});
|
|
203
|
+
function loadYamlSteps(yamlSteps, isMobile) {
|
|
180
204
|
const loadedStepData = (0, js_yaml_1.load)(yamlSteps);
|
|
181
|
-
return loadedStepData
|
|
205
|
+
return interpretStepsFromObjects(loadedStepData, isMobile);
|
|
206
|
+
}
|
|
207
|
+
exports.loadYamlSteps = loadYamlSteps;
|
|
208
|
+
function interpretStepsFromObjects(steps, isMobile) {
|
|
209
|
+
return steps.map((stepObject, index) => {
|
|
210
|
+
var _a;
|
|
182
211
|
const stepName = Object.keys(stepObject)[0];
|
|
183
212
|
const stepArgs = stepObject[stepName];
|
|
184
213
|
const isStepDisabled = stepObject[stepName].disabled;
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}
|
|
214
|
+
const step = stepFromObjectInfo(stepName, stepArgs, isMobile !== null && isMobile !== void 0 ? isMobile : false);
|
|
215
|
+
step.setStepSourceIndexInFlow(index);
|
|
216
|
+
const actionCount = step.actions.length;
|
|
217
|
+
(_a = step.actions) === null || _a === void 0 ? void 0 : _a.forEach((action, index) => {
|
|
218
|
+
if ((0, MablStepV2_1.isMablStepV2)(step) || index + 1 !== actionCount) {
|
|
219
|
+
action.setActionSourceIndexInStep(index);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
193
222
|
if (isStepDisabled) {
|
|
194
223
|
step.setDisabled(isStepDisabled);
|
|
195
224
|
}
|
|
196
225
|
return step;
|
|
197
226
|
});
|
|
198
227
|
}
|
|
199
|
-
exports.
|
|
228
|
+
exports.interpretStepsFromObjects = interpretStepsFromObjects;
|
|
229
|
+
function stepFromObjectInfo(stepName, stepArgs, isMobile) {
|
|
230
|
+
if (isMobile &&
|
|
231
|
+
Object.keys(yamlMablscriptToObjectsMobileStepMap).includes(stepName)) {
|
|
232
|
+
return yamlMablscriptToObjectsMobileStepMap[stepName](stepName, stepArgs);
|
|
233
|
+
}
|
|
234
|
+
if (Object.keys(yamlMablscriptToObjectsStepV1Map).includes(stepName)) {
|
|
235
|
+
return yamlMablscriptToObjectsStepV1Map[stepName](stepName, stepArgs);
|
|
236
|
+
}
|
|
237
|
+
return new MablStep_1.MablStep(stepName, [], []);
|
|
238
|
+
}
|
|
200
239
|
function getMablscriptMaybeWithComment(step) {
|
|
201
240
|
return `${step.isDisabled() ? '//' : ''}${step.toMablscript()}`;
|
|
202
241
|
}
|
|
@@ -389,3 +428,47 @@ function extractOutputVariables(steps) {
|
|
|
389
428
|
return (0, MablAction_1.distinctStrings)(steps.flatMap((step) => step.getOutputVariables()));
|
|
390
429
|
}
|
|
391
430
|
exports.extractOutputVariables = extractOutputVariables;
|
|
431
|
+
function parseMablScriptIntoV2Step(script) {
|
|
432
|
+
if (!script) {
|
|
433
|
+
throw new Error('Unable to parse step with invalid script');
|
|
434
|
+
}
|
|
435
|
+
const parsedMablscriptStep = parseMablScriptIntoSteps({
|
|
436
|
+
script,
|
|
437
|
+
});
|
|
438
|
+
const stepAsObject = parsedMablscriptStep[0].getFormattedStep(true);
|
|
439
|
+
const [parsedStep] = interpretStepsFromObjects([stepAsObject], true);
|
|
440
|
+
return parsedStep;
|
|
441
|
+
}
|
|
442
|
+
exports.parseMablScriptIntoV2Step = parseMablScriptIntoV2Step;
|
|
443
|
+
function getSnippetIdsFromJsonFlow(flow) {
|
|
444
|
+
const steps = interpretStepsFromObjects(flow.json_steps.steps, true);
|
|
445
|
+
const snippetIds = [];
|
|
446
|
+
steps.forEach((step) => {
|
|
447
|
+
let jsDescriptor;
|
|
448
|
+
if ((0, EvaluateJavaScriptStep_1.isEvaluateJavaScriptStep)(step)) {
|
|
449
|
+
jsDescriptor = step.evaluateJsAction.javaScript;
|
|
450
|
+
}
|
|
451
|
+
else if ((0, IfConditionStep_1.isIfConditionStep)(step) || (0, ElseIfConditionStep_1.isElseIfConditionStep)(step)) {
|
|
452
|
+
if ((0, JavaScriptAction_1.isJavaScriptActionDescriptor)(step.primaryAction)) {
|
|
453
|
+
jsDescriptor = step.primaryAction.javaScript;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else if ((0, CreateVariableStep_1.isCreateVariableStep)(step)) {
|
|
457
|
+
if (step.generationType === CreateVariableStepDescriptor_1.VariableGenerator.JAVASCRIPT &&
|
|
458
|
+
(0, JavaScriptAction_1.isJavaScriptActionDescriptor)(step.actions[0])) {
|
|
459
|
+
jsDescriptor = step.actions[0].javaScript;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
else if ((0, CreateVariableMobileStep_1.isCreateVariableMobileStep)(step)) {
|
|
463
|
+
if ((0, JavaScriptAction_1.isJavaScriptActionDescriptor)(step.descriptor.generator)) {
|
|
464
|
+
jsDescriptor = step.descriptor.generator.javaScript;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
if ((jsDescriptor && (0, JavaScriptDescriptor_1.isReusableSnippetDescriptor)(jsDescriptor)) ||
|
|
468
|
+
(0, JavaScriptDescriptor_1.isLegacyReusableSnippetDescriptor)(jsDescriptor)) {
|
|
469
|
+
snippetIds.push(jsDescriptor.snippetInvariantId);
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
return snippetIds;
|
|
473
|
+
}
|
|
474
|
+
exports.getSnippetIdsFromJsonFlow = getSnippetIdsFromJsonFlow;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isCreateVariableMobileStep = exports.CreateVariableMobileStep = void 0;
|
|
4
|
+
const MablStepV2_1 = require("../../MablStepV2");
|
|
5
|
+
const CreateVariableStepDescriptor_1 = require("../../types/CreateVariableStepDescriptor");
|
|
6
|
+
const CreateVariableMobileStepDescriptor_1 = require("../../types/mobile/CreateVariableMobileStepDescriptor");
|
|
7
|
+
const MobileFindAction_1 = require("./actions/MobileFindAction");
|
|
8
|
+
const stepUtil_1 = require("./stepUtil");
|
|
9
|
+
class CreateVariableMobileStep extends MablStepV2_1.MablStepV2 {
|
|
10
|
+
constructor(descriptor) {
|
|
11
|
+
super(CreateVariableMobileStep.stepName, descriptor);
|
|
12
|
+
if ((0, CreateVariableMobileStepDescriptor_1.isCreateVariableMobileFindStepDescriptor)(this.descriptor)) {
|
|
13
|
+
this.findAction = MobileFindAction_1.MobileFindAction.fromDescriptor(this.descriptor.find);
|
|
14
|
+
this.actions = [this.findAction];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
stepDescription() {
|
|
18
|
+
const varGenerator = this.descriptor.generator.type;
|
|
19
|
+
switch (varGenerator) {
|
|
20
|
+
case CreateVariableStepDescriptor_1.VariableGenerator.ATTRIBUTE:
|
|
21
|
+
return `Assign variable "${this.descriptor.name}" value from element attribute "${this.descriptor.generator.attribute}"`;
|
|
22
|
+
case CreateVariableStepDescriptor_1.VariableGenerator.PATTERN:
|
|
23
|
+
return `Assign variable "${this.descriptor.name}" value from string generated with format "${this.descriptor.generator.pattern}"`;
|
|
24
|
+
case CreateVariableStepDescriptor_1.VariableGenerator.EMAIL:
|
|
25
|
+
return `Generate a new mabl mailbox email address`;
|
|
26
|
+
case CreateVariableStepDescriptor_1.VariableGenerator.ELEMENT_COUNT:
|
|
27
|
+
return `Assign variable "${this.descriptor.name}" value from element count using ${(0, stepUtil_1.humanizeCustomFind)(this.descriptor)}`;
|
|
28
|
+
case CreateVariableStepDescriptor_1.VariableGenerator.JAVASCRIPT:
|
|
29
|
+
return `Assign variable "${this.descriptor.name}" using script`;
|
|
30
|
+
default:
|
|
31
|
+
return `Assign variable "${this.descriptor.name}" a value`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static fromYaml(_stepName, stepDescriptor) {
|
|
35
|
+
if (!stepDescriptor.find) {
|
|
36
|
+
stepDescriptor.find = stepDescriptor.generator.find;
|
|
37
|
+
delete stepDescriptor.generator.find;
|
|
38
|
+
delete stepDescriptor.selector;
|
|
39
|
+
delete stepDescriptor.selectorAncestors;
|
|
40
|
+
}
|
|
41
|
+
return new CreateVariableMobileStep(stepDescriptor);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.CreateVariableMobileStep = CreateVariableMobileStep;
|
|
45
|
+
CreateVariableMobileStep.stepName = 'CreateVariable';
|
|
46
|
+
CreateVariableMobileStep.yamlMablScriptNames = [CreateVariableMobileStep.stepName];
|
|
47
|
+
CreateVariableMobileStep.stepVersion = 2;
|
|
48
|
+
function isCreateVariableMobileStep(value) {
|
|
49
|
+
return ((value === null || value === void 0 ? void 0 : value.getStepName) &&
|
|
50
|
+
(value === null || value === void 0 ? void 0 : value.getStepName()) === CreateVariableMobileStep.stepName &&
|
|
51
|
+
!!value.descriptor);
|
|
52
|
+
}
|
|
53
|
+
exports.isCreateVariableMobileStep = isCreateVariableMobileStep;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnterTextStep = void 0;
|
|
4
|
+
const MablStepV2_1 = require("../../MablStepV2");
|
|
5
|
+
const FindAction_1 = require("../../actions/FindAction");
|
|
6
|
+
const stepUtil_1 = require("./stepUtil");
|
|
7
|
+
const MablAction_1 = require("../../MablAction");
|
|
8
|
+
const STEP_NAME = 'EnterText';
|
|
9
|
+
class EnterTextStep extends MablStepV2_1.MablStepV2 {
|
|
10
|
+
constructor(descriptor) {
|
|
11
|
+
super(EnterTextStep.stepName, descriptor);
|
|
12
|
+
}
|
|
13
|
+
getInputVariables() {
|
|
14
|
+
const { find, text } = this.descriptor;
|
|
15
|
+
const vars = MablAction_1.MablAction.findUniqueVariableReferencesInValue(find);
|
|
16
|
+
vars.push(...MablAction_1.MablAction.findUniqueVariableReferencesInValue(text));
|
|
17
|
+
return vars;
|
|
18
|
+
}
|
|
19
|
+
stepDescription() {
|
|
20
|
+
return (0, stepUtil_1.getDescriptionForMobileStep)(`Enter text "${this.descriptor.text}" in`, this.descriptor);
|
|
21
|
+
}
|
|
22
|
+
static fromYaml(_stepName, stepDescriptor) {
|
|
23
|
+
if (!stepDescriptor.find &&
|
|
24
|
+
!!stepDescriptor.selector &&
|
|
25
|
+
!!stepDescriptor.findType) {
|
|
26
|
+
stepDescriptor.find = {
|
|
27
|
+
findType: FindAction_1.formattedFindTypeToMablscript[stepDescriptor.findType],
|
|
28
|
+
findTarget: {
|
|
29
|
+
selector: stepDescriptor.selector,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
delete stepDescriptor.selector;
|
|
33
|
+
delete stepDescriptor.findType;
|
|
34
|
+
}
|
|
35
|
+
return new EnterTextStep(stepDescriptor);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.EnterTextStep = EnterTextStep;
|
|
39
|
+
EnterTextStep.stepName = STEP_NAME;
|
|
40
|
+
EnterTextStep.yamlMablScriptNames = [EnterTextStep.stepName];
|
|
41
|
+
EnterTextStep.stepVersion = 2;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NavigateBackStep = void 0;
|
|
4
|
+
const MablStepV2_1 = require("../../MablStepV2");
|
|
5
|
+
const STEP_NAME = 'NavigateBack';
|
|
6
|
+
class NavigateBackStep extends MablStepV2_1.MablStepV2 {
|
|
7
|
+
constructor(descriptor) {
|
|
8
|
+
super(NavigateBackStep.stepName, descriptor);
|
|
9
|
+
}
|
|
10
|
+
stepDescription() {
|
|
11
|
+
return `Navigate back`;
|
|
12
|
+
}
|
|
13
|
+
static fromYaml(_stepName, stepDescriptor) {
|
|
14
|
+
return new NavigateBackStep(stepDescriptor);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.NavigateBackStep = NavigateBackStep;
|
|
18
|
+
NavigateBackStep.stepName = STEP_NAME;
|
|
19
|
+
NavigateBackStep.yamlMablScriptNames = [NavigateBackStep.stepName];
|
|
20
|
+
NavigateBackStep.stepVersion = 2;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NavigateHomeStep = void 0;
|
|
4
|
+
const MablStepV2_1 = require("../../MablStepV2");
|
|
5
|
+
const STEP_NAME = 'NavigateHome';
|
|
6
|
+
class NavigateHomeStep extends MablStepV2_1.MablStepV2 {
|
|
7
|
+
constructor(descriptor) {
|
|
8
|
+
super(NavigateHomeStep.stepName, descriptor);
|
|
9
|
+
this.descriptor = descriptor;
|
|
10
|
+
}
|
|
11
|
+
stepDescription() {
|
|
12
|
+
return `Navigate home`;
|
|
13
|
+
}
|
|
14
|
+
static fromYaml(_stepName, stepDescriptor) {
|
|
15
|
+
return new NavigateHomeStep(stepDescriptor);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.NavigateHomeStep = NavigateHomeStep;
|
|
19
|
+
NavigateHomeStep.stepName = STEP_NAME;
|
|
20
|
+
NavigateHomeStep.yamlMablScriptNames = [NavigateHomeStep.stepName];
|
|
21
|
+
NavigateHomeStep.stepVersion = 2;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.humanizeScrollInformation = exports.formatPercentageVal = exports.ScrollStep = void 0;
|
|
4
|
+
const MablStepV2_1 = require("../../MablStepV2");
|
|
5
|
+
const STEP_NAME = 'Scroll';
|
|
6
|
+
class ScrollStep extends MablStepV2_1.MablStepV2 {
|
|
7
|
+
constructor(descriptor) {
|
|
8
|
+
super(ScrollStep.stepName, descriptor);
|
|
9
|
+
}
|
|
10
|
+
stepDescription() {
|
|
11
|
+
return humanizeScrollInformation(this.descriptor.coordinates);
|
|
12
|
+
}
|
|
13
|
+
static fromYaml(_stepName, stepDescriptor) {
|
|
14
|
+
return new ScrollStep(stepDescriptor);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ScrollStep = ScrollStep;
|
|
18
|
+
ScrollStep.stepName = STEP_NAME;
|
|
19
|
+
ScrollStep.yamlMablScriptNames = [ScrollStep.stepName];
|
|
20
|
+
ScrollStep.stepVersion = 2;
|
|
21
|
+
function formatPercentageVal(percent) {
|
|
22
|
+
return `${Math.round(percent * 10000) / 100}%`;
|
|
23
|
+
}
|
|
24
|
+
exports.formatPercentageVal = formatPercentageVal;
|
|
25
|
+
function humanizeScrollInformation(coordinates) {
|
|
26
|
+
const yScrollDistance = Math.abs(coordinates.to.yPercent - coordinates.from.yPercent);
|
|
27
|
+
const xScrollDistance = Math.abs(coordinates.to.xPercent - coordinates.from.xPercent);
|
|
28
|
+
if (yScrollDistance > xScrollDistance) {
|
|
29
|
+
const scrollDistanceFormatted = formatPercentageVal(yScrollDistance);
|
|
30
|
+
const scrollUp = coordinates.from.yPercent < coordinates.to.yPercent;
|
|
31
|
+
return `Scroll ${scrollUp ? 'up' : 'down'} ${scrollDistanceFormatted} of the screen`;
|
|
32
|
+
}
|
|
33
|
+
const scrollDistanceFormatted = formatPercentageVal(xScrollDistance);
|
|
34
|
+
const swipeRight = coordinates.from.xPercent < coordinates.to.xPercent;
|
|
35
|
+
return `Swipe ${swipeRight ? 'right' : 'left'} ${scrollDistanceFormatted} of the screen`;
|
|
36
|
+
}
|
|
37
|
+
exports.humanizeScrollInformation = humanizeScrollInformation;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SetOrientationStep = void 0;
|
|
4
|
+
const MablStepV2_1 = require("../../MablStepV2");
|
|
5
|
+
const STEP_NAME = 'SetOrientation';
|
|
6
|
+
class SetOrientationStep extends MablStepV2_1.MablStepV2 {
|
|
7
|
+
constructor(descriptor) {
|
|
8
|
+
super(SetOrientationStep.stepName, descriptor);
|
|
9
|
+
}
|
|
10
|
+
stepDescription() {
|
|
11
|
+
return `Set orientation of device to ${this.descriptor.orientation.toLowerCase()}`;
|
|
12
|
+
}
|
|
13
|
+
static fromYaml(_stepName, stepDescriptor) {
|
|
14
|
+
return new SetOrientationStep(stepDescriptor);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.SetOrientationStep = SetOrientationStep;
|
|
18
|
+
SetOrientationStep.stepName = STEP_NAME;
|
|
19
|
+
SetOrientationStep.yamlMablScriptNames = [SetOrientationStep.stepName];
|
|
20
|
+
SetOrientationStep.stepVersion = 2;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TapStep = void 0;
|
|
4
|
+
const MablStepV2_1 = require("../../MablStepV2");
|
|
5
|
+
const TapStepDescriptor_1 = require("../../types/mobile/TapStepDescriptor");
|
|
6
|
+
const MobileFindAction_1 = require("./actions/MobileFindAction");
|
|
7
|
+
const stepUtil_1 = require("./stepUtil");
|
|
8
|
+
const MablAction_1 = require("../../MablAction");
|
|
9
|
+
class TapStep extends MablStepV2_1.MablStepV2 {
|
|
10
|
+
constructor(descriptor) {
|
|
11
|
+
super(TapStep.stepName, descriptor);
|
|
12
|
+
this.findAction = MobileFindAction_1.MobileFindAction.fromDescriptor(this.descriptor.find);
|
|
13
|
+
this.actions = [this.findAction];
|
|
14
|
+
}
|
|
15
|
+
getInputVariables() {
|
|
16
|
+
const { find } = this.descriptor;
|
|
17
|
+
return MablAction_1.MablAction.findUniqueVariableReferencesInValue(find);
|
|
18
|
+
}
|
|
19
|
+
stepDescription() {
|
|
20
|
+
let prependedText;
|
|
21
|
+
switch (this.descriptor.type) {
|
|
22
|
+
case TapStepDescriptor_1.TapType.long:
|
|
23
|
+
prependedText = `Perform long press on `;
|
|
24
|
+
break;
|
|
25
|
+
default:
|
|
26
|
+
prependedText = `Tap on`;
|
|
27
|
+
}
|
|
28
|
+
return (0, stepUtil_1.getDescriptionForMobileStep)(prependedText, this.descriptor);
|
|
29
|
+
}
|
|
30
|
+
static fromYaml(_stepName, stepDescriptor) {
|
|
31
|
+
return new TapStep(stepDescriptor);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.TapStep = TapStep;
|
|
35
|
+
TapStep.stepName = 'Tap';
|
|
36
|
+
TapStep.yamlMablScriptNames = [TapStep.stepName];
|
|
37
|
+
TapStep.stepVersion = 2;
|