@digital-ai/devops-page-object-release 0.0.7 → 0.0.9

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,1233 +947,1561 @@ 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;
950
971
 
951
972
 
973
+ var $952a2b8d8056b381$exports = {};
952
974
 
975
+ $952a2b8d8056b381$exports = (parcelRequire("ae8Uz"));
953
976
 
954
- class $f8721861c660dd88$export$2b65d1d97338f32b {
955
- constructor(page){
956
- this.page = page;
957
- }
958
- }
959
977
 
960
978
 
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
- else await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle).count()).toBe(amount);
965
- }
966
- async openReleaseByName(releaseTitle) {
967
- await this.page.locator(".release-line .row-wrapper .release-title-wrapper a", {
968
- hasText: releaseTitle
969
- }).click();
970
- return new (0, $fcbf42f405a34f2e$export$f43492e8ac3c566)(this.page);
979
+ var $ae8Uz = parcelRequire("ae8Uz");
980
+ var $732eba8dca8b5420$exports = {};
981
+ var $b1535b4ce0d1bd5f$exports = {};
982
+
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]);
971
1005
  }
1006
+ return func.apply(thisArg, args);
972
1007
  }
1008
+ $f984f14b3d4f0683$exports = $f984f14b3d4f0683$var$apply;
973
1009
 
974
1010
 
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
+ };
1031
+ }
1032
+ $1b1aa0f3fc7256c9$exports = $1b1aa0f3fc7256c9$var$overRest;
975
1033
 
976
- class $133601cfe0486710$export$fb932093f944abe4 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
977
- async openRelatedReleasesOf(title) {
978
- await this.openContextMenu(title);
979
- await this.page.locator(".popover-content xlr-context-menu a", {
980
- hasText: "View releases"
981
- }).click();
982
- return new (0, $87643f2d97b0644e$export$a678525e79c4ccc4)(this.page);
983
- }
984
- async openContextMenu(title) {
985
- await (0, $kKeXs$playwrighttest.expect)(async ()=>{
986
- await this.page.locator(".trigger-row-content", {
987
- hasText: title
988
- }).locator(".context-menu-button").click();
989
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".popover-content")).toBeVisible();
990
- }).toPass();
991
- }
1034
+
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
+ };
992
1060
  }
1061
+ $3dc9802adab1dd60$exports = $3dc9802adab1dd60$var$constant;
993
1062
 
994
1063
 
1064
+ var $97bac00047c338ed$exports = {};
1065
+ var $b7745e89d7f5915f$exports = {};
1066
+ var $927414f7f9d8afbb$exports = {};
1067
+
1068
+ var $7T6pQ = parcelRequire("7T6pQ");
1069
+ var $1fb1799a04ee25ea$exports = {};
1070
+ var $5ee1230bf1668e2a$exports = {};
995
1071
 
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;
996
1075
 
997
1076
 
998
- class $4cb1d878399c7551$export$90ba71b7d7997728 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
999
- constructor(page){
1000
- super(page);
1001
- this.taskModalLocator = this.page.locator(".modal-content.task-details");
1002
- }
1003
- async close() {
1004
- await this.taskModalLocator.locator(".modal-header button.close").click();
1005
- }
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;
1006
1089
  }
1090
+ $1fb1799a04ee25ea$exports = $1fb1799a04ee25ea$var$isMasked;
1007
1091
 
1008
1092
 
1009
- class $487fa7328f6a6cf2$export$b66cc3708c7bd4a4 extends (0, $4cb1d878399c7551$export$90ba71b7d7997728) {
1010
- async expectFieldNotEmpty(field) {
1011
- await (0, $kKeXs$playwrighttest.expect)(this.taskModalLocator.locator(`#${field} .display`).textContent).toBeDefined();
1012
- }
1013
- async setSelectField(propertyName, value) {
1014
- await this.focusOnField(propertyName);
1015
- await this.taskModalLocator.locator(`select[name="${propertyName}"]`).selectOption(value);
1016
- }
1017
- async setTextField(propertyName, value) {
1018
- await this.focusOnField(propertyName);
1019
- await this.taskModalLocator.locator(`input[name="${propertyName}"]`).fill(value);
1020
- }
1021
- async setAutocompleteField(propertyName, value) {
1022
- await this.focusOnAutocompleteField(propertyName);
1023
- await this.taskModalLocator.locator(`#${propertyName} ul li`).getByText(value).click();
1024
- }
1025
- async expectOutputValueToBe(propertyName, value) {
1026
- await (0, $kKeXs$playwrighttest.expect)(this.taskModalLocator.locator(`#${propertyName} .field-readonly span`)).toContainText(value);
1027
- }
1028
- // TODO move this to a new inline-editor
1029
- async focusOnField(propertyName) {
1030
- await (0, $kKeXs$playwrighttest.expect)(async ()=>{
1031
- await this.taskModalLocator.locator(`#${propertyName} .display`).click({
1032
- force: true
1033
- });
1034
- await (0, $kKeXs$playwrighttest.expect)(this.taskModalLocator.locator(`#${propertyName} label.edit`)).toBeVisible();
1035
- }).toPass();
1036
- }
1037
- async focusOnAutocompleteField(propertyName) {
1038
- await (0, $kKeXs$playwrighttest.expect)(async ()=>{
1039
- await this.taskModalLocator.locator(`#${propertyName} input`).click({
1040
- force: true
1041
- });
1042
- await (0, $kKeXs$playwrighttest.expect)(this.taskModalLocator.locator(`#${propertyName} ul`)).toBeVisible();
1043
- }).toPass();
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) {}
1044
1112
  }
1113
+ return "";
1045
1114
  }
1115
+ $c6de24274df36d4e$exports = $c6de24274df36d4e$var$toSource;
1046
1116
 
1047
1117
 
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;
1048
1140
 
1049
1141
 
1050
- async function $ef0df8ad8a777ce6$export$a0f926f04148e5d2(locators) {
1051
- const res = await Promise.all([
1052
- ...locators.map(async (locator, index)=>{
1053
- let timedOut = false;
1054
- await locator.waitFor({
1055
- state: "visible",
1056
- timeout: 2000
1057
- }).catch(()=>timedOut = true);
1058
- return [
1059
- timedOut ? -1 : index,
1060
- locator
1061
- ];
1062
- })
1063
- ]);
1064
- const resolvedLocator = res.find((r)=>r[0] !== -1);
1065
- if (!resolvedLocator) {
1066
- console.warn("waitForOneOf", res);
1067
- throw new Error("no locator visible before timeout");
1068
- }
1069
- return resolvedLocator;
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];
1070
1152
  }
1153
+ $18378a7c2aff899b$exports = $18378a7c2aff899b$var$getValue;
1071
1154
 
1072
1155
 
1073
- class $e53d02b209248a0b$export$a87f0ae8695e74be extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1074
- async openVariable(variableKey) {
1075
- await this.page.locator(`.variables-list .variable`).getByText(variableKey).click();
1076
- return new $e53d02b209248a0b$var$ReleaseVariableModal(this.page);
1077
- }
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;
1078
1166
  }
1079
- class $e53d02b209248a0b$var$ReleaseVariableModal extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1080
- async expectValue(locators, expectFn) {
1081
- const [index, locator] = await (0, $ef0df8ad8a777ce6$export$a0f926f04148e5d2)(locators);
1082
- await expectFn[index](locator);
1083
- }
1084
- async expectValueToBe(value) {
1085
- await this.expectValue([
1086
- this.page.locator("#modal .variable-value input"),
1087
- this.page.locator("#modal .variable-value .field-readonly"),
1088
- this.page.locator("#modal .variable-value .xl-map-string-string")
1089
- ], [
1090
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveValue(value),
1091
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value),
1092
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value)
1093
- ]);
1094
- }
1095
- async expectValueToContain(value) {
1096
- await this.expectValue([
1097
- this.page.locator("#modal .variable-value input"),
1098
- this.page.locator("#modal .variable-value .field-readonly"),
1099
- this.page.locator("#modal .variable-value .xl-map-string-string")
1100
- ], [
1101
- (l)=>(0, $kKeXs$playwrighttest.expect)(l.inputValue()).toContain(value),
1102
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value),
1103
- (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value)
1104
- ]);
1105
- }
1106
- async close() {
1107
- await this.page.locator("#modal .modal-header button.close").click();
1108
- }
1109
- }
1110
-
1111
-
1112
-
1113
-
1114
- class $d91a6ef09b618c8d$export$e946776eae644790 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1115
- constructor(page){
1116
- super(page);
1117
- this.taskDrawerLocator = this.page.locator("task-drawer .dot-drawer");
1118
- }
1119
- async openConfigRail() {
1120
- await this.openRail("Config");
1121
- return new $d91a6ef09b618c8d$var$ConfigRail(this.page);
1122
- }
1123
- async openRail(rail) {
1124
- await this.taskDrawerLocator.locator(".task-navigation-rail").getByText(rail).click();
1125
- }
1126
- async close() {
1127
- await this.taskDrawerLocator.locator(".task-drawer-header").getByTestId("close-btn").click();
1128
- }
1129
- }
1130
- class $d91a6ef09b618c8d$var$ConfigRail extends $d91a6ef09b618c8d$export$e946776eae644790 {
1131
- constructor(page){
1132
- super(page);
1133
- this.railLocator = this.taskDrawerLocator.locator(".task-config");
1134
- }
1135
- async openInputProperties() {
1136
- await this.railLocator.locator(".task-config-header").getByText("Input properties").click();
1137
- }
1138
- async openOutputProperties() {
1139
- await this.railLocator.locator(".task-config-header").getByText("Output properties").click();
1140
- }
1141
- async getValueFromCi(propertyName) {
1142
- return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1143
- }
1144
- async getAllOptionsFromCi(propertyName) {
1145
- await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1146
- return this.railLocator.locator(`.dot-popper ul li`).allInnerTexts();
1147
- }
1148
- async setValueFromCi(propertyName, value) {
1149
- await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1150
- await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1151
- await this.railLocator.locator(`.dot-popper ul li`, {
1152
- hasText: value
1153
- }).click();
1154
- }
1155
- async getValueFromString(propertyName) {
1156
- await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1157
- return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1158
- }
1159
- async setValueFromString(propertyName, value) {
1160
- await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1161
- await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1162
- }
1163
- async setValueFromLargeString(propertyName, value) {
1164
- await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1165
- await this.railLocator.locator(`textarea[id="${propertyName}"]`).fill(value);
1166
- }
1167
- async setValueFromPassword(propertyName, value) {
1168
- await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1169
- }
1170
- async setAndCreateVariable(propertyName, variableName) {
1171
- await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1172
- await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1173
- await this.railLocator.locator(`input[id="${propertyName}"]`).fill(variableName);
1174
- await this.railLocator.locator(`.dot-popper button`, {
1175
- hasText: variableName
1176
- }).click();
1177
- }
1178
- async setVariable(propertyName, variableName) {
1179
- return this.setValueFromCi(propertyName, variableName);
1180
- }
1181
- async expectValueFromString(propertyName, propertyValue) {
1182
- return await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`)).toHaveText(propertyValue);
1183
- }
1184
- }
1185
-
1186
-
1187
- class $fcbf42f405a34f2e$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1188
- async openTriggers() {
1189
- await this.openSubPage("Triggers");
1190
- return new (0, $133601cfe0486710$export$fb932093f944abe4)(this.page);
1191
- }
1192
- async abort(comment = "Abort for testing") {
1193
- await this.page.locator("action-toolbar button", {
1194
- hasText: "Abort"
1195
- }).click();
1196
- await this.page.locator(".modal textarea").fill(comment);
1197
- await this.page.locator(".modal .continue").click();
1198
- }
1199
- getPhase(phaseName) {
1200
- return new $fcbf42f405a34f2e$var$Phase(this.page, phaseName);
1201
- }
1202
- async start() {
1203
- await this.page.locator("action-toolbar button", {
1204
- hasText: "Start"
1205
- }).click();
1206
- await this.page.locator(".modal button.primary").click();
1207
- }
1208
- async waitForTaskCompleted(taskTitle) {
1209
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.completed").getByText(taskTitle, {
1210
- exact: true
1211
- })).toBeVisible();
1212
- }
1213
- async waitForTaskFailed(taskTitle) {
1214
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.failed").getByText(taskTitle, {
1215
- exact: true
1216
- })).toBeVisible();
1217
- }
1218
- async waitForStatusLine(statusLine) {
1219
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task .status-line").getByText(statusLine, {
1220
- exact: true
1221
- })).toBeVisible();
1222
- }
1223
- /**
1224
- * @deprecated Don't use this, use new TaskDrawer
1225
- */ async openCustomScriptTaskModal(taskName) {
1226
- await this.page.locator(".task-header").getByText(taskName).click();
1227
- return new (0, $487fa7328f6a6cf2$export$b66cc3708c7bd4a4)(this.page);
1228
- }
1229
- async openTaskDrawer(taskName) {
1230
- await this.page.locator(".task-header").getByText(taskName).click();
1231
- return new (0, $d91a6ef09b618c8d$export$e946776eae644790)(this.page);
1232
- }
1233
- async openVariables() {
1234
- await this.openReleaseMenu("Variables");
1235
- return new (0, $e53d02b209248a0b$export$a87f0ae8695e74be)(this.page);
1236
- }
1237
- async openReleaseMenu(menuItem) {
1238
- await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
1239
- exact: true
1240
- }).click();
1241
- }
1242
- async openSubPage(subpage) {
1243
- await this.page.locator("ul.side-nav li", {
1244
- hasText: subpage
1245
- }).click();
1246
- }
1247
- }
1248
- class $fcbf42f405a34f2e$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1249
- constructor(page, phaseName){
1250
- super(page);
1251
- this.phaseLocator = page.locator(".phase", {
1252
- hasText: phaseName
1253
- });
1254
- }
1255
- async addTask(taskName, taskGroup, taskType) {
1256
- await this.phaseLocator.getByText("Add task").click();
1257
- await this.phaseLocator.locator(".quick-title").fill(taskName);
1258
- await this.phaseLocator.locator(".xlr-ctx-menu-toggle").click();
1259
- await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, {
1260
- exact: true
1261
- }).scrollIntoViewIfNeeded();
1262
- await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, {
1263
- exact: true
1264
- }).hover();
1265
- await this.page.locator(`.xlr-ctx-menu.active`).getByTitle(taskType, {
1266
- exact: true
1267
- }).click();
1268
- await this.phaseLocator.locator(".quick-controls-container a").getByText("Add", {
1269
- exact: true
1270
- }).click();
1271
- }
1272
- }
1273
-
1274
-
1275
-
1167
+ $b7745e89d7f5915f$exports = $b7745e89d7f5915f$var$getNative;
1276
1168
 
1277
- class $dc91ece6da6cadfa$export$1533b625ec0c75e2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1278
- async goToApplicationsPage() {
1279
- await this.page.goto("./#/applications");
1280
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Applications - Digital.ai Release");
1281
- return this;
1282
- }
1283
- async addNewApplication(applicationName) {
1284
- await this.page.locator(`//button[normalize-space()='New application']`).click();
1285
- await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
1286
- await this.page.locator(`//button[normalize-space()='Save']`).click();
1287
- return this;
1288
- }
1289
- async verifyApplicationisCreated(applicationName) {
1290
- await this.page.waitForSelector(`div[title='${applicationName}'] strong`);
1291
- return this;
1292
- }
1293
- async createApplicationAndLinkEnvironment(environmentName, applicationName) {
1294
- await this.page.locator(`//button[normalize-space()='New application']`).click();
1295
- await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
1296
- await this.page.locator("input[placeholder='Filter environment name...']").type(environmentName);
1297
- await this.page.locator(`div[title='${environmentName}']`).click();
1298
- await this.page.locator(`//button[normalize-space()='Save']`).click();
1299
- await this.page.locator("i.xl-icon.close-icon").click();
1300
- return this;
1301
- }
1302
- }
1303
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;
1304
1178
 
