@commercetools-frontend/cypress 22.2.0 → 22.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,37 +33,38 @@ var _URL__default = /*#__PURE__*/_interopDefault(_URL);
33
33
  var semver__default = /*#__PURE__*/_interopDefault(semver);
34
34
 
35
35
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
36
-
37
36
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context5, _context6; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context5 = ownKeys(Object(source), !0)).call(_context5, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context6 = ownKeys(Object(source))).call(_context6, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
38
37
 
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+
42
+ // Alias for backwards compatibility
43
+
39
44
  function isFeatureSupported(expectedVersion) {
40
45
  return semver__default["default"].gte(Cypress.version, expectedVersion);
41
46
  }
42
-
43
47
  function loginByForm(commandOptions) {
44
48
  var _commandOptions$proje;
45
-
46
49
  if (isLocalhost()) {
47
50
  throw new Error("At the moment, the \"loginByForm\" command only works when testing a Merchant Center production URL. Using form login in an application running on localhost is not supported due to issues with \"cy.origin\".");
48
51
  }
49
-
50
52
  const projectKey = (_commandOptions$proje = commandOptions.projectKey) !== null && _commandOptions$proje !== void 0 ? _commandOptions$proje : Cypress.env('PROJECT_KEY');
51
53
  cy.task('customApplicationConfig', {
52
54
  entryPointUriPath: commandOptions.entryPointUriPath,
53
55
  dotfiles: commandOptions.dotfiles
54
- }, // Do not show log, as it may contain sensible information.
56
+ },
57
+ // Do not show log, as it may contain sensible information.
55
58
  {
56
59
  log: false
57
60
  }).then(appConfig => {
58
61
  var _context, _commandOptions$login;
59
-
60
62
  let url = _concatInstanceProperty__default["default"](_context = "/".concat(projectKey, "/")).call(_context, commandOptions.entryPointUriPath);
61
-
62
63
  if (commandOptions.entryPointUriPath === 'account') {
63
64
  url = "/".concat(commandOptions.entryPointUriPath);
64
- } // Log loaded application config for debugging purposes.
65
-
65
+ }
66
66
 
67
+ // Log loaded application config for debugging purposes.
67
68
  Cypress.log({
68
69
  displayName: 'task',
69
70
  name: 'customApplicationConfig',
@@ -73,68 +74,65 @@ function loginByForm(commandOptions) {
73
74
  email: Cypress.env('LOGIN_EMAIL') || Cypress.env('LOGIN_USER'),
74
75
  password: Cypress.env('LOGIN_PASSWORD')
75
76
  };
76
- const sessionKey = ['loginByForm', userCredentials.email, commandOptions.entryPointUriPath]; // const mcUrl = new URL(appConfig.mcApiUrl);
77
+ const sessionKey = ['loginByForm', userCredentials.email, commandOptions.entryPointUriPath];
78
+ // const mcUrl = new URL(appConfig.mcApiUrl);
77
79
  // const mcFrontendHostname = mcUrl.hostname.replace('mc-api', 'mc');
78
80
 
79
81
  function authCallback() {
80
- cy.visit(url); // NOTE: using `cy.origin` is currently disabled as it does not seem to properly work.
82
+ cy.visit(url);
83
+
84
+ // NOTE: using `cy.origin` is currently disabled as it does not seem to properly work.
81
85
  // Interestingly, starting an application locally using Vite works, however not when using Webpack.
82
86
  // For now we keep it disabled until we find a solution.
87
+
83
88
  // // https://cypress.io/blog/2022/04/25/cypress-9-6-0-easily-test-multi-domain-workflows-with-cy-origin/
84
89
  // cy.origin(
85
90
  // mcFrontendHostname,
86
91
  // { args: userCredentials },
87
92
  // fillLoginForm
88
93
  // );
94
+ fillLoginForm(userCredentials);
89
95
 
90
- fillLoginForm(userCredentials); // Wait for the route to be loaded so that the session can be saved.
91
-
96
+ // Wait for the route to be loaded so that the session can be saved.
92
97
  cy.url().should('include', url);
93
- } // For backwards compatibility.
94
-
98
+ }
95
99
 
96
- if (Cypress.config('experimentalSessionAndOrigin')) {
100
+ // For backwards compatibility.
101
+ if (isFeatureSupported('12.0.0') || Cypress.config('experimentalSessionAndOrigin')) {
97
102
  // https://www.cypress.io/blog/2021/08/04/authenticate-faster-in-tests-cy-session-command/
98
103
  cy.session(sessionKey, authCallback, isFeatureSupported('10.9.0') ? {
99
104
  cacheAcrossSpecs: typeof commandOptions.disableCacheAcrossSpecs === 'boolean' ? !commandOptions.disableCacheAcrossSpecs : true
100
105
  } : undefined);
101
106
  } else {
102
- cy.log("We recommend turning on the flag \"experimentalSessionAndOrigin\" to be able to use \"cy.session\" and thus reduce the time to log in between tests.");
107
+ cy.log("We recommend to use \"cy.session\" to reduce the time to log in between tests. Make sure to have at least Cypress v12 or enable it via \"experimentalSessionAndOrigin\" for older Cypress versions.");
103
108
  authCallback();
104
109
  }
105
-
106
110
  if (commandOptions.initialRoute) {
107
111
  var _context2;
108
-
109
112
  cy.visit(_concatInstanceProperty__default["default"](_context2 = "".concat(Cypress.config('baseUrl'))).call(_context2, commandOptions.initialRoute));
110
113
  cy.url().should('include', commandOptions.initialRoute);
111
114
  }
112
115
  });
113
116
  }
114
-
115
117
  function loginByOidc(commandOptions) {
116
118
  if (!isLocalhost()) {
117
119
  throw new Error("The \"loginByOidc\" command only works when testing a Custom Application running on localhost.");
118
120
  }
119
-
120
121
  const sessionNonce = uuid.v4();
121
122
  let projectKey = undefined;
122
-
123
123
  if (commandOptions.entryPointUriPath !== 'account') {
124
124
  var _commandOptions$proje2;
125
-
126
125
  projectKey = (_commandOptions$proje2 = commandOptions.projectKey) !== null && _commandOptions$proje2 !== void 0 ? _commandOptions$proje2 : Cypress.env('PROJECT_KEY');
127
126
  }
128
-
129
127
  cy.task('customApplicationConfig', {
130
128
  entryPointUriPath: commandOptions.entryPointUriPath,
131
129
  dotfiles: commandOptions.dotfiles
132
- }, // Do not show log, as it may contain sensible information.
130
+ },
131
+ // Do not show log, as it may contain sensible information.
133
132
  {
134
133
  log: false
135
134
  }).then(appConfig => {
136
135
  var _appConfig$__DEVELOPM, _appConfig$__DEVELOPM2, _appConfig$__DEVELOPM3, _appConfig$__DEVELOPM4, _appConfig$__DEVELOPM5, _appConfig$__DEVELOPM6, _commandOptions$login2;
137
-
138
136
  // Log loaded application config for debugging purposes.
139
137
  Cypress.log({
140
138
  displayName: 'task',
@@ -151,9 +149,9 @@ function loginByOidc(commandOptions) {
151
149
  const userCredentials = (_commandOptions$login2 = commandOptions.login) !== null && _commandOptions$login2 !== void 0 ? _commandOptions$login2 : {
152
150
  email: Cypress.env('LOGIN_EMAIL') || Cypress.env('LOGIN_USER'),
153
151
  password: Cypress.env('LOGIN_PASSWORD')
154
- }; // Perform the login using the API, then store some required values into the browser storage
152
+ };
153
+ // Perform the login using the API, then store some required values into the browser storage
155
154
  // and redirect to the auth callback route.
156
-
157
155
  const requestOptions = {
158
156
  method: 'POST',
159
157
  url: "".concat(appConfig.mcApiUrl, "/tokens"),
@@ -168,54 +166,49 @@ function loginByOidc(commandOptions) {
168
166
  };
169
167
  cy.request(requestOptions).then(res => {
170
168
  const sessionKey = ['loginByOidc', userCredentials.email, commandOptions.entryPointUriPath];
171
-
172
169
  function authCallback() {
173
170
  cy.visit(res.body.redirectTo, {
174
171
  onBeforeLoad(win) {
175
172
  var _context3;
176
-
177
173
  if (projectKey) {
178
174
  win.localStorage.setItem(constants.STORAGE_KEYS.ACTIVE_PROJECT_KEY, projectKey);
179
175
  }
180
-
181
176
  win.sessionStorage.setItem(_concatInstanceProperty__default["default"](_context3 = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context3, sessionNonce), _JSON$stringify__default["default"]({
182
177
  applicationId,
183
178
  query: {}
184
179
  }));
185
180
  win.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_SCOPE, sessionScope);
186
-
181
+ // Disable redesign announcement
182
+ win.localStorage.setItem('isNewDesignReleaseNotificationClosed', 'true');
187
183
  if (commandOptions.onBeforeLoad) {
188
184
  commandOptions.onBeforeLoad(win);
189
185
  }
190
186
  }
191
-
192
- }); // Wait for the application to be loaded so that the session can be saved.
193
-
187
+ });
188
+ // Wait for the application to be loaded so that the session can be saved.
194
189
  cy.get('#app-loader').should('not.exist');
195
- } // For backwards compatibility.
196
-
190
+ }
197
191
 
198
- if (Cypress.config('experimentalSessionAndOrigin')) {
192
+ // For backwards compatibility.
193
+ if (isFeatureSupported('12.0.0') || Cypress.config('experimentalSessionAndOrigin')) {
199
194
  // https://www.cypress.io/blog/2021/08/04/authenticate-faster-in-tests-cy-session-command/
200
195
  cy.session(sessionKey, authCallback, isFeatureSupported('10.9.0') ? {
201
196
  cacheAcrossSpecs: typeof commandOptions.disableCacheAcrossSpecs === 'boolean' ? !commandOptions.disableCacheAcrossSpecs : true
202
197
  } : undefined);
203
198
  } else {
204
- cy.log("We recommend turning on the flag \"experimentalSessionAndOrigin\" to be able to use \"cy.session\" and thus reduce the time to log in between tests.");
199
+ cy.log("We recommend to use \"cy.session\" to reduce the time to log in between tests. Make sure to have at least Cypress v12 or enable it via \"experimentalSessionAndOrigin\" for older Cypress versions.");
205
200
  authCallback();
206
201
  }
207
-
208
202
  if (commandOptions.initialRoute) {
209
203
  var _context4;
210
-
211
204
  cy.visit(_concatInstanceProperty__default["default"](_context4 = "".concat(Cypress.config('baseUrl'))).call(_context4, commandOptions.initialRoute));
212
205
  cy.url().should('include', commandOptions.initialRoute);
213
206
  }
214
207
  });
215
208
  });
216
209
  }
