@digital-ai/devops-page-object-release 0.0.11 → 0.0.13

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/dist/main.js CHANGED
@@ -947,1623 +947,2175 @@ var $edb0b0405039996a$exports = {};
947
947
  $edb0b0405039996a$exports = $edb0b0405039996a$var$isNil;
948
948
 
949
949
 
950
- var $3e8b520187e41aa6$exports = {};
951
- /**
952
- * Checks if `value` is `undefined`.
953
- *
954
- * @static
955
- * @since 0.1.0
956
- * @memberOf _
957
- * @category Lang
958
- * @param {*} value The value to check.
959
- * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
960
- * @example
961
- *
962
- * _.isUndefined(void 0);
963
- * // => true
964
- *
965
- * _.isUndefined(null);
966
- * // => false
967
- */ function $3e8b520187e41aa6$var$isUndefined(value) {
968
- return value === undefined;
969
- }
970
- $3e8b520187e41aa6$exports = $3e8b520187e41aa6$var$isUndefined;
971
-
972
-
973
- var $952a2b8d8056b381$exports = {};
974
-
975
- $952a2b8d8056b381$exports = (parcelRequire("ae8Uz"));
976
950
 
977
951
 
978
952
 
979
- var $ae8Uz = parcelRequire("ae8Uz");
980
- var $732eba8dca8b5420$exports = {};
981
- var $b1535b4ce0d1bd5f$exports = {};
982
953
 
983
- var $9x2D6 = parcelRequire("9x2D6");
984
- var $1b1aa0f3fc7256c9$exports = {};
985
- var $f984f14b3d4f0683$exports = {};
986
- /**
987
- * A faster alternative to `Function#apply`, this function invokes `func`
988
- * with the `this` binding of `thisArg` and the arguments of `args`.
989
- *
990
- * @private
991
- * @param {Function} func The function to invoke.
992
- * @param {*} thisArg The `this` binding of `func`.
993
- * @param {Array} args The arguments to invoke `func` with.
994
- * @returns {*} Returns the result of `func`.
995
- */ function $f984f14b3d4f0683$var$apply(func, thisArg, args) {
996
- switch(args.length){
997
- case 0:
998
- return func.call(thisArg);
999
- case 1:
1000
- return func.call(thisArg, args[0]);
1001
- case 2:
1002
- return func.call(thisArg, args[0], args[1]);
1003
- case 3:
1004
- return func.call(thisArg, args[0], args[1], args[2]);
954
+ class $f8721861c660dd88$export$2b65d1d97338f32b {
955
+ constructor(page){
956
+ this.page = page;
1005
957
  }
1006
- return func.apply(thisArg, args);
1007
958
  }
1008
- $f984f14b3d4f0683$exports = $f984f14b3d4f0683$var$apply;
1009
959
 
1010
960
 
1011
- /* Built-in method references for those with the same name as other `lodash` methods. */ var $1b1aa0f3fc7256c9$var$nativeMax = Math.max;
1012
- /**
1013
- * A specialized version of `baseRest` which transforms the rest array.
1014
- *
1015
- * @private
1016
- * @param {Function} func The function to apply a rest parameter to.
1017
- * @param {number} [start=func.length-1] The start position of the rest parameter.
1018
- * @param {Function} transform The rest array transform.
1019
- * @returns {Function} Returns the new function.
1020
- */ function $1b1aa0f3fc7256c9$var$overRest(func, start, transform) {
1021
- start = $1b1aa0f3fc7256c9$var$nativeMax(start === undefined ? func.length - 1 : start, 0);
1022
- return function() {
1023
- var args = arguments, index = -1, length = $1b1aa0f3fc7256c9$var$nativeMax(args.length - start, 0), array = Array(length);
1024
- while(++index < length)array[index] = args[start + index];
1025
- index = -1;
1026
- var otherArgs = Array(start + 1);
1027
- while(++index < start)otherArgs[index] = args[index];
1028
- otherArgs[start] = transform(array);
1029
- return $f984f14b3d4f0683$exports(func, this, otherArgs);
1030
- };
961
+ class $87643f2d97b0644e$export$a678525e79c4ccc4 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
962
+ async expectNumberOfReleases(releaseTitle, amount) {
963
+ await this.filterReleaseByTitle(releaseTitle);
964
+ if (amount === 1) await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle)).toBeVisible({
965
+ timeout: 5000
966
+ });
967
+ else await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle).count()).toBe(amount);
968
+ }
969
+ async openReleaseByName(releaseTitle) {
970
+ await this.page.locator(".release-line .row-wrapper .release-title-wrapper a", {
971
+ hasText: releaseTitle
972
+ }).click();
973
+ return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
974
+ }
975
+ async filterReleaseByTitle(releaseTitle) {
976
+ await this.page.locator(".toggle-search-filter").click();
977
+ await this.page.locator(".searchFilter").fill(releaseTitle);
978
+ await this.page.locator(".searchFilter").press("Enter");
979
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle)).toBeVisible();
980
+ }
1031
981
  }
1032
- $1b1aa0f3fc7256c9$exports = $1b1aa0f3fc7256c9$var$overRest;
1033
982
 
1034
983
 
1035
- var $0e9d1d7fde57dac1$exports = {};
1036
- var $ef9aec5e693cb6ed$exports = {};
1037
- var $3dc9802adab1dd60$exports = {};
1038
- /**
1039
- * Creates a function that returns `value`.
1040
- *
1041
- * @static
1042
- * @memberOf _
1043
- * @since 2.4.0
1044
- * @category Util
1045
- * @param {*} value The value to return from the new function.
1046
- * @returns {Function} Returns the new constant function.
1047
- * @example
1048
- *
1049
- * var objects = _.times(2, _.constant({ 'a': 1 }));
1050
- *
1051
- * console.log(objects);
1052
- * // => [{ 'a': 1 }, { 'a': 1 }]
1053
- *
1054
- * console.log(objects[0] === objects[1]);
1055
- * // => true
1056
- */ function $3dc9802adab1dd60$var$constant(value) {
1057
- return function() {
1058
- return value;
1059
- };
1060
- }
1061
- $3dc9802adab1dd60$exports = $3dc9802adab1dd60$var$constant;
1062
984
 
985
+ class $133601cfe0486710$export$fb932093f944abe4 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
986
+ async openRelatedReleasesOf(title) {
987
+ await this.openContextMenu(title);
988
+ await this.page.locator(".popover-content xlr-context-menu a", {
989
+ hasText: "View releases"
990
+ }).click();
991
+ return new (0, $87643f2d97b0644e$export$a678525e79c4ccc4)(this.page);
992
+ }
993
+ async openContextMenu(title) {
994
+ await (0, $kKeXs$playwrighttest.expect)(async ()=>{
995
+ await this.page.locator(".trigger-row-content", {
996
+ hasText: title
997
+ }).locator(".context-menu-button").click();
998
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".popover-content")).toBeVisible();
999
+ }).toPass();
1000
+ }
1001
+ }
1063
1002
 
1064
- var $97bac00047c338ed$exports = {};
1065
- var $b7745e89d7f5915f$exports = {};
1066
- var $927414f7f9d8afbb$exports = {};
1067
1003
 
1068
- var $7T6pQ = parcelRequire("7T6pQ");
1069
- var $1fb1799a04ee25ea$exports = {};
1070
- var $5ee1230bf1668e2a$exports = {};
1071
1004
 
1072
- var $5iYlB = parcelRequire("5iYlB");
1073
- /** Used to detect overreaching core-js shims. */ var $5ee1230bf1668e2a$var$coreJsData = $5iYlB["__core-js_shared__"];
1074
- $5ee1230bf1668e2a$exports = $5ee1230bf1668e2a$var$coreJsData;
1075
1005
 
1076
1006
 
1077
- /** Used to detect methods masquerading as native. */ var $1fb1799a04ee25ea$var$maskSrcKey = function() {
1078
- var uid = /[^.]+$/.exec($5ee1230bf1668e2a$exports && $5ee1230bf1668e2a$exports.keys && $5ee1230bf1668e2a$exports.keys.IE_PROTO || "");
1079
- return uid ? "Symbol(src)_1." + uid : "";
1080
- }();
1081
- /**
1082
- * Checks if `func` has its source masked.
1083
- *
1084
- * @private
1085
- * @param {Function} func The function to check.
1086
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
1087
- */ function $1fb1799a04ee25ea$var$isMasked(func) {
1088
- return !!$1fb1799a04ee25ea$var$maskSrcKey && $1fb1799a04ee25ea$var$maskSrcKey in func;
1007
+ async function $ef0df8ad8a777ce6$export$a0f926f04148e5d2(locators) {
1008
+ const res = await Promise.all([
1009
+ ...locators.map(async (locator, index)=>{
1010
+ let timedOut = false;
1011
+ await locator.waitFor({
1012
+ state: "visible",
1013
+ timeout: 2000
1014
+ }).catch(()=>timedOut = true);
1015
+ return [
1016
+ timedOut ? -1 : index,
1017
+ locator
1018
+ ];
1019
+ })
1020
+ ]);
1021
+ const resolvedLocator = res.find((r)=>r[0] !== -1);
1022
+ if (!resolvedLocator) {
1023
+ console.warn("waitForOneOf", res);
1024
+ throw new Error("no locator visible before timeout");
1025
+ }
1026
+ return resolvedLocator;
1089
1027
  }
1090
- $1fb1799a04ee25ea$exports = $1fb1799a04ee25ea$var$isMasked;
1091
-
1092
1028
 
1093
1029
 
1094
- var $bfk90 = parcelRequire("bfk90");
1095
- var $c6de24274df36d4e$exports = {};
1096
- /** Used for built-in method references. */ var $c6de24274df36d4e$var$funcProto = Function.prototype;
1097
- /** Used to resolve the decompiled source of functions. */ var $c6de24274df36d4e$var$funcToString = $c6de24274df36d4e$var$funcProto.toString;
1098
- /**
1099
- * Converts `func` to its source code.
1100
- *
1101
- * @private
1102
- * @param {Function} func The function to convert.
1103
- * @returns {string} Returns the source code.
1104
- */ function $c6de24274df36d4e$var$toSource(func) {
1105
- if (func != null) {
1106
- try {
1107
- return $c6de24274df36d4e$var$funcToString.call(func);
1108
- } catch (e) {}
1109
- try {
1110
- return func + "";
1111
- } catch (e) {}
1030
+ class $fd4eef3ad2b2e612$export$a87f0ae8695e74be extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1031
+ async openVariable(variableKey) {
1032
+ await this.page.locator(`.variables-list .variable`).getByText(variableKey).click();
1033
+ return new $fd4eef3ad2b2e612$var$ReleaseVariableModal(this.page);
1034
+ }
1035
+ }
1036
+ class $fd4eef3ad2b2e612$var$ReleaseVariableModal extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1037
+ async expectValue(locators, expectFn) {
1038
+ const [index, locator] = await (0, $ef0df8ad8a777ce6$export$a0f926f04148e5d2)(locators);
1039
+ await expectFn[index](locator);
1040
+ }
1041
+ async expectValueToBe(value) {
1042
+ await this.expectValue([
1043
+ this.page.locator("#modal .variable-value input"),
1044
+ this.page.locator("#modal .variable-value .field-readonly"),
1045
+ this.page.locator("#modal .variable-value .xl-map-string-string")
1046
+ ], [
1047
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveValue(value),
1048
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value),
1049
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value)
1050
+ ]);
1051
+ }
1052
+ async expectValueToContain(value) {
1053
+ await this.expectValue([
1054
+ this.page.locator("#modal .variable-value input"),
1055
+ this.page.locator("#modal .variable-value .field-readonly"),
1056
+ this.page.locator("#modal .variable-value .xl-map-string-string")
1057
+ ], [
1058
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l.inputValue()).toContain(value),
1059
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value),
1060
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value)
1061
+ ]);
1062
+ }
1063
+ async close() {
1064
+ await this.page.locator("#modal .modal-header button.close").click();
1112
1065
  }
1113
- return "";
1114
1066
  }
1115
- $c6de24274df36d4e$exports = $c6de24274df36d4e$var$toSource;
1116
1067
 
1117
1068
 
