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

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