1305
1179
 
1306
1180
 
1307
- class $be4dd73206d8e76b$export$3cac5fd37ae64b91 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1308
- async openPersonalAccessTokenPage() {
1309
- // await this.page.locator("button.dot-avatar").click()
1310
- // await this.page.locator("//div[normalize-space()='Access tokens']").click()
1311
- await this.page.goto("./#/personal-access-token");
1312
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Access tokens / Personal settings - Digital.ai Release");
1313
- return this;
1314
- }
1315
- async addNewToken(tokenName) {
1316
- //await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release')
1317
- await this.page.locator("#tokenText").fill(tokenName);
1318
- await this.page.locator("button[type='submit']").click();
1319
- return this;
1320
- }
1321
- }
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;
1322
1198
 
1323
1199
 
1324
- class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
1325
- constructor(page){
1326
- this.page = page;
1327
- }
1328
- async openTemplate(id) {
1329
- return this.openReleaseOrTemplate(id, false);
1330
- }
1331
- async openRelease(id) {
1332
- return this.openReleaseOrTemplate(id, true);
1333
- }
1334
- async openApplicationsPage() {
1335
- return new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(this.page).goToApplicationsPage();
1336
- }
1337
- async openPersonalAccessTokenPage() {
1338
- return new (0, $be4dd73206d8e76b$export$3cac5fd37ae64b91)(this.page).openPersonalAccessTokenPage();
1339
- }
1340
- async openReleaseOrTemplate(id, release) {
1341
- const url = release ? "releases" : "templates";
1342
- await this.page.goto(`./#/${url}/${id}`);
1343
- await this.page.waitForSelector("#release");
1344
- return new (0, $fcbf42f405a34f2e$export$f43492e8ac3c566)(this.page);
1345
- }
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
+ };
1346
1221
  }
1222
+ $f6a97849336ceea8$exports = $f6a97849336ceea8$var$shortOut;
1347
1223
 
1348
1224
 
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;
1349
1234
 
1350
1235
 
1351
- class $9a16c8a1280a99a0$export$f14c0e3f98d164c0 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1352
- async login(userName, password) {
1353
- await this.page.goto("./");
1354
- await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Digital.ai Release");
1355
- await this.page.locator("#inputLogin").fill(userName);
1356
- await this.page.locator("#inputPassword").fill(password);
1357
- await this.page.locator("button[type='submit']").click();
1358
- await (0, $kKeXs$playwrighttest.expect)(this.page.locator("#releases-content")).toBeVisible();
1359
- }
1360
- async logout() {
1361
- await this.page.locator("button.dot-avatar").click();
1362
- await this.page.getByText("Log out").click();
1363
- }
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 + "");
1364
1245
  }
1246
+ $b1535b4ce0d1bd5f$exports = $b1535b4ce0d1bd5f$var$baseRest;
1365
1247
 
1366
1248
 
1367
- var $3e8b520187e41aa6$exports = {};
1249
+ var $ceebddaa7160689c$exports = {};
1368
1250
  /**
1369
- * Checks if `value` is `undefined`.
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.
1370
1254
  *
1371
1255
  * @static
1372
- * @since 0.1.0
1373
1256
  * @memberOf _
1257
+ * @since 4.0.0
1374
1258
  * @category Lang
1375
- * @param {*} value The value to check.
1376
- * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
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`.
1377
1262
  * @example
1378
1263
  *
1379
- * _.isUndefined(void 0);
1264
+ * var object = { 'a': 1 };
1265
+ * var other = { 'a': 1 };
1266
+ *
1267
+ * _.eq(object, object);
1380
1268
  * // => true
1381
1269
  *
1382
- * _.isUndefined(null);
1270
+ * _.eq(object, other);
1383
1271
  * // => false
1384
- */ function $3e8b520187e41aa6$var$isUndefined(value) {
1385
- return value === undefined;
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;
1386
1283
  }
1387
- $3e8b520187e41aa6$exports = $3e8b520187e41aa6$var$isUndefined;
1284
+ $ceebddaa7160689c$exports = $ceebddaa7160689c$var$eq;
1388
1285
 
1389
1286
 
1390
- var $952a2b8d8056b381$exports = {};
1287
+ var $e084f044678f4365$exports = {};
1391
1288
 
1392
- $952a2b8d8056b381$exports = (parcelRequire("ae8Uz"));
1393
1289
 
1290
+ var $fegcS = parcelRequire("fegcS");
1394
1291
 
1292
+ var $gf9YK = parcelRequire("gf9YK");
1395
1293
 
1396
- var $ae8Uz = parcelRequire("ae8Uz");
1397
- var $732eba8dca8b5420$exports = {};
1398
- var $b1535b4ce0d1bd5f$exports = {};
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;
1309
+ }
1310
+ $e084f044678f4365$exports = $e084f044678f4365$var$isIterateeCall;
1399
1311
 
1400
- var $9x2D6 = parcelRequire("9x2D6");
1401
- var $1b1aa0f3fc7256c9$exports = {};
1402
- var $f984f14b3d4f0683$exports = {};
1312
+
1313
+ var $0e6e2e34ec44a72a$exports = {};
1314
+
1315
+ var $gYWmw = parcelRequire("gYWmw");
1316
+ var $b4b8b2a977b4cc10$exports = {};
1317
+
1318
+ var $bfk90 = parcelRequire("bfk90");
1319
+
1320
+ var $cjTq2 = parcelRequire("cjTq2");
1321
+ var $59b6e790ee7519e4$exports = {};
1403
1322
  /**
1404
- * A faster alternative to `Function#apply`, this function invokes `func`
1405
- * with the `this` binding of `thisArg` and the arguments of `args`.
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.
1406
1326
  *
1407
1327
  * @private
1408
- * @param {Function} func The function to invoke.
1409
- * @param {*} thisArg The `this` binding of `func`.
1410
- * @param {Array} args The arguments to invoke `func` with.
1411
- * @returns {*} Returns the result of `func`.
1412
- */ function $f984f14b3d4f0683$var$apply(func, thisArg, args) {
1413
- switch(args.length){
1414
- case 0:
1415
- return func.call(thisArg);
1416
- case 1:
1417
- return func.call(thisArg, args[0]);
1418
- case 2:
1419
- return func.call(thisArg, args[0], args[1]);
1420
- case 3:
1421
- return func.call(thisArg, args[0], args[1], args[2]);
1422
- }
1423
- return func.apply(thisArg, args);
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;
1424
1334
  }
1425
- $f984f14b3d4f0683$exports = $f984f14b3d4f0683$var$apply;
1335
+ $59b6e790ee7519e4$exports = $59b6e790ee7519e4$var$nativeKeysIn;
1426
1336
 
1427
1337
 
1428
- /* Built-in method references for those with the same name as other `lodash` methods. */ var $1b1aa0f3fc7256c9$var$nativeMax = Math.max;
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;
1429
1340
  /**
1430
- * A specialized version of `baseRest` which transforms the rest array.
1341
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
1431
1342
  *
1432
1343
  * @private
1433
- * @param {Function} func The function to apply a rest parameter to.
1434
- * @param {number} [start=func.length-1] The start position of the rest parameter.
1435
- * @param {Function} transform The rest array transform.
1436
- * @returns {Function} Returns the new function.
1437
- */ function $1b1aa0f3fc7256c9$var$overRest(func, start, transform) {
1438
- start = $1b1aa0f3fc7256c9$var$nativeMax(start === undefined ? func.length - 1 : start, 0);
1439
- return function() {
1440
- var args = arguments, index = -1, length = $1b1aa0f3fc7256c9$var$nativeMax(args.length - start, 0), array = Array(length);
1441
- while(++index < length)array[index] = args[start + index];
1442
- index = -1;
1443
- var otherArgs = Array(start + 1);
1444
- while(++index < start)otherArgs[index] = args[index];
1445
- otherArgs[start] = transform(array);
1446
- return $f984f14b3d4f0683$exports(func, this, otherArgs);
1447
- };
1344
+ * @param {Object} object The object to query.
1345
+ * @returns {Array} Returns the array of property names.
1346
+ */ function $b4b8b2a977b4cc10$var$baseKeysIn(object) {
1347
+ if (!$bfk90(object)) return $59b6e790ee7519e4$exports(object);
1348
+ var isProto = $cjTq2(object), result = [];
1349
+ for(var key in object)if (!(key == "constructor" && (isProto || !$b4b8b2a977b4cc10$var$hasOwnProperty.call(object, key)))) result.push(key);
1350
+ return result;
1351
+ }
1352
+ $b4b8b2a977b4cc10$exports = $b4b8b2a977b4cc10$var$baseKeysIn;
1353
+
1354
+
1355
+
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
+
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
+ }
1423
+ }
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;
1448
1445
  }
1449
- $1b1aa0f3fc7256c9$exports = $1b1aa0f3fc7256c9$var$overRest;
1446
+ $c258ac491a64b22b$exports = $c258ac491a64b22b$var$arrayMap;
1450
1447
 
1451
1448
 