1118
- /**
1119
- * Used to match `RegExp`
1120
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
1121
- */ var $927414f7f9d8afbb$var$reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
1122
- /** Used to detect host constructors (Safari). */ var $927414f7f9d8afbb$var$reIsHostCtor = /^\[object .+?Constructor\]$/;
1123
- /** Used for built-in method references. */ var $927414f7f9d8afbb$var$funcProto = Function.prototype, $927414f7f9d8afbb$var$objectProto = Object.prototype;
1124
- /** Used to resolve the decompiled source of functions. */ var $927414f7f9d8afbb$var$funcToString = $927414f7f9d8afbb$var$funcProto.toString;
1125
- /** Used to check objects for own properties. */ var $927414f7f9d8afbb$var$hasOwnProperty = $927414f7f9d8afbb$var$objectProto.hasOwnProperty;
1126
- /** Used to detect if a method is native. */ var $927414f7f9d8afbb$var$reIsNative = RegExp("^" + $927414f7f9d8afbb$var$funcToString.call($927414f7f9d8afbb$var$hasOwnProperty).replace($927414f7f9d8afbb$var$reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
1127
- /**
1128
- * The base implementation of `_.isNative` without bad shim checks.
1129
- *
1130
- * @private
1131
- * @param {*} value The value to check.
1132
- * @returns {boolean} Returns `true` if `value` is a native function,
1133
- * else `false`.
1134
- */ function $927414f7f9d8afbb$var$baseIsNative(value) {
1135
- if (!$bfk90(value) || $1fb1799a04ee25ea$exports(value)) return false;
1136
- var pattern = $7T6pQ(value) ? $927414f7f9d8afbb$var$reIsNative : $927414f7f9d8afbb$var$reIsHostCtor;
1137
- return pattern.test($c6de24274df36d4e$exports(value));
1138
- }
1139
- $927414f7f9d8afbb$exports = $927414f7f9d8afbb$var$baseIsNative;
1140
1069
 
1141
1070
 
1142
- var $18378a7c2aff899b$exports = {};
1143
- /**
1144
- * Gets the value at `key` of `object`.
1145
- *
1146
- * @private
1147
- * @param {Object} [object] The object to query.
1148
- * @param {string} key The key of the property to get.
1149
- * @returns {*} Returns the property value.
1150
- */ function $18378a7c2aff899b$var$getValue(object, key) {
1151
- return object == null ? undefined : object[key];
1071
+ class $8be2ce0eccbe6d27$export$64c93bc7fb9ca44e extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1072
+ constructor(page){
1073
+ super(page);
1074
+ this.railLocator = this.page.locator("task-drawer .dot-drawer .task-config");
1075
+ }
1076
+ async openInputProperties() {
1077
+ await this.railLocator.locator(".task-config-header").getByText("Input properties").click();
1078
+ }
1079
+ async openOutputProperties() {
1080
+ await this.railLocator.locator(".task-config-header").getByText("Output properties").click();
1081
+ }
1082
+ async getValueFromCi(propertyName) {
1083
+ return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1084
+ }
1085
+ async getAllOptionsFromCi(propertyName) {
1086
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1087
+ return this.railLocator.locator(`.dot-popper ul li`).allInnerTexts();
1088
+ }
1089
+ async setValueFromCi(propertyName, value) {
1090
+ await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1091
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1092
+ await this.railLocator.locator(`.dot-popper ul li`, {
1093
+ hasText: value
1094
+ }).click();
1095
+ }
1096
+ async getValueFromString(propertyName) {
1097
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1098
+ return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1099
+ }
1100
+ async setValueFromString(propertyName, value) {
1101
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1102
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1103
+ }
1104
+ async setValueFromLargeString(propertyName, value) {
1105
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1106
+ await this.railLocator.locator(`textarea[id="${propertyName}"]`).fill(value);
1107
+ }
1108
+ async setValueFromPassword(propertyName, value) {
1109
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1110
+ }
1111
+ async setAndCreateVariable(propertyName, variableName) {
1112
+ await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1113
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1114
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(variableName);
1115
+ await this.railLocator.locator(`.dot-popper button`, {
1116
+ hasText: variableName
1117
+ }).click();
1118
+ }
1119
+ async setVariable(propertyName, variableName) {
1120
+ return this.setValueFromCi(propertyName, variableName);
1121
+ }
1122
+ async expectValueFromString(propertyName, propertyValue) {
1123
+ return await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`)).toHaveText(propertyValue);
1124
+ }
1152
1125
  }
1153
- $18378a7c2aff899b$exports = $18378a7c2aff899b$var$getValue;
1154
1126
 
1155
1127
 
1156
- /**
1157
- * Gets the native function at `key` of `object`.
1158
- *
1159
- * @private
1160
- * @param {Object} object The object to query.
1161
- * @param {string} key The key of the method to get.
1162
- * @returns {*} Returns the function if it's native, else `undefined`.
1163
- */ function $b7745e89d7f5915f$var$getNative(object, key) {
1164
- var value = $18378a7c2aff899b$exports(object, key);
1165
- return $927414f7f9d8afbb$exports(value) ? value : undefined;
1166
- }
1167
- $b7745e89d7f5915f$exports = $b7745e89d7f5915f$var$getNative;
1168
1128
 
1169
1129
 
1170
- var $97bac00047c338ed$var$defineProperty = function() {
1171
- try {
1172
- var func = $b7745e89d7f5915f$exports(Object, "defineProperty");
1173
- func({}, "", {});
1174
- return func;
1175
- } catch (e) {}
1176
- }();
1177
- $97bac00047c338ed$exports = $97bac00047c338ed$var$defineProperty;
1178
1130
 
1131
+ class $9c0b0c2caed50730$export$d4865631ba74f3e2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1132
+ constructor(page){
1133
+ super(page);
1134
+ this.railLocator = this.page.locator("task-drawer .dot-drawer .task-conditions");
1135
+ this.preconditionToggle = page.getByLabel("Enable precondition");
1136
+ this.textEditor = page.getByRole("textbox");
1137
+ this.saveButton = page.getByTestId("save-btn");
1138
+ }
1139
+ async enablePrecondition() {
1140
+ (0, $kKeXs$playwrighttest.expect)(await this.preconditionToggle.isChecked()).toBe(false);
1141
+ await this.preconditionToggle.check();
1142
+ }
1143
+ async disablePrecondition() {
1144
+ (0, $kKeXs$playwrighttest.expect)(await this.preconditionToggle.isChecked()).toBe(true);
1145
+ await this.preconditionToggle.uncheck();
1146
+ }
1147
+ async setPrecondition(script) {
1148
+ await this.enablePrecondition();
1149
+ await this.textEditor.fill(script);
1150
+ await this.saveButton.dblclick();
1151
+ await this.page.waitForTimeout(1000);
1152
+ }
1153
+ }
1179
1154
 
1180
1155
 
1181
- var $9x2D6 = parcelRequire("9x2D6");
1182
- /**
1183
- * The base implementation of `setToString` without support for hot loop shorting.
1184
- *
1185
- * @private
1186
- * @param {Function} func The function to modify.
1187
- * @param {Function} string The `toString` result.
1188
- * @returns {Function} Returns `func`.
1189
- */ var $ef9aec5e693cb6ed$var$baseSetToString = !$97bac00047c338ed$exports ? $9x2D6 : function(func, string) {
1190
- return $97bac00047c338ed$exports(func, "toString", {
1191
- "configurable": true,
1192
- "enumerable": false,
1193
- "value": $3dc9802adab1dd60$exports(string),
1194
- "writable": true
1195
- });
1196
- };
1197
- $ef9aec5e693cb6ed$exports = $ef9aec5e693cb6ed$var$baseSetToString;
1198
1156
 
1199
1157
 
1200
- var $f6a97849336ceea8$exports = {};
1201
- /** Used to detect hot functions by number of calls within a span of milliseconds. */ var $f6a97849336ceea8$var$HOT_COUNT = 800, $f6a97849336ceea8$var$HOT_SPAN = 16;
1202
- /* Built-in method references for those with the same name as other `lodash` methods. */ var $f6a97849336ceea8$var$nativeNow = Date.now;
1203
- /**
1204
- * Creates a function that'll short out and invoke `identity` instead
1205
- * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
1206
- * milliseconds.
1207
- *
1208
- * @private
1209
- * @param {Function} func The function to restrict.
1210
- * @returns {Function} Returns the new shortable function.
1211
- */ function $f6a97849336ceea8$var$shortOut(func) {
1212
- var count = 0, lastCalled = 0;
1213
- return function() {
1214
- var stamp = $f6a97849336ceea8$var$nativeNow(), remaining = $f6a97849336ceea8$var$HOT_SPAN - (stamp - lastCalled);
1215
- lastCalled = stamp;
1216
- if (remaining > 0) {
1217
- if (++count >= $f6a97849336ceea8$var$HOT_COUNT) return arguments[0];
1218
- } else count = 0;
1219
- return func.apply(undefined, arguments);
1220
- };
1158
+ class $eb81c1b930e440ff$export$519356f6c50361f7 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1159
+ constructor(page){
1160
+ super(page);
1161
+ this.railLocator = this.page.locator("task-drawer .dot-drawer .task-drawer-content");
1162
+ this.dependency = new $eb81c1b930e440ff$export$fbbf45eff21470e3(page);
1163
+ }
1164
+ async openInputProperties() {
1165
+ await this.railLocator.locator(".task-config-header").getByText("Input properties").click();
1166
+ }
1167
+ async openOutputProperties() {
1168
+ await this.railLocator.locator(".task-config-header").getByText("Output properties").click();
1169
+ }
1170
+ async getValueFromCi(propertyName) {
1171
+ return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1172
+ }
1173
+ async getAllOptionsFromCi(propertyName) {
1174
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1175
+ return this.railLocator.locator(`.dot-popper ul li`).allInnerTexts();
1176
+ }
1177
+ async setValueFromCi(propertyName, value) {
1178
+ await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1179
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1180
+ await this.railLocator.locator(`.dot-popper ul li`, {
1181
+ hasText: value
1182
+ }).click();
1183
+ }
1184
+ async getValueFromString(propertyName) {
1185
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1186
+ return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1187
+ }
1188
+ async setValueFromString(propertyName, value) {
1189
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1190
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1191
+ }
1192
+ async setValueFromLargeString(propertyName, value) {
1193
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1194
+ await this.railLocator.locator(`textarea[id="${propertyName}"]`).fill(value);
1195
+ }
1196
+ async setValueFromPassword(propertyName, value) {
1197
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1198
+ }
1199
+ async setAndCreateVariable(propertyName, variableName) {
1200
+ await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1201
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1202
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(variableName);
1203
+ await this.railLocator.locator(`.dot-popper button`, {
1204
+ hasText: variableName
1205
+ }).click();
1206
+ }
1207
+ async setVariable(propertyName, variableName) {
1208
+ return this.setValueFromCi(propertyName, variableName);
1209
+ }
1210
+ async expectValueFromString(propertyName, propertyValue) {
1211
+ return await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`)).toHaveText(propertyValue);
1212
+ }
1213
+ async setValueFromMap(propertyName, key, value) {
1214
+ await this.railLocator.locator(`.input-with-map[data-test-id="${propertyName}"] button.add-new-button`).click();
1215
+ await this.railLocator.locator(`.input-with-map[data-test-id="${propertyName}"] input[id="new-row-key-input"]`).fill(key);
1216
+ await this.railLocator.locator(`.input-with-map[data-test-id="${propertyName}"] input[id="new-row-value-input"]`).fill(value);
1217
+ await this.railLocator.locator(`.input-with-map[data-test-id="${propertyName}"] button.map-row-save-button`).click();
1218
+ }
1219
+ async setScript(script) {
1220
+ await this.page.locator(".code-editor textarea.ace_text-input").clear();
1221
+ await this.page.locator(".code-editor textarea.ace_text-input").fill(script);
1222
+ await this.page.locator('.code-editor .header button:has-text("Save")').click();
1223
+ }
1224
+ async expectScriptToContain(script) {
1225
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".code-editor .ace_content")).toContainText(script);
1226
+ }
1227
+ async enterScriptForAutoComplete(script) {
1228
+ await this.page.locator(".code-editor textarea.ace_text-input").clear();
1229
+ await this.page.locator(".code-editor textarea.ace_text-input").fill(script);
1230
+ await this.page.locator(".code-editor textarea.ace_text-input").press(".");
1231
+ }
1232
+ async openScriptEditorInSeparateWindow() {
1233
+ await this.page.getByTestId("fullscreen-enter-btn").click();
1234
+ (0, $kKeXs$playwrighttest.expect)(this.page.locator("#dialogTitle")).toBeVisible();
1235
+ }
1236
+ async closeFullscreenScriptWindowWithESC() {
1237
+ await this.page.locator("#dialogTitle").press("Escape");
1238
+ (0, $kKeXs$playwrighttest.expect)(this.page.locator("#dialogTitle")).not.toBeVisible();
1239
+ }
1240
+ async closeFullscreenScriptWindow() {
1241
+ await this.page.getByTestId("fullscreen-exit-btn").click();
1242
+ (0, $kKeXs$playwrighttest.expect)(this.page.locator("#dialogTitle")).not.toBeVisible();
1243
+ }
1244
+ async abort(comment) {
1245
+ await this.page.getByTestId("single-action-button").click();
1246
+ await this.page.getByTestId("task-action-comment").click();
1247
+ await this.page.getByTestId("task-action-comment").fill(comment);
1248
+ await this.page.getByTestId("task-action-confirm").click();
1249
+ }
1250
+ async expectDependenciesDisplayed(dependencies) {
1251
+ await this.railLocator.locator(".gate-task-dependencies").waitFor();
1252
+ for(let i = 0; i < dependencies.length; i++)await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dependency").filter({
1253
+ hasText: dependencies[i]
1254
+ })).toBeVisible();
1255
+ }
1256
+ async expectCanDeleteDependency(title, canDelete = true) {
1257
+ if (canDelete) {
1258
+ const locat = this.page.locator(".dependency").filter({
1259
+ has: this.page.getByRole("link", {
1260
+ name: title,
1261
+ exact: true
1262
+ })
1263
+ }).locator(".icon-options");
1264
+ await locat.isVisible();
1265
+ await locat.click();
1266
+ await (0, $kKeXs$playwrighttest.expect)(this.railLocator.getByRole("menuitem", {
1267
+ name: "Remove"
1268
+ })).toBeVisible();
1269
+ } else await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".dependency").filter({
1270
+ has: this.page.getByRole("link", {
1271
+ name: title,
1272
+ exact: true
1273
+ })
1274
+ }).locator(".icon-options")).not.toBeVisible();
1275
+ }
1276
+ async getDependencyCount() {
1277
+ await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(".gate-task-dependencies")).toBeVisible();
1278
+ const count = await this.railLocator.locator(".gate-task-dependencies .dependency").count();
1279
+ return count;
1280
+ }
1281
+ async addDependency() {
1282
+ await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(".add-dependency-btn")).toBeVisible();
1283
+ await this.railLocator.locator(".add-dependency-btn").click();
1284
+ }
1285
+ async expectDependencyText(dependencies) {
1286
+ await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(".gate-task-dependencies")).toBeVisible();
1287
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("link", {
1288
+ name: dependencies,
1289
+ exact: true
1290
+ }).first()).toBeVisible();
1291
+ }
1292
+ async clickEditDependency(dependencies) {
1293
+ const locat = this.page.locator(".dependency").filter({
1294
+ has: this.page.getByRole("link", {
1295
+ name: dependencies,
1296
+ exact: true
1297
+ })
1298
+ }).locator(".icon-options");
1299
+ await locat.isVisible();
1300
+ await locat.click();
1301
+ const frame = this.page.getByTestId("undefined-menu");
1302
+ if (await frame.isVisible()) await this.railLocator.getByRole("menuitem", {
1303
+ name: "Edit"
1304
+ }).click();
1305
+ else {
1306
+ await locat.nth(1).click();
1307
+ await this.railLocator.getByRole("menuitem", {
1308
+ name: "Edit"
1309
+ }).click();
1310
+ }
1311
+ }
1312
+ }
1313
+ class $eb81c1b930e440ff$export$fbbf45eff21470e3 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1314
+ constructor(page){
1315
+ super(page);
1316
+ this.dependencyLocator = page.locator(".gate-task-dependencies .dependency-selector-component");
1317
+ this.release = this.dependencyLocator.locator("#release-dependency");
1318
+ this.phase = this.dependencyLocator.locator("#phase-dependency");
1319
+ this.task = this.dependencyLocator.locator("#task-dependency");
1320
+ }
1321
+ async getRelease() {
1322
+ await this.release.isVisible();
1323
+ const releaseValue = await this.release.getAttribute("value");
1324
+ return releaseValue;
1325
+ }
1326
+ async getPhase() {
1327
+ await this.phase.isVisible();
1328
+ const phaseValue = await this.phase.getAttribute("value");
1329
+ return phaseValue;
1330
+ }
1331
+ async getTask() {
1332
+ await this.task.isVisible();
1333
+ const taskValue = await this.task.getAttribute("value");
1334
+ return taskValue;
1335
+ }
1336
+ async setRelease(releaseTitle) {
1337
+ await this.release.click();
1338
+ await this.release.fill(releaseTitle);
1339
+ await this.page.getByRole("option", {
1340
+ name: releaseTitle
1341
+ }).click();
1342
+ }
1343
+ async save() {
1344
+ await (0, $kKeXs$playwrighttest.expect)(this.dependencyLocator.getByRole("button", {
1345
+ name: "OK"
1346
+ })).toBeEnabled();
1347
+ await this.dependencyLocator.getByRole("button", {
1348
+ name: "OK"
1349
+ }).click();
1350
+ }
1351
+ async setPhase(phaseTitle) {
1352
+ await this.phase.click();
1353
+ await this.phase.fill("");
1354
+ await this.page.getByRole("option", {
1355
+ name: phaseTitle
1356
+ }).click();
1357
+ }
1358
+ async setTask(taskTitle) {
1359
+ await this.task.click();
1360
+ await this.task.fill("");
1361
+ await this.page.getByRole("option", {
1362
+ name: taskTitle
1363
+ }).click();
1364
+ }
1365
+ async clearPhase() {
1366
+ await this.phase.clear();
1367
+ }
1368
+ async expectVariableModeEnabled(mode) {
1369
+ await (0, $kKeXs$playwrighttest.expect)(this.dependencyLocator.getByLabel("input-variable")).toBeVisible();
1370
+ const variablemode = await this.dependencyLocator.getByLabel("input-variable").getAttribute("aria-pressed");
1371
+ (0, $kKeXs$playwrighttest.expect)(variablemode).toBe("" + mode + "");
1372
+ }
1373
+ async clickVariable() {
1374
+ await this.dependencyLocator.getByLabel("input-variable").click();
1375
+ }
1376
+ //TODO: getAttribute('value') is not working as expected. Need to be fixed with better alternative.
1377
+ async expectMinimumOptions(options) {
1378
+ await this.dependencyLocator.getByPlaceholder("Please select a variable of").click();
1379
+ for(let i = 0; i < options.length; i++){
1380
+ const option = await this.dependencyLocator.locator("#mui-30-option-" + i).getAttribute("value");
1381
+ (0, $kKeXs$playwrighttest.expect)(options[i]).toContain(option);
1382
+ }
1383
+ }
1384
+ async enterNewVariable(variablename) {
1385
+ await this.page.getByLabel("Please select a variable of").click();
1386
+ await this.page.getByLabel("Please select a variable of").fill(variablename);
1387
+ await this.page.getByTestId("dot-action-item-btn").click();
1388
+ }
1389
+ async selectVariable(variablename) {
1390
+ await this.page.getByLabel("Please select a variable of").click();
1391
+ await this.page.getByRole("option", {
1392
+ name: variablename
1393
+ }).click();
1394
+ }
1221
1395
  }
1222
- $f6a97849336ceea8$exports = $f6a97849336ceea8$var$shortOut;
1223
1396
 
1224
1397
 
1225
- /**
1226
- * Sets the `toString` method of `func` to return `string`.
1227
- *
1228
- * @private
1229
- * @param {Function} func The function to modify.
1230
- * @param {Function} string The `toString` result.
1231
- * @returns {Function} Returns `func`.
1232
- */ var $0e9d1d7fde57dac1$var$setToString = $f6a97849336ceea8$exports($ef9aec5e693cb6ed$exports);
1233
- $0e9d1d7fde57dac1$exports = $0e9d1d7fde57dac1$var$setToString;
1234
1398
 
1235
1399
 
1236
- /**
1237
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
1238
- *
1239
- * @private
1240
- * @param {Function} func The function to apply a rest parameter to.
1241
- * @param {number} [start=func.length-1] The start position of the rest parameter.
1242
- * @returns {Function} Returns the new function.
1243
- */ function $b1535b4ce0d1bd5f$var$baseRest(func, start) {
1244
- return $0e9d1d7fde57dac1$exports($1b1aa0f3fc7256c9$exports(func, start, $9x2D6), func + "");
1400
+ class $6c924a95a765a086$export$15d3f9b095bb5188 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1401
+ async expectCommentToContain(text) {
1402
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task-comment .markdown-wrapper p")).toContainText(text);
1403
+ }
1245
1404
  }
1246
- $b1535b4ce0d1bd5f$exports = $b1535b4ce0d1bd5f$var$baseRest;
1247
1405
 
1248
1406
 
1249
- var $ceebddaa7160689c$exports = {};
1250
- /**
1251
- * Performs a
1252
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
1253
- * comparison between two values to determine if they are equivalent.
1254
- *
1255
- * @static
1256
- * @memberOf _
1257
- * @since 4.0.0
1258
- * @category Lang
1259
- * @param {*} value The value to compare.
1260
- * @param {*} other The other value to compare.
1261
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1262
- * @example
1263
- *
1264
- * var object = { 'a': 1 };
1265
- * var other = { 'a': 1 };
1266
- *
1267
- * _.eq(object, object);
1268
- * // => true
1269
- *
1270
- * _.eq(object, other);
1271
- * // => false
1272
- *
1273
- * _.eq('a', 'a');
1274
- * // => true
1275
- *
1276
- * _.eq('a', Object('a'));
1277
- * // => false
1278
- *
1279
- * _.eq(NaN, NaN);
1280
- * // => true
1281
- */ function $ceebddaa7160689c$var$eq(value, other) {
1282
- return value === other || value !== value && other !== other;
1283
- }
1284
- $ceebddaa7160689c$exports = $ceebddaa7160689c$var$eq;
1285
-
1286
-
1287
- var $e084f044678f4365$exports = {};
1288
-
1289
-
1290
- var $fegcS = parcelRequire("fegcS");
1291
1407
 
1292
- var $gf9YK = parcelRequire("gf9YK");
1293
1408
 
1294
- var $bfk90 = parcelRequire("bfk90");
1295
- /**
1296
- * Checks if the given arguments are from an iteratee call.
1297
- *
1298
- * @private
1299
- * @param {*} value The potential iteratee value argument.
1300
- * @param {*} index The potential iteratee index or key argument.
1301
- * @param {*} object The potential iteratee object argument.
1302
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
1303
- * else `false`.
1304
- */ function $e084f044678f4365$var$isIterateeCall(value, index, object) {
1305
- if (!$bfk90(object)) return false;
1306
- var type = typeof index;
1307
- if (type == "number" ? $fegcS(object) && $gf9YK(index, object.length) : type == "string" && index in object) return $ceebddaa7160689c$exports(object[index], value);
1308
- return false;
1409
+ class $f9016705c1a1eb20$export$aa59788fdecae2f2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1410
+ async expectWithAttachment(filename) {
1411
+ const test = this.page.locator(".task-attachments-grid .file-item-text");
1412
+ await test.isVisible();
1413
+ await (0, $kKeXs$playwrighttest.expect)(test).toContainText(filename);
1414
+ }
1415
+ async getAttachmentsListCount() {
1416
+ return await this.page.locator(".file-upload-list div").count();
1417
+ }
1418
+ async uploadFile(filePath) {
1419
+ const fileChooserPromise = this.page.waitForEvent("filechooser");
1420
+ await this.page.getByRole("button", {
1421
+ name: "Select file(s)"
1422
+ }).click();
1423
+ const fileChooser = await fileChooserPromise;
1424
+ await fileChooser.setFiles(filePath);
1425
+ }
1426
+ async downloadFile(filename) {
1427
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1428
+ this.page.on("download", ()=>{});
1429
+ const downloadPromise = this.page.waitForEvent("download");
1430
+ await this.page.locator("li").filter({
1431
+ hasText: "" + filename + ""
1432
+ }).click();
1433
+ await downloadPromise;
1434
+ }
1435
+ async deleteAttachment(fileName) {
1436
+ await this.page.locator("li").filter({
1437
+ hasText: fileName
1438
+ }).click();
1439
+ await this.page.getByLabel("delete file").click();
1440
+ await this.page.getByRole("button", {
1441
+ name: "Delete"
1442
+ }).click();
1443
+ }
1444
+ async expectWithNoAttachment(tempFile) {
1445
+ const test = await this.page.locator(".task-attachments-grid .file-item-text").isVisible();
1446
+ if (test) await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task-attachments-grid .file-item-text")).not.toContainText(tempFile);
1447
+ else await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task-attachments-grid .file-item-text")).not.toBeVisible();
1448
+ }
1309
1449
  }
1310
- $e084f044678f4365$exports = $e084f044678f4365$var$isIterateeCall;
1311
-
1312
-
1313
- var $0e6e2e34ec44a72a$exports = {};
1314
1450
 
1315
- var $gYWmw = parcelRequire("gYWmw");
1316
- var $b4b8b2a977b4cc10$exports = {};
1317
1451
 
1318
- var $bfk90 = parcelRequire("bfk90");
1319
1452
 
1320
- var $cjTq2 = parcelRequire("cjTq2");
1321
- var $59b6e790ee7519e4$exports = {};
1322
- /**
1323
- * This function is like
1324
- * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1325
- * except that it includes inherited enumerable properties.
1326
- *
1327
- * @private
1328
- * @param {Object} object The object to query.
1329
- * @returns {Array} Returns the array of property names.
1330
- */ function $59b6e790ee7519e4$var$nativeKeysIn(object) {
1331
- var result = [];
1332
- if (object != null) for(var key in Object(object))result.push(key);
1333
- return result;
1453
+ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1454
+ constructor(page){
1455
+ super(page);
1456
+ this.taskDrawerLocator = this.page.locator("task-drawer .dot-drawer");
1457
+ this.retryButton = this.page.getByRole("button", {
1458
+ name: "Retry"
1459
+ });
1460
+ this.cancelButton = this.page.getByTestId("task-action-cancel");
1461
+ this.commentBox = this.page.getByTestId("task-action-comment");
1462
+ this.confirm = this.page.getByTestId("task-action-confirm");
1463
+ this.activity = new (0, $6c924a95a765a086$export$15d3f9b095bb5188)(page);
1464
+ this.attachment = new (0, $f9016705c1a1eb20$export$aa59788fdecae2f2)(page);
1465
+ this.config = new (0, $8be2ce0eccbe6d27$export$64c93bc7fb9ca44e)(page);
1466
+ this.condition = new (0, $9c0b0c2caed50730$export$d4865631ba74f3e2)(page);
1467
+ this.overview = new (0, $eb81c1b930e440ff$export$519356f6c50361f7)(page);
1468
+ this.skipMenu = this.page.getByRole("menuitem", {
1469
+ name: "Skip"
1470
+ });
1471
+ }
1472
+ async openOverviewRail() {
1473
+ await this.openRail("Overview");
1474
+ }
1475
+ async openActivityRail() {
1476
+ await this.openRail("Activity");
1477
+ }
1478
+ async openSchedulingRail() {
1479
+ await this.openRail("Scheduling");
1480
+ }
1481
+ async openConditionRail() {
1482
+ await this.openRail("Conditions");
1483
+ }
1484
+ async openAttributesRail() {
1485
+ await this.openRail("Attributes");
1486
+ }
1487
+ async openAttachRail() {
1488
+ await this.openRail("Attach");
1489
+ }
1490
+ async openTagsRail() {
1491
+ await this.openRail("Tags");
1492
+ }
1493
+ async openRail(rail) {
1494
+ await this.taskDrawerLocator.locator(".task-navigation-rail").getByText(rail).click();
1495
+ }
1496
+ async close() {
1497
+ await this.taskDrawerLocator.locator(".task-drawer-header").getByTestId("close-btn").click();
1498
+ }
1499
+ async retryTask(comment) {
1500
+ await this.retryButton.click();
1501
+ await this.commentBox.fill(comment);
1502
+ await this.confirm.click();
1503
+ }
1504
+ async skipTask(comment) {
1505
+ await this.page.getByRole("button", {
1506
+ name: "arrow-down icon",
1507
+ exact: true
1508
+ }).click();
1509
+ await this.skipMenu.click();
1510
+ await this.commentBox.fill(comment);
1511
+ await this.confirm.click();
1512
+ }
1513
+ async expectTaskTitle(taskTitle) {
1514
+ (0, $kKeXs$playwrighttest.expect)(await this.page.locator(".task-drawer .task-title-input .dot-view-mode-typography").innerText()).toContain(taskTitle);
1515
+ }
1334
1516
  }
1335
- $59b6e790ee7519e4$exports = $59b6e790ee7519e4$var$nativeKeysIn;
1336
-
1337
1517
 
1338
- /** Used for built-in method references. */ var $b4b8b2a977b4cc10$var$objectProto = Object.prototype;
1339
- /** Used to check objects for own properties. */ var $b4b8b2a977b4cc10$var$hasOwnProperty = $b4b8b2a977b4cc10$var$objectProto.hasOwnProperty;
1340
- /**
1341
- * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
1342
- *
1343
- * @private
1344
- * @param {Object} object The object to query.
1345
- * @returns {Array} Returns the array of property names.
1346
- */ function $b4b8b2a977b4cc10$var$baseKeysIn(object) {
1347
- if (!$bfk90(object)) return $59b6e790ee7519e4$exports(object);
1348
- var isProto = $cjTq2(object), result = [];
1349
- for(var key in object)if (!(key == "constructor" && (isProto || !$b4b8b2a977b4cc10$var$hasOwnProperty.call(object, key)))) result.push(key);
1350
- return result;
1351
- }
1352
- $b4b8b2a977b4cc10$exports = $b4b8b2a977b4cc10$var$baseKeysIn;
1353
1518
 
1354
1519
 
1355
1520
 