217
- /* Utilities */
218
210
 
211
+ /* Utilities */
219
212
 
220
213
  function fillLoginForm(userCredentials) {
221
214
  cy.get('input[name=email]').type(userCredentials.email);
@@ -224,17 +217,19 @@ function fillLoginForm(userCredentials) {
224
217
  });
225
218
  cy.get('button').contains('Sign in').click();
226
219
  }
227
-
228
220
  function isLocalhost() {
229
221
  const baseUrl = new _URL__default["default"](Cypress.config('baseUrl'));
230
222
  return baseUrl.hostname === 'localhost';
231
223
  }
232
224
 
225
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
226
+
227
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
228
+
233
229
  Cypress.Commands.add('loginToMerchantCenter', commandOptions => {
234
230
  Cypress.log({
235
231
  name: 'loginToMerchantCenter'
236
232
  });
237
-
238
233
  if (isLocalhost()) {
239
234
  loginByOidc(commandOptions);
240
235
  } else {
@@ -33,37 +33,38 @@ var _URL__default = /*#__PURE__*/_interopDefault(_URL);
33
33
  var semver__default = /*#__PURE__*/_interopDefault(semver);
34
34
 
35
35
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
36
-
37
36
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context5, _context6; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context5 = ownKeys(Object(source), !0)).call(_context5, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context6 = ownKeys(Object(source))).call(_context6, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
38
37
 
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+
42
+ // Alias for backwards compatibility
43
+
39
44
  function isFeatureSupported(expectedVersion) {
40
45
  return semver__default["default"].gte(Cypress.version, expectedVersion);
41
46
  }
42
-
43
47
  function loginByForm(commandOptions) {
44
48
  var _commandOptions$proje;
45
-
46
49
  if (isLocalhost()) {
47
50
  throw new Error("At the moment, the \"loginByForm\" command only works when testing a Merchant Center production URL. Using form login in an application running on localhost is not supported due to issues with \"cy.origin\".");
48
51
  }
49
-
50
52
  const projectKey = (_commandOptions$proje = commandOptions.projectKey) !== null && _commandOptions$proje !== void 0 ? _commandOptions$proje : Cypress.env('PROJECT_KEY');
51
53
  cy.task('customApplicationConfig', {
52
54
  entryPointUriPath: commandOptions.entryPointUriPath,
53
55
  dotfiles: commandOptions.dotfiles
54
- }, // Do not show log, as it may contain sensible information.
56
+ },
57
+ // Do not show log, as it may contain sensible information.
55
58
  {
56
59
  log: false
57
60
  }).then(appConfig => {
58
61
  var _context, _commandOptions$login;
59
-
60
62
  let url = _concatInstanceProperty__default["default"](_context = "/".concat(projectKey, "/")).call(_context, commandOptions.entryPointUriPath);
61
-
62
63
  if (commandOptions.entryPointUriPath === 'account') {
63
64
  url = "/".concat(commandOptions.entryPointUriPath);
64
- } // Log loaded application config for debugging purposes.
65
-
65
+ }
66
66
 
67
+ // Log loaded application config for debugging purposes.
67
68
  Cypress.log({
68
69
  displayName: 'task',
69
70
  name: 'customApplicationConfig',
@@ -73,68 +74,65 @@ function loginByForm(commandOptions) {
73
74
  email: Cypress.env('LOGIN_EMAIL') || Cypress.env('LOGIN_USER'),
74
75
  password: Cypress.env('LOGIN_PASSWORD')
75
76
  };
76
- const sessionKey = ['loginByForm', userCredentials.email, commandOptions.entryPointUriPath]; // const mcUrl = new URL(appConfig.mcApiUrl);
77
+ const sessionKey = ['loginByForm', userCredentials.email, commandOptions.entryPointUriPath];
78
+ // const mcUrl = new URL(appConfig.mcApiUrl);
77
79
  // const mcFrontendHostname = mcUrl.hostname.replace('mc-api', 'mc');
78
80
 
79
81
  function authCallback() {
80
- cy.visit(url); // NOTE: using `cy.origin` is currently disabled as it does not seem to properly work.
82
+ cy.visit(url);
83
+
84
+ // NOTE: using `cy.origin` is currently disabled as it does not seem to properly work.
81
85
  // Interestingly, starting an application locally using Vite works, however not when using Webpack.
82
86
  // For now we keep it disabled until we find a solution.
87
+
83
88
  // // https://cypress.io/blog/2022/04/25/cypress-9-6-0-easily-test-multi-domain-workflows-with-cy-origin/
84
89
  // cy.origin(
85
90
  // mcFrontendHostname,
86
91
  // { args: userCredentials },
87
92
  // fillLoginForm
88
93
  // );
94
+ fillLoginForm(userCredentials);
89
95
 
90
- fillLoginForm(userCredentials); // Wait for the route to be loaded so that the session can be saved.
91
-
96
+ // Wait for the route to be loaded so that the session can be saved.
92
97
  cy.url().should('include', url);
93
- } // For backwards compatibility.
94
-
98
+ }
95
99
 
96
- if (Cypress.config('experimentalSessionAndOrigin')) {
100
+ // For backwards compatibility.
101
+ if (isFeatureSupported('12.0.0') || Cypress.config('experimentalSessionAndOrigin')) {
97
102
  // https://www.cypress.io/blog/2021/08/04/authenticate-faster-in-tests-cy-session-command/
98
103
  cy.session(sessionKey, authCallback, isFeatureSupported('10.9.0') ? {
99
104
  cacheAcrossSpecs: typeof commandOptions.disableCacheAcrossSpecs === 'boolean' ? !commandOptions.disableCacheAcrossSpecs : true
100
105
  } : undefined);
101
106
  } else {
102
- cy.log("We recommend turning on the flag \"experimentalSessionAndOrigin\" to be able to use \"cy.session\" and thus reduce the time to log in between tests.");
107
+ cy.log("We recommend to use \"cy.session\" to reduce the time to log in between tests. Make sure to have at least Cypress v12 or enable it via \"experimentalSessionAndOrigin\" for older Cypress versions.");
103
108
  authCallback();
104
109
  }
105
-
106
110
  if (commandOptions.initialRoute) {
107
111
  var _context2;
108
-
109
112
  cy.visit(_concatInstanceProperty__default["default"](_context2 = "".concat(Cypress.config('baseUrl'))).call(_context2, commandOptions.initialRoute));
110
113
  cy.url().should('include', commandOptions.initialRoute);
111
114
  }
112
115
  });
113
116
  }
114
-
115
117
  function loginByOidc(commandOptions) {
116
118
  if (!isLocalhost()) {
117
119
  throw new Error("The \"loginByOidc\" command only works when testing a Custom Application running on localhost.");
118
120
  }
119
-
120
121
  const sessionNonce = uuid.v4();
121
122
  let projectKey = undefined;
122
-
123
123
  if (commandOptions.entryPointUriPath !== 'account') {
124
124
  var _commandOptions$proje2;
125
-
126
125
  projectKey = (_commandOptions$proje2 = commandOptions.projectKey) !== null && _commandOptions$proje2 !== void 0 ? _commandOptions$proje2 : Cypress.env('PROJECT_KEY');
127
126
  }
128
-
129
127
  cy.task('customApplicationConfig', {
130
128
  entryPointUriPath: commandOptions.entryPointUriPath,
131
129
  dotfiles: commandOptions.dotfiles
132
- }, // Do not show log, as it may contain sensible information.
130
+ },
131
+ // Do not show log, as it may contain sensible information.
133
132
  {
134
133
  log: false
135
134
  }).then(appConfig => {
136
135
  var _appConfig$__DEVELOPM, _appConfig$__DEVELOPM2, _appConfig$__DEVELOPM3, _appConfig$__DEVELOPM4, _appConfig$__DEVELOPM5, _appConfig$__DEVELOPM6, _commandOptions$login2;
137
-
138
136
  // Log loaded application config for debugging purposes.
139
137
  Cypress.log({
140
138
  displayName: 'task',
@@ -151,9 +149,9 @@ function loginByOidc(commandOptions) {
151
149
  const userCredentials = (_commandOptions$login2 = commandOptions.login) !== null && _commandOptions$login2 !== void 0 ? _commandOptions$login2 : {
152
150
  email: Cypress.env('LOGIN_EMAIL') || Cypress.env('LOGIN_USER'),
153
151
  password: Cypress.env('LOGIN_PASSWORD')
154
- }; // Perform the login using the API, then store some required values into the browser storage
152
+ };
153
+ // Perform the login using the API, then store some required values into the browser storage
155
154
  // and redirect to the auth callback route.
156
-
157
155
  const requestOptions = {
158
156
  method: 'POST',
159
157
  url: "".concat(appConfig.mcApiUrl, "/tokens"),
@@ -168,54 +166,49 @@ function loginByOidc(commandOptions) {
168
166
  };
169
167
  cy.request(requestOptions).then(res => {
170
168
  const sessionKey = ['loginByOidc', userCredentials.email, commandOptions.entryPointUriPath];
171
-
172
169
  function authCallback() {
173
170
  cy.visit(res.body.redirectTo, {
174
171
  onBeforeLoad(win) {
175
172
  var _context3;
176
-
177
173
  if (projectKey) {
178
174
  win.localStorage.setItem(constants.STORAGE_KEYS.ACTIVE_PROJECT_KEY, projectKey);
179
175
  }
180
-
181
176
  win.sessionStorage.setItem(_concatInstanceProperty__default["default"](_context3 = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context3, sessionNonce), _JSON$stringify__default["default"]({
182
177
  applicationId,
183
178
  query: {}
184
179
  }));
185
180
  win.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_SCOPE, sessionScope);
186
-
181
+ // Disable redesign announcement
182
+ win.localStorage.setItem('isNewDesignReleaseNotificationClosed', 'true');
187
183
  if (commandOptions.onBeforeLoad) {
188
184
  commandOptions.onBeforeLoad(win);
189
185
  }
190
186
  }
191
-
192
- }); // Wait for the application to be loaded so that the session can be saved.
193
-
187
+ });
188
+ // Wait for the application to be loaded so that the session can be saved.
194
189
  cy.get('#app-loader').should('not.exist');
195
- } // For backwards compatibility.
196
-
190
+ }
197
191
 
198
- if (Cypress.config('experimentalSessionAndOrigin')) {
192
+ // For backwards compatibility.
193
+ if (isFeatureSupported('12.0.0') || Cypress.config('experimentalSessionAndOrigin')) {
199
194
  // https://www.cypress.io/blog/2021/08/04/authenticate-faster-in-tests-cy-session-command/
200
195
  cy.session(sessionKey, authCallback, isFeatureSupported('10.9.0') ? {
201
196
  cacheAcrossSpecs: typeof commandOptions.disableCacheAcrossSpecs === 'boolean' ? !commandOptions.disableCacheAcrossSpecs : true
202
197
  } : undefined);
203
198
  } else {
204
- cy.log("We recommend turning on the flag \"experimentalSessionAndOrigin\" to be able to use \"cy.session\" and thus reduce the time to log in between tests.");
199
+ cy.log("We recommend to use \"cy.session\" to reduce the time to log in between tests. Make sure to have at least Cypress v12 or enable it via \"experimentalSessionAndOrigin\" for older Cypress versions.");
205
200
  authCallback();
206
201
  }
207
-
208
202
  if (commandOptions.initialRoute) {
209
203
  var _context4;
210
-
211
204
  cy.visit(_concatInstanceProperty__default["default"](_context4 = "".concat(Cypress.config('baseUrl'))).call(_context4, commandOptions.initialRoute));
212
205
  cy.url().should('include', commandOptions.initialRoute);
213
206
  }
214
207
  });
215
208
  });
216
209
  }
217
- /* Utilities */
218
210
 
211
+ /* Utilities */
219
212
 
220
213
  function fillLoginForm(userCredentials) {
221
214
  cy.get('input[name=email]').type(userCredentials.email);
@@ -224,17 +217,19 @@ function fillLoginForm(userCredentials) {
224
217
  });
225
218
  cy.get('button').contains('Sign in').click();
226
219
  }
227
-
228
220
  function isLocalhost() {
229
221
  const baseUrl = new _URL__default["default"](Cypress.config('baseUrl'));
230
222
  return baseUrl.hostname === 'localhost';
231
223
  }
232
224
 
225
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
226
+
227
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
228
+
233
229
  Cypress.Commands.add('loginToMerchantCenter', commandOptions => {
234
230
  Cypress.log({
235
231
  name: 'loginToMerchantCenter'
236
232
  });
237
-
238
233
  if (isLocalhost()) {
239
234
  loginByOidc(commandOptions);
240
235
  } else {
@@ -16,37 +16,38 @@ import { buildOidcScope } from '@commercetools-frontend/application-shell/ssr';
16
16
  import { O as OIDC_RESPONSE_TYPES, S as STORAGE_KEYS } from '../../dist/constants-18b165fc.esm.js';
17
17
 
18
18
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
-
20
19
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context5, _context6; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context5 = ownKeys(Object(source), !0)).call(_context5, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context6 = ownKeys(Object(source))).call(_context6, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
21
20
 
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+
25
+ // Alias for backwards compatibility
26
+
22
27
  function isFeatureSupported(expectedVersion) {
23
28
  return semver.gte(Cypress.version, expectedVersion);
24
29
  }
25
-
26
30
  function loginByForm(commandOptions) {
27
31
  var _commandOptions$proje;
28
-
29
32
  if (isLocalhost()) {
30
33
  throw new Error("At the moment, the \"loginByForm\" command only works when testing a Merchant Center production URL. Using form login in an application running on localhost is not supported due to issues with \"cy.origin\".");
31
34
  }
32
-
33
35
  const projectKey = (_commandOptions$proje = commandOptions.projectKey) !== null && _commandOptions$proje !== void 0 ? _commandOptions$proje : Cypress.env('PROJECT_KEY');
34
36
  cy.task('customApplicationConfig', {
35
37
  entryPointUriPath: commandOptions.entryPointUriPath,
36
38
  dotfiles: commandOptions.dotfiles
37
- }, // Do not show log, as it may contain sensible information.
39
+ },
40
+ // Do not show log, as it may contain sensible information.
38
41
  {
39
42
  log: false
40
43
  }).then(appConfig => {
41
44
  var _context, _commandOptions$login;
42
-
43
45
  let url = _concatInstanceProperty(_context = "/".concat(projectKey, "/")).call(_context, commandOptions.entryPointUriPath);
44
-
45
46
  if (commandOptions.entryPointUriPath === 'account') {
46
47
  url = "/".concat(commandOptions.entryPointUriPath);
47
- } // Log loaded application config for debugging purposes.
48
-
48
+ }
49
49
 
50
+ // Log loaded application config for debugging purposes.
50
51
  Cypress.log({
51
52
  displayName: 'task',
52
53
  name: 'customApplicationConfig',
@@ -56,68 +57,65 @@ function loginByForm(commandOptions) {
56
57
  email: Cypress.env('LOGIN_EMAIL') || Cypress.env('LOGIN_USER'),
57
58
  password: Cypress.env('LOGIN_PASSWORD')
58
59
  };
59
- const sessionKey = ['loginByForm', userCredentials.email, commandOptions.entryPointUriPath]; // const mcUrl = new URL(appConfig.mcApiUrl);
60
+ const sessionKey = ['loginByForm', userCredentials.email, commandOptions.entryPointUriPath];
61
+ // const mcUrl = new URL(appConfig.mcApiUrl);
60
62
  // const mcFrontendHostname = mcUrl.hostname.replace('mc-api', 'mc');
61
63
 
62
64
  function authCallback() {
63
- cy.visit(url); // NOTE: using `cy.origin` is currently disabled as it does not seem to properly work.
65
+ cy.visit(url);
66
+
67
+ // NOTE: using `cy.origin` is currently disabled as it does not seem to properly work.
64
68
  // Interestingly, starting an application locally using Vite works, however not when using Webpack.
65
69
  // For now we keep it disabled until we find a solution.
70
+
66
71
  // // https://cypress.io/blog/2022/04/25/cypress-9-6-0-easily-test-multi-domain-workflows-with-cy-origin/
67
72
  // cy.origin(
68
73
  // mcFrontendHostname,
69
74
  // { args: userCredentials },
70
75
  // fillLoginForm
71
76
  // );
77
+ fillLoginForm(userCredentials);
72
78
 
73
- fillLoginForm(userCredentials); // Wait for the route to be loaded so that the session can be saved.
74
-
79
+ // Wait for the route to be loaded so that the session can be saved.
75
80
  cy.url().should('include', url);
76
- } // For backwards compatibility.
77
-
81
+ }
78
82
 
79
- if (Cypress.config('experimentalSessionAndOrigin')) {
83
+ // For backwards compatibility.
84
+ if (isFeatureSupported('12.0.0') || Cypress.config('experimentalSessionAndOrigin')) {
80
85
  // https://www.cypress.io/blog/2021/08/04/authenticate-faster-in-tests-cy-session-command/
81
86
  cy.session(sessionKey, authCallback, isFeatureSupported('10.9.0') ? {
82
87
  cacheAcrossSpecs: typeof commandOptions.disableCacheAcrossSpecs === 'boolean' ? !commandOptions.disableCacheAcrossSpecs : true
83
88
  } : undefined);
84
89
  } else {
85
- cy.log("We recommend turning on the flag \"experimentalSessionAndOrigin\" to be able to use \"cy.session\" and thus reduce the time to log in between tests.");
90
+ cy.log("We recommend to use \"cy.session\" to reduce the time to log in between tests. Make sure to have at least Cypress v12 or enable it via \"experimentalSessionAndOrigin\" for older Cypress versions.");
86
91
  authCallback();
87
92
  }
88
-
89
93
  if (commandOptions.initialRoute) {
90
94
  var _context2;
91
-
92
95
  cy.visit(_concatInstanceProperty(_context2 = "".concat(Cypress.config('baseUrl'))).call(_context2, commandOptions.initialRoute));
93
96
  cy.url().should('include', commandOptions.initialRoute);
94
97
  }
95
98
  });
96
99
  }
97
-
98
100
  function loginByOidc(commandOptions) {
99
101
  if (!isLocalhost()) {
100
102
  throw new Error("The \"loginByOidc\" command only works when testing a Custom Application running on localhost.");
101
103
  }
102
-
103
104
  const sessionNonce = v4();
104
105
  let projectKey = undefined;
105
-
106
106
  if (commandOptions.entryPointUriPath !== 'account') {
107
107
  var _commandOptions$proje2;
108
-
109
108
  projectKey = (_commandOptions$proje2 = commandOptions.projectKey) !== null && _commandOptions$proje2 !== void 0 ? _commandOptions$proje2 : Cypress.env('PROJECT_KEY');
110
109
  }
111
-
112
110
  cy.task('customApplicationConfig', {
113
111
  entryPointUriPath: commandOptions.entryPointUriPath,
114
112
  dotfiles: commandOptions.dotfiles
115
- }, // Do not show log, as it may contain sensible information.
113
+ },
114
+ // Do not show log, as it may contain sensible information.
116
115
  {
117
116
  log: false
118
117
  }).then(appConfig => {
119
118
  var _appConfig$__DEVELOPM, _appConfig$__DEVELOPM2, _appConfig$__DEVELOPM3, _appConfig$__DEVELOPM4, _appConfig$__DEVELOPM5, _appConfig$__DEVELOPM6, _commandOptions$login2;
120
-
121
119
  // Log loaded application config for debugging purposes.
122
120
  Cypress.log({
123
121
  displayName: 'task',
@@ -134,9 +132,9 @@ function loginByOidc(commandOptions) {
134
132
  const userCredentials = (_commandOptions$login2 = commandOptions.login) !== null && _commandOptions$login2 !== void 0 ? _commandOptions$login2 : {
135
133
  email: Cypress.env('LOGIN_EMAIL') || Cypress.env('LOGIN_USER'),
136
134
  password: Cypress.env('LOGIN_PASSWORD')
137
- }; // Perform the login using the API, then store some required values into the browser storage
135
+ };
136
+ // Perform the login using the API, then store some required values into the browser storage
138
137
  // and redirect to the auth callback route.
139
-
140
138
  const requestOptions = {
141
139
  method: 'POST',
142
140
  url: "".concat(appConfig.mcApiUrl, "/tokens"),
@@ -151,54 +149,49 @@ function loginByOidc(commandOptions) {
151
149
  };
152
150
  cy.request(requestOptions).then(res => {
153
151
  const sessionKey = ['loginByOidc', userCredentials.email, commandOptions.entryPointUriPath];
154
-
155
152
  function authCallback() {
156
153
  cy.visit(res.body.redirectTo, {
157
154
  onBeforeLoad(win) {
158
155
  var _context3;
159
-
160
156
  if (projectKey) {
161
157
  win.localStorage.setItem(STORAGE_KEYS.ACTIVE_PROJECT_KEY, projectKey);
162
158
  }
163
-
164
159
  win.sessionStorage.setItem(_concatInstanceProperty(_context3 = "".concat(STORAGE_KEYS.NONCE, "_")).call(_context3, sessionNonce), _JSON$stringify({
165
160
  applicationId,
166
161
  query: {}
167
162
  }));
168
163
  win.sessionStorage.setItem(STORAGE_KEYS.SESSION_SCOPE, sessionScope);
169
-
164
+ // Disable redesign announcement
165
+ win.localStorage.setItem('isNewDesignReleaseNotificationClosed', 'true');
170
166
  if (commandOptions.onBeforeLoad) {
171
167
  commandOptions.onBeforeLoad(win);
172
168
  }
173
169
  }
174
-
175
- }); // Wait for the application to be loaded so that the session can be saved.
176
-
170
+ });
171
+ // Wait for the application to be loaded so that the session can be saved.
177
172
  cy.get('#app-loader').should('not.exist');
178
- } // For backwards compatibility.
179
-
173
+ }
180
174
 
181
- if (Cypress.config('experimentalSessionAndOrigin')) {
175
+ // For backwards compatibility.
176
+ if (isFeatureSupported('12.0.0') || Cypress.config('experimentalSessionAndOrigin')) {
182
177
  // https://www.cypress.io/blog/2021/08/04/authenticate-faster-in-tests-cy-session-command/
183
178
  cy.session(sessionKey, authCallback, isFeatureSupported('10.9.0') ? {
184
179
  cacheAcrossSpecs: typeof commandOptions.disableCacheAcrossSpecs === 'boolean' ? !commandOptions.disableCacheAcrossSpecs : true
185
180
  } : undefined);
186
181
  } else {
187
- cy.log("We recommend turning on the flag \"experimentalSessionAndOrigin\" to be able to use \"cy.session\" and thus reduce the time to log in between tests.");
182
+ cy.log("We recommend to use \"cy.session\" to reduce the time to log in between tests. Make sure to have at least Cypress v12 or enable it via \"experimentalSessionAndOrigin\" for older Cypress versions.");
188
183
  authCallback();
189
184
  }
190
-
191
185
  if (commandOptions.initialRoute) {
192
186
  var _context4;
193
-
194
187
  cy.visit(_concatInstanceProperty(_context4 = "".concat(Cypress.config('baseUrl'))).call(_context4, commandOptions.initialRoute));
195
188
  cy.url().should('include', commandOptions.initialRoute);
196
189
  }
197
190
  });
198
191
  });
199
192
  }
200
- /* Utilities */
201
193
 
194
+ /* Utilities */
202
195
 
203
196
  function fillLoginForm(userCredentials) {
204
197
  cy.get('input[name=email]').type(userCredentials.email);
@@ -207,17 +200,19 @@ function fillLoginForm(userCredentials) {
207
200
  });
208
201
  cy.get('button').contains('Sign in').click();
209
202
  }
210
-
211
203
  function isLocalhost() {
212
204
  const baseUrl = new _URL(Cypress.config('baseUrl'));
213
205
  return baseUrl.hostname === 'localhost';
214
206
  }
215
207
 
208
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
209
+
210
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
211
+
216
212
  Cypress.Commands.add('loginToMerchantCenter', commandOptions => {
217
213
  Cypress.log({
218
214
  name: 'loginToMerchantCenter'
219
215
  });
220
-
221
216
  if (isLocalhost()) {
222
217
  loginByOidc(commandOptions);
223
218
  } else {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var constants = require('./constants-c657705e.cjs.dev.js');
6
6
 
7
7
  // NOTE: This string will be replaced on build time with the package version.
8
- var version = "22.2.0";
8
+ var version = "22.3.0";
9
9
 
10
10
  exports.OIDC_RESPONSE_TYPES = constants.OIDC_RESPONSE_TYPES;
11
11
  exports.STORAGE_KEYS = constants.STORAGE_KEYS;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var constants = require('./constants-8ad2a50e.cjs.prod.js');
6
6
 
7
7
  // NOTE: This string will be replaced on build time with the package version.
8
- var version = "22.2.0";
8
+ var version = "22.3.0";
9
9
 
10
10
  exports.OIDC_RESPONSE_TYPES = constants.OIDC_RESPONSE_TYPES;
11
11
  exports.STORAGE_KEYS = constants.STORAGE_KEYS;
@@ -1,6 +1,6 @@
1
1
  export { O as OIDC_RESPONSE_TYPES, S as STORAGE_KEYS } from './constants-18b165fc.esm.js';
2
2
 
3
3
  // NOTE: This string will be replaced on build time with the package version.
4
- var version = "22.2.0";
4
+ var version = "22.3.0";
5
5
 
6
6
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools-frontend/cypress",
3
- "version": "22.2.0",
3
+ "version": "22.3.0",
4
4
  "description": "Cypress commands and utilities for Custom Applications",
5
5
  "bugs": "https://github.com/commercetools/merchant-center-application-kit/issues",
6
6
  "repository": {
@@ -24,7 +24,11 @@
24
24
  "main": "dist/commercetools-frontend-cypress.cjs.js",
25
25
  "module": "dist/commercetools-frontend-cypress.esm.js",
26
26
  "preconstruct": {
27
- "entrypoints": ["./index.ts", "./add-commands/index.ts", "./task/index.ts"]
27
+ "entrypoints": [
28
+ "./index.ts",
29
+ "./add-commands/index.ts",
30
+ "./task/index.ts"
31
+ ]
28
32
  },
29
33
  "files": [
30
34
  "dist",
@@ -37,17 +41,18 @@
37
41
  "dependencies": {
38
42
  "@babel/runtime": "^7.20.13",
39
43
  "@babel/runtime-corejs3": "^7.20.13",
40
- "@commercetools-frontend/application-config": "22.2.0",
41
- "@commercetools-frontend/application-shell": "22.2.0",
44
+ "@commercetools-frontend/application-config": "22.3.0",
45
+ "@commercetools-frontend/application-shell": "22.3.0",
42
46
  "@manypkg/get-packages": "1.1.3",
47
+ "@types/semver": "^7.5.0",
43
48
  "semver": "7.5.0",
44
49
  "uuid": "9.0.0"
45
50
  },
46
51
  "devDependencies": {
47
52
  "@tsconfig/node16": "^1.0.3",
48
- "cypress": "11.2.0"
53
+ "cypress": "12.12.0"
49
54
  },
50
55
  "peerDependencies": {
51
56
  "cypress": ">=8"
52
57
  }
53
- }
58
+ }
@@ -32,47 +32,37 @@ var fs__default = /*#__PURE__*/_interopDefault(fs);
32
32
  var path__default = /*#__PURE__*/_interopDefault(path);
33
33
 
34
34
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
-
36
35
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
37
36
  let cachedAllCustomApplicationConfigs;
38
37
  const defaultDotfiles = ['.env', '.env.local'];
39
-
40
38
  const loadEnvironmentVariables = (packageDirPath, options) => {
41
39
  var _options$dotfiles;
42
-
43
40
  const dotfiles = (_options$dotfiles = options.dotfiles) !== null && _options$dotfiles !== void 0 ? _options$dotfiles : defaultDotfiles;
44
41
  return _reduceInstanceProperty__default["default"](dotfiles).call(dotfiles, (mergedEnvs, dotfile) => {
45
42
  const envPath = path__default["default"].join(packageDirPath, dotfile);
46
-
47
43
  if (!fs__default["default"].existsSync(envPath)) {
48
44
  return mergedEnvs;
49
45
  }
50
-
51
46
  const env = require('dotenv').config({
52
47
  path: envPath
53
48
  });
54
-
55
49
  if (env.error) {
56
50
  console.error("Failed to load environment variables from ".concat(envPath));
57
51
  return mergedEnvs;
58
52
  }
59
-
60
53
  console.log("Loading environment variables from ".concat(envPath));
61
- return _objectSpread(_objectSpread({}, mergedEnvs), env.parsed); // Merge it with the environment variables defined in the current process.
54
+ return _objectSpread(_objectSpread({}, mergedEnvs), env.parsed);
55
+ // Merge it with the environment variables defined in the current process.
62
56
  }, process.env);
63
57
  };
64
-
65
58
  const loadAllCustomApplicationConfigs = async options => {
66
59
  if (cachedAllCustomApplicationConfigs) {
67
60
  return cachedAllCustomApplicationConfigs;
68
61
  }
69
-
70
62
  const _await$getPackages = await getPackages.getPackages(process.cwd()),
71
- packages = _await$getPackages.packages;
72
-
63
+ packages = _await$getPackages.packages;
73
64
  cachedAllCustomApplicationConfigs = _reduceInstanceProperty__default["default"](packages).call(packages, (allConfigs, packageInfo) => {
74
65
  const processEnv = loadEnvironmentVariables(packageInfo.dir, options);
75
-
76
66
  try {
77
67
  const processedConfig = applicationConfig.processConfig({
78
68
  disableCache: true,
@@ -90,21 +80,17 @@ const loadAllCustomApplicationConfigs = async options => {
90
80
  if (error instanceof applicationConfig.MissingOrInvalidConfigError) {
91
81
  return allConfigs;
92
82
  }
93
-
94
83
  throw error;
95
84
  }
96
85
  }, {});
97
86
  return cachedAllCustomApplicationConfigs;
98
87
  };
99
-
100
88
  const customApplicationConfig = async options => {
101
89
  const allCustomApplicationConfigs = await loadAllCustomApplicationConfigs(options);
102
90
  const customApplicationConfig = allCustomApplicationConfigs[options.entryPointUriPath];
103
-
104
91
  if (!customApplicationConfig) {
105
92
  throw new Error("Could not find Custom Application config for entry point \"".concat(options.entryPointUriPath, "\""));
106
93
  }
107
-
108
94
  console.log("Using Custom Application config for \"".concat(options.entryPointUriPath, "\""));
109
95
  return customApplicationConfig;
110
96
  };
@@ -32,47 +32,37 @@ var fs__default = /*#__PURE__*/_interopDefault(fs);
32
32
  var path__default = /*#__PURE__*/_interopDefault(path);
33
33
 
34
34
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
-
36
35
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
37
36
  let cachedAllCustomApplicationConfigs;
38
37
  const defaultDotfiles = ['.env', '.env.local'];
39
-
40
38
  const loadEnvironmentVariables = (packageDirPath, options) => {
41
39
  var _options$dotfiles;
42
-
43
40
  const dotfiles = (_options$dotfiles = options.dotfiles) !== null && _options$dotfiles !== void 0 ? _options$dotfiles : defaultDotfiles;
44
41
  return _reduceInstanceProperty__default["default"](dotfiles).call(dotfiles, (mergedEnvs, dotfile) => {
45
42
  const envPath = path__default["default"].join(packageDirPath, dotfile);
46
-
47
43
  if (!fs__default["default"].existsSync(envPath)) {
48
44
  return mergedEnvs;
49
45
  }
50
-
51
46
  const env = require('dotenv').config({
52
47
  path: envPath
53
48
  });
54
-
55
49
  if (env.error) {
56
50
  console.error("Failed to load environment variables from ".concat(envPath));
57
51
  return mergedEnvs;
58
52
  }
59
-
60
53
  console.log("Loading environment variables from ".concat(envPath));
61
- return _objectSpread(_objectSpread({}, mergedEnvs), env.parsed); // Merge it with the environment variables defined in the current process.
54
+ return _objectSpread(_objectSpread({}, mergedEnvs), env.parsed);
55
+ // Merge it with the environment variables defined in the current process.
62
56
  }, process.env);
63
57
  };
64
-
65
58
  const loadAllCustomApplicationConfigs = async options => {
66
59
  if (cachedAllCustomApplicationConfigs) {
67
60
  return cachedAllCustomApplicationConfigs;
68
61
  }
69
-
70
62
  const _await$getPackages = await getPackages.getPackages(process.cwd()),
71
- packages = _await$getPackages.packages;
72
-
63
+ packages = _await$getPackages.packages;
73
64
  cachedAllCustomApplicationConfigs = _reduceInstanceProperty__default["default"](packages).call(packages, (allConfigs, packageInfo) => {
74
65
  const processEnv = loadEnvironmentVariables(packageInfo.dir, options);
75
-
76
66
  try {
77
67
  const processedConfig = applicationConfig.processConfig({
78
68
  disableCache: true,
@@ -90,21 +80,17 @@ const loadAllCustomApplicationConfigs = async options => {
90
80
  if (error instanceof applicationConfig.MissingOrInvalidConfigError) {
91
81
  return allConfigs;
92
82
  }
93
-
94
83
  throw error;
95
84
  }
96
85
  }, {});
97
86
  return cachedAllCustomApplicationConfigs;
98
87
  };
99
-
100
88
  const customApplicationConfig = async options => {
101
89
  const allCustomApplicationConfigs = await loadAllCustomApplicationConfigs(options);
102
90
  const customApplicationConfig = allCustomApplicationConfigs[options.entryPointUriPath];
103
-
104
91
  if (!customApplicationConfig) {
105
92
  throw new Error("Could not find Custom Application config for entry point \"".concat(options.entryPointUriPath, "\""));
106
93
  }
107
-
108
94
  console.log("Using Custom Application config for \"".concat(options.entryPointUriPath, "\""));
109
95
  return customApplicationConfig;
110
96
  };
@@ -14,47 +14,37 @@ import { getPackages } from '@manypkg/get-packages';
14
14
  import { processConfig, MissingOrInvalidConfigError } from '@commercetools-frontend/application-config';
15
15
 
16
16
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
-
18
17
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
19
18
  let cachedAllCustomApplicationConfigs;
20
19
  const defaultDotfiles = ['.env', '.env.local'];
21
-
22
20
  const loadEnvironmentVariables = (packageDirPath, options) => {
23
21
  var _options$dotfiles;
24
-
25
22
  const dotfiles = (_options$dotfiles = options.dotfiles) !== null && _options$dotfiles !== void 0 ? _options$dotfiles : defaultDotfiles;
26
23
  return _reduceInstanceProperty(dotfiles).call(dotfiles, (mergedEnvs, dotfile) => {
27
24
  const envPath = path.join(packageDirPath, dotfile);
28
-
29
25
  if (!fs.existsSync(envPath)) {
30
26
  return mergedEnvs;
31
27
  }
32
-
33
28
  const env = require('dotenv').config({
34
29
  path: envPath
35
30
  });
36
-
37
31
  if (env.error) {
38
32
  console.error("Failed to load environment variables from ".concat(envPath));
39
33
  return mergedEnvs;
40
34
  }
41
-
42
35
  console.log("Loading environment variables from ".concat(envPath));
43
- return _objectSpread(_objectSpread({}, mergedEnvs), env.parsed); // Merge it with the environment variables defined in the current process.
36
+ return _objectSpread(_objectSpread({}, mergedEnvs), env.parsed);
37
+ // Merge it with the environment variables defined in the current process.
44
38
  }, process.env);
45
39
  };
46
-
47
40
  const loadAllCustomApplicationConfigs = async options => {
48
41
  if (cachedAllCustomApplicationConfigs) {
49
42
  return cachedAllCustomApplicationConfigs;
50
43
  }
51
-
52
44
  const _await$getPackages = await getPackages(process.cwd()),
53
- packages = _await$getPackages.packages;
54
-
45
+ packages = _await$getPackages.packages;
55
46
  cachedAllCustomApplicationConfigs = _reduceInstanceProperty(packages).call(packages, (allConfigs, packageInfo) => {
56
47
  const processEnv = loadEnvironmentVariables(packageInfo.dir, options);
57
-
58
48
  try {
59
49
  const processedConfig = processConfig({
60
50
  disableCache: true,
@@ -72,21 +62,17 @@ const loadAllCustomApplicationConfigs = async options => {
72
62
  if (error instanceof MissingOrInvalidConfigError) {
73
63
  return allConfigs;
74
64
  }
75
-
76
65
  throw error;
77
66
  }
78
67
  }, {});
79
68
  return cachedAllCustomApplicationConfigs;
80
69
  };
81
-
82
70
  const customApplicationConfig = async options => {
83
71
  const allCustomApplicationConfigs = await loadAllCustomApplicationConfigs(options);
84
72
  const customApplicationConfig = allCustomApplicationConfigs[options.entryPointUriPath];
85
-
86
73
  if (!customApplicationConfig) {
87
74
  throw new Error("Could not find Custom Application config for entry point \"".concat(options.entryPointUriPath, "\""));
88
75
  }
89
-
90
76
  console.log("Using Custom Application config for \"".concat(options.entryPointUriPath, "\""));
91
77
  return customApplicationConfig;
92
78
  };