1452
- var $0e9d1d7fde57dac1$exports = {};
1453
- var $ef9aec5e693cb6ed$exports = {};
1454
- var $3dc9802adab1dd60$exports = {};
1455
1449
  /**
1456
- * Creates a function that returns `value`.
1457
- *
1458
- * @static
1459
- * @memberOf _
1460
- * @since 2.4.0
1461
- * @category Util
1462
- * @param {*} value The value to return from the new function.
1463
- * @returns {Function} Returns the new constant function.
1464
- * @example
1465
- *
1466
- * var objects = _.times(2, _.constant({ 'a': 1 }));
1467
- *
1468
- * console.log(objects);
1469
- * // => [{ 'a': 1 }, { 'a': 1 }]
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`.
1470
1452
  *
1471
- * console.log(objects[0] === objects[1]);
1472
- * // => true
1473
- */ function $3dc9802adab1dd60$var$constant(value) {
1474
- return function() {
1475
- return value;
1476
- };
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
+ });
1477
1464
  }
1478
- $3dc9802adab1dd60$exports = $3dc9802adab1dd60$var$constant;
1465
+ $34482bf0fdb87aa6$exports = $34482bf0fdb87aa6$var$baseToPairs;
1479
1466
 
1480
1467
 
1481
- var $97bac00047c338ed$exports = {};
1482
- var $b7745e89d7f5915f$exports = {};
1483
- var $927414f7f9d8afbb$exports = {};
1468
+ var $2184c74fd3b50571$exports = {};
1469
+ var $9707ed10f1d74f7d$exports = {};
1484
1470
 
1485
- var $7T6pQ = parcelRequire("7T6pQ");
1486
- var $1fb1799a04ee25ea$exports = {};
1487
- var $5ee1230bf1668e2a$exports = {};
1488
1471
 
1489
1472
  var $5iYlB = parcelRequire("5iYlB");
1490
- /** Used to detect overreaching core-js shims. */ var $5ee1230bf1668e2a$var$coreJsData = $5iYlB["__core-js_shared__"];
1491
- $5ee1230bf1668e2a$exports = $5ee1230bf1668e2a$var$coreJsData;
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;
1492
1475
 
1493
1476
 
1494
- /** Used to detect methods masquerading as native. */ var $1fb1799a04ee25ea$var$maskSrcKey = function() {
1495
- var uid = /[^.]+$/.exec($5ee1230bf1668e2a$exports && $5ee1230bf1668e2a$exports.keys && $5ee1230bf1668e2a$exports.keys.IE_PROTO || "");
1496
- return uid ? "Symbol(src)_1." + uid : "";
1497
- }();
1498
- /**
1499
- * Checks if `func` has its source masked.
1500
- *
1501
- * @private
1502
- * @param {Function} func The function to check.
1503
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
1504
- */ function $1fb1799a04ee25ea$var$isMasked(func) {
1505
- return !!$1fb1799a04ee25ea$var$maskSrcKey && $1fb1799a04ee25ea$var$maskSrcKey in func;
1506
- }
1507
- $1fb1799a04ee25ea$exports = $1fb1799a04ee25ea$var$isMasked;
1477
+ var $8c4ecd35968046d6$exports = {};
1508
1478
 
1509
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;
1510
1483
 
1511
- var $bfk90 = parcelRequire("bfk90");
1512
- var $c6de24274df36d4e$exports = {};
1513
- /** Used for built-in method references. */ var $c6de24274df36d4e$var$funcProto = Function.prototype;
1514
- /** Used to resolve the decompiled source of functions. */ var $c6de24274df36d4e$var$funcToString = $c6de24274df36d4e$var$funcProto.toString;
1515
- /**
1516
- * Converts `func` to its source code.
1517
- *
1518
- * @private
1519
- * @param {Function} func The function to convert.
1520
- * @returns {string} Returns the source code.
1521
- */ function $c6de24274df36d4e$var$toSource(func) {
1522
- if (func != null) {
1523
- try {
1524
- return $c6de24274df36d4e$var$funcToString.call(func);
1525
- } catch (e) {}
1526
- try {
1527
- return func + "";
1528
- } catch (e) {}
1529
- }
1530
- return "";
1531
- }
1532
- $c6de24274df36d4e$exports = $c6de24274df36d4e$var$toSource;
1533
1484
 
1485
+ var $30f4d64ddd8effd1$exports = {};
1534
1486
 
1535
- /**
1536
- * Used to match `RegExp`
1537
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
1538
- */ var $927414f7f9d8afbb$var$reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
1539
- /** Used to detect host constructors (Safari). */ var $927414f7f9d8afbb$var$reIsHostCtor = /^\[object .+?Constructor\]$/;
1540
- /** Used for built-in method references. */ var $927414f7f9d8afbb$var$funcProto = Function.prototype, $927414f7f9d8afbb$var$objectProto = Object.prototype;
1541
- /** Used to resolve the decompiled source of functions. */ var $927414f7f9d8afbb$var$funcToString = $927414f7f9d8afbb$var$funcProto.toString;
1542
- /** Used to check objects for own properties. */ var $927414f7f9d8afbb$var$hasOwnProperty = $927414f7f9d8afbb$var$objectProto.hasOwnProperty;
1543
- /** 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.*?") + "$");
1544
- /**
1545
- * The base implementation of `_.isNative` without bad shim checks.
1546
- *
1547
- * @private
1548
- * @param {*} value The value to check.
1549
- * @returns {boolean} Returns `true` if `value` is a native function,
1550
- * else `false`.
1551
- */ function $927414f7f9d8afbb$var$baseIsNative(value) {
1552
- if (!$bfk90(value) || $1fb1799a04ee25ea$exports(value)) return false;
1553
- var pattern = $7T6pQ(value) ? $927414f7f9d8afbb$var$reIsNative : $927414f7f9d8afbb$var$reIsHostCtor;
1554
- return pattern.test($c6de24274df36d4e$exports(value));
1555
- }
1556
- $927414f7f9d8afbb$exports = $927414f7f9d8afbb$var$baseIsNative;
1557
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;
1558
1491
 
1559
- var $18378a7c2aff899b$exports = {};
1560
- /**
1561
- * Gets the value at `key` of `object`.
1562
- *
1563
- * @private
1564
- * @param {Object} [object] The object to query.
1565
- * @param {string} key The key of the property to get.
1566
- * @returns {*} Returns the property value.
1567
- */ function $18378a7c2aff899b$var$getValue(object, key) {
1568
- return object == null ? undefined : object[key];
1569
- }
1570
- $18378a7c2aff899b$exports = $18378a7c2aff899b$var$getValue;
1571
1492
 
1493
+ var $869474d4b330cc35$exports = {};
1572
1494
 
1573
- /**
1574
- * Gets the native function at `key` of `object`.
1575
- *
1576
- * @private
1577
- * @param {Object} object The object to query.
1578
- * @param {string} key The key of the method to get.
1579
- * @returns {*} Returns the function if it's native, else `undefined`.
1580
- */ function $b7745e89d7f5915f$var$getNative(object, key) {
1581
- var value = $18378a7c2aff899b$exports(object, key);
1582
- return $927414f7f9d8afbb$exports(value) ? value : undefined;
1583
- }
1584
- $b7745e89d7f5915f$exports = $b7745e89d7f5915f$var$getNative;
1585
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;
1586
1499
 
1587
- var $97bac00047c338ed$var$defineProperty = function() {
1588
- try {
1589
- var func = $b7745e89d7f5915f$exports(Object, "defineProperty");
1590
- func({}, "", {});
1591
- return func;
1592
- } catch (e) {}
1593
- }();
1594
- $97bac00047c338ed$exports = $97bac00047c338ed$var$defineProperty;
1595
1500
 
1501
+ var $c4df061ad36170d9$exports = {};
1596
1502
 
1597
1503
 
1598
- var $9x2D6 = parcelRequire("9x2D6");
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
+
1510
+ var $hi3Ib = parcelRequire("hi3Ib");
1511
+
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);
1599
1515
  /**
1600
- * The base implementation of `setToString` without support for hot loop shorting.
1516
+ * Gets the `toStringTag` of `value`.
1601
1517
  *
1602
1518
  * @private
1603
- * @param {Function} func The function to modify.
1604
- * @param {Function} string The `toString` result.
1605
- * @returns {Function} Returns `func`.
1606
- */ var $ef9aec5e693cb6ed$var$baseSetToString = !$97bac00047c338ed$exports ? $9x2D6 : function(func, string) {
1607
- return $97bac00047c338ed$exports(func, "toString", {
1608
- "configurable": true,
1609
- "enumerable": false,
1610
- "value": $3dc9802adab1dd60$exports(string),
1611
- "writable": true
1612
- });
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;
1536
+ }
1537
+ return result;
1613
1538
  };
1614
- $ef9aec5e693cb6ed$exports = $ef9aec5e693cb6ed$var$baseSetToString;
1539
+ $2184c74fd3b50571$exports = $2184c74fd3b50571$var$getTag;
1615
1540
 
1616
1541
 
1617
- var $f6a97849336ceea8$exports = {};
1618
- /** 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;
1619
- /* Built-in method references for those with the same name as other `lodash` methods. */ var $f6a97849336ceea8$var$nativeNow = Date.now;
1542
+ var $5cfa9b34443304aa$exports = {};
1620
1543
  /**
1621
- * Creates a function that'll short out and invoke `identity` instead
1622
- * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
1623
- * milliseconds.
1544
+ * Converts `map` to its key-value pairs.
1624
1545
  *
1625
1546
  * @private
1626
- * @param {Function} func The function to restrict.
1627
- * @returns {Function} Returns the new shortable function.
1628
- */ function $f6a97849336ceea8$var$shortOut(func) {
1629
- var count = 0, lastCalled = 0;
1630
- return function() {
1631
- var stamp = $f6a97849336ceea8$var$nativeNow(), remaining = $f6a97849336ceea8$var$HOT_SPAN - (stamp - lastCalled);
1632
- lastCalled = stamp;
1633
- if (remaining > 0) {
1634
- if (++count >= $f6a97849336ceea8$var$HOT_COUNT) return arguments[0];
1635
- } else count = 0;
1636
- return func.apply(undefined, arguments);
1637
- };
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;
1638
1558
  }
1639
- $f6a97849336ceea8$exports = $f6a97849336ceea8$var$shortOut;
1559
+ $5cfa9b34443304aa$exports = $5cfa9b34443304aa$var$mapToArray;
1640
1560
 
1641
1561
 
1562
+ var $e0efec8f59f2b46b$exports = {};
1642
1563
  /**
1643
- * Sets the `toString` method of `func` to return `string`.
1564
+ * Converts `set` to its value-value pairs.
1644
1565
  *
1645
1566
  * @private
1646
- * @param {Function} func The function to modify.
1647
- * @param {Function} string The `toString` result.
1648
- * @returns {Function} Returns `func`.
1649
- */ var $0e9d1d7fde57dac1$var$setToString = $f6a97849336ceea8$exports($ef9aec5e693cb6ed$exports);
1650
- $0e9d1d7fde57dac1$exports = $0e9d1d7fde57dac1$var$setToString;
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;
1578
+ }
1579
+ $e0efec8f59f2b46b$exports = $e0efec8f59f2b46b$var$setToPairs;
1651
1580
 
1652
1581
 
1582
+ /** `Object#toString` result references. */ var $acbd35b1cbbf33e4$var$mapTag = "[object Map]", $acbd35b1cbbf33e4$var$setTag = "[object Set]";
1653
1583
  /**
1654
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
1584
+ * Creates a `_.toPairs` or `_.toPairsIn` function.
1655
1585
  *
1656
1586
  * @private
1657
- * @param {Function} func The function to apply a rest parameter to.
1658
- * @param {number} [start=func.length-1] The start position of the rest parameter.
1659
- * @returns {Function} Returns the new function.
1660
- */ function $b1535b4ce0d1bd5f$var$baseRest(func, start) {
1661
- return $0e9d1d7fde57dac1$exports($1b1aa0f3fc7256c9$exports(func, start, $9x2D6), func + "");
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
+ };
1662
1596
  }
1663
- $b1535b4ce0d1bd5f$exports = $b1535b4ce0d1bd5f$var$baseRest;
1597
+ $acbd35b1cbbf33e4$exports = $acbd35b1cbbf33e4$var$createToPairs;
1664
1598
 
1665
1599
 