1356
- var $fegcS = parcelRequire("fegcS");
1357
- /**
1358
- * Creates an array of the own and inherited enumerable property names of `object`.
1359
- *
1360
- * **Note:** Non-object values are coerced to objects.
1361
- *
1362
- * @static
1363
- * @memberOf _
1364
- * @since 3.0.0
1365
- * @category Object
1366
- * @param {Object} object The object to query.
1367
- * @returns {Array} Returns the array of property names.
1368
- * @example
1369
- *
1370
- * function Foo() {
1371
- * this.a = 1;
1372
- * this.b = 2;
1373
- * }
1374
- *
1375
- * Foo.prototype.c = 3;
1376
- *
1377
- * _.keysIn(new Foo);
1378
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
1379
- */ function $0e6e2e34ec44a72a$var$keysIn(object) {
1380
- return $fegcS(object) ? $gYWmw(object, true) : $b4b8b2a977b4cc10$exports(object);
1521
+ class $8681d8a3f46f87b7$export$d1077068a9cc9f17 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1522
+ constructor(page){
1523
+ super(page);
1524
+ }
1525
+ async editReleaseName(name) {
1526
+ await this.page.locator("#release-form-title").clear();
1527
+ await this.page.locator("#release-form-title").fill(name);
1528
+ }
1529
+ async setDescription(description) {
1530
+ await this.page.locator(".display > .xl-icon").first().click();
1531
+ await this.page.locator("textarea").click();
1532
+ await this.page.locator("textarea").clear();
1533
+ await this.page.locator("textarea").fill(description);
1534
+ await this.page.getByText("Save").first().click();
1535
+ }
1536
+ async setScriptUsername(username) {
1537
+ await this.page.getByPlaceholder("Set user...").waitFor();
1538
+ await this.page.getByPlaceholder("Set user...").click();
1539
+ await this.page.locator('input[name=""]').fill(username, {
1540
+ timeout: 2000
1541
+ });
1542
+ }
1543
+ async setScriptUserPassword(password) {
1544
+ await this.page.locator('span[name="scriptUserPassword"]').waitFor();
1545
+ await this.page.locator('span[name="scriptUserPassword"]').click();
1546
+ await this.page.locator('input[name="scriptUserPassword"]').fill(password, {
1547
+ timeout: 2000
1548
+ });
1549
+ }
1550
+ async save() {
1551
+ await this.page.getByRole("button", {
1552
+ name: "Save"
1553
+ }).click({
1554
+ timeout: 2000
1555
+ });
1556
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".form-footer .last-saved")).toBeVisible();
1557
+ }
1558
+ async reset() {
1559
+ await this.page.getByRole("button", {
1560
+ name: "Reset"
1561
+ }).waitFor();
1562
+ await this.page.getByRole("button", {
1563
+ name: "Reset"
1564
+ }).click();
1565
+ }
1381
1566
  }
1382
- $0e6e2e34ec44a72a$exports = $0e6e2e34ec44a72a$var$keysIn;
1383
1567
 
1384
1568
 
1385
- /** Used for built-in method references. */ var $732eba8dca8b5420$var$objectProto = Object.prototype;
1386
- /** Used to check objects for own properties. */ var $732eba8dca8b5420$var$hasOwnProperty = $732eba8dca8b5420$var$objectProto.hasOwnProperty;
1387
- /**
1388
- * Assigns own and inherited enumerable string keyed properties of source
1389
- * objects to the destination object for all destination properties that
1390
- * resolve to `undefined`. Source objects are applied from left to right.
1391
- * Once a property is set, additional values of the same property are ignored.
1392
- *
1393
- * **Note:** This method mutates `object`.
1394
- *
1395
- * @static
1396
- * @since 0.1.0
1397
- * @memberOf _
1398
- * @category Object
1399
- * @param {Object} object The destination object.
1400
- * @param {...Object} [sources] The source objects.
1401
- * @returns {Object} Returns `object`.
1402
- * @see _.defaultsDeep
1403
- * @example
1404
- *
1405
- * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
1406
- * // => { 'a': 1, 'b': 2 }
1407
- */ var $732eba8dca8b5420$var$defaults = $b1535b4ce0d1bd5f$exports(function(object, sources) {
1408
- object = Object(object);
1409
- var index = -1;
1410
- var length = sources.length;
1411
- var guard = length > 2 ? sources[2] : undefined;
1412
- if (guard && $e084f044678f4365$exports(sources[0], sources[1], guard)) length = 1;
1413
- while(++index < length){
1414
- var source = sources[index];
1415
- var props = $0e6e2e34ec44a72a$exports(source);
1416
- var propsIndex = -1;
1417
- var propsLength = props.length;
1418
- while(++propsIndex < propsLength){
1419
- var key = props[propsIndex];
1420
- var value = object[key];
1421
- if (value === undefined || $ceebddaa7160689c$exports(value, $732eba8dca8b5420$var$objectProto[key]) && !$732eba8dca8b5420$var$hasOwnProperty.call(object, key)) object[key] = source[key];
1422
- }
1569
+ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1570
+ constructor(page){
1571
+ super(page);
1572
+ this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
1573
+ this.properties = new (0, $8681d8a3f46f87b7$export$d1077068a9cc9f17)(page);
1574
+ this.variables = new (0, $fd4eef3ad2b2e612$export$a87f0ae8695e74be)(page);
1575
+ }
1576
+ async openTriggers() {
1577
+ await this.openSubPage("Triggers");
1578
+ return new (0, $133601cfe0486710$export$fb932093f944abe4)(this.page);
1579
+ }
1580
+ async abort(comment = "Abort for testing") {
1581
+ await this.page.locator("action-toolbar button", {
1582
+ hasText: "Abort"
1583
+ }).click();
1584
+ await this.page.locator(".modal textarea").fill(comment);
1585
+ await this.page.locator(".modal .continue").click();
1586
+ }
1587
+ getPhase(phaseName) {
1588
+ return new $9b9a8c3da392d020$var$Phase(this.page, phaseName);
1589
+ }
1590
+ async start() {
1591
+ await this.page.getByTestId("start-btn").click();
1592
+ await this.page.getByRole("button", {
1593
+ name: "Start"
1594
+ }).click();
1595
+ }
1596
+ async waitForCompletion(timeout) {
1597
+ await this.page.locator("#release.completed").waitFor({
1598
+ timeout: timeout
1599
+ });
1600
+ }
1601
+ async waitForTaskCompleted(taskTitle) {
1602
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.completed").getByText(taskTitle, {
1603
+ exact: true
1604
+ })).toBeVisible({
1605
+ timeout: 10000
1606
+ });
1607
+ }
1608
+ async waitForTaskFailed(taskTitle) {
1609
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.failed").getByText(taskTitle, {
1610
+ exact: true
1611
+ })).toBeVisible({
1612
+ timeout: 10000
1613
+ });
1614
+ }
1615
+ async waitForTaskSkipped(taskTitle) {
1616
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.skipped").getByText(taskTitle, {
1617
+ exact: true
1618
+ })).toBeVisible({
1619
+ timeout: 10000
1620
+ });
1621
+ }
1622
+ async waitForTaskAborted(taskTitle) {
1623
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.aborted").getByText(taskTitle, {
1624
+ exact: true
1625
+ })).toBeVisible({
1626
+ timeout: 10000
1627
+ });
1628
+ }
1629
+ async waitForStatusLine(statusLine) {
1630
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task .status-line").getByText(statusLine, {
1631
+ exact: true
1632
+ })).toBeVisible({
1633
+ timeout: 10000
1634
+ });
1635
+ }
1636
+ async waitForTaskStarted(taskTitle) {
1637
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.in_progress").getByTitle(taskTitle, {
1638
+ exact: true
1639
+ })).toBeVisible({
1640
+ timeout: 10000
1641
+ });
1642
+ }
1643
+ async openTaskDrawer(taskName) {
1644
+ await this.page.locator(".task-header").getByText(taskName, {
1645
+ exact: true
1646
+ }).click();
1647
+ return this.taskDrawer;
1648
+ }
1649
+ async openVariables() {
1650
+ await this.openReleaseMenu("Variables");
1651
+ }
1652
+ async openProperties() {
1653
+ await this.openReleaseMenu("Properties");
1654
+ }
1655
+ async openReleaseFlow() {
1656
+ await this.openReleaseMenu("Release flow");
1657
+ }
1658
+ async openRelationships() {
1659
+ await this.openReleaseMenu("Relationships");
1660
+ }
1661
+ async openTeamsPermissions() {
1662
+ await this.openReleaseMenu("Teams & Permissions");
1663
+ }
1664
+ async openDashboard() {
1665
+ await this.openReleaseMenu("Dashboard");
1666
+ }
1667
+ async openActivityLogs() {
1668
+ await this.openReleaseMenu("ActivityLogs");
1669
+ }
1670
+ async openReleaseMenu(menuItem) {
1671
+ await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
1672
+ exact: true
1673
+ }).click();
1674
+ }
1675
+ async openSubPage(subpage) {
1676
+ await this.page.locator("ul.side-nav li", {
1677
+ hasText: subpage
1678
+ }).click();
1679
+ }
1680
+ async openTask(taskName) {
1681
+ await this.page.getByTitle(taskName, {
1682
+ exact: true
1683
+ }).click();
1684
+ }
1685
+ async collapseAllTaskView() {
1686
+ const icCollapseTreeview1 = this.page.locator("div.pull-left.expander.ng-scope i.xl-icon.arrow-down-icon");
1687
+ for (const element of (await icCollapseTreeview1.all())){
1688
+ const blnVal = await element.isVisible();
1689
+ if (blnVal) {
1690
+ await element.click();
1691
+ await this.collapseAllTaskView();
1692
+ }
1693
+ }
1694
+ }
1695
+ async expandAllTaskView() {
1696
+ const icExpandTreeview1 = this.page.locator("div.pull-left.expander.ng-scope i.xl-icon.arrow-right-icon");
1697
+ for (const element of (await icExpandTreeview1.all())){
1698
+ const blnVal = await element.isVisible();
1699
+ if (blnVal) {
1700
+ await element.click();
1701
+ await this.expandAllTaskView();
1702
+ }
1703
+ }
1704
+ }
1705
+ async backToRelease() {
1706
+ await this.page.locator(".icon-back").click();
1423
1707
  }
1424
- return object;
1425
- });
1426
- $732eba8dca8b5420$exports = $732eba8dca8b5420$var$defaults;
1427
-
1428
-
1429
- var $f51969c4a7467fa0$exports = {};
1430
- var $acbd35b1cbbf33e4$exports = {};
1431
- var $34482bf0fdb87aa6$exports = {};
1432
- var $c258ac491a64b22b$exports = {};
1433
- /**
1434
- * A specialized version of `_.map` for arrays without support for iteratee
1435
- * shorthands.
1436
- *
1437
- * @private
1438
- * @param {Array} [array] The array to iterate over.
1439
- * @param {Function} iteratee The function invoked per iteration.
1440
- * @returns {Array} Returns the new mapped array.
1441
- */ function $c258ac491a64b22b$var$arrayMap(array, iteratee) {
1442
- var index = -1, length = array == null ? 0 : array.length, result = Array(length);
1443
- while(++index < length)result[index] = iteratee(array[index], index, array);
1444
- return result;
1445
1708
  }
1446
- $c258ac491a64b22b$exports = $c258ac491a64b22b$var$arrayMap;
1447
-
1448
-
1449
- /**
1450
- * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
1451
- * of key-value pairs for `object` corresponding to the property names of `props`.
1452
- *
1453
- * @private
1454
- * @param {Object} object The object to query.
1455
- * @param {Array} props The property names to get values for.
1456
- * @returns {Object} Returns the key-value pairs.
1457
- */ function $34482bf0fdb87aa6$var$baseToPairs(object, props) {
1458
- return $c258ac491a64b22b$exports(props, function(key) {
1459
- return [
1460
- key,
1461
- object[key]
1462
- ];
1463
- });
1709
+ class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1710
+ constructor(page, phaseName){
1711
+ super(page);
1712
+ this.phaseLocator = page.locator(".phase", {
1713
+ hasText: phaseName
1714
+ });
1715
+ }
1716
+ async setTitle(title) {
1717
+ await this.phaseLocator.locator(".phase-header .display").click();
1718
+ await this.phaseLocator.locator(".phase-header input").clear();
1719
+ await this.phaseLocator.locator(".phase-header input").fill(title);
1720
+ await this.phaseLocator.locator(".phase-header input").blur();
1721
+ }
1722
+ async expectTaskBorderWithColor(taskName, color) {
1723
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(`.task-box:has-text('${taskName}')`)).toHaveCSS("border-top-color", color);
1724
+ }
1725
+ async addTaskInPhase(taskTitle, taskType) {
1726
+ await this.phaseLocator.getByText("Add task").click();
1727
+ await this.phaseLocator.getByPlaceholder("Task title...").click();
1728
+ await this.phaseLocator.getByPlaceholder("Task title...").fill(taskTitle);
1729
+ await this.phaseLocator.locator(".xlr-ctx-menu-toggle").click();
1730
+ const count = taskType.length - 1;
1731
+ for(let i = 0; i < count; i++){
1732
+ await this.page.locator('[data-test="' + taskType[i] + '"]').getByText(taskType[i]).click();
1733
+ await this.page.getByText(taskType[i + 1]).click();
1734
+ }
1735
+ await this.phaseLocator.locator(".quick-controls-container a").getByText("Add", {
1736
+ exact: true
1737
+ }).click();
1738
+ await this.phaseLocator.locator(".button.cancel").click();
1739
+ await (0, $kKeXs$playwrighttest.expect)(this.phaseLocator.locator(".task").filter({
1740
+ hasText: taskTitle
1741
+ })).toBeVisible({
1742
+ timeout: 5000
1743
+ });
1744
+ }
1745
+ async getNumberOfTasks() {
1746
+ return await this.phaseLocator.locator(".task").count();
1747
+ }
1748
+ async expectToHaveNoneditableTitle(phaseTitle) {
1749
+ await (0, $kKeXs$playwrighttest.expect)(this.phaseLocator.locator(".phase-title > span")).toContainText(phaseTitle);
1750
+ }
1751
+ async expectToHaveTitle(phaseTitle) {
1752
+ await (0, $kKeXs$playwrighttest.expect)(this.phaseLocator.locator(".phase-title")).toContainText(phaseTitle);
1753
+ }
1464
1754
  }
1465
- $34482bf0fdb87aa6$exports = $34482bf0fdb87aa6$var$baseToPairs;
1466
1755
 
1467
1756
 
1468
- var $2184c74fd3b50571$exports = {};
1469
- var $9707ed10f1d74f7d$exports = {};
1470
1757
 
1471
1758
 
1472
- var $5iYlB = parcelRequire("5iYlB");
1473
- /* Built-in method references that are verified to be native. */ var $9707ed10f1d74f7d$var$DataView = $b7745e89d7f5915f$exports($5iYlB, "DataView");
1474
- $9707ed10f1d74f7d$exports = $9707ed10f1d74f7d$var$DataView;
1759
+ class $dc91ece6da6cadfa$export$1533b625ec0c75e2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1760
+ async goToApplicationsPage() {
1761
+ await this.page.goto("./#/applications");
1762
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Applications - Digital.ai Release");
1763
+ return this;
1764
+ }
1765
+ async addNewApplication(applicationName) {
1766
+ await this.page.locator(`//button[normalize-space()='New application']`).click();
1767
+ await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
1768
+ await this.page.locator(`//button[normalize-space()='Save']`).click();
1769
+ return this;
1770
+ }
1771
+ async verifyApplicationisCreated(applicationName) {
1772
+ await this.page.waitForSelector(`div[title='${applicationName}'] strong`);
1773
+ return this;
1774
+ }
1775
+ async createApplicationAndLinkEnvironment(environmentName, applicationName) {
1776
+ await this.page.locator(`//button[normalize-space()='New application']`).click();
1777
+ await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
1778
+ await this.page.locator("input[placeholder='Filter environment name...']").type(environmentName);
1779
+ await this.page.locator(`div[title='${environmentName}']`).click();
1780
+ await this.page.locator(`//button[normalize-space()='Save']`).click();
1781
+ await this.page.locator("i.xl-icon.close-icon").click();
1782
+ return this;
1783
+ }
1784
+ }
1475
1785
 
1476
1786
 
1477
- var $8c4ecd35968046d6$exports = {};
1478
1787
 
1479
1788
 
1480
- var $5iYlB = parcelRequire("5iYlB");
1481
- /* Built-in method references that are verified to be native. */ var $8c4ecd35968046d6$var$Map = $b7745e89d7f5915f$exports($5iYlB, "Map");
1482
- $8c4ecd35968046d6$exports = $8c4ecd35968046d6$var$Map;
1789
+ class $be4dd73206d8e76b$export$3cac5fd37ae64b91 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1790
+ async openPersonalAccessTokenPage() {
1791
+ // await this.page.locator("button.dot-avatar").click()
1792
+ // await this.page.locator("//div[normalize-space()='Access tokens']").click()
1793
+ await this.page.goto("./#/personal-access-token");
1794
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Access tokens / Personal settings - Digital.ai Release");
1795
+ return this;
1796
+ }
1797
+ async addNewToken(tokenName) {
1798
+ //await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release')
1799
+ await this.page.locator("#tokenText").fill(tokenName);
1800
+ await this.page.locator("button[type='submit']").click();
1801
+ return this;
1802
+ }
1803
+ }
1483
1804
 
1484
1805
 
1485
- var $30f4d64ddd8effd1$exports = {};
1486
1806
 
1487
1807
 
1488
- var $5iYlB = parcelRequire("5iYlB");
1489
- /* Built-in method references that are verified to be native. */ var $30f4d64ddd8effd1$var$Promise = $b7745e89d7f5915f$exports($5iYlB, "Promise");
1490
- $30f4d64ddd8effd1$exports = $30f4d64ddd8effd1$var$Promise;
1491
1808
 
1492
1809
 
1493
- var $869474d4b330cc35$exports = {};
1810
+ class $bb5572a48b31014a$export$e2e2e1ffdce20c30 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1811
+ constructor(page){
1812
+ super(page);
1813
+ this.userName = page.locator("#username");
1814
+ this.name = page.locator("#fullName");
1815
+ this.email = page.locator("#email");
1816
+ this.password = page.locator("#password");
1817
+ this.cnfPassword = page.locator("#confirmPassword");
1818
+ this.saveButton = page.getByTestId("save-btn");
1819
+ this.cancelButton = page.getByRole("button", {
1820
+ name: "Cancel"
1821
+ });
1822
+ this.deleteButton = page.getByRole("button", {
1823
+ name: "Delete"
1824
+ });
1825
+ }
1826
+ async setUserName(username) {
1827
+ return await this.userName.fill(username);
1828
+ }
1829
+ async setFullName(fullName) {
1830
+ return await this.name.fill(fullName);
1831
+ }
1832
+ async setEmail(email) {
1833
+ return await this.email.fill(email);
1834
+ }
1835
+ async setPassword(password) {
1836
+ return await this.password.fill(password);
1837
+ }
1838
+ async setConfirmPassword(cnfPassword) {
1839
+ return await this.cnfPassword.fill(cnfPassword);
1840
+ }
1841
+ async save() {
1842
+ await this.saveButton.isEnabled();
1843
+ await (0, $kKeXs$playwrighttest.expect)(this.saveButton).not.toBeDisabled();
1844
+ await this.saveButton.focus();
1845
+ await this.saveButton.click();
1846
+ }
1847
+ async cancel() {
1848
+ await this.cancelButton.click();
1849
+ }
1850
+ async delete() {
1851
+ await this.deleteButton.click();
1852
+ }
1853
+ }
1494
1854
 
1495
1855
 
1496
- var $5iYlB = parcelRequire("5iYlB");
1497
- /* Built-in method references that are verified to be native. */ var $869474d4b330cc35$var$Set = $b7745e89d7f5915f$exports($5iYlB, "Set");
1498
- $869474d4b330cc35$exports = $869474d4b330cc35$var$Set;
1499
-
1500
-
1501
- var $c4df061ad36170d9$exports = {};
1856
+ class $3ceab7c613cabfd6$export$107317390f5aa598 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1857
+ constructor(page){
1858
+ super(page);
1859
+ this.page = page;
1860
+ this.newUserButton = this.page.getByTestId("new-user-btn");
1861
+ this.modal = new (0, $bb5572a48b31014a$export$e2e2e1ffdce20c30)(page);
1862
+ }
1863
+ async openUsersPage() {
1864
+ this.page.goto("./#/users", {
1865
+ timeout: 1000
1866
+ });
1867
+ }
1868
+ async toggleLoginPermission(username) {
1869
+ await this.page.getByRole("row", {
1870
+ name: "" + username + ""
1871
+ }).getByRole("checkbox").click();
1872
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("row", {
1873
+ name: "" + username + ""
1874
+ }).locator(".Mui-checked")).toBeChecked();
1875
+ }
1876
+ async addUser() {
1877
+ await this.newUserButton.click();
1878
+ }
1879
+ async createUser(username, password) {
1880
+ await this.modal.setUserName(username);
1881
+ await this.modal.setFullName(username);
1882
+ await this.modal.setEmail("testuser@company.com");
1883
+ await this.modal.setPassword(password);
1884
+ await this.modal.setConfirmPassword(password);
1885
+ await this.modal.save();
1886
+ }
1887
+ async expectToHaveLoginPermission(username) {
1888
+ return await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("row", {
1889
+ name: "" + username + ""
1890
+ }).getByRole("checkbox")).toBeChecked();
1891
+ }
1892
+ async deleteUser(username) {
1893
+ await this.page.getByRole("row", {
1894
+ name: "" + username + ""
1895
+ }).locator("i").nth(1).click();
1896
+ await this.modal.delete();
1897
+ }
1898
+ }
1502
1899
 
1503
1900
 
1504
- var $5iYlB = parcelRequire("5iYlB");
1505
- /* Built-in method references that are verified to be native. */ var $c4df061ad36170d9$var$WeakMap = $b7745e89d7f5915f$exports($5iYlB, "WeakMap");
1506
- $c4df061ad36170d9$exports = $c4df061ad36170d9$var$WeakMap;
1507
1901
 
1902
+ class $7867194f18360347$export$1d7840d5cdc861d5 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1903
+ constructor(page){
1904
+ super(page);
1905
+ this.settingsIcon = this.page.getByRole("button", {
1906
+ name: "Settings"
1907
+ });
1908
+ this.usersAndPermissionMenu = this.page.getByRole("menuitem", {
1909
+ name: "users icon Users and permissions"
1910
+ });
1911
+ this.managePluginMenu = this.page.getByRole("menuitem", {
1912
+ name: "plugins icon Manage plugins"
1913
+ });
1914
+ }
1915
+ async openUsersAndPermissions() {
1916
+ await this.settingsIcon.click();
1917
+ await this.usersAndPermissionMenu.click();
1918
+ }
1919
+ async openManagePlugin() {
1920
+ await this.settingsIcon.click();
1921
+ await this.managePluginMenu.click();
1922
+ }
1923
+ }
1508
1924
 
1509
1925
 
1510
- var $hi3Ib = parcelRequire("hi3Ib");
1511
1926
 
1512
- /** `Object#toString` result references. */ var $2184c74fd3b50571$var$mapTag = "[object Map]", $2184c74fd3b50571$var$objectTag = "[object Object]", $2184c74fd3b50571$var$promiseTag = "[object Promise]", $2184c74fd3b50571$var$setTag = "[object Set]", $2184c74fd3b50571$var$weakMapTag = "[object WeakMap]";
1513
- var $2184c74fd3b50571$var$dataViewTag = "[object DataView]";
1514
- /** Used to detect maps, sets, and weakmaps. */ var $2184c74fd3b50571$var$dataViewCtorString = $c6de24274df36d4e$exports($9707ed10f1d74f7d$exports), $2184c74fd3b50571$var$mapCtorString = $c6de24274df36d4e$exports($8c4ecd35968046d6$exports), $2184c74fd3b50571$var$promiseCtorString = $c6de24274df36d4e$exports($30f4d64ddd8effd1$exports), $2184c74fd3b50571$var$setCtorString = $c6de24274df36d4e$exports($869474d4b330cc35$exports), $2184c74fd3b50571$var$weakMapCtorString = $c6de24274df36d4e$exports($c4df061ad36170d9$exports);
1515
- /**
1516
- * Gets the `toStringTag` of `value`.
1517
- *
1518
- * @private
1519
- * @param {*} value The value to query.
1520
- * @returns {string} Returns the `toStringTag`.
1521
- */ var $2184c74fd3b50571$var$getTag = $hi3Ib;
1522
- // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
1523
- if ($9707ed10f1d74f7d$exports && $2184c74fd3b50571$var$getTag(new $9707ed10f1d74f7d$exports(new ArrayBuffer(1))) != $2184c74fd3b50571$var$dataViewTag || $8c4ecd35968046d6$exports && $2184c74fd3b50571$var$getTag(new $8c4ecd35968046d6$exports) != $2184c74fd3b50571$var$mapTag || $30f4d64ddd8effd1$exports && $2184c74fd3b50571$var$getTag($30f4d64ddd8effd1$exports.resolve()) != $2184c74fd3b50571$var$promiseTag || $869474d4b330cc35$exports && $2184c74fd3b50571$var$getTag(new $869474d4b330cc35$exports) != $2184c74fd3b50571$var$setTag || $c4df061ad36170d9$exports && $2184c74fd3b50571$var$getTag(new $c4df061ad36170d9$exports) != $2184c74fd3b50571$var$weakMapTag) $2184c74fd3b50571$var$getTag = function(value) {
1524
- var result = $hi3Ib(value), Ctor = result == $2184c74fd3b50571$var$objectTag ? value.constructor : undefined, ctorString = Ctor ? $c6de24274df36d4e$exports(Ctor) : "";
1525
- if (ctorString) switch(ctorString){
1526
- case $2184c74fd3b50571$var$dataViewCtorString:
1527
- return $2184c74fd3b50571$var$dataViewTag;
1528
- case $2184c74fd3b50571$var$mapCtorString:
1529
- return $2184c74fd3b50571$var$mapTag;
1530
- case $2184c74fd3b50571$var$promiseCtorString:
1531
- return $2184c74fd3b50571$var$promiseTag;
1532
- case $2184c74fd3b50571$var$setCtorString:
1533
- return $2184c74fd3b50571$var$setTag;
1534
- case $2184c74fd3b50571$var$weakMapCtorString:
1535
- return $2184c74fd3b50571$var$weakMapTag;
1927
+ class $a642d735048996f9$export$922081b54f2ab994 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1928
+ constructor(page){
1929
+ super(page);
1536
1930
  }
1537
- return result;
1538
- };
1539
- $2184c74fd3b50571$exports = $2184c74fd3b50571$var$getTag;
1931
+ }
1540
1932
 
1541
1933
 
1542
- var $5cfa9b34443304aa$exports = {};
1543
- /**
1544
- * Converts `map` to its key-value pairs.
1545
- *
1546
- * @private
1547
- * @param {Object} map The map to convert.
1548
- * @returns {Array} Returns the key-value pairs.
1549
- */ function $5cfa9b34443304aa$var$mapToArray(map) {
1550
- var index = -1, result = Array(map.size);
1551
- map.forEach(function(value, key) {
1552
- result[++index] = [
1553
- key,
1554
- value
1555
- ];
1556
- });
1557
- return result;
1558
- }
1559
- $5cfa9b34443304aa$exports = $5cfa9b34443304aa$var$mapToArray;
1560
1934
 
1561
1935
 
1562
- var $e0efec8f59f2b46b$exports = {};
1563
- /**
1564
- * Converts `set` to its value-value pairs.
1565
- *
1566
- * @private
1567
- * @param {Object} set The set to convert.
1568
- * @returns {Array} Returns the value-value pairs.
1569
- */ function $e0efec8f59f2b46b$var$setToPairs(set) {
1570
- var index = -1, result = Array(set.size);
1571
- set.forEach(function(value) {
1572
- result[++index] = [
1573
- value,
1574
- value
1936
+ class $a8855257f8bb2b12$export$43682cddead1dd78 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1937
+ async openReleaseCalendarPage() {
1938
+ await this.page.goto("./#/calendar");
1939
+ //Define date format to verify different calendar views
1940
+ const today = new Date();
1941
+ let options = {
1942
+ weekday: "long",
1943
+ year: "numeric",
1944
+ month: "short",
1945
+ day: "numeric"
1946
+ };
1947
+ this.dayFormat = today.toLocaleDateString("en-US", options); // Saturday, September 17, 2016
1948
+ this.yearFormat = today.getFullYear();
1949
+ this.yearFormatString = this.yearFormat.toString();
1950
+ options = {
1951
+ month: "long",
1952
+ year: "numeric"
1953
+ };
1954
+ this.monthFormat = today.toLocaleDateString("en-US", options);
1955
+ this.monthFormat = this.monthFormat.replace(/(\w+) (\d+)/, "$1, $2");
1956
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Release calendar / Home - Digital.ai Release");
1957
+ return this;
1958
+ }
1959
+ async exportCalendar() {
1960
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1961
+ this.page.on("download", ()=>{});
1962
+ await this.page.getByRole("button", {
1963
+ name: "download icon Export calendar"
1964
+ }).click();
1965
+ const downloadPromise = this.page.waitForEvent("download");
1966
+ await this.page.getByRole("button", {
1967
+ name: "Export"
1968
+ }).click();
1969
+ await downloadPromise;
1970
+ }
1971
+ async cancelCalendarExport() {
1972
+ let downloadCount = 0;
1973
+ // Listen to download events
1974
+ this.page.on("download", (_download)=>{
1975
+ downloadCount++;
1976
+ });
1977
+ await this.page.getByRole("button", {
1978
+ name: "download icon Export calendar"
1979
+ }).click();
1980
+ await this.page.getByRole("button", {
1981
+ name: "Cancel"
1982
+ }).click();
1983
+ return downloadCount;
1984
+ }
1985
+ async verifyDayView() {
1986
+ await this.page.locator(".tl-header-navigation").getByRole("combobox").click();
1987
+ await this.page.getByRole("option", {
1988
+ name: "Day"
1989
+ }).click();
1990
+ await this.page.getByRole("button", {
1991
+ name: "Today"
1992
+ }).click();
1993
+ //Verify Page has correct day format displayed at the page bottom
1994
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(this.dayFormat)).toBeVisible();
1995
+ }
1996
+ async verifyYearView() {
1997
+ await this.page.locator(".tl-header-navigation").getByRole("combobox").click();
1998
+ await this.page.getByRole("option", {
1999
+ name: "Year"
2000
+ }).click();
2001
+ await this.page.getByRole("button", {
2002
+ name: "Today"
2003
+ }).click();
2004
+ //Verify Page has correct Year format displayed at the page bottom
2005
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".tl-footer-label").filter({
2006
+ hasText: this.yearFormatString
2007
+ })).toHaveText(this.yearFormatString);
2008
+ }
2009
+ async verifyMonthView() {
2010
+ await this.page.locator(".tl-header-navigation").getByRole("combobox").click();
2011
+ await this.page.getByRole("option", {
2012
+ name: "Month"
2013
+ }).click();
2014
+ await this.page.getByRole("button", {
2015
+ name: "Today"
2016
+ }).click();
2017
+ //Verify Page has correct Year format displayed at the page bottom
2018
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".tl-footer-label").filter({
2019
+ hasText: this.monthFormat
2020
+ })).toHaveText(this.monthFormat);
2021
+ }
2022
+ async verifyPageContent(title) {
2023
+ const view_type = [
2024
+ "Day",
2025
+ "Week",
2026
+ "Month",
2027
+ "Year"
1575
2028
  ];
1576
- });
1577
- return result;
2029
+ for (const view of view_type){
2030
+ await this.page.locator(".tl-header-navigation").getByRole("combobox").click();
2031
+ await this.page.getByRole("option", {
2032
+ name: view
2033
+ }).click();
2034
+ await this.page.getByRole("button", {
2035
+ name: "Today"
2036
+ }).click();
2037
+ //Verify Page has correct Year format displayed at the page bottom
2038
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(title)).toBeVisible();
2039
+ }
2040
+ }
2041
+ async filterReleaseByTitle(title) {
2042
+ await this.page.getByPlaceholder("Filter by release title").click();
2043
+ await this.page.getByPlaceholder("Filter by release title").fill(title);
2044
+ await this.page.getByPlaceholder("Filter by release title").press("Enter");
2045
+ //Verify Page has correct Year format displayed at the page bottom
2046
+ await this.verifyPageContent(title);
2047
+ }
2048
+ async filterReleaseByTags(tags, release_title) {
2049
+ await this.page.locator(".tl-filter-release-tags").locator(".react-tagsinput").click();
2050
+ for (let tag of tags){
2051
+ tag = tag.toString();
2052
+ await this.page.locator(".tl-filter-release-tags").locator(".react-tagsinput-input").fill(tag);
2053
+ await this.page.getByTitle(tag).locator("i").click();
2054
+ }
2055
+ await this.verifyPageContent(release_title);
2056
+ }
2057
+ async filterTaskByTags(tags, task_title, release_title) {
2058
+ await this.page.locator(".tl-filter-task-tags").locator(".react-tagsinput").click();
2059
+ for (let tag of tags){
2060
+ tag = tag.toString();
2061
+ await this.page.locator(".tl-filter-task-tags").locator(".react-tagsinput-input").fill(tag);
2062
+ await this.page.getByTitle(tag).locator("i").click();
2063
+ }
2064
+ //Make sure task is visible on calnedar page
2065
+ await this.verifyPageContent(task_title);
2066
+ //Make sure parent release of the selected task is visible on calnedar page
2067
+ await this.verifyPageContent(release_title);
2068
+ }
2069
+ async filterReleaseByStatus(release_status, release_title) {
2070
+ if (!await this.page.locator(".tl-filter-advanced").isVisible()) await this.page.getByRole("button", {
2071
+ name: "Advanced filters"
2072
+ }).click();
2073
+ await this.page.locator(".tl-filter-release-status").locator(".react-tagsinput").click();
2074
+ await this.page.getByTitle(release_status).locator("i").first().click();
2075
+ await this.verifyPageContent(release_title);
2076
+ }
2077
+ async filterReleaseByRisk(release_risk, release_title) {
2078
+ if (!await this.page.locator(".tl-filter-advanced").isVisible()) await this.page.getByRole("button", {
2079
+ name: "Advanced filters"
2080
+ }).click();
2081
+ await this.page.locator(".tl-filter-risk-filter").getByRole("combobox").click();
2082
+ await this.page.getByRole("option", {
2083
+ name: release_risk
2084
+ }).click();
2085
+ await this.verifyPageContent(release_title);
2086
+ }
2087
+ async filterFlaggedRelease(release_title) {
2088
+ if (!await this.page.locator(".tl-filter-advanced").isVisible()) await this.page.getByRole("button", {
2089
+ name: "Advanced filters"
2090
+ }).click();
2091
+ if (await this.page.locator(".tl-filter-flag-only.btn.btn-flat.btn-fixed.button-toggle-filter.active").isVisible()) await this.page.getByRole("button", {
2092
+ name: " Flagged"
2093
+ }).click();
2094
+ await this.verifyPageContent(release_title);
2095
+ }
2096
+ async viewRelease(release_title, release_id) {
2097
+ await this.page.locator(".tl-header-navigation").getByRole("combobox").click();
2098
+ await this.page.getByRole("option", {
2099
+ name: "Day"
2100
+ }).click();
2101
+ await this.page.getByRole("button", {
2102
+ name: "Today"
2103
+ }).click();
2104
+ await this.page.getByText(release_title).click();
2105
+ await this.page.locator(".release-modal-container").locator(".xl-icon.release-icon").click();
2106
+ const releaseurl = `/#/releases/${release_id}`;
2107
+ const currentURL = await this.page.url();
2108
+ // Check if the release name present in redirected URL
2109
+ (0, $kKeXs$playwrighttest.expect)(currentURL).toContain(releaseurl);
2110
+ }
2111
+ async viewDependency(source_release, dest_release) {
2112
+ const source_text = source_release + "dependencies";
2113
+ await this.page.locator(".tl-header-navigation").getByRole("combobox").click();
2114
+ await this.page.getByRole("option", {
2115
+ name: "Day"
2116
+ }).click();
2117
+ await this.page.getByRole("button", {
2118
+ name: "Today"
2119
+ }).click();
2120
+ await this.page.getByText(source_release).click();
2121
+ await this.page.locator(".release-modal-container").locator(".xl-icon.cluster-dependencies-icon").click();
2122
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".tl-drawer-navigation-header")).toHaveText(source_text);
2123
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".tl-drawer-dependency-body-title-text")).toHaveText(dest_release);
2124
+ }
2125
+ async downloadIcsCalendar(release_title) {
2126
+ let downloadCount = 0;
2127
+ // Listen to download events
2128
+ this.page.on("download", (_download)=>{
2129
+ downloadCount++;
2130
+ });
2131
+ await this.page.locator(".tl-header-navigation").getByRole("combobox").click();
2132
+ await this.page.getByRole("option", {
2133
+ name: "Day"
2134
+ }).click();
2135
+ await this.page.getByRole("button", {
2136
+ name: "Today"
2137
+ }).click();
2138
+ await this.page.getByText(release_title).click();
2139
+ await this.page.locator(".release-modal-container").locator(".xl-icon.calendar-icon").click();
2140
+ return downloadCount;
2141
+ }
1578
2142
  }
1579
- $e0efec8f59f2b46b$exports = $e0efec8f59f2b46b$var$setToPairs;
1580
2143
 
1581
2144
 
1582
- /** `Object#toString` result references. */ var $acbd35b1cbbf33e4$var$mapTag = "[object Map]", $acbd35b1cbbf33e4$var$setTag = "[object Set]";
1583
- /**
1584
- * Creates a `_.toPairs` or `_.toPairsIn` function.
1585
- *
1586
- * @private
1587
- * @param {Function} keysFunc The function to get the keys of a given object.
1588
- * @returns {Function} Returns the new pairs function.
1589
- */ function $acbd35b1cbbf33e4$var$createToPairs(keysFunc) {
1590
- return function(object) {
1591
- var tag = $2184c74fd3b50571$exports(object);
1592
- if (tag == $acbd35b1cbbf33e4$var$mapTag) return $5cfa9b34443304aa$exports(object);
1593
- if (tag == $acbd35b1cbbf33e4$var$setTag) return $e0efec8f59f2b46b$exports(object);
1594
- return $34482bf0fdb87aa6$exports(object, keysFunc(object));
1595
- };
2145
+
2146
+ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
2147
+ constructor(page){
2148
+ this.page = page;
2149
+ this.releasePage = new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(page);
2150
+ this.settingsMenu = new (0, $7867194f18360347$export$1d7840d5cdc861d5)(page);
2151
+ this.usersPage = new (0, $3ceab7c613cabfd6$export$107317390f5aa598)(page);
2152
+ this.applicationPage = new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(page);
2153
+ this.taskDetailsPage = new (0, $a642d735048996f9$export$922081b54f2ab994)(page);
2154
+ this.releaseCalendarPage = new (0, $a8855257f8bb2b12$export$43682cddead1dd78)(page);
2155
+ this.releaseListPage = new (0, $87643f2d97b0644e$export$a678525e79c4ccc4)(page);
2156
+ }
2157
+ async openTemplate(id) {
2158
+ return this.openReleaseOrTemplate(id, false);
2159
+ }
2160
+ async openRelease(id) {
2161
+ return this.openReleaseOrTemplate(id, true);
2162
+ }
2163
+ async openApplicationsPage() {
2164
+ return new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(this.page).goToApplicationsPage();
2165
+ }
2166
+ async openPersonalAccessTokenPage() {
2167
+ return new (0, $be4dd73206d8e76b$export$3cac5fd37ae64b91)(this.page).openPersonalAccessTokenPage();
2168
+ }
2169
+ async gotoFolderPage() {
2170
+ await this.page.locator("ul.side-nav li").getByText("Folders", {
2171
+ exact: true
2172
+ }).click();
2173
+ }
2174
+ async gotoTaskPage() {
2175
+ await this.page.locator("ul.side-nav li").getByText("Tasks", {
2176
+ exact: true
2177
+ }).click();
2178
+ }
2179
+ async gotoReleasePage() {
2180
+ await this.page.locator("ul.side-nav li").getByText("Releases", {
2181
+ exact: true
2182
+ }).click();
2183
+ }
2184
+ async gotoWorkflowCatalogPage() {
2185
+ await this.page.locator("ul.side-nav li").getByText("Workflow catalog", {
2186
+ exact: true
2187
+ }).click();
2188
+ }
2189
+ async gotoWorkflowsPage() {
2190
+ await this.page.locator("ul.side-nav li").getByText("Workflows", {
2191
+ exact: true
2192
+ }).click();
2193
+ }
2194
+ async gotoGroupsPage() {
2195
+ await this.page.locator("ul.side-nav li").getByText("Groups", {
2196
+ exact: true
2197
+ }).click();
2198
+ }
2199
+ async gotoReleaseCalenderPage() {
2200
+ await this.page.locator("ul.side-nav li").getByText("Release calendar", {
2201
+ exact: true
2202
+ }).click();
2203
+ }
2204
+ async gotoDeliveriesPage() {
2205
+ await this.page.locator("ul.side-nav li").getByText("Deliveries", {
2206
+ exact: true
2207
+ }).click();
2208
+ }
2209
+ async gotoTriggersPage() {
2210
+ await this.page.locator("ul.side-nav li").getByText("Triggers", {
2211
+ exact: true
2212
+ }).click();
2213
+ }
2214
+ async gotoDigitalAnalyticsPage() {
2215
+ await this.page.locator("ul.side-nav li").getByText("Digital.ai Analytics", {
2216
+ exact: true
2217
+ }).click();
2218
+ }
2219
+ async gotoReportsPage() {
2220
+ await this.page.locator("ul.side-nav li").getByText("Reports", {
2221
+ exact: true
2222
+ }).click();
2223
+ }
2224
+ async gotoTemplatesPage() {
2225
+ await this.page.locator("ul.side-nav li").getByText("Templates", {
2226
+ exact: true
2227
+ }).click();
2228
+ }
2229
+ async gotoEnvironmentsPage() {
2230
+ await this.page.locator("ul.side-nav li").getByText("Environments", {
2231
+ exact: true
2232
+ }).click();
2233
+ }
2234
+ async gotoEnvironmentsCalenderPage() {
2235
+ await this.page.locator("ul.side-nav li").getByText("Environments calendar", {
2236
+ exact: true
2237
+ }).click();
2238
+ }
2239
+ async gotoGobalVariablesPage() {
2240
+ await this.page.locator("ul.side-nav li").getByText("Global variables", {
2241
+ exact: true
2242
+ }).click();
2243
+ }
2244
+ async gotoConnectionsPage() {
2245
+ await this.page.locator("ul.side-nav li").getByText("Connections", {
2246
+ exact: true
2247
+ }).click();
2248
+ }
2249
+ async openReleaseOrTemplate(id, release) {
2250
+ const url = release ? "releases" : "templates";
2251
+ await this.page.goto(`./#/${url}/${id}`);
2252
+ await this.page.waitForSelector("#release");
2253
+ return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
2254
+ }
1596
2255
  }
1597
- $acbd35b1cbbf33e4$exports = $acbd35b1cbbf33e4$var$createToPairs;
1598
2256
 
1599
2257
 
1600
2258
 