1666
- var $ceebddaa7160689c$exports = {};
1600
+
1601
+ var $bqLSx = parcelRequire("bqLSx");
1667
1602
  /**
1668
- * Performs a
1669
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
1670
- * comparison between two values to determine if they are equivalent.
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.
1671
1606
  *
1672
1607
  * @static
1673
1608
  * @memberOf _
1674
1609
  * @since 4.0.0
1675
- * @category Lang
1676
- * @param {*} value The value to compare.
1677
- * @param {*} other The other value to compare.
1678
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1610
+ * @alias entries
1611
+ * @category Object
1612
+ * @param {Object} object The object to query.
1613
+ * @returns {Array} Returns the key-value pairs.
1679
1614
  * @example
1680
1615
  *
1681
- * var object = { 'a': 1 };
1682
- * var other = { 'a': 1 };
1683
- *
1684
- * _.eq(object, object);
1685
- * // => true
1686
- *
1687
- * _.eq(object, other);
1688
- * // => false
1689
- *
1690
- * _.eq('a', 'a');
1691
- * // => true
1616
+ * function Foo() {
1617
+ * this.a = 1;
1618
+ * this.b = 2;
1619
+ * }
1692
1620
  *
1693
- * _.eq('a', Object('a'));
1694
- * // => false
1621
+ * Foo.prototype.c = 3;
1695
1622
  *
1696
- * _.eq(NaN, NaN);
1697
- * // => true
1698
- */ function $ceebddaa7160689c$var$eq(value, other) {
1699
- return value === other || value !== value && other !== other;
1700
- }
1701
- $ceebddaa7160689c$exports = $ceebddaa7160689c$var$eq;
1702
-
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;
1703
1627
 
1704
- var $e084f044678f4365$exports = {};
1705
1628
 
1629
+ const $8977f8672c5de0fa$export$45f0aca2596a2bb3 = function() {
1630
+ const RELEASE_TYPE = "xlrelease.Release";
1631
+ const PHASE_TYPE = "xlrelease.Phase";
1632
+ const TEAM_TYPE = "xlrelease.Team";
1633
+ const TASK_TYPE = "xlrelease.Task";
1634
+ const COMMENT_TYPE = "xlrelease.Comment";
1635
+ const CONDITION_TYPE = "xlrelease.GateCondition";
1636
+ const DEPENDENCY_TYPE = "xlrelease.Dependency";
1637
+ const LINK_TYPE = "xlrelease.Link";
1638
+ const ATTACHMENT_TYPE = "xlrelease.Attachment";
1639
+ const DASHBOARD_TYPE = "xlrelease.Dashboard";
1640
+ const _TRIGGER_TYPE = "xlrelease.ReleaseTrigger";
1641
+ const JIRA_TYPE = "jira.CreateIssue";
1642
+ const DEFAULT_TASK_OWNER = "Itchy";
1643
+ const processTasks = (task, container, index)=>{
1644
+ if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.type)) task.type = TASK_TYPE;
1645
+ task.id = task.id || `${container.id}/Task${index}`;
1646
+ if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.owner) && task.type !== JIRA_TYPE) task.owner = DEFAULT_TASK_OWNER;
1647
+ if (task.owner === null) delete task.owner;
1648
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.conditions, function(condition, idx) {
1649
+ condition.type = CONDITION_TYPE;
1650
+ condition.id = `${task.id}/GateCondition${idx}`;
1651
+ });
1652
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.dependencies, function(dependency, idx) {
1653
+ dependency.type = DEPENDENCY_TYPE;
1654
+ dependency.id = `${task.id}/Dependency${idx}`;
1655
+ });
1656
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.links, function(link, idx) {
1657
+ link.type = LINK_TYPE;
1658
+ link.id = `${task.id}/Link${idx}`;
1659
+ });
1660
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.comments, function(comment, idx) {
1661
+ comment.type = COMMENT_TYPE;
1662
+ comment.id = `${task.id}/Comment${idx}`;
1663
+ });
1664
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.tasks, function(subTask, idx) {
1665
+ processTasks(subTask, task, idx);
1666
+ });
1667
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.templateVariables, function(variable, idx) {
1668
+ (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, task.id, idx));
1669
+ });
1670
+ (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.attachments, function(attachment, idx) {
1671
+ attachment.type = ATTACHMENT_TYPE;
1672
+ attachment.id = `${task.id}/Attachment${idx}`;
1673
+ });
1674
+ if (task.pythonScript) {
1675
+ const pythonScript = task.pythonScript;
1676
+ pythonScript.id = `${task.id}/PythonScript`;
1677
+ pythonScript.customScriptTask = task.id;
1678
+ }
1679
+ };
1680
+ const processPhases = (phase, release, index)=>{
1681
+ phase.type = PHASE_TYPE;
1682
+ phase.id = `${release.id}/Phase${index}`;
1683
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(phase.tasks, (task, idx)=>{
1684
+ processTasks(task, phase, idx);
1685
+ });
1686
+ };
1687
+ const getVariableEntity = (value, key, containerId, index, password)=>{
1688
+ const keyNoSyntax = key.replace("${", "").replace("}", "");
1689
+ return {
1690
+ id: `${containerId}/Variable${index}`,
1691
+ key: keyNoSyntax,
1692
+ requiresValue: true,
1693
+ showOnReleaseStart: true,
1694
+ type: password ? "xlrelease.PasswordStringVariable" : "xlrelease.StringVariable",
1695
+ value: value
1696
+ };
1697
+ };
1698
+ const getValueProviderConfigurationEntity = function(containerId) {
1699
+ return {
1700
+ id: `${containerId}/valueProvider`,
1701
+ variable: containerId
1702
+ };
1703
+ };
1704
+ const getDashboardExtension = (dashboard, releaseId)=>{
1705
+ const dashboardExtension = {
1706
+ id: `${releaseId}/summary`,
1707
+ type: DASHBOARD_TYPE,
1708
+ tiles: []
1709
+ };
1710
+ if (dashboard.tiles) (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(dashboard.tiles, function(tile, index) {
1711
+ dashboardExtension.tiles.push(getTileEntity(tile, `${releaseId}/summary`, index));
1712
+ });
1713
+ return dashboardExtension;
1714
+ };
1715
+ function getTileEntity(tile, containerId, index) {
1716
+ tile.id = tile.id || `${containerId}/Tile${index}`;
1717
+ return tile;
1718
+ }
1719
+ return function(release) {
1720
+ release.type = RELEASE_TYPE;
1721
+ if (release.id.indexOf("Applications/") === -1) release.id = `Applications/${release.id}`;
1722
+ if (release.startDate) release.queryableStartDate = release.startDate;
1723
+ else if (release.scheduledStartDate) release.queryableStartDate = release.scheduledStartDate;
1724
+ if (release.endDate) release.queryableEndDate = release.endDate;
1725
+ else if (release.dueDate) release.queryableEndDate = release.dueDate;
1726
+ if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(release.owner)) release.owner = "Itchy"; // default release manager
1727
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.phases, function(phase, index) {
1728
+ processPhases(phase, release, index);
1729
+ });
1730
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.teams, function(team, index) {
1731
+ team.type = TEAM_TYPE;
1732
+ team.id = `${release.id}/Team${index}`;
1733
+ });
1734
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.attachments, function(attachment, index) {
1735
+ attachment.type = ATTACHMENT_TYPE;
1736
+ attachment.id = `${release.id}/Attachment${index}`;
1737
+ });
1738
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.variables, function(variable, index) {
1739
+ (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, release.id, index));
1740
+ if (variable.valueProvider) (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable.valueProvider, getValueProviderConfigurationEntity(variable.id));
1741
+ });
1742
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.variableValues), function(keyValue, index) {
1743
+ if (!release.variables) release.variables = [];
1744
+ release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1000 + index));
1745
+ release.variableValues = undefined;
1746
+ });
1747
+ (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.passwordVariableValues), function(keyValue, index) {
1748
+ if (!release.variables) release.variables = [];
1749
+ release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1500 + index, true));
1750
+ release.passwordVariableValues = undefined;
1751
+ });
1752
+ if (release.summary) {
1753
+ release.extensions = [
1754
+ getDashboardExtension(release.summary, release.id)
1755
+ ];
1756
+ release.summary = undefined;
1757
+ }
1758
+ };
1759
+ }();
1706
1760
 
1707
- var $fegcS = parcelRequire("fegcS");
1708
1761
 
1709
- var $gf9YK = parcelRequire("gf9YK");
1710
1762
 
1711
- var $bfk90 = parcelRequire("bfk90");
1712
- /**
1713
- * Checks if the given arguments are from an iteratee call.
1714
- *
1715
- * @private
1716
- * @param {*} value The potential iteratee value argument.
1717
- * @param {*} index The potential iteratee index or key argument.
1718
- * @param {*} object The potential iteratee object argument.
1719
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
1720
- * else `false`.
1721
- */ function $e084f044678f4365$var$isIterateeCall(value, index, object) {
1722
- if (!$bfk90(object)) return false;
1723
- var type = typeof index;
1724
- if (type == "number" ? $fegcS(object) && $gf9YK(index, object.length) : type == "string" && index in object) return $ceebddaa7160689c$exports(object[index], value);
1725
- return false;
1763
+ class $f8721861c660dd88$export$2b65d1d97338f32b {
1764
+ constructor(page){
1765
+ this.page = page;
1766
+ }
1726
1767
  }
1727
- $e084f044678f4365$exports = $e084f044678f4365$var$isIterateeCall;
1728
-
1729
-
1730
- var $0e6e2e34ec44a72a$exports = {};
1731
1768
 
1732
- var $gYWmw = parcelRequire("gYWmw");
1733
- var $b4b8b2a977b4cc10$exports = {};
1734
-
1735
- var $bfk90 = parcelRequire("bfk90");
1736
1769
 
1737
- var $cjTq2 = parcelRequire("cjTq2");
1738
- var $59b6e790ee7519e4$exports = {};
1739
- /**
1740
- * This function is like
1741
- * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1742
- * except that it includes inherited enumerable properties.
1743
- *
1744
- * @private
1745
- * @param {Object} object The object to query.
1746
- * @returns {Array} Returns the array of property names.
1747
- */ function $59b6e790ee7519e4$var$nativeKeysIn(object) {
1748
- var result = [];
1749
- if (object != null) for(var key in Object(object))result.push(key);
1750
- return result;
1770
+ class $258749e0671c845a$export$f14c0e3f98d164c0 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1771
+ /**
1772
+ * Login with username and password
1773
+ * @param userName
1774
+ * @param password
1775
+ */ async login(userName, password) {
1776
+ await this.page.goto("/#/login");
1777
+ await this.page.waitForTimeout(1000);
1778
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Digital.ai Release");
1779
+ await this.page.getByPlaceholder("User").fill(userName);
1780
+ await this.page.getByPlaceholder("Password").fill(password);
1781
+ await this.page.getByRole("button", {
1782
+ name: "Log in"
1783
+ }).click();
1784
+ }
1785
+ /**
1786
+ * Logout as authenticated user
1787
+ */ async logout() {
1788
+ await this.page.locator("button.dot-avatar").click();
1789
+ await this.page.getByText("Log out").click();
1790
+ }
1791
+ /**
1792
+ * Expect login to be restricted for a user
1793
+ */ async expectLoginDisallowed() {
1794
+ const val = await this.page.textContent('.error-content span[ng-show="loginInfo.failedStatus == 403"]');
1795
+ (0, $kKeXs$playwrighttest.expect)(val).toContain("You do not have 'login' permission.");
1796
+ }
1797
+ /**
1798
+ * Expect the respective user is logged In
1799
+ * @param username
1800
+ */ async expectToBeLogged(username) {
1801
+ const val = await this.page.locator("top-toolbar .avatar-wrapper span.dot-tooltip").getAttribute("aria-label");
1802
+ (0, $kKeXs$playwrighttest.expect)(val).toContain(username);
1803
+ }
1751
1804
  }
1752
- $59b6e790ee7519e4$exports = $59b6e790ee7519e4$var$nativeKeysIn;
1753
1805
 
1754
1806
 
1755
- /** Used for built-in method references. */ var $b4b8b2a977b4cc10$var$objectProto = Object.prototype;
1756
- /** Used to check objects for own properties. */ var $b4b8b2a977b4cc10$var$hasOwnProperty = $b4b8b2a977b4cc10$var$objectProto.hasOwnProperty;
1757
- /**
1758
- * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
1759
- *
1760
- * @private
1761
- * @param {Object} object The object to query.
1762
- * @returns {Array} Returns the array of property names.
1763
- */ function $b4b8b2a977b4cc10$var$baseKeysIn(object) {
1764
- if (!$bfk90(object)) return $59b6e790ee7519e4$exports(object);
1765
- var isProto = $cjTq2(object), result = [];
1766
- for(var key in object)if (!(key == "constructor" && (isProto || !$b4b8b2a977b4cc10$var$hasOwnProperty.call(object, key)))) result.push(key);
1767
- return result;
1768
- }
1769
- $b4b8b2a977b4cc10$exports = $b4b8b2a977b4cc10$var$baseKeysIn;
1770
1807
 
1771
1808
 
1772
1809
 
1773
- var $fegcS = parcelRequire("fegcS");
1774
- /**
1775
- * Creates an array of the own and inherited enumerable property names of `object`.
1776
- *
1777
- * **Note:** Non-object values are coerced to objects.
1778
- *
1779
- * @static
1780
- * @memberOf _
1781
- * @since 3.0.0
1782
- * @category Object
1783
- * @param {Object} object The object to query.
1784
- * @returns {Array} Returns the array of property names.
1785
- * @example
1786
- *
1787
- * function Foo() {
1788
- * this.a = 1;
1789
- * this.b = 2;
1790
- * }
1791
- *
1792
- * Foo.prototype.c = 3;
1793
- *
1794
- * _.keysIn(new Foo);
1795
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
1796
- */ function $0e6e2e34ec44a72a$var$keysIn(object) {
1797
- return $fegcS(object) ? $gYWmw(object, true) : $b4b8b2a977b4cc10$exports(object);
1798
- }
1799
- $0e6e2e34ec44a72a$exports = $0e6e2e34ec44a72a$var$keysIn;
1800
1810
 
1801
1811
 
1802
- /** Used for built-in method references. */ var $732eba8dca8b5420$var$objectProto = Object.prototype;
1803
- /** Used to check objects for own properties. */ var $732eba8dca8b5420$var$hasOwnProperty = $732eba8dca8b5420$var$objectProto.hasOwnProperty;
1804
- /**
1805
- * Assigns own and inherited enumerable string keyed properties of source
1806
- * objects to the destination object for all destination properties that
1807
- * resolve to `undefined`. Source objects are applied from left to right.
1808
- * Once a property is set, additional values of the same property are ignored.
1809
- *
1810
- * **Note:** This method mutates `object`.
1811
- *
1812
- * @static
1813
- * @since 0.1.0
1814
- * @memberOf _
1815
- * @category Object
1816
- * @param {Object} object The destination object.
1817
- * @param {...Object} [sources] The source objects.
1818
- * @returns {Object} Returns `object`.
1819
- * @see _.defaultsDeep
1820
- * @example
1821
- *
1822
- * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
1823
- * // => { 'a': 1, 'b': 2 }
1824
- */ var $732eba8dca8b5420$var$defaults = $b1535b4ce0d1bd5f$exports(function(object, sources) {
1825
- object = Object(object);
1826
- var index = -1;
1827
- var length = sources.length;
1828
- var guard = length > 2 ? sources[2] : undefined;
1829
- if (guard && $e084f044678f4365$exports(sources[0], sources[1], guard)) length = 1;
1830
- while(++index < length){
1831
- var source = sources[index];
1832
- var props = $0e6e2e34ec44a72a$exports(source);
1833
- var propsIndex = -1;
1834
- var propsLength = props.length;
1835
- while(++propsIndex < propsLength){
1836
- var key = props[propsIndex];
1837
- var value = object[key];
1838
- if (value === undefined || $ceebddaa7160689c$exports(value, $732eba8dca8b5420$var$objectProto[key]) && !$732eba8dca8b5420$var$hasOwnProperty.call(object, key)) object[key] = source[key];
1839
- }
1812
+ class $280428cd9976d58e$export$a678525e79c4ccc4 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1813
+ async expectNumberOfReleases(releaseTitle, amount) {
1814
+ if (amount === 1) await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle)).toBeVisible();
1815
+ else await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".release").getByText(releaseTitle).count()).toBe(amount);
1816
+ }
1817
+ async openReleaseByName(releaseTitle) {
1818
+ await this.page.locator(".release-line .row-wrapper .release-title-wrapper a", {
1819
+ hasText: releaseTitle
1820
+ }).click();
1821
+ return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
1840
1822
  }