1601
- var $bqLSx = parcelRequire("bqLSx");
2259
+
2260
+ class $258749e0671c845a$export$f14c0e3f98d164c0 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2261
+ /**
2262
+ * Login with username and password
2263
+ * @param userName
2264
+ * @param password
2265
+ */ async login(userName, password) {
2266
+ await this.page.goto("./#/login");
2267
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Digital.ai Release");
2268
+ await this.page.getByPlaceholder("User").fill(userName, {
2269
+ timeout: 1000
2270
+ });
2271
+ await this.page.getByPlaceholder("Password").fill(password, {
2272
+ timeout: 10000
2273
+ });
2274
+ await this.page.getByRole("button", {
2275
+ name: "Log in"
2276
+ }).click({
2277
+ timeout: 10000
2278
+ });
2279
+ await this.page.waitForTimeout(1000);
2280
+ }
2281
+ /**
2282
+ * Logout as authenticated user
2283
+ */ async logout() {
2284
+ await this.page.locator("button.dot-avatar").click();
2285
+ await this.page.getByText("Log out", {
2286
+ exact: true
2287
+ }).click();
2288
+ }
2289
+ /**
2290
+ * Expect login to be restricted for a user
2291
+ */ async expectLoginDisallowed() {
2292
+ const val = await this.page.textContent('.error-content span[ng-show="loginInfo.failedStatus == 403"]');
2293
+ (0, $kKeXs$playwrighttest.expect)(val).toContain("You do not have 'login' permission.");
2294
+ }
2295
+ /**
2296
+ * Expect the respective user is logged In
2297
+ * @param username
2298
+ */ async expectToBeLogged(username) {
2299
+ const val = await this.page.locator("top-toolbar .avatar-wrapper span.dot-tooltip").getAttribute("aria-label");
2300
+ (0, $kKeXs$playwrighttest.expect)(val).toContain(username);
2301
+ }
2302
+ }
2303
+
2304
+
2305
+ var $3e8b520187e41aa6$exports = {};
1602
2306
  /**
1603
- * Creates an array of own enumerable string keyed-value pairs for `object`
1604
- * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
1605
- * entries are returned.
2307
+ * Checks if `value` is `undefined`.
1606
2308
  *
1607
2309
  * @static
2310
+ * @since 0.1.0
1608
2311
  * @memberOf _
1609
- * @since 4.0.0
1610
- * @alias entries
1611
- * @category Object
1612
- * @param {Object} object The object to query.
1613
- * @returns {Array} Returns the key-value pairs.
2312
+ * @category Lang
2313
+ * @param {*} value The value to check.
2314
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
1614
2315
  * @example
1615
2316
  *
1616
- * function Foo() {
1617
- * this.a = 1;
1618
- * this.b = 2;
1619
- * }
2317
+ * _.isUndefined(void 0);
2318
+ * // => true
1620
2319
  *
1621
- * Foo.prototype.c = 3;
2320
+ * _.isUndefined(null);
2321
+ * // => false
2322
+ */ function $3e8b520187e41aa6$var$isUndefined(value) {
2323
+ return value === undefined;
2324
+ }
2325
+ $3e8b520187e41aa6$exports = $3e8b520187e41aa6$var$isUndefined;
2326
+
2327
+
2328
+ var $952a2b8d8056b381$exports = {};
2329
+
2330
+ $952a2b8d8056b381$exports = (parcelRequire("ae8Uz"));
2331
+
2332
+
2333
+
2334
+ var $ae8Uz = parcelRequire("ae8Uz");
2335
+ var $732eba8dca8b5420$exports = {};
2336
+ var $b1535b4ce0d1bd5f$exports = {};
2337
+
2338
+ var $9x2D6 = parcelRequire("9x2D6");
2339
+ var $1b1aa0f3fc7256c9$exports = {};
2340
+ var $f984f14b3d4f0683$exports = {};
2341
+ /**
2342
+ * A faster alternative to `Function#apply`, this function invokes `func`
2343
+ * with the `this` binding of `thisArg` and the arguments of `args`.
1622
2344
  *
1623
- * _.toPairs(new Foo);
1624
- * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
1625
- */ var $f51969c4a7467fa0$var$toPairs = $acbd35b1cbbf33e4$exports($bqLSx);
1626
- $f51969c4a7467fa0$exports = $f51969c4a7467fa0$var$toPairs;
2345
+ * @private
2346
+ * @param {Function} func The function to invoke.
2347
+ * @param {*} thisArg The `this` binding of `func`.
2348
+ * @param {Array} args The arguments to invoke `func` with.
2349
+ * @returns {*} Returns the result of `func`.
2350
+ */ function $f984f14b3d4f0683$var$apply(func, thisArg, args) {
2351
+ switch(args.length){
2352
+ case 0:
2353
+ return func.call(thisArg);
2354
+ case 1:
2355
+ return func.call(thisArg, args[0]);
2356
+ case 2:
2357
+ return func.call(thisArg, args[0], args[1]);
2358
+ case 3:
2359
+ return func.call(thisArg, args[0], args[1], args[2]);
2360
+ }
2361
+ return func.apply(thisArg, args);
2362
+ }
2363
+ $f984f14b3d4f0683$exports = $f984f14b3d4f0683$var$apply;
1627
2364
 
1628
2365
 
1629
- const $8977f8672c5de0fa$export$45f0aca2596a2bb3 = function() {
1630
- const RELEASE_TYPE = "xlrelease.Release";
1631
- const PHASE_TYPE = "xlrelease.Phase";
1632
- const TEAM_TYPE = "xlrelease.Team";
1633
- const TASK_TYPE = "xlrelease.Task";
1634
- const COMMENT_TYPE = "xlrelease.Comment";
1635
- const CONDITION_TYPE = "xlrelease.GateCondition";
1636
- const DEPENDENCY_TYPE = "xlrelease.Dependency";
1637
- const LINK_TYPE = "xlrelease.Link";
1638
- const ATTACHMENT_TYPE = "xlrelease.Attachment";
1639
- const DASHBOARD_TYPE = "xlrelease.Dashboard";
1640
- const _TRIGGER_TYPE = "xlrelease.ReleaseTrigger";
1641
- const JIRA_TYPE = "jira.CreateIssue";
1642
- const DEFAULT_TASK_OWNER = "Itchy";
1643
- const processTasks = (task, container, index)=>{
1644
- if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.type)) task.type = TASK_TYPE;
1645
- task.id = task.id || `${container.id}/Task${index}`;
1646
- if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.owner) && task.type !== JIRA_TYPE) task.owner = DEFAULT_TASK_OWNER;
1647
- if (task.owner === null) delete task.owner;
1648
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.conditions, function(condition, idx) {
1649
- condition.type = CONDITION_TYPE;
1650
- condition.id = `${task.id}/GateCondition${idx}`;
1651
- });
1652
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.dependencies, function(dependency, idx) {
1653
- dependency.type = DEPENDENCY_TYPE;
1654
- dependency.id = `${task.id}/Dependency${idx}`;
1655
- });
1656
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.links, function(link, idx) {
1657
- link.type = LINK_TYPE;
1658
- link.id = `${task.id}/Link${idx}`;
1659
- });
1660
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.comments, function(comment, idx) {
1661
- comment.type = COMMENT_TYPE;
1662
- comment.id = `${task.id}/Comment${idx}`;
1663
- });
1664
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.tasks, function(subTask, idx) {
1665
- processTasks(subTask, task, idx);
1666
- });
1667
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.templateVariables, function(variable, idx) {
1668
- (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, task.id, idx));
1669
- });
1670
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.attachments, function(attachment, idx) {
1671
- attachment.type = ATTACHMENT_TYPE;
1672
- attachment.id = `${task.id}/Attachment${idx}`;
1673
- });
1674
- if (task.pythonScript) {
1675
- const pythonScript = task.pythonScript;
1676
- pythonScript.id = `${task.id}/PythonScript`;
1677
- pythonScript.customScriptTask = task.id;
1678
- }
1679
- };
1680
- const processPhases = (phase, release, index)=>{
1681
- phase.type = PHASE_TYPE;
1682
- phase.id = `${release.id}/Phase${index}`;
1683
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(phase.tasks, (task, idx)=>{
1684
- processTasks(task, phase, idx);
1685
- });
1686
- };
1687
- const getVariableEntity = (value, key, containerId, index, password)=>{
1688
- const keyNoSyntax = key.replace("${", "").replace("}", "");
1689
- return {
1690
- id: `${containerId}/Variable${index}`,
1691
- key: keyNoSyntax,
1692
- requiresValue: true,
1693
- showOnReleaseStart: true,
1694
- type: password ? "xlrelease.PasswordStringVariable" : "xlrelease.StringVariable",
1695
- value: value
1696
- };
1697
- };
1698
- const getValueProviderConfigurationEntity = function(containerId) {
1699
- return {
1700
- id: `${containerId}/valueProvider`,
1701
- variable: containerId
1702
- };
1703
- };
1704
- const getDashboardExtension = (dashboard, releaseId)=>{
1705
- const dashboardExtension = {
1706
- id: `${releaseId}/summary`,
1707
- type: DASHBOARD_TYPE,
1708
- tiles: []
1709
- };
1710
- if (dashboard.tiles) (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(dashboard.tiles, function(tile, index) {
1711
- dashboardExtension.tiles.push(getTileEntity(tile, `${releaseId}/summary`, index));
1712
- });
1713
- return dashboardExtension;
1714
- };
1715
- function getTileEntity(tile, containerId, index) {
1716
- tile.id = tile.id || `${containerId}/Tile${index}`;
1717
- return tile;
1718
- }
1719
- return function(release) {
1720
- release.type = RELEASE_TYPE;
1721
- if (release.id.indexOf("Applications/") === -1) release.id = `Applications/${release.id}`;
1722
- if (release.startDate) release.queryableStartDate = release.startDate;
1723
- else if (release.scheduledStartDate) release.queryableStartDate = release.scheduledStartDate;
1724
- if (release.endDate) release.queryableEndDate = release.endDate;
1725
- else if (release.dueDate) release.queryableEndDate = release.dueDate;
1726
- if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(release.owner)) release.owner = "Itchy"; // default release manager
1727
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.phases, function(phase, index) {
1728
- processPhases(phase, release, index);
1729
- });
1730
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.teams, function(team, index) {
1731
- team.type = TEAM_TYPE;
1732
- team.id = `${release.id}/Team${index}`;
1733
- });
1734
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.attachments, function(attachment, index) {
1735
- attachment.type = ATTACHMENT_TYPE;
1736
- attachment.id = `${release.id}/Attachment${index}`;
1737
- });
1738
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.variables, function(variable, index) {
1739
- (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, release.id, index));
1740
- if (variable.valueProvider) (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable.valueProvider, getValueProviderConfigurationEntity(variable.id));
1741
- });
1742
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.variableValues), function(keyValue, index) {
1743
- if (!release.variables) release.variables = [];
1744
- release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1000 + index));
1745
- release.variableValues = undefined;
1746
- });
1747
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.passwordVariableValues), function(keyValue, index) {
1748
- if (!release.variables) release.variables = [];
1749
- release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1500 + index, true));
1750
- release.passwordVariableValues = undefined;
1751
- });
1752
- if (release.summary) {
1753
- release.extensions = [
1754
- getDashboardExtension(release.summary, release.id)
1755
- ];
1756
- release.summary = undefined;
1757
- }
2366
+ /* Built-in method references for those with the same name as other `lodash` methods. */ var $1b1aa0f3fc7256c9$var$nativeMax = Math.max;
2367
+ /**
2368
+ * A specialized version of `baseRest` which transforms the rest array.
2369
+ *
2370
+ * @private
2371
+ * @param {Function} func The function to apply a rest parameter to.
2372
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
2373
+ * @param {Function} transform The rest array transform.
2374
+ * @returns {Function} Returns the new function.
2375
+ */ function $1b1aa0f3fc7256c9$var$overRest(func, start, transform) {
2376
+ start = $1b1aa0f3fc7256c9$var$nativeMax(start === undefined ? func.length - 1 : start, 0);
2377
+ return function() {
2378
+ var args = arguments, index = -1, length = $1b1aa0f3fc7256c9$var$nativeMax(args.length - start, 0), array = Array(length);
2379
+ while(++index < length)array[index] = args[start + index];
2380
+ index = -1;
2381
+ var otherArgs = Array(start + 1);
2382
+ while(++index < start)otherArgs[index] = args[index];
2383
+ otherArgs[start] = transform(array);
2384
+ return $f984f14b3d4f0683$exports(func, this, otherArgs);
1758
2385
  };
1759
- }();
1760
-
1761
-
1762
-
1763
- class $f8721861c660dd88$export$2b65d1d97338f32b {
1764
- constructor(page){
1765
- this.page = page;
1766
- }
1767
2386
  }
2387
+ $1b1aa0f3fc7256c9$exports = $1b1aa0f3fc7256c9$var$overRest;
1768
2388
 
1769
2389
 
1770
- class $258749e0671c845a$export$f14c0e3f98d164c0 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1771
- /**
1772
- * Login with username and password
1773
- * @param userName
1774
- * @param password
1775
- */ async login(userName, password) {
1776
- await this.page.goto("./#/login");
1777
- await this.page.waitForTimeout(1000);
1778
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Digital.ai Release");
1779
- await this.page.getByPlaceholder("User").fill(userName, {
1780
- timeout: 1000
1781
- });
1782
- await this.page.getByPlaceholder("Password").fill(password, {
1783
- timeout: 10000
1784
- });
1785
- await this.page.getByRole("button", {
1786
- name: "Log in"
1787
- }).click({
1788
- timeout: 10000
1789
- });
1790
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Home - Digital.ai Release");
1791
- }
1792
- /**
1793
- * Logout as authenticated user
1794
- */ async logout() {
1795
- await this.page.locator("button.dot-avatar").click();
1796
- await this.page.getByText("Log out", {
1797
- exact: true
1798
- }).click();
1799
- }
1800
- /**
1801
- * Expect login to be restricted for a user
1802
- */ async expectLoginDisallowed() {
1803
- const val = await this.page.textContent('.error-content span[ng-show="loginInfo.failedStatus == 403"]');
1804
- (0, $kKeXs$playwrighttest.expect)(val).toContain("You do not have 'login' permission.");
1805
- }
1806
- /**
1807
- * Expect the respective user is logged In
1808
- * @param username
1809
- */ async expectToBeLogged(username) {
1810
- const val = await this.page.locator("top-toolbar .avatar-wrapper span.dot-tooltip").getAttribute("aria-label");
1811
- (0, $kKeXs$playwrighttest.expect)(val).toContain(username);
1812
- }
2390
+ var $0e9d1d7fde57dac1$exports = {};
2391
+ var $ef9aec5e693cb6ed$exports = {};
2392
+ var $3dc9802adab1dd60$exports = {};
2393
+ /**
2394
+ * Creates a function that returns `value`.
2395
+ *
2396
+ * @static
2397
+ * @memberOf _
2398
+ * @since 2.4.0
2399
+ * @category Util
2400
+ * @param {*} value The value to return from the new function.
2401
+ * @returns {Function} Returns the new constant function.
2402
+ * @example
2403
+ *
2404
+ * var objects = _.times(2, _.constant({ 'a': 1 }));
2405
+ *
2406
+ * console.log(objects);
2407
+ * // => [{ 'a': 1 }, { 'a': 1 }]
2408
+ *
2409
+ * console.log(objects[0] === objects[1]);
2410
+ * // => true
2411
+ */ function $3dc9802adab1dd60$var$constant(value) {
2412
+ return function() {
2413
+ return value;
2414
+ };
1813
2415
  }
2416
+ $3dc9802adab1dd60$exports = $3dc9802adab1dd60$var$constant;
1814
2417
 
1815
2418
 
2419
+ var $97bac00047c338ed$exports = {};
2420
+ var $b7745e89d7f5915f$exports = {};
2421
+ var $927414f7f9d8afbb$exports = {};
1816
2422
 
2423
+ var $7T6pQ = parcelRequire("7T6pQ");
2424
+ var $1fb1799a04ee25ea$exports = {};
2425
+ var $5ee1230bf1668e2a$exports = {};
1817
2426
 
2427
+ var $5iYlB = parcelRequire("5iYlB");
2428
+ /** Used to detect overreaching core-js shims. */ var $5ee1230bf1668e2a$var$coreJsData = $5iYlB["__core-js_shared__"];
2429
+ $5ee1230bf1668e2a$exports = $5ee1230bf1668e2a$var$coreJsData;
1818
2430
 
1819
2431
 
1820
-
1821
- class $280428cd9976d58e$export$a678525e79c4ccc4 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1822
- async expectNumberOfReleases(releaseTitle, amount) {
1823
- if (amount === 1) await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle)).toBeVisible();
1824
- else await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle).count()).toBe(amount);
1825
- }
1826
- async openReleaseByName(releaseTitle) {
1827
- await this.page.locator(".release-line .row-wrapper .release-title-wrapper a", {
1828
- hasText: releaseTitle
1829
- }).click();
1830
- return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
1831
- }
2432
+ /** Used to detect methods masquerading as native. */ var $1fb1799a04ee25ea$var$maskSrcKey = function() {
2433
+ var uid = /[^.]+$/.exec($5ee1230bf1668e2a$exports && $5ee1230bf1668e2a$exports.keys && $5ee1230bf1668e2a$exports.keys.IE_PROTO || "");
2434
+ return uid ? "Symbol(src)_1." + uid : "";
2435
+ }();
2436
+ /**
2437
+ * Checks if `func` has its source masked.
2438
+ *
2439
+ * @private
2440
+ * @param {Function} func The function to check.
2441
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
2442
+ */ function $1fb1799a04ee25ea$var$isMasked(func) {
2443
+ return !!$1fb1799a04ee25ea$var$maskSrcKey && $1fb1799a04ee25ea$var$maskSrcKey in func;
1832
2444
  }
2445
+ $1fb1799a04ee25ea$exports = $1fb1799a04ee25ea$var$isMasked;
1833
2446
 
1834
2447
 
1835
2448
 
1836
- class $133601cfe0486710$export$fb932093f944abe4 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1837
- async openRelatedReleasesOf(title) {
1838
- await this.openContextMenu(title);
1839
- await this.page.locator(".popover-content xlr-context-menu a", {
1840
- hasText: "View releases"
1841
- }).click();
1842
- return new (0, $280428cd9976d58e$export$a678525e79c4ccc4)(this.page);
1843
- }
1844
- async openContextMenu(title) {
1845
- await (0, $kKeXs$playwrighttest.expect)(async ()=>{
1846
- await this.page.locator(".trigger-row-content", {
1847
- hasText: title
1848
- }).locator(".context-menu-button").click();
1849
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".popover-content")).toBeVisible();
1850
- }).toPass();
2449
+ var $bfk90 = parcelRequire("bfk90");
2450
+ var $c6de24274df36d4e$exports = {};
2451
+ /** Used for built-in method references. */ var $c6de24274df36d4e$var$funcProto = Function.prototype;
2452
+ /** Used to resolve the decompiled source of functions. */ var $c6de24274df36d4e$var$funcToString = $c6de24274df36d4e$var$funcProto.toString;
2453
+ /**
2454
+ * Converts `func` to its source code.
2455
+ *
2456
+ * @private
2457
+ * @param {Function} func The function to convert.
2458
+ * @returns {string} Returns the source code.
2459
+ */ function $c6de24274df36d4e$var$toSource(func) {
2460
+ if (func != null) {
2461
+ try {
2462
+ return $c6de24274df36d4e$var$funcToString.call(func);
2463
+ } catch (e) {}
2464
+ try {
2465
+ return func + "";
2466
+ } catch (e) {}
1851
2467
  }
2468
+ return "";
1852
2469
  }
2470
+ $c6de24274df36d4e$exports = $c6de24274df36d4e$var$toSource;
1853
2471
 
1854
2472
 
1855
-
1856
-
1857
-
1858
- async function $ef0df8ad8a777ce6$export$a0f926f04148e5d2(locators) {
1859
- const res = await Promise.all([
1860
- ...locators.map(async (locator, index)=>{
1861
- let timedOut = false;
1862
- await locator.waitFor({
1863
- state: "visible",
1864
- timeout: 2000
1865
- }).catch(()=>timedOut = true);
1866
- return [
1867
- timedOut ? -1 : index,
1868
- locator
1869
- ];
1870
- })
1871
- ]);
1872
- const resolvedLocator = res.find((r)=>r[0] !== -1);
1873
- if (!resolvedLocator) {
1874
- console.warn("waitForOneOf", res);
1875
- throw new Error("no locator visible before timeout");
1876
- }
1877
- return resolvedLocator;
2473
+ /**
2474
+ * Used to match `RegExp`
2475
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
2476
+ */ var $927414f7f9d8afbb$var$reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
2477
+ /** Used to detect host constructors (Safari). */ var $927414f7f9d8afbb$var$reIsHostCtor = /^\[object .+?Constructor\]$/;
2478
+ /** Used for built-in method references. */ var $927414f7f9d8afbb$var$funcProto = Function.prototype, $927414f7f9d8afbb$var$objectProto = Object.prototype;
2479
+ /** Used to resolve the decompiled source of functions. */ var $927414f7f9d8afbb$var$funcToString = $927414f7f9d8afbb$var$funcProto.toString;
2480
+ /** Used to check objects for own properties. */ var $927414f7f9d8afbb$var$hasOwnProperty = $927414f7f9d8afbb$var$objectProto.hasOwnProperty;
2481
+ /** Used to detect if a method is native. */ var $927414f7f9d8afbb$var$reIsNative = RegExp("^" + $927414f7f9d8afbb$var$funcToString.call($927414f7f9d8afbb$var$hasOwnProperty).replace($927414f7f9d8afbb$var$reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
2482
+ /**
2483
+ * The base implementation of `_.isNative` without bad shim checks.
2484
+ *
2485
+ * @private
2486
+ * @param {*} value The value to check.
2487
+ * @returns {boolean} Returns `true` if `value` is a native function,
2488
+ * else `false`.
2489
+ */ function $927414f7f9d8afbb$var$baseIsNative(value) {
2490
+ if (!$bfk90(value) || $1fb1799a04ee25ea$exports(value)) return false;
2491
+ var pattern = $7T6pQ(value) ? $927414f7f9d8afbb$var$reIsNative : $927414f7f9d8afbb$var$reIsHostCtor;
2492
+ return pattern.test($c6de24274df36d4e$exports(value));
1878
2493
  }
2494
+ $927414f7f9d8afbb$exports = $927414f7f9d8afbb$var$baseIsNative;
1879
2495
 
1880
2496
 
1881
- class $fd4eef3ad2b2e612$export$a87f0ae8695e74be extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1882
- async openVariable(variableKey) {
1883
- await this.page.locator(`.variables-list .variable`).getByText(variableKey).click();
1884
- return new $fd4eef3ad2b2e612$var$ReleaseVariableModal(this.page);
1885
- }
2497
+ var $18378a7c2aff899b$exports = {};
2498
+ /**
2499
+ * Gets the value at `key` of `object`.
2500
+ *
2501
+ * @private
2502
+ * @param {Object} [object] The object to query.
2503
+ * @param {string} key The key of the property to get.
2504
+ * @returns {*} Returns the property value.
2505
+ */ function $18378a7c2aff899b$var$getValue(object, key) {
2506
+ return object == null ? undefined : object[key];
1886
2507
  }
1887
- class $fd4eef3ad2b2e612$var$ReleaseVariableModal extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1888
- async expectValue(locators, expectFn) {
1889
- const [index, locator] = await (0, $ef0df8ad8a777ce6$export$a0f926f04148e5d2)(locators);
1890
- await expectFn[index](locator);
1891
- }
1892
- async expectValueToBe(value) {
1893
- await this.expectValue([
1894
- this.page.locator("#modal .variable-value input"),
1895
- this.page.locator("#modal .variable-value .field-readonly"),
1896
- this.page.locator("#modal .variable-value .xl-map-string-string")
1897
- ], [
1898
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveValue(value),
1899
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value),
1900
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value)
1901
- ]);
1902
- }
1903
- async expectValueToContain(value) {
1904
- await this.expectValue([
1905
- this.page.locator("#modal .variable-value input"),
1906
- this.page.locator("#modal .variable-value .field-readonly"),
1907
- this.page.locator("#modal .variable-value .xl-map-string-string")
1908
- ], [
1909
- (l)=>(0, $kKeXs$playwrighttest.expect)(l.inputValue()).toContain(value),
1910
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value),
1911
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value)
1912
- ]);
1913
- }
1914
- async close() {
1915
- await this.page.locator("#modal .modal-header button.close").click();
1916
- }
2508
+ $18378a7c2aff899b$exports = $18378a7c2aff899b$var$getValue;
2509
+
2510
+
2511
+ /**
2512
+ * Gets the native function at `key` of `object`.
2513
+ *
2514
+ * @private
2515
+ * @param {Object} object The object to query.
2516
+ * @param {string} key The key of the method to get.
2517
+ * @returns {*} Returns the function if it's native, else `undefined`.
2518
+ */ function $b7745e89d7f5915f$var$getNative(object, key) {
2519
+ var value = $18378a7c2aff899b$exports(object, key);
2520
+ return $927414f7f9d8afbb$exports(value) ? value : undefined;
1917
2521
  }
2522
+ $b7745e89d7f5915f$exports = $b7745e89d7f5915f$var$getNative;
1918
2523
 
1919
2524
 
2525
+ var $97bac00047c338ed$var$defineProperty = function() {
2526
+ try {
2527
+ var func = $b7745e89d7f5915f$exports(Object, "defineProperty");
2528
+ func({}, "", {});
2529
+ return func;
2530
+ } catch (e) {}
2531
+ }();
2532
+ $97bac00047c338ed$exports = $97bac00047c338ed$var$defineProperty;
1920
2533
 
1921
2534
 
1922
- class $8be2ce0eccbe6d27$export$64c93bc7fb9ca44e extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1923
- constructor(page){
1924
- super(page);
1925
- this.railLocator = this.page.locator("task-drawer .dot-drawer .task-config");
1926
- }
1927
- async openInputProperties() {
1928
- await this.railLocator.locator(".task-config-header").getByText("Input properties").click();
1929
- }
1930
- async openOutputProperties() {
1931
- await this.railLocator.locator(".task-config-header").getByText("Output properties").click();
1932
- }
1933
- async getValueFromCi(propertyName) {
1934
- return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1935
- }
1936
- async getAllOptionsFromCi(propertyName) {
1937
- await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1938
- return this.railLocator.locator(`.dot-popper ul li`).allInnerTexts();
1939
- }
1940
- async setValueFromCi(propertyName, value) {
1941
- await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1942
- await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1943
- await this.railLocator.locator(`.dot-popper ul li`, {
1944
- hasText: value
1945
- }).click();
1946
- }
1947
- async getValueFromString(propertyName) {
1948
- await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1949
- return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1950
- }
1951
- async setValueFromString(propertyName, value) {
1952
- await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1953
- await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1954
- }
1955
- async setValueFromLargeString(propertyName, value) {
1956
- await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1957
- await this.railLocator.locator(`textarea[id="${propertyName}"]`).fill(value);
1958
- }
1959
- async setValueFromPassword(propertyName, value) {
1960
- await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1961
- }
1962
- async setAndCreateVariable(propertyName, variableName) {
1963
- await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1964
- await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1965
- await this.railLocator.locator(`input[id="${propertyName}"]`).fill(variableName);
1966
- await this.railLocator.locator(`.dot-popper button`, {
1967
- hasText: variableName
1968
- }).click();
1969
- }
1970
- async setVariable(propertyName, variableName) {
1971
- return this.setValueFromCi(propertyName, variableName);
1972
- }
1973
- async expectValueFromString(propertyName, propertyValue) {
1974
- return await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`)).toHaveText(propertyValue);
1975
- }
1976
- }
1977
2535
 
2536
+ var $9x2D6 = parcelRequire("9x2D6");
2537
+ /**
2538
+ * The base implementation of `setToString` without support for hot loop shorting.
2539
+ *
2540
+ * @private
2541
+ * @param {Function} func The function to modify.
2542
+ * @param {Function} string The `toString` result.
2543
+ * @returns {Function} Returns `func`.
2544
+ */ var $ef9aec5e693cb6ed$var$baseSetToString = !$97bac00047c338ed$exports ? $9x2D6 : function(func, string) {
2545
+ return $97bac00047c338ed$exports(func, "toString", {
2546
+ "configurable": true,
2547
+ "enumerable": false,
2548
+ "value": $3dc9802adab1dd60$exports(string),
2549
+ "writable": true
2550
+ });
2551
+ };
2552
+ $ef9aec5e693cb6ed$exports = $ef9aec5e693cb6ed$var$baseSetToString;
2553
+
2554
+
2555
+ var $f6a97849336ceea8$exports = {};
2556
+ /** Used to detect hot functions by number of calls within a span of milliseconds. */ var $f6a97849336ceea8$var$HOT_COUNT = 800, $f6a97849336ceea8$var$HOT_SPAN = 16;
2557
+ /* Built-in method references for those with the same name as other `lodash` methods. */ var $f6a97849336ceea8$var$nativeNow = Date.now;
2558
+ /**
2559
+ * Creates a function that'll short out and invoke `identity` instead
2560
+ * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
2561
+ * milliseconds.
2562
+ *
2563
+ * @private
2564
+ * @param {Function} func The function to restrict.
2565
+ * @returns {Function} Returns the new shortable function.
2566
+ */ function $f6a97849336ceea8$var$shortOut(func) {
2567
+ var count = 0, lastCalled = 0;
2568
+ return function() {
2569
+ var stamp = $f6a97849336ceea8$var$nativeNow(), remaining = $f6a97849336ceea8$var$HOT_SPAN - (stamp - lastCalled);
2570
+ lastCalled = stamp;
2571
+ if (remaining > 0) {
2572
+ if (++count >= $f6a97849336ceea8$var$HOT_COUNT) return arguments[0];
2573
+ } else count = 0;
2574
+ return func.apply(undefined, arguments);
2575
+ };
2576
+ }
2577
+ $f6a97849336ceea8$exports = $f6a97849336ceea8$var$shortOut;
1978
2578
 
1979
2579
 
2580
+ /**
2581
+ * Sets the `toString` method of `func` to return `string`.
2582
+ *
2583
+ * @private
2584
+ * @param {Function} func The function to modify.
2585
+ * @param {Function} string The `toString` result.
2586
+ * @returns {Function} Returns `func`.
2587
+ */ var $0e9d1d7fde57dac1$var$setToString = $f6a97849336ceea8$exports($ef9aec5e693cb6ed$exports);
2588
+ $0e9d1d7fde57dac1$exports = $0e9d1d7fde57dac1$var$setToString;
1980
2589
 
1981
2590
 
1982
- class $9c0b0c2caed50730$export$d4865631ba74f3e2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1983
- constructor(page){
1984
- super(page);
1985
- this.railLocator = this.page.locator("task-drawer .dot-drawer .task-conditions");
1986
- this.preconditionToggle = page.getByLabel("Enable precondition");
1987
- this.textEditor = page.getByRole("textbox");
1988
- this.saveButton = page.getByTestId("save-btn");
1989
- }
1990
- async enablePrecondition() {
1991
- (0, $kKeXs$playwrighttest.expect)(await this.preconditionToggle.isChecked()).toBe(false);
1992
- await this.preconditionToggle.check();
1993
- }
1994
- async disablePrecondition() {
1995
- (0, $kKeXs$playwrighttest.expect)(await this.preconditionToggle.isChecked()).toBe(true);
1996
- await this.preconditionToggle.uncheck();
1997
- }
1998
- async setPrecondition(script) {
1999
- await this.enablePrecondition();
2000
- await this.textEditor.fill(script);
2001
- await this.saveButton.dblclick();
2002
- await this.page.waitForTimeout(1000);
2003
- }
2591
+ /**
2592
+ * The base implementation of `_.rest` which doesn't validate or coerce arguments.
2593
+ *
2594
+ * @private
2595
+ * @param {Function} func The function to apply a rest parameter to.
2596
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
2597
+ * @returns {Function} Returns the new function.
2598
+ */ function $b1535b4ce0d1bd5f$var$baseRest(func, start) {
2599
+ return $0e9d1d7fde57dac1$exports($1b1aa0f3fc7256c9$exports(func, start, $9x2D6), func + "");
2004
2600
  }
2601
+ $b1535b4ce0d1bd5f$exports = $b1535b4ce0d1bd5f$var$baseRest;
2005
2602
 
2006
2603
 
2007
- class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2008
- constructor(page){
2009
- super(page);
2010
- this.taskDrawerLocator = this.page.locator("task-drawer .dot-drawer");
2011
- this.retryButton = this.page.getByRole("button", {
2012
- name: "Retry"
2013
- });
2014
- this.cancelButton = this.page.getByTestId("task-action-cancel");
2015
- this.commentBox = this.page.getByTestId("task-action-comment");
2016
- this.confirm = this.page.getByTestId("task-action-confirm");
2017
- this.config = new (0, $8be2ce0eccbe6d27$export$64c93bc7fb9ca44e)(page);
2018
- this.condition = new (0, $9c0b0c2caed50730$export$d4865631ba74f3e2)(page);
2019
- this.skipMenu = this.page.getByRole("menuitem", {
2020
- name: "Skip"
2021
- });
2022
- }
2023
- async openOverviewRail() {
2024
- await this.openRail("Overview");
2025
- }
2026
- async openActivityRail() {
2027
- await this.openRail("Activity");
2028
- }
2029
- async openSchedulingRail() {
2030
- await this.openRail("Scheduling");
2031
- }
2032
- async openConditionRail() {
2033
- await this.openRail("Conditions");
2034
- }
2035
- async openAttributesRail() {
2036
- await this.openRail("Attributes");
2037
- }
2038
- async openAttachRail() {
2039
- await this.openRail("Attach");
2040
- }
2041
- async openTagsRail() {
2042
- await this.openRail("Tags");
2043
- }
2044
- async openRail(rail) {
2045
- await this.taskDrawerLocator.locator(".task-navigation-rail").getByText(rail).click();
2046
- }
2047
- async close() {
2048
- await this.taskDrawerLocator.locator(".task-drawer-header").getByTestId("close-btn").click();
2049
- }
2050
- async retryTask(comment) {
2051
- await this.retryButton.click();
2052
- await this.commentBox.fill(comment);
2053
- await this.confirm.click();
2054
- }
2055
- async skipTask(comment) {
2056
- await this.page.getByRole("button", {
2057
- name: "arrow-down icon",
2058
- exact: true
2059
- }).click();
2060
- await this.skipMenu.click();
2061
- await this.commentBox.fill(comment);
2062
- await this.confirm.click();
2063
- }
2604
+ var $ceebddaa7160689c$exports = {};
2605
+ /**
2606
+ * Performs a
2607
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2608
+ * comparison between two values to determine if they are equivalent.
2609
+ *
2610
+ * @static
2611
+ * @memberOf _
2612
+ * @since 4.0.0
2613
+ * @category Lang
2614
+ * @param {*} value The value to compare.
2615
+ * @param {*} other The other value to compare.
2616
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2617
+ * @example
2618
+ *
2619
+ * var object = { 'a': 1 };
2620
+ * var other = { 'a': 1 };
2621
+ *
2622
+ * _.eq(object, object);
2623
+ * // => true
2624
+ *
2625
+ * _.eq(object, other);
2626
+ * // => false
2627
+ *
2628
+ * _.eq('a', 'a');
2629
+ * // => true
2630
+ *
2631
+ * _.eq('a', Object('a'));
2632
+ * // => false
2633
+ *
2634
+ * _.eq(NaN, NaN);
2635
+ * // => true
2636
+ */ function $ceebddaa7160689c$var$eq(value, other) {
2637
+ return value === other || value !== value && other !== other;
2064
2638
  }
2639
+ $ceebddaa7160689c$exports = $ceebddaa7160689c$var$eq;
2065
2640
 
2066
2641
 
2067
- class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2068
- constructor(page){
2069
- super(page);
2070
- this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
2071
- }
2072
- async openTriggers() {
2073
- await this.openSubPage("Triggers");
2074
- return new (0, $133601cfe0486710$export$fb932093f944abe4)(this.page);
2075
- }
2076
- async abort(comment = "Abort for testing") {
2077
- await this.page.locator("action-toolbar button", {
2078
- hasText: "Abort"
2079
- }).click();
2080
- await this.page.locator(".modal textarea").fill(comment);
2081
- await this.page.locator(".modal .continue").click();
2082
- }
2083
- getPhase(phaseName) {
2084
- return new $9b9a8c3da392d020$var$Phase(this.page, phaseName);
2085
- }
2086
- async start() {
2087
- await this.page.getByTestId("start-btn").click();
2088
- await this.page.getByRole("button", {
2089
- name: "Start"
2090
- }).click();
2091
- }
2092
- async waitForTaskCompleted(taskTitle) {
2093
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.completed").getByText(taskTitle, {
2094
- exact: true
2095
- })).toBeVisible({
2096
- timeout: 10000
2097
- });
2098
- }
2099
- async waitForTaskFailed(taskTitle) {
2100
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.failed").getByText(taskTitle, {
2101
- exact: true
2102
- })).toBeVisible({
2103
- timeout: 10000
2104
- });
2105
- }
2106
- async waitForTaskSkipped(taskTitle) {
2107
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.skipped").getByText(taskTitle, {
2108
- exact: true
2109
- })).toBeVisible({
2110
- timeout: 10000
2111
- });
2112
- }
2113
- async waitForTaskAborted(taskTitle) {
2114
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.aborted").getByText(taskTitle, {
2115
- exact: true
2116
- })).toBeVisible({
2117
- timeout: 10000
2118
- });
2119
- }
2120
- async waitForStatusLine(statusLine) {
2121
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task .status-line").getByText(statusLine, {
2122
- exact: true
2123
- })).toBeVisible({
2124
- timeout: 10000
2125
- });
2126
- }
2127
- async waitForTaskStarted(taskTitle) {
2128
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.in_progress").getByTitle(taskTitle, {
2129
- exact: true
2130
- })).toBeVisible({
2131
- timeout: 10000
2132
- });
2133
- }
2134
- async openTaskDrawer(taskName) {
2135
- await this.page.locator(".task-header").getByText(taskName).click();
2136
- return this.taskDrawer;
2137
- }
2138
- async openVariables() {
2139
- await this.openReleaseMenu("Variables");
2140
- return new (0, $fd4eef3ad2b2e612$export$a87f0ae8695e74be)(this.page);
2141
- }
2142
- async openReleaseMenu(menuItem) {
2143
- await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
2144
- exact: true
2145
- }).click();
2146
- }
2147
- async openSubPage(subpage) {
2148
- await this.page.locator("ul.side-nav li", {
2149
- hasText: subpage
2150
- }).click();
2151
- }
2152
- async openTask(taskName) {
2153
- await this.page.getByTitle(taskName, {
2154
- exact: true
2155
- }).click();
2156
- }
2157
- async collapseAllTaskView() {
2158
- const icCollapseTreeview1 = this.page.locator("div.pull-left.expander.ng-scope i.xl-icon.arrow-down-icon");
2159
- for (const element of (await icCollapseTreeview1.all())){
2160
- const blnVal = await element.isVisible();
2161
- if (blnVal) {
2162
- await element.click();
2163
- await this.collapseAllTaskView();
2164
- }
2165
- }
2166
- }
2167
- async expandAllTaskView() {
2168
- const icExpandTreeview1 = this.page.locator("div.pull-left.expander.ng-scope i.xl-icon.arrow-right-icon");
2169
- for (const element of (await icExpandTreeview1.all())){
2170
- const blnVal = await element.isVisible();
2171
- if (blnVal) {
2172
- await element.click();
2173
- await this.expandAllTaskView();
2174
- }
2642
+ var $e084f044678f4365$exports = {};
2643
+
2644
+
2645
+ var $fegcS = parcelRequire("fegcS");
2646
+
2647
+ var $gf9YK = parcelRequire("gf9YK");
2648
+
2649
+ var $bfk90 = parcelRequire("bfk90");
2650
+ /**
2651
+ * Checks if the given arguments are from an iteratee call.
2652
+ *
2653
+ * @private
2654
+ * @param {*} value The potential iteratee value argument.
2655
+ * @param {*} index The potential iteratee index or key argument.
2656
+ * @param {*} object The potential iteratee object argument.
2657
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
2658
+ * else `false`.
2659
+ */ function $e084f044678f4365$var$isIterateeCall(value, index, object) {
2660
+ if (!$bfk90(object)) return false;
2661
+ var type = typeof index;
2662
+ if (type == "number" ? $fegcS(object) && $gf9YK(index, object.length) : type == "string" && index in object) return $ceebddaa7160689c$exports(object[index], value);
2663
+ return false;
2664
+ }
2665
+ $e084f044678f4365$exports = $e084f044678f4365$var$isIterateeCall;
2666
+
2667
+
2668
+ var $0e6e2e34ec44a72a$exports = {};
2669
+
2670
+ var $gYWmw = parcelRequire("gYWmw");
2671
+ var $b4b8b2a977b4cc10$exports = {};
2672
+
2673
+ var $bfk90 = parcelRequire("bfk90");
2674
+
2675
+ var $cjTq2 = parcelRequire("cjTq2");
2676
+ var $59b6e790ee7519e4$exports = {};
2677
+ /**
2678
+ * This function is like
2679
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
2680
+ * except that it includes inherited enumerable properties.
2681
+ *
2682
+ * @private
2683
+ * @param {Object} object The object to query.
2684
+ * @returns {Array} Returns the array of property names.
2685
+ */ function $59b6e790ee7519e4$var$nativeKeysIn(object) {
2686
+ var result = [];
2687
+ if (object != null) for(var key in Object(object))result.push(key);
2688
+ return result;
2689
+ }
2690
+ $59b6e790ee7519e4$exports = $59b6e790ee7519e4$var$nativeKeysIn;
2691
+
2692
+
2693
+ /** Used for built-in method references. */ var $b4b8b2a977b4cc10$var$objectProto = Object.prototype;
2694
+ /** Used to check objects for own properties. */ var $b4b8b2a977b4cc10$var$hasOwnProperty = $b4b8b2a977b4cc10$var$objectProto.hasOwnProperty;
2695
+ /**
2696
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
2697
+ *
2698
+ * @private
2699
+ * @param {Object} object The object to query.
2700
+ * @returns {Array} Returns the array of property names.
2701
+ */ function $b4b8b2a977b4cc10$var$baseKeysIn(object) {
2702
+ if (!$bfk90(object)) return $59b6e790ee7519e4$exports(object);
2703
+ var isProto = $cjTq2(object), result = [];
2704
+ for(var key in object)if (!(key == "constructor" && (isProto || !$b4b8b2a977b4cc10$var$hasOwnProperty.call(object, key)))) result.push(key);
2705
+ return result;
2706
+ }
2707
+ $b4b8b2a977b4cc10$exports = $b4b8b2a977b4cc10$var$baseKeysIn;
2708
+
2709
+
2710
+
2711
+ var $fegcS = parcelRequire("fegcS");
2712
+ /**
2713
+ * Creates an array of the own and inherited enumerable property names of `object`.
2714
+ *
2715
+ * **Note:** Non-object values are coerced to objects.
2716
+ *
2717
+ * @static
2718
+ * @memberOf _
2719
+ * @since 3.0.0
2720
+ * @category Object
2721
+ * @param {Object} object The object to query.
2722
+ * @returns {Array} Returns the array of property names.
2723
+ * @example
2724
+ *
2725
+ * function Foo() {
2726
+ * this.a = 1;
2727
+ * this.b = 2;
2728
+ * }
2729
+ *
2730
+ * Foo.prototype.c = 3;
2731
+ *
2732
+ * _.keysIn(new Foo);
2733
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
2734
+ */ function $0e6e2e34ec44a72a$var$keysIn(object) {
2735
+ return $fegcS(object) ? $gYWmw(object, true) : $b4b8b2a977b4cc10$exports(object);
2736
+ }
2737
+ $0e6e2e34ec44a72a$exports = $0e6e2e34ec44a72a$var$keysIn;
2738
+
2739
+
2740
+ /** Used for built-in method references. */ var $732eba8dca8b5420$var$objectProto = Object.prototype;
2741
+ /** Used to check objects for own properties. */ var $732eba8dca8b5420$var$hasOwnProperty = $732eba8dca8b5420$var$objectProto.hasOwnProperty;
2742
+ /**
2743
+ * Assigns own and inherited enumerable string keyed properties of source
2744
+ * objects to the destination object for all destination properties that
2745
+ * resolve to `undefined`. Source objects are applied from left to right.
2746
+ * Once a property is set, additional values of the same property are ignored.
2747
+ *
2748
+ * **Note:** This method mutates `object`.
2749
+ *
2750
+ * @static
2751
+ * @since 0.1.0
2752
+ * @memberOf _
2753
+ * @category Object
2754
+ * @param {Object} object The destination object.
2755
+ * @param {...Object} [sources] The source objects.
2756
+ * @returns {Object} Returns `object`.
2757
+ * @see _.defaultsDeep
2758
+ * @example
2759
+ *
2760
+ * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
2761
+ * // => { 'a': 1, 'b': 2 }
2762
+ */ var $732eba8dca8b5420$var$defaults = $b1535b4ce0d1bd5f$exports(function(object, sources) {
2763
+ object = Object(object);
2764
+ var index = -1;
2765
+ var length = sources.length;
2766
+ var guard = length > 2 ? sources[2] : undefined;
2767
+ if (guard && $e084f044678f4365$exports(sources[0], sources[1], guard)) length = 1;
2768
+ while(++index < length){
2769
+ var source = sources[index];
2770
+ var props = $0e6e2e34ec44a72a$exports(source);
2771
+ var propsIndex = -1;
2772
+ var propsLength = props.length;
2773
+ while(++propsIndex < propsLength){
2774
+ var key = props[propsIndex];
2775
+ var value = object[key];
2776
+ if (value === undefined || $ceebddaa7160689c$exports(value, $732eba8dca8b5420$var$objectProto[key]) && !$732eba8dca8b5420$var$hasOwnProperty.call(object, key)) object[key] = source[key];
2175
2777
  }
2176
2778
  }
2779
+ return object;
2780
+ });
2781
+ $732eba8dca8b5420$exports = $732eba8dca8b5420$var$defaults;
2782
+
2783
+
2784
+ var $f51969c4a7467fa0$exports = {};
2785
+ var $acbd35b1cbbf33e4$exports = {};
2786
+ var $34482bf0fdb87aa6$exports = {};
2787
+ var $c258ac491a64b22b$exports = {};
2788
+ /**
2789
+ * A specialized version of `_.map` for arrays without support for iteratee
2790
+ * shorthands.
2791
+ *
2792
+ * @private
2793
+ * @param {Array} [array] The array to iterate over.
2794
+ * @param {Function} iteratee The function invoked per iteration.
2795
+ * @returns {Array} Returns the new mapped array.
2796
+ */ function $c258ac491a64b22b$var$arrayMap(array, iteratee) {
2797
+ var index = -1, length = array == null ? 0 : array.length, result = Array(length);
2798
+ while(++index < length)result[index] = iteratee(array[index], index, array);
2799
+ return result;
2177
2800
  }
2178
- class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2179
- constructor(page, phaseName){
2180
- super(page);
2181
- this.phaseLocator = page.locator(".phase", {
2182
- hasText: phaseName
2183
- });
2184
- }
2185
- async addTask(taskName, taskGroup, taskType) {
2186
- await this.phaseLocator.getByText("Add task", {
2187
- exact: true
2188
- }).click();
2189
- await this.phaseLocator.locator(".quick-title").fill(taskName);
2190
- await this.phaseLocator.locator(".xlr-ctx-menu-toggle").click();
2191
- await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, {
2192
- exact: true
2193
- }).scrollIntoViewIfNeeded();
2194
- await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, {
2195
- exact: true
2196
- }).hover();
2197
- await this.page.locator(`.xlr-ctx-menu.active`).getByTitle(taskType, {
2198
- exact: true
2199
- }).click();
2200
- await this.phaseLocator.locator(".quick-controls-container a").getByText("Add", {
2201
- exact: true
2202
- }).click();
2203
- }
2801
+ $c258ac491a64b22b$exports = $c258ac491a64b22b$var$arrayMap;
2802
+
2803
+
2804
+ /**
2805
+ * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
2806
+ * of key-value pairs for `object` corresponding to the property names of `props`.
2807
+ *
2808
+ * @private
2809
+ * @param {Object} object The object to query.
2810
+ * @param {Array} props The property names to get values for.
2811
+ * @returns {Object} Returns the key-value pairs.
2812
+ */ function $34482bf0fdb87aa6$var$baseToPairs(object, props) {
2813
+ return $c258ac491a64b22b$exports(props, function(key) {
2814
+ return [
2815
+ key,
2816
+ object[key]
2817
+ ];
2818
+ });
2204
2819
  }
2820
+ $34482bf0fdb87aa6$exports = $34482bf0fdb87aa6$var$baseToPairs;
2205
2821
 
2206
2822
 
2823
+ var $2184c74fd3b50571$exports = {};
2824
+ var $9707ed10f1d74f7d$exports = {};
2207
2825
 
2208
2826
 
2209
- class $dc91ece6da6cadfa$export$1533b625ec0c75e2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2210
- async goToApplicationsPage() {
2211
- await this.page.goto("./#/applications");
2212
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Applications - Digital.ai Release");
2213
- return this;
2214
- }
2215
- async addNewApplication(applicationName) {
2216
- await this.page.locator(`//button[normalize-space()='New application']`).click();
2217
- await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
2218
- await this.page.locator(`//button[normalize-space()='Save']`).click();
2219
- return this;
2220
- }
2221
- async verifyApplicationisCreated(applicationName) {
2222
- await this.page.waitForSelector(`div[title='${applicationName}'] strong`);
2223
- return this;
2224
- }
2225
- async createApplicationAndLinkEnvironment(environmentName, applicationName) {
2226
- await this.page.locator(`//button[normalize-space()='New application']`).click();
2227
- await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
2228
- await this.page.locator("input[placeholder='Filter environment name...']").type(environmentName);
2229
- await this.page.locator(`div[title='${environmentName}']`).click();
2230
- await this.page.locator(`//button[normalize-space()='Save']`).click();
2231
- await this.page.locator("i.xl-icon.close-icon").click();
2232
- return this;
2827
+ var $5iYlB = parcelRequire("5iYlB");
2828
+ /* Built-in method references that are verified to be native. */ var $9707ed10f1d74f7d$var$DataView = $b7745e89d7f5915f$exports($5iYlB, "DataView");
2829
+ $9707ed10f1d74f7d$exports = $9707ed10f1d74f7d$var$DataView;
2830
+
2831
+
2832
+ var $8c4ecd35968046d6$exports = {};
2833
+
2834
+
2835
+ var $5iYlB = parcelRequire("5iYlB");
2836
+ /* Built-in method references that are verified to be native. */ var $8c4ecd35968046d6$var$Map = $b7745e89d7f5915f$exports($5iYlB, "Map");
2837
+ $8c4ecd35968046d6$exports = $8c4ecd35968046d6$var$Map;
2838
+
2839
+
2840
+ var $30f4d64ddd8effd1$exports = {};
2841
+
2842
+
2843
+ var $5iYlB = parcelRequire("5iYlB");
2844
+ /* Built-in method references that are verified to be native. */ var $30f4d64ddd8effd1$var$Promise = $b7745e89d7f5915f$exports($5iYlB, "Promise");
2845
+ $30f4d64ddd8effd1$exports = $30f4d64ddd8effd1$var$Promise;
2846
+
2847
+
2848
+ var $869474d4b330cc35$exports = {};
2849
+
2850
+
2851
+ var $5iYlB = parcelRequire("5iYlB");
2852
+ /* Built-in method references that are verified to be native. */ var $869474d4b330cc35$var$Set = $b7745e89d7f5915f$exports($5iYlB, "Set");
2853
+ $869474d4b330cc35$exports = $869474d4b330cc35$var$Set;
2854
+
2855
+
2856
+ var $c4df061ad36170d9$exports = {};
2857
+
2858
+
2859
+ var $5iYlB = parcelRequire("5iYlB");
2860
+ /* Built-in method references that are verified to be native. */ var $c4df061ad36170d9$var$WeakMap = $b7745e89d7f5915f$exports($5iYlB, "WeakMap");
2861
+ $c4df061ad36170d9$exports = $c4df061ad36170d9$var$WeakMap;
2862
+
2863
+
2864
+
2865
+ var $hi3Ib = parcelRequire("hi3Ib");
2866
+
2867
+ /** `Object#toString` result references. */ var $2184c74fd3b50571$var$mapTag = "[object Map]", $2184c74fd3b50571$var$objectTag = "[object Object]", $2184c74fd3b50571$var$promiseTag = "[object Promise]", $2184c74fd3b50571$var$setTag = "[object Set]", $2184c74fd3b50571$var$weakMapTag = "[object WeakMap]";
2868
+ var $2184c74fd3b50571$var$dataViewTag = "[object DataView]";
2869
+ /** Used to detect maps, sets, and weakmaps. */ var $2184c74fd3b50571$var$dataViewCtorString = $c6de24274df36d4e$exports($9707ed10f1d74f7d$exports), $2184c74fd3b50571$var$mapCtorString = $c6de24274df36d4e$exports($8c4ecd35968046d6$exports), $2184c74fd3b50571$var$promiseCtorString = $c6de24274df36d4e$exports($30f4d64ddd8effd1$exports), $2184c74fd3b50571$var$setCtorString = $c6de24274df36d4e$exports($869474d4b330cc35$exports), $2184c74fd3b50571$var$weakMapCtorString = $c6de24274df36d4e$exports($c4df061ad36170d9$exports);
2870
+ /**
2871
+ * Gets the `toStringTag` of `value`.
2872
+ *
2873
+ * @private
2874
+ * @param {*} value The value to query.
2875
+ * @returns {string} Returns the `toStringTag`.
2876
+ */ var $2184c74fd3b50571$var$getTag = $hi3Ib;
2877
+ // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
2878
+ if ($9707ed10f1d74f7d$exports && $2184c74fd3b50571$var$getTag(new $9707ed10f1d74f7d$exports(new ArrayBuffer(1))) != $2184c74fd3b50571$var$dataViewTag || $8c4ecd35968046d6$exports && $2184c74fd3b50571$var$getTag(new $8c4ecd35968046d6$exports) != $2184c74fd3b50571$var$mapTag || $30f4d64ddd8effd1$exports && $2184c74fd3b50571$var$getTag($30f4d64ddd8effd1$exports.resolve()) != $2184c74fd3b50571$var$promiseTag || $869474d4b330cc35$exports && $2184c74fd3b50571$var$getTag(new $869474d4b330cc35$exports) != $2184c74fd3b50571$var$setTag || $c4df061ad36170d9$exports && $2184c74fd3b50571$var$getTag(new $c4df061ad36170d9$exports) != $2184c74fd3b50571$var$weakMapTag) $2184c74fd3b50571$var$getTag = function(value) {
2879
+ var result = $hi3Ib(value), Ctor = result == $2184c74fd3b50571$var$objectTag ? value.constructor : undefined, ctorString = Ctor ? $c6de24274df36d4e$exports(Ctor) : "";
2880
+ if (ctorString) switch(ctorString){
2881
+ case $2184c74fd3b50571$var$dataViewCtorString:
2882
+ return $2184c74fd3b50571$var$dataViewTag;
2883
+ case $2184c74fd3b50571$var$mapCtorString:
2884
+ return $2184c74fd3b50571$var$mapTag;
2885
+ case $2184c74fd3b50571$var$promiseCtorString:
2886
+ return $2184c74fd3b50571$var$promiseTag;
2887
+ case $2184c74fd3b50571$var$setCtorString:
2888
+ return $2184c74fd3b50571$var$setTag;
2889
+ case $2184c74fd3b50571$var$weakMapCtorString:
2890
+ return $2184c74fd3b50571$var$weakMapTag;
2233
2891
  }
2892
+ return result;
2893
+ };
2894
+ $2184c74fd3b50571$exports = $2184c74fd3b50571$var$getTag;
2895
+
2896
+
2897
+ var $5cfa9b34443304aa$exports = {};
2898
+ /**
2899
+ * Converts `map` to its key-value pairs.
2900
+ *
2901
+ * @private
2902
+ * @param {Object} map The map to convert.
2903
+ * @returns {Array} Returns the key-value pairs.
2904
+ */ function $5cfa9b34443304aa$var$mapToArray(map) {
2905
+ var index = -1, result = Array(map.size);
2906
+ map.forEach(function(value, key) {
2907
+ result[++index] = [
2908
+ key,
2909
+ value
2910
+ ];
2911
+ });
2912
+ return result;
2234
2913
  }
2914
+ $5cfa9b34443304aa$exports = $5cfa9b34443304aa$var$mapToArray;
2235
2915
 
2236
2916
 
2917
+ var $e0efec8f59f2b46b$exports = {};
2918
+ /**
2919
+ * Converts `set` to its value-value pairs.
2920
+ *
2921
+ * @private
2922
+ * @param {Object} set The set to convert.
2923
+ * @returns {Array} Returns the value-value pairs.
2924
+ */ function $e0efec8f59f2b46b$var$setToPairs(set) {
2925
+ var index = -1, result = Array(set.size);
2926
+ set.forEach(function(value) {
2927
+ result[++index] = [
2928
+ value,
2929
+ value
2930
+ ];
2931
+ });
2932
+ return result;
2933
+ }
2934
+ $e0efec8f59f2b46b$exports = $e0efec8f59f2b46b$var$setToPairs;
2237
2935
 
2238
2936
 
2239
- class $be4dd73206d8e76b$export$3cac5fd37ae64b91 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2240
- async openPersonalAccessTokenPage() {
2241
- // await this.page.locator("button.dot-avatar").click()
2242
- // await this.page.locator("//div[normalize-space()='Access tokens']").click()
2243
- await this.page.goto("./#/personal-access-token");
2244
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Access tokens / Personal settings - Digital.ai Release");
2245
- return this;
2246
- }
2247
- async addNewToken(tokenName) {
2248
- //await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release')
2249
- await this.page.locator("#tokenText").fill(tokenName);
2250
- await this.page.locator("button[type='submit']").click();
2251
- return this;
2252
- }
2937
+ /** `Object#toString` result references. */ var $acbd35b1cbbf33e4$var$mapTag = "[object Map]", $acbd35b1cbbf33e4$var$setTag = "[object Set]";
2938
+ /**
2939
+ * Creates a `_.toPairs` or `_.toPairsIn` function.
2940
+ *
2941
+ * @private
2942
+ * @param {Function} keysFunc The function to get the keys of a given object.
2943
+ * @returns {Function} Returns the new pairs function.
2944
+ */ function $acbd35b1cbbf33e4$var$createToPairs(keysFunc) {
2945
+ return function(object) {
2946
+ var tag = $2184c74fd3b50571$exports(object);
2947
+ if (tag == $acbd35b1cbbf33e4$var$mapTag) return $5cfa9b34443304aa$exports(object);
2948
+ if (tag == $acbd35b1cbbf33e4$var$setTag) return $e0efec8f59f2b46b$exports(object);
2949
+ return $34482bf0fdb87aa6$exports(object, keysFunc(object));
2950
+ };
2253
2951
  }
2952
+ $acbd35b1cbbf33e4$exports = $acbd35b1cbbf33e4$var$createToPairs;
2254
2953
 
2255
2954
 
2256
2955
 
2956
+ var $bqLSx = parcelRequire("bqLSx");
2957
+ /**
2958
+ * Creates an array of own enumerable string keyed-value pairs for `object`
2959
+ * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
2960
+ * entries are returned.
2961
+ *
2962
+ * @static
2963
+ * @memberOf _
2964
+ * @since 4.0.0
2965
+ * @alias entries
2966
+ * @category Object
2967
+ * @param {Object} object The object to query.
2968
+ * @returns {Array} Returns the key-value pairs.
2969
+ * @example
2970
+ *
2971
+ * function Foo() {
2972
+ * this.a = 1;
2973
+ * this.b = 2;
2974
+ * }
2975
+ *
2976
+ * Foo.prototype.c = 3;
2977
+ *
2978
+ * _.toPairs(new Foo);
2979
+ * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
2980
+ */ var $f51969c4a7467fa0$var$toPairs = $acbd35b1cbbf33e4$exports($bqLSx);
2981
+ $f51969c4a7467fa0$exports = $f51969c4a7467fa0$var$toPairs;
2257
2982
 
2258
2983
 
2259
- class $bb5572a48b31014a$export$e2e2e1ffdce20c30 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2260
- constructor(page){
2261
- super(page);
2262
- this.userName = page.locator("#username");
2263
- this.name = page.locator("#full-name");
2264
- this.email = page.locator("#email");
2265
- this.password = page.locator('[data-test="password-input"]');
2266
- this.cnfPassword = page.locator("#passwordConfirmation");
2267
- this.saveButton = page.getByRole("button", {
2268
- name: "Save"
2984
+ const $8977f8672c5de0fa$export$45f0aca2596a2bb3 = function() {
2985
+ const RELEASE_TYPE = "xlrelease.Release";
2986
+ const PHASE_TYPE = "xlrelease.Phase";
2987
+ const TEAM_TYPE = "xlrelease.Team";
2988
+ const TASK_TYPE = "xlrelease.Task";
2989
+ const COMMENT_TYPE = "xlrelease.Comment";
2990
+ const CONDITION_TYPE = "xlrelease.GateCondition";
2991
+ const DEPENDENCY_TYPE = "xlrelease.Dependency";
2992
+ const LINK_TYPE = "xlrelease.Link";
2993
+ const ATTACHMENT_TYPE = "xlrelease.Attachment";
2994
+ const DASHBOARD_TYPE = "xlrelease.Dashboard";
2995
+ const _TRIGGER_TYPE = "xlrelease.ReleaseTrigger";
2996
+ const JIRA_TYPE = "jira.CreateIssue";
2997
+ const DEFAULT_TASK_OWNER = "Itchy";
2998
+ const processTasks = (task, container, index)=>{
2999
+ if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.type)) task.type = TASK_TYPE;
3000
+ task.id = task.id || `${container.id}/Task${index}`;
3001
+ if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.owner) && task.type !== JIRA_TYPE) task.owner = DEFAULT_TASK_OWNER;
3002
+ if (task.owner === null) delete task.owner;
3003
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.conditions, function(condition, idx) {
3004
+ condition.type = CONDITION_TYPE;
3005
+ condition.id = `${task.id}/GateCondition${idx}`;
2269
3006
  });
2270
- this.cancelButton = page.getByRole("button", {
2271
- name: "Cancel"
3007
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.dependencies, function(dependency, idx) {
3008
+ dependency.type = DEPENDENCY_TYPE;
3009
+ dependency.id = `${task.id}/Dependency${idx}`;
2272
3010
  });
2273
- this.deleteButton = page.getByRole("button", {
2274
- name: "Delete"
3011
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.links, function(link, idx) {
3012
+ link.type = LINK_TYPE;
3013
+ link.id = `${task.id}/Link${idx}`;
2275
3014
  });
2276
- }
2277
- async setUserName(username) {
2278
- return await this.userName.fill(username);
2279
- }
2280
- async setFullName(fullName) {
2281
- return await this.name.fill(fullName);
2282
- }
2283
- async setEmail(email) {
2284
- return await this.email.fill(email);
2285
- }
2286
- async setPassword(password) {
2287
- return await this.password.fill(password);
2288
- }
2289
- async setConfirmPassword(cnfPassword) {
2290
- return await this.cnfPassword.fill(cnfPassword);
2291
- }
2292
- async save() {
2293
- await this.saveButton.click();
2294
- }
2295
- async cancel() {
2296
- await this.cancelButton.click();
2297
- }
2298
- async delete() {
2299
- await this.deleteButton.click();
2300
- }
2301
- }
2302
-
2303
-
2304
- class $3ceab7c613cabfd6$export$107317390f5aa598 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2305
- constructor(page){
2306
- super(page);
2307
- this.page = page;
2308
- this.newUserButton = this.page.getByTestId("new-user-btn");
2309
- this.modal = new (0, $bb5572a48b31014a$export$e2e2e1ffdce20c30)(page);
2310
- }
2311
- async openUsersPage() {
2312
- this.page.goto("./#/users", {
2313
- timeout: 1000
3015
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.comments, function(comment, idx) {
3016
+ comment.type = COMMENT_TYPE;
3017
+ comment.id = `${task.id}/Comment${idx}`;
2314
3018
  });
2315
- }
2316
- async toggleLoginPermission(username) {
2317
- await this.page.getByRole("row", {
2318
- name: "" + username + ""
2319
- }).getByRole("checkbox").check();
2320
- //await this.page.locator(`tr:contains('${username}') .login-permission input`).click();
2321
- }
2322
- async addUser() {
2323
- await this.newUserButton.click();
2324
- }
2325
- async createUser(username, password) {
2326
- await this.modal.setUserName(username);
2327
- await this.modal.setFullName(username);
2328
- await this.modal.setEmail("testuser@company.com");
2329
- await this.modal.setPassword(password);
2330
- await this.modal.setConfirmPassword(password);
2331
- await this.modal.save();
2332
- }
2333
- async expectToHaveLoginPermission(username) {
2334
- return await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("row", {
2335
- name: "" + username + ""
2336
- }).getByRole("checkbox")).toBeChecked();
2337
- }
2338
- async deleteUser(username) {
2339
- await this.page.getByRole("row", {
2340
- name: "" + username + ""
2341
- }).locator("i").nth(1).click();
2342
- await this.modal.delete();
2343
- }
2344
- }
2345
-
2346
-
2347
-
2348
- class $7867194f18360347$export$1d7840d5cdc861d5 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2349
- constructor(page){
2350
- super(page);
2351
- this.settingsIcon = this.page.getByRole("button", {
2352
- name: "Settings"
3019
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.tasks, function(subTask, idx) {
3020
+ processTasks(subTask, task, idx);
2353
3021
  });
2354
- this.usersAndPermissionMenu = this.page.getByRole("menuitem", {
2355
- name: "users icon Users and permissions"
3022
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.templateVariables, function(variable, idx) {
3023
+ (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, task.id, idx));
2356
3024
  });
2357
- this.managePluginMenu = this.page.getByRole("menuitem", {
2358
- name: "plugins icon Manage plugins"
3025
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.attachments, function(attachment, idx) {
3026
+ attachment.type = ATTACHMENT_TYPE;
3027
+ attachment.id = `${task.id}/Attachment${idx}`;
2359
3028
  });
2360
- }
2361
- async openUsersAndPermissions() {
2362
- await this.settingsIcon.click();
2363
- await this.usersAndPermissionMenu.click();
2364
- }
2365
- async openManagePlugin() {
2366
- await this.settingsIcon.click();
2367
- await this.managePluginMenu.click();
2368
- }
2369
- }
2370
-
2371
-
2372
-
2373
- class $a642d735048996f9$export$922081b54f2ab994 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2374
- constructor(page){
2375
- super(page);
2376
- }
2377
- }
2378
-
2379
-
2380
-
2381
-
2382
- class $a8855257f8bb2b12$export$43682cddead1dd78 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2383
- async openReleaseCalendarPage() {
2384
- await this.page.goto("./#/calendar");
2385
- //Define date format to verify different calendar views
2386
- const today = new Date();
2387
- let options = {
2388
- weekday: "long",
2389
- year: "numeric",
2390
- month: "short",
2391
- day: "numeric"
3029
+ if (task.pythonScript) {
3030
+ const pythonScript = task.pythonScript;
3031
+ pythonScript.id = `${task.id}/PythonScript`;
3032
+ pythonScript.customScriptTask = task.id;
3033
+ }
3034
+ };
3035
+ const processPhases = (phase, release, index)=>{
3036
+ phase.type = PHASE_TYPE;
3037
+ phase.id = `${release.id}/Phase${index}`;
3038
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(phase.tasks, (task, idx)=>{
3039
+ processTasks(task, phase, idx);
3040
+ });
3041
+ };
3042
+ const getVariableEntity = (value, key, containerId, index, password)=>{
3043
+ const keyNoSyntax = key.replace("${", "").replace("}", "");
3044
+ return {
3045
+ id: `${containerId}/Variable${index}`,
3046
+ key: keyNoSyntax,
3047
+ requiresValue: true,
3048
+ showOnReleaseStart: true,
3049
+ type: password ? "xlrelease.PasswordStringVariable" : "xlrelease.StringVariable",
3050
+ value: value
2392
3051
  };
2393
- this.dayFormat = today.toLocaleDateString("en-US", options); // Saturday, September 17, 2016
2394
- this.yearFormat = today.getFullYear();
2395
- this.yearFormatString = this.yearFormat.toString();
2396
- options = {
2397
- month: "long",
2398
- year: "numeric"
3052
+ };
3053
+ const getValueProviderConfigurationEntity = function(containerId) {
3054
+ return {
3055
+ id: `${containerId}/valueProvider`,
3056
+ variable: containerId
2399
3057
  };
2400
- this.monthFormat = today.toLocaleDateString("en-US", options);
2401
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Release calendar / Home - Digital.ai Release");
2402
- return this;
2403
- }
2404
- async exportCalendar() {
2405
- // eslint-disable-next-line @typescript-eslint/no-empty-function
2406
- this.page.on("download", ()=>{});
2407
- await this.page.getByRole("button", {
2408
- name: "download icon Export calendar"
2409
- }).click();
2410
- const downloadPromise = this.page.waitForEvent("download");
2411
- await this.page.getByRole("button", {
2412
- name: "Export"
2413
- }).click();
2414
- await downloadPromise;
2415
- }
2416
- async cancelCalendarExport() {
2417
- let downloadCount = 0;
2418
- // Listen to download events
2419
- this.page.on("download", (_download)=>{
2420
- downloadCount++;
3058
+ };
3059
+ const getDashboardExtension = (dashboard, releaseId)=>{
3060
+ const dashboardExtension = {
3061
+ id: `${releaseId}/summary`,
3062
+ type: DASHBOARD_TYPE,
3063
+ tiles: []
3064
+ };
3065
+ if (dashboard.tiles) (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(dashboard.tiles, function(tile, index) {
3066
+ dashboardExtension.tiles.push(getTileEntity(tile, `${releaseId}/summary`, index));
2421
3067
  });
2422
- await this.page.getByRole("button", {
2423
- name: "download icon Export calendar"
2424
- }).click();
2425
- await this.page.getByRole("button", {
2426
- name: "Cancel"
2427
- }).click();
2428
- return downloadCount;
2429
- }
2430
- async verifyDayView() {
2431
- await this.page.getByRole("combobox").click();
2432
- await this.page.getByRole("option", {
2433
- name: "Day"
2434
- }).click();
2435
- await this.page.getByRole("button", {
2436
- name: "Today"
2437
- }).click();
2438
- //Verify Page has correct day format displayed at the page bottom
2439
- await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(this.dayFormat)).toBeVisible();
2440
- }
2441
- async verifyYearView() {
2442
- await this.page.getByRole("combobox").click();
2443
- await this.page.getByRole("option", {
2444
- name: "Year"
2445
- }).click();
2446
- await this.page.getByRole("button", {
2447
- name: "Today"
2448
- }).click();
2449
- //Verify Page has correct Year format displayed at the page bottom
2450
- await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(this.yearFormatString)).toBeVisible();
2451
- }
2452
- }
2453
-
2454
-
2455
- class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
2456
- constructor(page){
2457
- this.page = page;
2458
- this.releasePage = new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(page);
2459
- this.settingsMenu = new (0, $7867194f18360347$export$1d7840d5cdc861d5)(page);
2460
- this.usersPage = new (0, $3ceab7c613cabfd6$export$107317390f5aa598)(page);
2461
- this.applicationPage = new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(page);
2462
- this.taskDetailsPage = new (0, $a642d735048996f9$export$922081b54f2ab994)(page);
2463
- this.releaseCalendarPage = new (0, $a8855257f8bb2b12$export$43682cddead1dd78)(page);
2464
- }
2465
- async openTemplate(id) {
2466
- return this.openReleaseOrTemplate(id, false);
2467
- }
2468
- async openRelease(id) {
2469
- return this.openReleaseOrTemplate(id, true);
2470
- }
2471
- async openApplicationsPage() {
2472
- return new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(this.page).goToApplicationsPage();
2473
- }
2474
- async openPersonalAccessTokenPage() {
2475
- return new (0, $be4dd73206d8e76b$export$3cac5fd37ae64b91)(this.page).openPersonalAccessTokenPage();
2476
- }
2477
- async gotoFolderPage() {
2478
- await this.page.locator("ul.side-nav li", {
2479
- hasText: "Folders"
2480
- }).click();
2481
- }
2482
- async gotoTaskPage() {
2483
- await this.page.locator("ul.side-nav li", {
2484
- hasText: "Tasks"
2485
- }).click();
2486
- }
2487
- async gotoReleasePage() {
2488
- await this.page.locator("ul.side-nav li", {
2489
- hasText: "Releases"
2490
- }).click();
2491
- }
2492
- async gotoWorkflowCatalogPage() {
2493
- await this.page.locator("ul.side-nav li", {
2494
- hasText: "Workflow catalog"
2495
- }).click();
2496
- }
2497
- async gotoWorkflowsPage() {
2498
- await this.page.locator("ul.side-nav li", {
2499
- hasText: "Workflows"
2500
- }).click();
2501
- }
2502
- async gotoGroupsPage() {
2503
- await this.page.locator("ul.side-nav li", {
2504
- hasText: "Groups"
2505
- }).click();
2506
- }
2507
- async gotoReleaseCalenderPage() {
2508
- await this.page.locator("ul.side-nav li", {
2509
- hasText: "Release calendar"
2510
- }).click();
2511
- }
2512
- async gotoDeliveriesPage() {
2513
- await this.page.locator("ul.side-nav li", {
2514
- hasText: "Deliveries"
2515
- }).click();
2516
- }
2517
- async gotoTriggersPage() {
2518
- await this.page.locator("ul.side-nav li", {
2519
- hasText: "Triggers"
2520
- }).click();
2521
- }
2522
- async gotoDigitalAnalyticsPage() {
2523
- await this.page.locator("ul.side-nav li", {
2524
- hasText: "Digital.ai Analytics"
2525
- }).click();
2526
- }
2527
- async gotoReportsPage() {
2528
- await this.page.locator("ul.side-nav li", {
2529
- hasText: "Reports"
2530
- }).click();
2531
- }
2532
- async gotoTemplatesPage() {
2533
- await this.page.locator("ul.side-nav li", {
2534
- hasText: "Templates"
2535
- }).click();
2536
- }
2537
- async gotoEnvironmentsPage() {
2538
- await this.page.locator("ul.side-nav li", {
2539
- hasText: "Environments"
2540
- }).click();
2541
- }
2542
- async gotoEnvironmentsCalenderPage() {
2543
- await this.page.locator("ul.side-nav li", {
2544
- hasText: "Environments calendar"
2545
- }).click();
2546
- }
2547
- async gotoGobalVariablesPage() {
2548
- await this.page.locator("ul.side-nav li", {
2549
- hasText: "Global variables"
2550
- }).click();
2551
- }
2552
- async gotoConnectionsPage() {
2553
- await this.page.locator("ul.side-nav li", {
2554
- hasText: "Connections"
2555
- }).click();
2556
- }
2557
- async openReleaseOrTemplate(id, release) {
2558
- const url = release ? "releases" : "templates";
2559
- await this.page.goto(`./#/${url}/${id}`);
2560
- await this.page.waitForSelector("#release");
2561
- return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
3068
+ return dashboardExtension;
3069
+ };
3070
+ function getTileEntity(tile, containerId, index) {
3071
+ tile.id = tile.id || `${containerId}/Tile${index}`;
3072
+ return tile;
2562
3073
  }
2563
- }
3074
+ return function(release) {
3075
+ release.type = RELEASE_TYPE;
3076
+ if (release.id.indexOf("Applications/") === -1) release.id = `Applications/${release.id}`;
3077
+ if (release.startDate) release.queryableStartDate = release.startDate;
3078
+ else if (release.scheduledStartDate) release.queryableStartDate = release.scheduledStartDate;
3079
+ if (release.endDate) release.queryableEndDate = release.endDate;
3080
+ else if (release.dueDate) release.queryableEndDate = release.dueDate;
3081
+ if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(release.owner)) release.owner = "Itchy"; // default release manager
3082
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.phases, function(phase, index) {
3083
+ processPhases(phase, release, index);
3084
+ });
3085
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.teams, function(team, index) {
3086
+ team.type = TEAM_TYPE;
3087
+ team.id = `${release.id}/Team${index}`;
3088
+ });
3089
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.attachments, function(attachment, index) {
3090
+ attachment.type = ATTACHMENT_TYPE;
3091
+ attachment.id = `${release.id}/Attachment${index}`;
3092
+ });
3093
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.variables, function(variable, index) {
3094
+ (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, release.id, index));
3095
+ if (variable.valueProvider) (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable.valueProvider, getValueProviderConfigurationEntity(variable.id));
3096
+ });
3097
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.variableValues), function(keyValue, index) {
3098
+ if (!release.variables) release.variables = [];
3099
+ release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1000 + index));
3100
+ release.variableValues = undefined;
3101
+ });
3102
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.passwordVariableValues), function(keyValue, index) {
3103
+ if (!release.variables) release.variables = [];
3104
+ release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1500 + index, true));
3105
+ release.passwordVariableValues = undefined;
3106
+ });
3107
+ if (release.summary) {
3108
+ release.extensions = [
3109
+ getDashboardExtension(release.summary, release.id)
3110
+ ];
3111
+ release.summary = undefined;
3112
+ }
3113
+ };
3114
+ }();
2564
3115
 