1841
- return object;
1842
- });
1843
- $732eba8dca8b5420$exports = $732eba8dca8b5420$var$defaults;
1844
-
1845
-
1846
- var $f51969c4a7467fa0$exports = {};
1847
- var $acbd35b1cbbf33e4$exports = {};
1848
- var $34482bf0fdb87aa6$exports = {};
1849
- var $c258ac491a64b22b$exports = {};
1850
- /**
1851
- * A specialized version of `_.map` for arrays without support for iteratee
1852
- * shorthands.
1853
- *
1854
- * @private
1855
- * @param {Array} [array] The array to iterate over.
1856
- * @param {Function} iteratee The function invoked per iteration.
1857
- * @returns {Array} Returns the new mapped array.
1858
- */ function $c258ac491a64b22b$var$arrayMap(array, iteratee) {
1859
- var index = -1, length = array == null ? 0 : array.length, result = Array(length);
1860
- while(++index < length)result[index] = iteratee(array[index], index, array);
1861
- return result;
1862
1823
  }
1863
- $c258ac491a64b22b$exports = $c258ac491a64b22b$var$arrayMap;
1864
1824
 
1865
1825
 
1866
- /**
1867
- * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
1868
- * of key-value pairs for `object` corresponding to the property names of `props`.
1869
- *
1870
- * @private
1871
- * @param {Object} object The object to query.
1872
- * @param {Array} props The property names to get values for.
1873
- * @returns {Object} Returns the key-value pairs.
1874
- */ function $34482bf0fdb87aa6$var$baseToPairs(object, props) {
1875
- return $c258ac491a64b22b$exports(props, function(key) {
1876
- return [
1877
- key,
1878
- object[key]
1879
- ];
1880
- });
1826
+
1827
+ class $133601cfe0486710$export$fb932093f944abe4 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1828
+ async openRelatedReleasesOf(title) {
1829
+ await this.openContextMenu(title);
1830
+ await this.page.locator(".popover-content xlr-context-menu a", {
1831
+ hasText: "View releases"
1832
+ }).click();
1833
+ return new (0, $280428cd9976d58e$export$a678525e79c4ccc4)(this.page);
1834
+ }
1835
+ async openContextMenu(title) {
1836
+ await (0, $kKeXs$playwrighttest.expect)(async ()=>{
1837
+ await this.page.locator(".trigger-row-content", {
1838
+ hasText: title
1839
+ }).locator(".context-menu-button").click();
1840
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".popover-content")).toBeVisible();
1841
+ }).toPass();
1842
+ }
1881
1843
  }
1882
- $34482bf0fdb87aa6$exports = $34482bf0fdb87aa6$var$baseToPairs;
1883
1844
 
1884
1845
 
1885
- var $2184c74fd3b50571$exports = {};
1886
- var $9707ed10f1d74f7d$exports = {};
1887
1846
 
1888
1847
 
1889
- var $5iYlB = parcelRequire("5iYlB");
1890
- /* Built-in method references that are verified to be native. */ var $9707ed10f1d74f7d$var$DataView = $b7745e89d7f5915f$exports($5iYlB, "DataView");
1891
- $9707ed10f1d74f7d$exports = $9707ed10f1d74f7d$var$DataView;
1892
1848
 
1849
+ async function $ef0df8ad8a777ce6$export$a0f926f04148e5d2(locators) {
1850
+ const res = await Promise.all([
1851
+ ...locators.map(async (locator, index)=>{
1852
+ let timedOut = false;
1853
+ await locator.waitFor({
1854
+ state: "visible",
1855
+ timeout: 2000
1856
+ }).catch(()=>timedOut = true);
1857
+ return [
1858
+ timedOut ? -1 : index,
1859
+ locator
1860
+ ];
1861
+ })
1862
+ ]);
1863
+ const resolvedLocator = res.find((r)=>r[0] !== -1);
1864
+ if (!resolvedLocator) {
1865
+ console.warn("waitForOneOf", res);
1866
+ throw new Error("no locator visible before timeout");
1867
+ }
1868
+ return resolvedLocator;
1869
+ }
1893
1870
 
1894
- var $8c4ecd35968046d6$exports = {};
1895
1871
 
1872
+ class $fd4eef3ad2b2e612$export$a87f0ae8695e74be extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1873
+ async openVariable(variableKey) {
1874
+ await this.page.locator(`.variables-list .variable`).getByText(variableKey).click();
1875
+ return new $fd4eef3ad2b2e612$var$ReleaseVariableModal(this.page);
1876
+ }
1877
+ }
1878
+ class $fd4eef3ad2b2e612$var$ReleaseVariableModal extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1879
+ async expectValue(locators, expectFn) {
1880
+ const [index, locator] = await (0, $ef0df8ad8a777ce6$export$a0f926f04148e5d2)(locators);
1881
+ await expectFn[index](locator);
1882
+ }
1883
+ async expectValueToBe(value) {
1884
+ await this.expectValue([
1885
+ this.page.locator("#modal .variable-value input"),
1886
+ this.page.locator("#modal .variable-value .field-readonly"),
1887
+ this.page.locator("#modal .variable-value .xl-map-string-string")
1888
+ ], [
1889
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveValue(value),
1890
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value),
1891
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toHaveText(value)
1892
+ ]);
1893
+ }
1894
+ async expectValueToContain(value) {
1895
+ await this.expectValue([
1896
+ this.page.locator("#modal .variable-value input"),
1897
+ this.page.locator("#modal .variable-value .field-readonly"),
1898
+ this.page.locator("#modal .variable-value .xl-map-string-string")
1899
+ ], [
1900
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l.inputValue()).toContain(value),
1901
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value),
1902
+ (l)=>(0, $kKeXs$playwrighttest.expect)(l).toContainText(value)
1903
+ ]);
1904
+ }
1905
+ async close() {
1906
+ await this.page.locator("#modal .modal-header button.close").click();
1907
+ }
1908
+ }
1896
1909
 
1897
- var $5iYlB = parcelRequire("5iYlB");
1898
- /* Built-in method references that are verified to be native. */ var $8c4ecd35968046d6$var$Map = $b7745e89d7f5915f$exports($5iYlB, "Map");
1899
- $8c4ecd35968046d6$exports = $8c4ecd35968046d6$var$Map;
1900
1910
 
1901
1911
 
1902
- var $30f4d64ddd8effd1$exports = {};
1903
1912
 
1913
+ class $8be2ce0eccbe6d27$export$64c93bc7fb9ca44e extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1914
+ constructor(page){
1915
+ super(page);
1916
+ this.railLocator = this.page.locator("task-drawer .dot-drawer .task-config");
1917
+ }
1918
+ async openInputProperties() {
1919
+ await this.railLocator.locator(".task-config-header").getByText("Input properties").click();
1920
+ }
1921
+ async openOutputProperties() {
1922
+ await this.railLocator.locator(".task-config-header").getByText("Output properties").click();
1923
+ }
1924
+ async getValueFromCi(propertyName) {
1925
+ return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1926
+ }
1927
+ async getAllOptionsFromCi(propertyName) {
1928
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1929
+ return this.railLocator.locator(`.dot-popper ul li`).allInnerTexts();
1930
+ }
1931
+ async setValueFromCi(propertyName, value) {
1932
+ await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1933
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1934
+ await this.railLocator.locator(`.dot-popper ul li`, {
1935
+ hasText: value
1936
+ }).click();
1937
+ }
1938
+ async getValueFromString(propertyName) {
1939
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1940
+ return this.railLocator.locator(`input[id="${propertyName}"]`).inputValue();
1941
+ }
1942
+ async setValueFromString(propertyName, value) {
1943
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1944
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1945
+ }
1946
+ async setValueFromLargeString(propertyName, value) {
1947
+ await this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`).focus();
1948
+ await this.railLocator.locator(`textarea[id="${propertyName}"]`).fill(value);
1949
+ }
1950
+ async setValueFromPassword(propertyName, value) {
1951
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(value);
1952
+ }
1953
+ async setAndCreateVariable(propertyName, variableName) {
1954
+ await this.railLocator.locator(`input[id="${propertyName}"]`).clear();
1955
+ await this.railLocator.locator(`input[id="${propertyName}"]`).click();
1956
+ await this.railLocator.locator(`input[id="${propertyName}"]`).fill(variableName);
1957
+ await this.railLocator.locator(`.dot-popper button`, {
1958
+ hasText: variableName
1959
+ }).click();
1960
+ }
1961
+ async setVariable(propertyName, variableName) {
1962
+ return this.setValueFromCi(propertyName, variableName);
1963
+ }
1964
+ async expectValueFromString(propertyName, propertyValue) {
1965
+ return await (0, $kKeXs$playwrighttest.expect)(this.railLocator.locator(`.input-scalar-fake-input[id="${propertyName}"]`)).toHaveText(propertyValue);
1966
+ }
1967
+ }
1904
1968
 
1905
- var $5iYlB = parcelRequire("5iYlB");
1906
- /* Built-in method references that are verified to be native. */ var $30f4d64ddd8effd1$var$Promise = $b7745e89d7f5915f$exports($5iYlB, "Promise");
1907
- $30f4d64ddd8effd1$exports = $30f4d64ddd8effd1$var$Promise;
1908
1969
 
1909
1970
 
1910
- var $869474d4b330cc35$exports = {};
1911
1971
 
1912
1972
 
1913
- var $5iYlB = parcelRequire("5iYlB");
1914
- /* Built-in method references that are verified to be native. */ var $869474d4b330cc35$var$Set = $b7745e89d7f5915f$exports($5iYlB, "Set");
1915
- $869474d4b330cc35$exports = $869474d4b330cc35$var$Set;
1973
+ class $9c0b0c2caed50730$export$d4865631ba74f3e2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1974
+ constructor(page){
1975
+ super(page);
1976
+ this.railLocator = this.page.locator("task-drawer .dot-drawer .task-conditions");
1977
+ this.preconditionToggle = page.getByLabel("Enable precondition");
1978
+ this.textEditor = page.getByRole("textbox");
1979
+ this.saveButton = page.getByTestId("save-btn");
1980
+ }
1981
+ async enablePrecondition() {
1982
+ (0, $kKeXs$playwrighttest.expect)(await this.preconditionToggle.isChecked()).toBe(false);
1983
+ await this.preconditionToggle.check();
1984
+ }
1985
+ async disablePrecondition() {
1986
+ (0, $kKeXs$playwrighttest.expect)(await this.preconditionToggle.isChecked()).toBe(true);
1987
+ await this.preconditionToggle.uncheck();
1988
+ }
1989
+ async setPrecondition(script) {
1990
+ await this.enablePrecondition();
1991
+ await this.textEditor.fill(script);
1992
+ await this.saveButton.dblclick();
1993
+ await this.page.waitForTimeout(1000);
1994
+ }
1995
+ }
1916
1996
 
1917
1997
 
1918
- var $c4df061ad36170d9$exports = {};
1998
+ class $6a21661eb4695574$export$e946776eae644790 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
1999
+ constructor(page){
2000
+ super(page);
2001
+ this.taskDrawerLocator = this.page.locator("task-drawer .dot-drawer");
2002
+ this.retryButton = this.page.getByRole("button", {
2003
+ name: "Retry"
2004
+ });
2005
+ this.cancelButton = this.page.getByTestId("task-action-cancel");
2006
+ this.commentBox = this.page.getByTestId("task-action-comment");
2007
+ this.confirm = this.page.getByTestId("task-action-confirm");
2008
+ this.config = new (0, $8be2ce0eccbe6d27$export$64c93bc7fb9ca44e)(page);
2009
+ this.condition = new (0, $9c0b0c2caed50730$export$d4865631ba74f3e2)(page);
2010
+ this.skipMenu = this.page.getByRole("menuitem", {
2011
+ name: "Skip"
2012
+ });
2013
+ }
2014
+ async openOverviewRail() {
2015
+ await this.openRail("Overview");
2016
+ }
2017
+ async openActivityRail() {
2018
+ await this.openRail("Activity");
2019
+ }
2020
+ async openSchedulingRail() {
2021
+ await this.openRail("Scheduling");
2022
+ }
2023
+ async openConditionRail() {
2024
+ await this.openRail("Conditions");
2025
+ }
2026
+ async openAttributesRail() {
2027
+ await this.openRail("Attributes");
2028
+ }
2029
+ async openAttachRail() {
2030
+ await this.openRail("Attach");
2031
+ }
2032
+ async openTagsRail() {
2033
+ await this.openRail("Tags");
2034
+ }
2035
+ async openRail(rail) {
2036
+ await this.taskDrawerLocator.locator(".task-navigation-rail").getByText(rail).click();
2037
+ }
2038
+ async close() {
2039
+ await this.taskDrawerLocator.locator(".task-drawer-header").getByTestId("close-btn").click();
2040
+ }
2041
+ async retryTask(comment) {
2042
+ await this.retryButton.click();
2043
+ await this.commentBox.fill(comment);
2044
+ await this.confirm.click();
2045
+ }
2046
+ async skipTask(comment) {
2047
+ await this.page.getByRole("button", {
2048
+ name: "arrow-down icon",
2049
+ exact: true
2050
+ }).click();
2051
+ await this.skipMenu.click();
2052
+ await this.commentBox.fill(comment);
2053
+ await this.confirm.click();
2054
+ }
2055
+ }
1919
2056
 
1920
2057
 
1921
- var $5iYlB = parcelRequire("5iYlB");
1922
- /* Built-in method references that are verified to be native. */ var $c4df061ad36170d9$var$WeakMap = $b7745e89d7f5915f$exports($5iYlB, "WeakMap");
1923
- $c4df061ad36170d9$exports = $c4df061ad36170d9$var$WeakMap;
2058
+ class $9b9a8c3da392d020$export$f43492e8ac3c566 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2059
+ constructor(page){
2060
+ super(page);
2061
+ this.taskDrawer = new (0, $6a21661eb4695574$export$e946776eae644790)(page);
2062
+ }
2063
+ async openTriggers() {
2064
+ await this.openSubPage("Triggers");
2065
+ return new (0, $133601cfe0486710$export$fb932093f944abe4)(this.page);
2066
+ }
2067
+ async abort(comment = "Abort for testing") {
2068
+ await this.page.locator("action-toolbar button", {
2069
+ hasText: "Abort"
2070
+ }).click();
2071
+ await this.page.locator(".modal textarea").fill(comment);
2072
+ await this.page.locator(".modal .continue").click();
2073
+ }
2074
+ getPhase(phaseName) {
2075
+ return new $9b9a8c3da392d020$var$Phase(this.page, phaseName);
2076
+ }
2077
+ async start() {
2078
+ await this.page.getByTestId("start-btn").click();
2079
+ await this.page.getByRole("button", {
2080
+ name: "Start"
2081
+ }).click();
2082
+ }
2083
+ async waitForTaskCompleted(taskTitle) {
2084
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.completed").getByText(taskTitle, {
2085
+ exact: true
2086
+ })).toBeVisible();
2087
+ }
2088
+ async waitForTaskFailed(taskTitle) {
2089
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.failed").getByText(taskTitle, {
2090
+ exact: true
2091
+ })).toBeVisible();
2092
+ }
2093
+ async waitForTaskSkipped(taskTitle) {
2094
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.skipped").getByText(taskTitle, {
2095
+ exact: true
2096
+ })).toBeVisible();
2097
+ }
2098
+ async waitForTaskAborted(taskTitle) {
2099
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.aborted").getByText(taskTitle, {
2100
+ exact: true
2101
+ })).toBeVisible();
2102
+ }
2103
+ async waitForStatusLine(statusLine) {
2104
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task .status-line").getByText(statusLine, {
2105
+ exact: true
2106
+ })).toBeVisible();
2107
+ }
2108
+ async waitForTaskStarted(taskTitle) {
2109
+ await (0, $kKeXs$playwrighttest.expect)(this.page.locator(".task.in_progress").getByTitle(taskTitle, {
2110
+ exact: true
2111
+ })).toBeVisible();
2112
+ }
2113
+ async openTaskDrawer(taskName) {
2114
+ await this.page.locator(".task-header").getByText(taskName).click();
2115
+ return this.taskDrawer;
2116
+ }
2117
+ async openVariables() {
2118
+ await this.openReleaseMenu("Variables");
2119
+ return new (0, $fd4eef3ad2b2e612$export$a87f0ae8695e74be)(this.page);
2120
+ }
2121
+ async openReleaseMenu(menuItem) {
2122
+ await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, {
2123
+ exact: true
2124
+ }).click();
2125
+ }
2126
+ async openSubPage(subpage) {
2127
+ await this.page.locator("ul.side-nav li", {
2128
+ hasText: subpage
2129
+ }).click();
2130
+ }
2131
+ async openTask(taskName) {
2132
+ await this.page.getByTitle(taskName, {
2133
+ exact: true
2134
+ }).click();
2135
+ }
2136
+ async collapseAllTaskView() {
2137
+ const icCollapseTreeview1 = this.page.locator("div.pull-left.expander.ng-scope i.xl-icon.arrow-down-icon");
2138
+ for (const element of (await icCollapseTreeview1.all())){
2139
+ const blnVal = await element.isVisible();
2140
+ if (blnVal) {
2141
+ await element.click();
2142
+ await this.collapseAllTaskView();
2143
+ }
2144
+ }
2145
+ }
2146
+ async expandAllTaskView() {
2147
+ const icExpandTreeview1 = this.page.locator("div.pull-left.expander.ng-scope i.xl-icon.arrow-right-icon");
2148
+ for (const element of (await icExpandTreeview1.all())){
2149
+ const blnVal = await element.isVisible();
2150
+ if (blnVal) {
2151
+ await element.click();
2152
+ await this.expandAllTaskView();
2153
+ }
2154
+ }
2155
+ }
2156
+ }
2157
+ class $9b9a8c3da392d020$var$Phase extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2158
+ constructor(page, phaseName){
2159
+ super(page);
2160
+ this.phaseLocator = page.locator(".phase", {
2161
+ hasText: phaseName
2162
+ });
2163
+ }
2164
+ async addTask(taskName, taskGroup, taskType) {
2165
+ await this.phaseLocator.getByText("Add task").click();
2166
+ await this.phaseLocator.locator(".quick-title").fill(taskName);
2167
+ await this.phaseLocator.locator(".xlr-ctx-menu-toggle").click();
2168
+ await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, {
2169
+ exact: true
2170
+ }).scrollIntoViewIfNeeded();
2171
+ await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, {
2172
+ exact: true
2173
+ }).hover();
2174
+ await this.page.locator(`.xlr-ctx-menu.active`).getByTitle(taskType, {
2175
+ exact: true
2176
+ }).click();
2177
+ await this.phaseLocator.locator(".quick-controls-container a").getByText("Add", {
2178
+ exact: true
2179
+ }).click();
2180
+ }
2181
+ }
1924
2182
 
1925
2183
 
1926
2184
 
1927
- var $hi3Ib = parcelRequire("hi3Ib");
1928
2185
 
1929
- /** `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]";
1930
- var $2184c74fd3b50571$var$dataViewTag = "[object DataView]";
1931
- /** 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);
1932
- /**
1933
- * Gets the `toStringTag` of `value`.
1934
- *
1935
- * @private
1936
- * @param {*} value The value to query.
1937
- * @returns {string} Returns the `toStringTag`.
1938
- */ var $2184c74fd3b50571$var$getTag = $hi3Ib;
1939
- // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
1940
- 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) {
1941
- var result = $hi3Ib(value), Ctor = result == $2184c74fd3b50571$var$objectTag ? value.constructor : undefined, ctorString = Ctor ? $c6de24274df36d4e$exports(Ctor) : "";
1942
- if (ctorString) switch(ctorString){
1943
- case $2184c74fd3b50571$var$dataViewCtorString:
1944
- return $2184c74fd3b50571$var$dataViewTag;
1945
- case $2184c74fd3b50571$var$mapCtorString:
1946
- return $2184c74fd3b50571$var$mapTag;
1947
- case $2184c74fd3b50571$var$promiseCtorString:
1948
- return $2184c74fd3b50571$var$promiseTag;
1949
- case $2184c74fd3b50571$var$setCtorString:
1950
- return $2184c74fd3b50571$var$setTag;
1951
- case $2184c74fd3b50571$var$weakMapCtorString:
1952
- return $2184c74fd3b50571$var$weakMapTag;
2186
+ class $dc91ece6da6cadfa$export$1533b625ec0c75e2 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2187
+ async goToApplicationsPage() {
2188
+ await this.page.goto("./#/applications");
2189
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Applications - Digital.ai Release");
2190
+ return this;
2191
+ }
2192
+ async addNewApplication(applicationName) {
2193
+ await this.page.locator(`//button[normalize-space()='New application']`).click();
2194
+ await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
2195
+ await this.page.locator(`//button[normalize-space()='Save']`).click();
2196
+ return this;
2197
+ }
2198
+ async verifyApplicationisCreated(applicationName) {
2199
+ await this.page.waitForSelector(`div[title='${applicationName}'] strong`);
2200
+ return this;
2201
+ }
2202
+ async createApplicationAndLinkEnvironment(environmentName, applicationName) {
2203
+ await this.page.locator(`//button[normalize-space()='New application']`).click();
2204
+ await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);
2205
+ await this.page.locator("input[placeholder='Filter environment name...']").type(environmentName);
2206
+ await this.page.locator(`div[title='${environmentName}']`).click();
2207
+ await this.page.locator(`//button[normalize-space()='Save']`).click();
2208
+ await this.page.locator("i.xl-icon.close-icon").click();
2209
+ return this;
1953
2210
  }
1954
- return result;
1955
- };
1956
- $2184c74fd3b50571$exports = $2184c74fd3b50571$var$getTag;
1957
-
1958
-
1959
- var $5cfa9b34443304aa$exports = {};
1960
- /**
1961
- * Converts `map` to its key-value pairs.
1962
- *
1963
- * @private
1964
- * @param {Object} map The map to convert.
1965
- * @returns {Array} Returns the key-value pairs.
1966
- */ function $5cfa9b34443304aa$var$mapToArray(map) {
1967
- var index = -1, result = Array(map.size);
1968
- map.forEach(function(value, key) {
1969
- result[++index] = [
1970
- key,
1971
- value
1972
- ];
1973
- });
1974
- return result;
1975
2211
  }