2565
3116
 
2566
3117
 
3118
+ const $6998c6a53a9eb4fa$var$JIRA_ISSUE_API_URL = "https://digitalai.atlassian.net/rest/api/2/issue";
2567
3119
  const $6998c6a53a9eb4fa$var$adminHeaders = {
2568
3120
  Authorization: "Basic YWRtaW46YWRtaW4=",
2569
3121
  Cookie: "XSRF-TOKEN=1;",
@@ -2587,29 +3139,46 @@ const $6998c6a53a9eb4fa$export$e0969da9b8fb378d = (0, $kKeXs$playwrighttest.test
2587
3139
  }
2588
3140
  });
2589
3141
  class $6998c6a53a9eb4fa$var$Fixtures {
3142
+ archivedReleaseIds = [];
2590
3143
  releaseIds = [];
2591
3144
  triggerIds = [];
2592
3145
  configurationIds = [];
3146
+ globalVariableIds = [];
3147
+ folderIds = [];
2593
3148
  usernames = [];
2594
3149
  userProfiles = [];
2595
3150
  constructor(request, page){
2596
3151
  this.request = request;
2597
3152
  this.page = page;
2598
3153
  }
2599
- async release(release) {
3154
+ release(release) {
2600
3155
  this.initDefaults(release);
2601
3156
  this.releaseIds.push(release.id);
2602
3157
  return this.deleteRelease(release.id).then(()=>this.deleteArchivedRelease(release.id)).then(()=>this.doPost("fixtures/release", release));
2603
3158
  }
3159
+ archivedRelease(release) {
3160
+ this.initDefaults(release);
3161
+ this.archivedReleaseIds.push(release.id);
3162
+ return this.doPost("fixtures/archived", release);
3163
+ }
2604
3164
  configuration(ci) {
2605
3165
  this.configurationIds.push(ci.id);
2606
3166
  return this.doPost("fixtures/shared", [
2607
3167
  ci
2608
3168
  ]);
2609
3169
  }
2610
- trigger(trigger) {
2611
- this.triggerIds.push(trigger.id);
2612
- return this.doPost("fixtures/trigger", trigger);
3170
+ getParentId(id) {
3171
+ return id.substring(0, id.lastIndexOf("/"));
3172
+ }
3173
+ folder(folder) {
3174
+ const parentId = this.getParentId(folder.id);
3175
+ //ToDo: Add system teams
3176
+ /* eslint-disable @typescript-eslint/no-unused-vars */ const teams = folder.teams;
3177
+ delete folder.teams;
3178
+ //ToDo: Add Children
3179
+ const children = folder.children || [];
3180
+ delete folder.children;
3181
+ /* eslint-disable @typescript-eslint/no-unused-vars */ return this.doPost(`api/v1/folders/${parentId}`, folder);
2613
3182
  }
2614
3183
  deleteArchivedRelease(id) {
2615
3184
  const releaseId = id.includes("Applications/") ? id : `Applications/${id}`;
@@ -2624,6 +3193,12 @@ class $6998c6a53a9eb4fa$var$Fixtures {
2624
3193
  const releaseId = id.includes("Applications/") ? id : `Applications/${id}`;
2625
3194
  return this.doDelete(`fixtures/${releaseId}`);
2626
3195
  }
3196
+ deleteUser(username) {
3197
+ return this.doDelete(`fixtures/user/${username}`);
3198
+ }
3199
+ deleteUserProfile(userProfile) {
3200
+ return this.doDelete(`fixtures/userProfile/${userProfile}`);
3201
+ }
2627
3202
  deleteTrigger(id) {
2628
3203
  return this.doDelete(`fixtures/trigger/${id}`);
2629
3204
  }
@@ -2632,19 +3207,96 @@ class $6998c6a53a9eb4fa$var$Fixtures {
2632
3207
  id
2633
3208
  ]);
2634
3209
  }
2635
- cleanAll() {
2636
- const promises = [];
2637
- for (const releaseId of this.releaseIds.reverse())promises.push(this.deleteRelease(releaseId));
2638
- for (const triggerId of this.triggerIds)promises.push(this.deleteTrigger(triggerId));
2639
- for (const confId of this.configurationIds)promises.push(this.deleteConfiguration(confId));
2640
- for (const usernames of this.usernames)promises.push(this.deleteUser(usernames));
2641
- for (const userProfiles of this.userProfiles)promises.push(this.deleteUserProfile(userProfiles));
3210
+ deleteFolder(folderId) {
3211
+ const id = this.doGet(`api/v1/folders/${folderId}`);
3212
+ return this.doDelete(`api/v1/folders/${id}`);
3213
+ }
3214
+ activityLogs(id, logs) {
3215
+ return this.doPost(`fixtures/activityLogs/${id}`, logs);
3216
+ }
3217
+ globalVariable(variable) {
3218
+ variable.id = variable.id || `Configuration/variables/global/Variable_${variable.key}`;
3219
+ this.globalVariableIds.push(variable.id);
3220
+ variable.requiresValue = false;
3221
+ variable.showOnReleaseStart = false;
3222
+ return this.doPost("api/v1/config/Configuration/variables/global", variable);
3223
+ }
3224
+ async cleanAll() {
3225
+ for (const username of this.usernames)await this.deleteUser(username);
3226
+ for (const userProfile of this.userProfiles)await this.deleteUserProfile(userProfile);
3227
+ for (const triggerId of this.triggerIds)await this.deleteTrigger(triggerId);
3228
+ for (const releaseId of this.releaseIds.reverse())await this.deleteRelease(releaseId);
3229
+ for (const confId of this.configurationIds)await this.deleteConfiguration(confId);
3230
+ for (const folderId of this.folderIds.reverse())await this.deleteFolder(folderId);
3231
+ this.folderIds = [];
2642
3232
  this.releaseIds = [];
2643
3233
  this.triggerIds = [];
2644
3234
  this.configurationIds = [];
2645
3235
  this.usernames = [];
2646
3236
  this.userProfiles = [];
2647
- return Promise.all(promises);
3237
+ }
3238
+ async addJiraTask() {
3239
+ const data = {
3240
+ fields: {
3241
+ project: {
3242
+ key: "RIT"
3243
+ },
3244
+ summary: "Test Task",
3245
+ description: "Test task description",
3246
+ issuetype: {
3247
+ name: "Task"
3248
+ }
3249
+ }
3250
+ };
3251
+ const headers = {
3252
+ Authorization: `Basic ${btoa("xlr-jira-testuser@xebialabs.com:zgsXK6c3oLVkJxrWVJQy9DB7")}`,
3253
+ Origin: "https://digitalai.atlassian.net/"
3254
+ };
3255
+ const response = await this.request.post($6998c6a53a9eb4fa$var$JIRA_ISSUE_API_URL, {
3256
+ data: data,
3257
+ headers: headers
3258
+ });
3259
+ const json = await response.json();
3260
+ return json.key;
3261
+ }
3262
+ async addUser(username, password) {
3263
+ this.usernames.push(username);
3264
+ await this.doPost("fixtures/user", {
3265
+ username: username,
3266
+ password: password
3267
+ });
3268
+ }
3269
+ async addUserProfile(username, profile) {
3270
+ if (!profile) profile = {};
3271
+ profile.id = username;
3272
+ profile.type = "xlrelease.UserProfile";
3273
+ profile.canonicalId = username.toLowerCase();
3274
+ this.userProfiles.push(profile.canonicalId);
3275
+ await this.doPost("fixtures/userProfile", profile);
3276
+ }
3277
+ async expectJiraTaskStatus(taskId, expectedStatus) {
3278
+ const headers = {
3279
+ Authorization: `Basic ${btoa("xlr-jira-testuser@xebialabs.com:zgsXK6c3oLVkJxrWVJQy9DB7")}`,
3280
+ Origin: "https://digitalai.atlassian.net/"
3281
+ };
3282
+ const response = await this.request.get(`${$6998c6a53a9eb4fa$var$JIRA_ISSUE_API_URL}/${taskId}`, {
3283
+ headers: headers
3284
+ });
3285
+ const json = await response.json();
3286
+ const status = json.fields.status.name;
3287
+ (0, $kKeXs$playwrighttest.expect)(status).toBe(expectedStatus);
3288
+ }
3289
+ async expectJiraTaskSummary(taskId, expectedSummary) {
3290
+ const headers = {
3291
+ Authorization: `Basic ${btoa("xlr-jira-testuser@xebialabs.com:zgsXK6c3oLVkJxrWVJQy9DB7")}`,
3292
+ Origin: "https://digitalai.atlassian.net/"
3293
+ };
3294
+ const response = await this.request.get(`${$6998c6a53a9eb4fa$var$JIRA_ISSUE_API_URL}/${taskId}`, {
3295
+ headers: headers
3296
+ });
3297
+ const json = await response.json();
3298
+ const summary = json.fields.summary;
3299
+ (0, $kKeXs$playwrighttest.expect)(summary).toBe(expectedSummary);
2648
3300
  }
2649
3301
  async waitForReleaseStarted(releaseTitle) {
2650
3302
  await (0, $kKeXs$playwrighttest.expect)(async ()=>{
@@ -2680,6 +3332,12 @@ class $6998c6a53a9eb4fa$var$Fixtures {
2680
3332
  getEnvVariable(name) {
2681
3333
  return $kKeXs$process.env[name];
2682
3334
  }
3335
+ async archiveRelease(releaseId) {
3336
+ return this.doGet(`fixtures/archive/${releaseId}`);
3337
+ }
3338
+ async preArchiveRelease(releaseId) {
3339
+ return this.doGet(`fixtures/preArchive/${releaseId}`);
3340
+ }
2683
3341
  async setFeatures(features) {
2684
3342
  return this.doPut("settings/features", features);
2685
3343
  }
@@ -2688,32 +3346,10 @@ class $6998c6a53a9eb4fa$var$Fixtures {
2688
3346
  {
2689
3347
  id: "Configuration/features/xlrelease.TaskDrawer",
2690
3348
  type: "xlrelease.TaskDrawer",
2691
- category: "Stable",
2692
3349
  enabled: enabled
2693
3350
  }
2694
3351
  ]);
2695
3352
  }
2696
- async addUser(username, password) {
2697
- this.usernames.push(username);
2698
- return await this.doPost("fixtures/user", {
2699
- username: username,
2700
- password: password
2701
- });
2702
- }
2703
- async addUserProfile(username, profile) {
2704
- if (!profile) profile = {};
2705
- profile.id = username;
2706
- profile.type = "xlrelease.UserProfile";
2707
- profile.canonicalId = username.toLowerCase();
2708
- this.userProfiles.push(profile.canonicalId);
2709
- return await this.doPost("fixtures/userProfile", profile);
2710
- }
2711
- async deleteUser(username) {
2712
- return await this.request.delete(`fixtures/user/${username}`);
2713
- }
2714
- async deleteUserProfile(username) {
2715
- return await this.request.delete(`fixtures/userProfile/${username}`);
2716
- }
2717
3353
  doPost(url, body) {
2718
3354
  return this.request.post(url, {
2719
3355
  data: body,