1976
- $5cfa9b34443304aa$exports = $5cfa9b34443304aa$var$mapToArray;
1977
2212
 
1978
2213
 
1979
- var $e0efec8f59f2b46b$exports = {};
1980
- /**
1981
- * Converts `set` to its value-value pairs.
1982
- *
1983
- * @private
1984
- * @param {Object} set The set to convert.
1985
- * @returns {Array} Returns the value-value pairs.
1986
- */ function $e0efec8f59f2b46b$var$setToPairs(set) {
1987
- var index = -1, result = Array(set.size);
1988
- set.forEach(function(value) {
1989
- result[++index] = [
1990
- value,
1991
- value
1992
- ];
1993
- });
1994
- return result;
1995
- }
1996
- $e0efec8f59f2b46b$exports = $e0efec8f59f2b46b$var$setToPairs;
1997
2214
 
1998
2215
 
1999
- /** `Object#toString` result references. */ var $acbd35b1cbbf33e4$var$mapTag = "[object Map]", $acbd35b1cbbf33e4$var$setTag = "[object Set]";
2000
- /**
2001
- * Creates a `_.toPairs` or `_.toPairsIn` function.
2002
- *
2003
- * @private
2004
- * @param {Function} keysFunc The function to get the keys of a given object.
2005
- * @returns {Function} Returns the new pairs function.
2006
- */ function $acbd35b1cbbf33e4$var$createToPairs(keysFunc) {
2007
- return function(object) {
2008
- var tag = $2184c74fd3b50571$exports(object);
2009
- if (tag == $acbd35b1cbbf33e4$var$mapTag) return $5cfa9b34443304aa$exports(object);
2010
- if (tag == $acbd35b1cbbf33e4$var$setTag) return $e0efec8f59f2b46b$exports(object);
2011
- return $34482bf0fdb87aa6$exports(object, keysFunc(object));
2012
- };
2216
+ class $be4dd73206d8e76b$export$3cac5fd37ae64b91 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2217
+ async openPersonalAccessTokenPage() {
2218
+ // await this.page.locator("button.dot-avatar").click()
2219
+ // await this.page.locator("//div[normalize-space()='Access tokens']").click()
2220
+ await this.page.goto("./#/personal-access-token");
2221
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Access tokens / Personal settings - Digital.ai Release");
2222
+ return this;
2223
+ }
2224
+ async addNewToken(tokenName) {
2225
+ //await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release')
2226
+ await this.page.locator("#tokenText").fill(tokenName);
2227
+ await this.page.locator("button[type='submit']").click();
2228
+ return this;
2229
+ }
2013
2230
  }
2014
- $acbd35b1cbbf33e4$exports = $acbd35b1cbbf33e4$var$createToPairs;
2015
2231
 
2016
2232
 
2017
2233
 
2018
- var $bqLSx = parcelRequire("bqLSx");
2019
- /**
2020
- * Creates an array of own enumerable string keyed-value pairs for `object`
2021
- * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
2022
- * entries are returned.
2023
- *
2024
- * @static
2025
- * @memberOf _
2026
- * @since 4.0.0
2027
- * @alias entries
2028
- * @category Object
2029
- * @param {Object} object The object to query.
2030
- * @returns {Array} Returns the key-value pairs.
2031
- * @example
2032
- *
2033
- * function Foo() {
2034
- * this.a = 1;
2035
- * this.b = 2;
2036
- * }
2037
- *
2038
- * Foo.prototype.c = 3;
2039
- *
2040
- * _.toPairs(new Foo);
2041
- * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
2042
- */ var $f51969c4a7467fa0$var$toPairs = $acbd35b1cbbf33e4$exports($bqLSx);
2043
- $f51969c4a7467fa0$exports = $f51969c4a7467fa0$var$toPairs;
2044
2234
 
2045
2235
 
2046
- const $8977f8672c5de0fa$export$45f0aca2596a2bb3 = function() {
2047
- const RELEASE_TYPE = "xlrelease.Release";
2048
- const PHASE_TYPE = "xlrelease.Phase";
2049
- const TEAM_TYPE = "xlrelease.Team";
2050
- const TASK_TYPE = "xlrelease.Task";
2051
- const COMMENT_TYPE = "xlrelease.Comment";
2052
- const CONDITION_TYPE = "xlrelease.GateCondition";
2053
- const DEPENDENCY_TYPE = "xlrelease.Dependency";
2054
- const LINK_TYPE = "xlrelease.Link";
2055
- const ATTACHMENT_TYPE = "xlrelease.Attachment";
2056
- const DASHBOARD_TYPE = "xlrelease.Dashboard";
2057
- const _TRIGGER_TYPE = "xlrelease.ReleaseTrigger";
2058
- const JIRA_TYPE = "jira.CreateIssue";
2059
- const DEFAULT_TASK_OWNER = "Itchy";
2060
- const processTasks = (task, container, index)=>{
2061
- if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.type)) task.type = TASK_TYPE;
2062
- task.id = task.id || `${container.id}/Task${index}`;
2063
- if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(task.owner) && task.type !== JIRA_TYPE) task.owner = DEFAULT_TASK_OWNER;
2064
- if (task.owner === null) delete task.owner;
2065
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.conditions, function(condition, idx) {
2066
- condition.type = CONDITION_TYPE;
2067
- condition.id = `${task.id}/GateCondition${idx}`;
2068
- });
2069
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.dependencies, function(dependency, idx) {
2070
- dependency.type = DEPENDENCY_TYPE;
2071
- dependency.id = `${task.id}/Dependency${idx}`;
2072
- });
2073
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.links, function(link, idx) {
2074
- link.type = LINK_TYPE;
2075
- link.id = `${task.id}/Link${idx}`;
2076
- });
2077
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.comments, function(comment, idx) {
2078
- comment.type = COMMENT_TYPE;
2079
- comment.id = `${task.id}/Comment${idx}`;
2236
+ class $bb5572a48b31014a$export$e2e2e1ffdce20c30 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2237
+ constructor(page){
2238
+ super(page);
2239
+ this.userName = page.locator("#username");
2240
+ this.name = page.locator("#full-name");
2241
+ this.email = page.locator("#email");
2242
+ this.password = page.locator('[data-test="password-input"]');
2243
+ this.cnfPassword = page.locator("#passwordConfirmation");
2244
+ this.saveButton = page.getByRole("button", {
2245
+ name: "Save"
2080
2246
  });
2081
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.tasks, function(subTask, idx) {
2082
- processTasks(subTask, task, idx);
2247
+ this.cancelButton = page.getByRole("button", {
2248
+ name: "Cancel"
2083
2249
  });
2084
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.templateVariables, function(variable, idx) {
2085
- (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, task.id, idx));
2250
+ this.deleteButton = page.getByRole("button", {
2251
+ name: "Delete"
2086
2252
  });
2087
- (0, (/*@__PURE__*/$parcel$interopDefault($952a2b8d8056b381$exports)))(task.attachments, function(attachment, idx) {
2088
- attachment.type = ATTACHMENT_TYPE;
2089
- attachment.id = `${task.id}/Attachment${idx}`;
2253
+ }
2254
+ async setUserName(username) {
2255
+ return await this.userName.fill(username);
2256
+ }
2257
+ async setFullName(fullName) {
2258
+ return await this.name.fill(fullName);
2259
+ }
2260
+ async setEmail(email) {
2261
+ return await this.email.fill(email);
2262
+ }
2263
+ async setPassword(password) {
2264
+ return await this.password.fill(password);
2265
+ }
2266
+ async setConfirmPassword(cnfPassword) {
2267
+ return await this.cnfPassword.fill(cnfPassword);
2268
+ }
2269
+ async save() {
2270
+ await this.saveButton.click();
2271
+ }
2272
+ async cancel() {
2273
+ await this.cancelButton.click();
2274
+ }
2275
+ async delete() {
2276
+ await this.deleteButton.click();
2277
+ }
2278
+ }
2279
+
2280
+
2281
+ class $3ceab7c613cabfd6$export$107317390f5aa598 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2282
+ constructor(page){
2283
+ super(page);
2284
+ this.page = page;
2285
+ this.newUserButton = this.page.getByTestId("new-user-btn");
2286
+ this.modal = new (0, $bb5572a48b31014a$export$e2e2e1ffdce20c30)(page);
2287
+ }
2288
+ async openUsersPage() {
2289
+ this.page.goto("/#/users", {
2290
+ timeout: 1000
2090
2291
  });
2091
- if (task.pythonScript) {
2092
- const pythonScript = task.pythonScript;
2093
- pythonScript.id = `${task.id}/PythonScript`;
2094
- pythonScript.customScriptTask = task.id;
2095
- }
2096
- };
2097
- const processPhases = (phase, release, index)=>{
2098
- phase.type = PHASE_TYPE;
2099
- phase.id = `${release.id}/Phase${index}`;
2100
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(phase.tasks, (task, idx)=>{
2101
- processTasks(task, phase, idx);
2292
+ }
2293
+ async toggleLoginPermission(username) {
2294
+ await this.page.getByRole("row", {
2295
+ name: "" + username + ""
2296
+ }).getByRole("checkbox").check();
2297
+ //await this.page.locator(`tr:contains('${username}') .login-permission input`).click();
2298
+ }
2299
+ async addUser() {
2300
+ await this.newUserButton.click();
2301
+ }
2302
+ async createUser(username, password) {
2303
+ await this.modal.setUserName(username);
2304
+ await this.modal.setFullName(username);
2305
+ await this.modal.setEmail("testuser@company.com");
2306
+ await this.modal.setPassword(password);
2307
+ await this.modal.setConfirmPassword(password);
2308
+ await this.modal.save();
2309
+ }
2310
+ async expectToHaveLoginPermission(username) {
2311
+ return await (0, $kKeXs$playwrighttest.expect)(this.page.getByRole("row", {
2312
+ name: "" + username + ""
2313
+ }).getByRole("checkbox")).toBeChecked();
2314
+ }
2315
+ async deleteUser(username) {
2316
+ await this.page.getByRole("row", {
2317
+ name: "" + username + ""
2318
+ }).locator("i").nth(1).click();
2319
+ await this.modal.delete();
2320
+ }
2321
+ }
2322
+
2323
+
2324
+
2325
+ class $7867194f18360347$export$1d7840d5cdc861d5 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2326
+ constructor(page){
2327
+ super(page);
2328
+ this.settingsIcon = this.page.getByRole("button", {
2329
+ name: "Settings"
2102
2330
  });
2103
- };
2104
- const getVariableEntity = (value, key, containerId, index, password)=>{
2105
- const keyNoSyntax = key.replace("${", "").replace("}", "");
2106
- return {
2107
- id: `${containerId}/Variable${index}`,
2108
- key: keyNoSyntax,
2109
- requiresValue: true,
2110
- showOnReleaseStart: true,
2111
- type: password ? "xlrelease.PasswordStringVariable" : "xlrelease.StringVariable",
2112
- value: value
2113
- };
2114
- };
2115
- const getValueProviderConfigurationEntity = function(containerId) {
2116
- return {
2117
- id: `${containerId}/valueProvider`,
2118
- variable: containerId
2331
+ this.usersAndPermissionMenu = this.page.getByTestId("undefined-menu").getByText("Users and permissions");
2332
+ this.managePluginMenu = this.page.getByText("Manage plugins");
2333
+ }
2334
+ async openUsersAndPermissions() {
2335
+ await this.settingsIcon.click();
2336
+ await this.page.getByTestId("undefined-menu").getByText("Users and permissions").click();
2337
+ }
2338
+ async openManagePlugin() {
2339
+ await this.settingsIcon.click();
2340
+ await this.managePluginMenu.click();
2341
+ }
2342
+ }
2343
+
2344
+
2345
+
2346
+ class $a642d735048996f9$export$922081b54f2ab994 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2347
+ constructor(page){
2348
+ super(page);
2349
+ }
2350
+ }
2351
+
2352
+
2353
+
2354
+
2355
+ class $a8855257f8bb2b12$export$43682cddead1dd78 extends (0, $f8721861c660dd88$export$2b65d1d97338f32b) {
2356
+ async openReleaseCalendarPage() {
2357
+ await this.page.goto("./#/calendar");
2358
+ await (0, $kKeXs$playwrighttest.expect)(this.page).toHaveTitle("Release calendar / Home - Digital.ai Release");
2359
+ //Define date format to verify different calendar views
2360
+ const today = new Date();
2361
+ let options = {
2362
+ weekday: "long",
2363
+ year: "numeric",
2364
+ month: "short",
2365
+ day: "numeric"
2119
2366
  };
2120
- };
2121
- const getDashboardExtension = (dashboard, releaseId)=>{
2122
- const dashboardExtension = {
2123
- id: `${releaseId}/summary`,
2124
- type: DASHBOARD_TYPE,
2125
- tiles: []
2367
+ this.dayFormat = today.toLocaleDateString("en-US", options); // Saturday, September 17, 2016
2368
+ this.yearFormat = today.getFullYear();
2369
+ this.yearFormatString = this.yearFormat.toString();
2370
+ options = {
2371
+ month: "long",
2372
+ year: "numeric"
2126
2373
  };
2127
- if (dashboard.tiles) (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(dashboard.tiles, function(tile, index) {
2128
- dashboardExtension.tiles.push(getTileEntity(tile, `${releaseId}/summary`, index));
2129
- });
2130
- return dashboardExtension;
2131
- };
2132
- function getTileEntity(tile, containerId, index) {
2133
- tile.id = tile.id || `${containerId}/Tile${index}`;
2134
- return tile;
2374
+ this.monthFormat = today.toLocaleDateString("en-US", options);
2375
+ return this;
2135
2376
  }
2136
- return function(release) {
2137
- release.type = RELEASE_TYPE;
2138
- if (release.id.indexOf("Applications/") === -1) release.id = `Applications/${release.id}`;
2139
- if (release.startDate) release.queryableStartDate = release.startDate;
2140
- else if (release.scheduledStartDate) release.queryableStartDate = release.scheduledStartDate;
2141
- if (release.endDate) release.queryableEndDate = release.endDate;
2142
- else if (release.dueDate) release.queryableEndDate = release.dueDate;
2143
- if ((0, (/*@__PURE__*/$parcel$interopDefault($3e8b520187e41aa6$exports)))(release.owner)) release.owner = "Itchy"; // default release manager
2144
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.phases, function(phase, index) {
2145
- processPhases(phase, release, index);
2146
- });
2147
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.teams, function(team, index) {
2148
- team.type = TEAM_TYPE;
2149
- team.id = `${release.id}/Team${index}`;
2150
- });
2151
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.attachments, function(attachment, index) {
2152
- attachment.type = ATTACHMENT_TYPE;
2153
- attachment.id = `${release.id}/Attachment${index}`;
2154
- });
2155
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))(release.variables, function(variable, index) {
2156
- (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable, getVariableEntity(variable.value, variable.key, release.id, index));
2157
- if (variable.valueProvider) (0, (/*@__PURE__*/$parcel$interopDefault($732eba8dca8b5420$exports)))(variable.valueProvider, getValueProviderConfigurationEntity(variable.id));
2158
- });
2159
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.variableValues), function(keyValue, index) {
2160
- if (!release.variables) release.variables = [];
2161
- release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1000 + index));
2162
- release.variableValues = undefined;
2163
- });
2164
- (0, (/*@__PURE__*/$parcel$interopDefault($ae8Uz)))((0, (/*@__PURE__*/$parcel$interopDefault($f51969c4a7467fa0$exports)))(release.passwordVariableValues), function(keyValue, index) {
2165
- if (!release.variables) release.variables = [];
2166
- release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1500 + index, true));
2167
- release.passwordVariableValues = undefined;
2377
+ async exportCalendar() {
2378
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
2379
+ this.page.on("download", ()=>{});
2380
+ await this.page.getByRole("button", {
2381
+ name: "download icon Export calendar"
2382
+ }).click();
2383
+ const downloadPromise = this.page.waitForEvent("download");
2384
+ await this.page.getByRole("button", {
2385
+ name: "Export"
2386
+ }).click();
2387
+ await downloadPromise;
2388
+ }
2389
+ async cancelCalendarExport() {
2390
+ let downloadCount = 0;
2391
+ // Listen to download events
2392
+ this.page.on("download", (_download)=>{
2393
+ downloadCount++;
2168
2394
  });
2169
- if (release.summary) {
2170
- release.extensions = [
2171
- getDashboardExtension(release.summary, release.id)
2172
- ];
2173
- release.summary = undefined;
2174
- }
2175
- };
2176
- }();
2395
+ await this.page.getByRole("button", {
2396
+ name: "download icon Export calendar"
2397
+ }).click();
2398
+ await this.page.getByRole("button", {
2399
+ name: "Cancel"
2400
+ }).click();
2401
+ return downloadCount;
2402
+ }
2403
+ async verifyDayView() {
2404
+ await this.page.getByRole("combobox").click();
2405
+ await this.page.getByRole("option", {
2406
+ name: "Day"
2407
+ }).click();
2408
+ await this.page.getByRole("button", {
2409
+ name: "Today"
2410
+ }).click();
2411
+ //Verify Page has correct day format displayed at the page bottom
2412
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(this.dayFormat)).toBeVisible();
2413
+ }
2414
+ async verifyYearView() {
2415
+ await this.page.getByRole("combobox").click();
2416
+ await this.page.getByRole("option", {
2417
+ name: "Year"
2418
+ }).click();
2419
+ await this.page.getByRole("button", {
2420
+ name: "Today"
2421
+ }).click();
2422
+ //Verify Page has correct Year format displayed at the page bottom
2423
+ await (0, $kKeXs$playwrighttest.expect)(this.page.getByText(this.yearFormatString)).toBeVisible();
2424
+ }
2425
+ }
2426
+
2427
+
2428
+ class $4ef41cf96a5fae4c$export$b8a61e5c71402559 {
2429
+ constructor(page){
2430
+ this.page = page;
2431
+ this.releasePage = new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(page);
2432
+ this.settingsMenu = new (0, $7867194f18360347$export$1d7840d5cdc861d5)(page);
2433
+ this.usersPage = new (0, $3ceab7c613cabfd6$export$107317390f5aa598)(page);
2434
+ this.applicationPage = new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(page);
2435
+ this.taskDetailsPage = new (0, $a642d735048996f9$export$922081b54f2ab994)(page);
2436
+ this.releaseCalendarPage = new (0, $a8855257f8bb2b12$export$43682cddead1dd78)(page);
2437
+ }
2438
+ async openTemplate(id) {
2439
+ return this.openReleaseOrTemplate(id, false);
2440
+ }
2441
+ async openRelease(id) {
2442
+ return this.openReleaseOrTemplate(id, true);
2443
+ }
2444
+ async openApplicationsPage() {
2445
+ return new (0, $dc91ece6da6cadfa$export$1533b625ec0c75e2)(this.page).goToApplicationsPage();
2446
+ }
2447
+ async openPersonalAccessTokenPage() {
2448
+ return new (0, $be4dd73206d8e76b$export$3cac5fd37ae64b91)(this.page).openPersonalAccessTokenPage();
2449
+ }
2450
+ async gotoFolderPage() {
2451
+ await this.page.getByText("Folders").click();
2452
+ }
2453
+ async gotoTaskPage() {
2454
+ await this.page.getByTestId("sideNav-item-3").getByText("Tasks").click();
2455
+ }
2456
+ async gotoReleasePage() {
2457
+ await this.page.getByText("Releases").click();
2458
+ }
2459
+ async gotoWorkflowCatalogPage() {
2460
+ await this.page.getByText("Workflow catalog").click();
2461
+ }
2462
+ async gotoWorkflowsPage() {
2463
+ await this.page.getByTestId("sideNav-item-6").getByText("Workflows").click();
2464
+ }
2465
+ async gotoGroupsPage() {
2466
+ await this.page.getByText("Groups").click();
2467
+ }
2468
+ async gotoReleaseCalenderPage() {
2469
+ await this.page.getByText("Release calendar").click();
2470
+ }
2471
+ async gotoDeliveriesPage() {
2472
+ await this.page.getByText("Deliveries").click();
2473
+ }
2474
+ async gotoTriggersPage() {
2475
+ await this.page.getByText("Triggers").click();
2476
+ }
2477
+ async gotoDigitalAnalyticsPage() {
2478
+ await this.page.getByText("Digital.ai Analytics").click();
2479
+ }
2480
+ async gotoReportsPage() {
2481
+ await this.page.getByText("Reports").click();
2482
+ }
2483
+ async gotoTemplatesPage() {
2484
+ await this.page.getByText("Templates").click();
2485
+ }
2486
+ async gotoEnvironmentsPage() {
2487
+ await this.page.getByText("Environments").click();
2488
+ }
2489
+ async gotoEnvironmentsCalenderPage() {
2490
+ await this.page.getByText("Environments calendar").click();
2491
+ }
2492
+ async gotoGobalVariablesPage() {
2493
+ await this.page.getByText("Global variables").click();
2494
+ }
2495
+ async gotoConnectionsPage() {
2496
+ await this.page.getByText("Connections").click();
2497
+ }
2498
+ async openReleaseOrTemplate(id, release) {
2499
+ const url = release ? "releases" : "templates";
2500
+ await this.page.goto(`./#/${url}/${id}`);
2501
+ await this.page.waitForSelector("#release");
2502
+ return new (0, $9b9a8c3da392d020$export$f43492e8ac3c566)(this.page);
2503
+ }
2504
+ }
2177
2505
 
2178
2506
 
2179
2507
 
@@ -2189,7 +2517,7 @@ const $6998c6a53a9eb4fa$export$e0969da9b8fb378d = (0, $kKeXs$playwrighttest.test
2189
2517
  return fixtures;
2190
2518
  },
2191
2519
  loginPage: async ({ page: page }, use)=>{
2192
- const loginPage = new (0, $9a16c8a1280a99a0$export$f14c0e3f98d164c0)(page);
2520
+ const loginPage = new (0, $258749e0671c845a$export$f14c0e3f98d164c0)(page);
2193
2521
  await use(loginPage);
2194
2522
  return loginPage;
2195
2523
  },
@@ -2203,11 +2531,13 @@ class $6998c6a53a9eb4fa$var$Fixtures {
2203
2531
  releaseIds = [];
2204
2532
  triggerIds = [];
2205
2533
  configurationIds = [];
2534
+ usernames = [];
2535
+ userProfiles = [];
2206
2536
  constructor(request, page){
2207
2537
  this.request = request;
2208
2538
  this.page = page;
2209
2539
  }
2210
- release(release) {
2540
+ async release(release) {
2211
2541
  this.initDefaults(release);
2212
2542
  this.releaseIds.push(release.id);
2213
2543
  return this.deleteRelease(release.id).then(()=>this.deleteArchivedRelease(release.id)).then(()=>this.doPost("fixtures/release", release));
@@ -2248,9 +2578,13 @@ class $6998c6a53a9eb4fa$var$Fixtures {
2248
2578
  for (const releaseId of this.releaseIds.reverse())promises.push(this.deleteRelease(releaseId));
2249
2579
  for (const triggerId of this.triggerIds)promises.push(this.deleteTrigger(triggerId));
2250
2580
  for (const confId of this.configurationIds)promises.push(this.deleteConfiguration(confId));
2581
+ for (const usernames of this.usernames)promises.push(this.deleteUser(usernames));
2582
+ for (const userProfiles of this.userProfiles)promises.push(this.deleteUserProfile(userProfiles));
2251
2583
  this.releaseIds = [];
2252
2584
  this.triggerIds = [];
2253
2585
  this.configurationIds = [];
2586
+ this.usernames = [];
2587
+ this.userProfiles = [];
2254
2588
  return Promise.all(promises);
2255
2589
  }
2256
2590
  async waitForReleaseStarted(releaseTitle) {
@@ -2300,6 +2634,27 @@ class $6998c6a53a9eb4fa$var$Fixtures {
2300
2634
  }
2301
2635
  ]);
2302
2636
  }
2637
+ async addUser(username, password) {
2638
+ this.usernames.push(username);
2639
+ return await this.doPost("fixtures/user", {
2640
+ username: username,
2641
+ password: password
2642
+ });
2643
+ }
2644
+ async addUserProfile(username, profile) {
2645
+ if (!profile) profile = {};
2646
+ profile.id = username;
2647
+ profile.type = "xlrelease.UserProfile";
2648
+ profile.canonicalId = username.toLowerCase();
2649
+ this.userProfiles.push(profile.canonicalId);
2650
+ return await this.doPost("fixtures/userProfile", profile);
2651
+ }
2652
+ async deleteUser(username) {
2653
+ return await this.request.delete(`fixtures/user/${username}`);
2654
+ }
2655
+ async deleteUserProfile(username) {
2656
+ return await this.request.delete(`fixtures/userProfile/${username}`);
2657
+ }
2303
2658
  doPost(url, body) {
2304
2659
  return this.request.post(url, {
2305
2660
  data: body,