@sap_oss/wdio-qmate-service 2.9.5 → 2.9.6

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.
@@ -98,7 +98,11 @@ export declare class Navigation {
98
98
  * @example await ui5.navigation.expectUnsupportedNavigationPopup("#SupplierInvoice-display?FiscalYear=1234&SupplierInvoice=1234567890");
99
99
  */
100
100
  expectUnsupportedNavigationPopup(navigationTarget: string): Promise<void>;
101
- private _generateUrlParams;
101
+ private _extractQueryParams;
102
+ private _normalizeQueryString;
103
+ private _constructUrlParams;
104
+ private _getPreventPopupParams;
105
+ private _mapQueryParams;
102
106
  private _closePopup;
103
107
  }
104
108
  declare const _default: Navigation;
@@ -14,8 +14,7 @@ class Navigation {
14
14
  constructor() {
15
15
  this.vlf = new verboseLogger_1.VerboseLoggerFactory("ui5", "navigation");
16
16
  this.ErrorHandler = new errorHandler_1.default();
17
- this.errorText = "Navigation failed because page didn't load, possible reasons: " +
18
- "Site is down, or you are using a wrong address. For retrying use 'navigateToApplicationAndRetry'.\n";
17
+ this.errorText = "Navigation failed because page didn't load, possible reasons: " + "Site is down, or you are using a wrong address. For retrying use 'navigateToApplicationAndRetry'.\n";
19
18
  }
20
19
  // =================================== MAIN ===================================
21
20
  /**
@@ -30,16 +29,29 @@ class Navigation {
30
29
  */
31
30
  async navigateToApplication(intent, preventPopups = false, verify = false, refresh = true) {
32
31
  const vl = this.vlf.initLog(this.navigateToApplication);
33
- let urlParams = "";
32
+ const baseUrlNormalized = this._normalizeQueryString(browser.config.baseUrl);
33
+ const intentNormalized = this._normalizeQueryString(intent);
34
+ let queryParams = [];
35
+ // Check if intent has query params and extract them from the intent
36
+ queryParams = queryParams.concat(this._extractQueryParams(intent));
37
+ // Check if baseUrl has query params and extract them from the baseUrl
38
+ queryParams = queryParams.concat(this._extractQueryParams(browser.config.baseUrl));
39
+ // Add prevent popup url params if not already present
34
40
  if (preventPopups) {
35
- urlParams = this._generateUrlParams();
41
+ queryParams = queryParams.concat(this._getPreventPopupParams(queryParams));
36
42
  }
43
+ // Construct the url with the intent and query params
44
+ let constructedParams = this._constructUrlParams(queryParams);
45
+ if (constructedParams !== "")
46
+ constructedParams = `?${constructedParams}`;
47
+ const urlWithParams = `${baseUrlNormalized}${constructedParams}#${intentNormalized}`;
48
+ vl.log(`Url with params: ${urlWithParams}`);
37
49
  try {
38
- await browser.navigateTo(`${browser.config.baseUrl.split("#")[0] + urlParams}#${intent}`);
50
+ await browser.navigateTo(urlWithParams);
39
51
  const url = await browser.getUrl();
40
52
  await util.browser.logCurrentUrl();
41
- if (url && url.indexOf(intent) === -1 && verify) {
42
- this.ErrorHandler.logException(new Error("For retrying use 'navigateToSystemAndApplicationAndRetry'."));
53
+ if (url && !url.includes(intent) && verify) {
54
+ new Error("Failed to verify successful navigation.");
43
55
  }
44
56
  if (refresh) {
45
57
  await util.browser.refresh();
@@ -127,7 +139,16 @@ class Navigation {
127
139
  const vl = this.vlf.initLog(this.navigateToApplicationWithQueryParams);
128
140
  let url;
129
141
  try {
130
- await browser.url(`${browser.config.baseUrl}${queryParams}#${intent}`);
142
+ let parsedQueryParams = "";
143
+ if (queryParams) {
144
+ if (queryParams.startsWith("?")) {
145
+ parsedQueryParams = queryParams;
146
+ }
147
+ else {
148
+ parsedQueryParams = `?${queryParams}`;
149
+ }
150
+ }
151
+ await browser.url(`${browser.config.baseUrl}${parsedQueryParams}#${intent}`);
131
152
  url = await browser.getUrl();
132
153
  await util.browser.logCurrentUrl();
133
154
  if (url && url.indexOf(intent) === -1 && verify) {
@@ -223,30 +244,40 @@ class Navigation {
223
244
  return common.assertion.expectTrue(stringExists);
224
245
  }
225
246
  // =================================== HELPER ===================================
226
- _generateUrlParams() {
227
- let urlParams;
228
- let prefix;
229
- if (browser.config.baseUrl.includes("ui?")) {
230
- prefix = "&";
247
+ _extractQueryParams(input) {
248
+ const queryParams = [];
249
+ const queryParts = input.split("?");
250
+ if (queryParts.length > 1) {
251
+ queryParams.push(...this._mapQueryParams(queryParts[1]));
231
252
  }
232
- else {
233
- prefix = "?";
234
- }
235
- if (browser.config.baseUrl.includes("help-readCatalog=false") && browser.config.baseUrl.includes("help-stateUACP=PRODUCTION")) {
236
- urlParams = "";
253
+ return queryParams;
254
+ }
255
+ _normalizeQueryString(input) {
256
+ const queryParts = input.split("?");
257
+ return queryParts[0];
258
+ }
259
+ _constructUrlParams(queryParams) {
260
+ return queryParams.map((param) => `${param.key}=${param.value}`).join("&");
261
+ }
262
+ _getPreventPopupParams(queryParams) {
263
+ const combinedQueryParams = [];
264
+ const READ_CATALOG_PARAM = "help-readCatalog";
265
+ const STATE_UACP_PARAM = "help-stateUACP";
266
+ const hasReadCatalog = queryParams.some((param) => param.key === READ_CATALOG_PARAM);
267
+ const hasStateUACP = queryParams.some((param) => param.key === STATE_UACP_PARAM);
268
+ if (!hasReadCatalog) {
269
+ combinedQueryParams.push({ key: READ_CATALOG_PARAM, value: "false" });
237
270
  }
238
- else {
239
- if (browser.config.baseUrl.includes("help-readCatalog=false") && !browser.config.baseUrl.includes("help-stateUACP=PRODUCTION")) {
240
- urlParams = "help-stateUACP=PRODUCTION";
241
- }
242
- else if (!browser.config.baseUrl.includes("help-readCatalog=false") && browser.config.baseUrl.includes("help-stateUACP=PRODUCTION")) {
243
- urlParams = "help-readCatalog=false";
244
- }
245
- else {
246
- urlParams = "help-readCatalog=false&help-stateUACP=PRODUCTION";
247
- }
271
+ if (!hasStateUACP) {
272
+ combinedQueryParams.push({ key: STATE_UACP_PARAM, value: "PRODUCTION" });
248
273
  }
249
- return prefix + urlParams;
274
+ return combinedQueryParams;
275
+ }
276
+ _mapQueryParams(params) {
277
+ return params.split("&").map((param) => {
278
+ const [key, value] = param.split("=");
279
+ return { key, value };
280
+ });
250
281
  }
251
282
  async _closePopup(popup, timeout = 30000) {
252
283
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/reuse/modules/ui5/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/reuse/modules/ui5/navigation.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,8DAAkE;AAClE,6EAAqD;AAYrD;;;GAGG;AACH,MAAa,UAAU;IAAvB;QACU,QAAG,GAAG,IAAI,oCAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACpD,iBAAY,GAAG,IAAI,sBAAY,EAAE,CAAC;QAE1C,cAAS,GAAG,gEAAgE,GAAG,qGAAqG,CAAC;IAgUvL,CAAC;IA9TC,+EAA+E;IAC/E;;;;;;;;;OASG;IACH,KAAK,CAAC,qBAAqB,CAAC,MAAc,EAAE,aAAa,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,GAAG,IAAI;QAC/F,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAExD,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7E,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,WAAW,GAAsB,EAAE,CAAC;QAExC,oEAAoE;QACpE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnE,sEAAsE;QACtE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnF,sDAAsD;QACtD,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,qDAAqD;QACrD,IAAI,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,iBAAiB,KAAK,EAAE;YAAE,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1E,MAAM,aAAa,GAAG,GAAG,iBAAiB,GAAG,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;QACrF,EAAE,CAAC,GAAG,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAExC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAEnC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBAC3C,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,6BAA6B,CAAC,MAAc,EAAE,aAAa,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI;QACnH,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CACvB,KAAK,EAAE,MAAc,EAAE,aAAsB,EAAE,EAAE;YAC/C,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC,EACD,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,8BAA8B,CAAC,MAAc,EAAE,MAAc,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK;QACrG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,MAAM,OAAO,MAAM,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,sCAAsC,CAAC,MAAc,EAAE,MAAc,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI;QAC1I,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CACvB,KAAK,EAAE,MAAc,EAAE,MAAc,EAAE,WAAoB,EAAE,EAAE;YAC7D,MAAM,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACjF,CAAC,EACD,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EACrC,OAAO,EACP,QAAQ,EACR,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,oCAAoC,CAAC,MAAc,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK;QAC7G,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,IAAI,iBAAiB,GAAG,EAAE,CAAC;YAC3B,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,iBAAiB,GAAG,WAAW,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,iBAAiB,IAAI,MAAM,EAAE,CAAC,CAAC;YAC7E,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACrC,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,4CAA4C,CAAC,MAAc,EAAE,WAAmB,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI;QACrJ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC/E,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CACvB,KAAK,EAAE,MAAc,EAAE,WAAmB,EAAE,WAAoB,EAAE,MAAe,EAAE,EAAE;YACnF,MAAM,IAAI,CAAC,oCAAoC,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5F,CAAC,EACD,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,EAC1C,OAAO,EACP,QAAQ,EACR,IAAI,CACL,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG;YACb;gBACE,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,uBAAuB;aAClC;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,sEAAsE;aACjF;SACF,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9E,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,oFAAoF;IACpF;;;;;;;OAOG;IACH,KAAK,CAAC,gCAAgC,CAAC,gBAAwB;QAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACnE,MAAM,0BAA0B,GAAG;YACjC,iBAAiB,EAAE;gBACjB,QAAQ,EAAE,cAAc;gBACxB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,OAAO;aACf;SACF,CAAC;QACF,MAAM,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;QAElE,MAAM,iBAAiB,GAAG;YACxB,iBAAiB,EAAE;gBACjB,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,0BAA0B;aACrC;SACF,CAAC;QACF,MAAM,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG;YACf,iBAAiB,EAAE;gBACjB,QAAQ,EAAE,qBAAqB;gBAC/B,kBAAkB,EAAE,0BAA0B;aAC/C;SACF,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1F,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,iFAAiF;IACzE,mBAAmB,CAAC,KAAa;QACvC,MAAM,WAAW,GAAsB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,qBAAqB,CAAC,KAAa;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAEO,mBAAmB,CAAC,WAAyB;QACnD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAEO,sBAAsB,CAAC,WAA8B;QAC3D,MAAM,mBAAmB,GAAsB,EAAE,CAAC;QAElD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;QAC9C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;QAE1C,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;QAEjF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,eAAe,CAAC,MAAc;QACpC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAY,EAAE,UAAkB,KAAK;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACvE,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AApUD,gCAoUC;AACD,kBAAe,IAAI,UAAU,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap_oss/wdio-qmate-service",
3
- "version": "2.9.5",
3
+ "version": "2.9.6",
4
4
  "author": "SAP SE",
5
5
  "types": "./@types/index.d.ts",
6
6
  "main": "./lib/index.js",
@@ -1,148 +1,114 @@
1
1
  "use strict";
2
2
 
3
- describe("navigation - navigateToApplication with preventPopups=false", function () {
4
- it("Execution & Verification", async function () {
5
- // First navigation - to #Shell-home
6
- let urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`; // http://localhost:34099/ui#Shell-home
7
-
8
- await ui5.navigation.navigateToApplication("Shell-home"); // preventPopups=false by default
9
- let button = await nonUi5.element.getById("parseUrl");
10
- await nonUi5.userInteraction.click(button);
11
-
12
- await common.assertion.expectUrlToBe(urlExpected);
13
-
14
- let parsedUrlElement = await nonUi5.element.getById("navigationUrl");
15
- let parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
16
-
17
- await common.assertion.expectEqual(urlExpected, parsedUrlValue);
18
-
19
- // Second navigation - to #PurchaseOrder-manage
20
- urlExpected = `${await util.browser.getBaseUrl()}#PurchaseOrder-manage`; // http://localhost:34099/ui#PurchaseOrder-manage
21
-
22
- await ui5.navigation.navigateToApplication("PurchaseOrder-manage"); // preventPopups=false by default
23
- button = await nonUi5.element.getById("parseUrl");
24
- await nonUi5.userInteraction.click(button);
25
-
26
- await common.assertion.expectUrlToBe(urlExpected);
27
-
28
- parsedUrlElement = await nonUi5.element.getById("navigationUrl");
29
- parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
3
+ // Tests to add:
4
+ // - test with preventPopups=false
5
+ // - test with preventPopups=true
6
+ // - test where baseUrl has query parameters
7
+ // - test where intent has query parameters
8
+ // - test where baseUrl has multiple query parameters
9
+ // - test with error handling
10
+
11
+ const BASE_URL = `http://localhost:34099/ui`;
12
+ const INTENT = "Shell-home";
13
+ const DUMMY_QUERY_PARAM = "dummyQueryParam=dummyValue";
14
+ const PREVENT_POPUP_QUERY_PARAMS = "help-readCatalog=false&help-stateUACP=PRODUCTION";
15
+
16
+ describe("navigation - navigateToApplication - preventPopups=false", function () {
17
+ it("Preparation", async function () {
18
+ browser.config.baseUrl = BASE_URL;
19
+ });
30
20
 
31
- await common.assertion.expectEqual(urlExpected, parsedUrlValue);
21
+ it("Execution", async function () {
22
+ await ui5.navigation.navigateToApplication(INTENT, false);
23
+ });
32
24
 
25
+ it("Verification", async function () {
26
+ const urlExp = `${BASE_URL}#Shell-home`;
27
+ await common.assertion.expectUrlToBe(urlExp);
33
28
  });
34
29
  });
35
30
 
36
- describe("navigation - navigateToApplication with preventPopups=true", function () {
37
- it("Execution & Verification", async function () {
38
- // First navigation - to #Shell-home
39
- // "http://localhost:34099/ui?help-readCatalog=false&help-stateUACP=PRODUCTION#Shell-home" - as preventPopups=true
40
- const queryToClosePopups = "help-readCatalog=false&help-stateUACP=PRODUCTION"; // from private function 'generateUrlParams'
41
- let urlExpected = `${await util.browser.getBaseUrl()}?${queryToClosePopups}#Shell-home`;
42
-
43
- await ui5.navigation.navigateToApplication("Shell-home", true); // preventPopups=true
44
- let button = await nonUi5.element.getById("parseUrl");
45
- await nonUi5.userInteraction.click(button);
46
-
47
- await common.assertion.expectUrlToBe(urlExpected);
48
-
49
- let parsedUrlElement = await nonUi5.element.getById("navigationUrl");
50
- let parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
51
-
52
- await common.assertion.expectEqual(urlExpected, parsedUrlValue);
53
-
54
- // Second navigation - to #PurchaseOrder-manage
55
- // "http://localhost:34099/ui?help-readCatalog=false&help-stateUACP=PRODUCTION#PurchaseOrder-manage" - as preventPopups=true
56
- urlExpected = `${await util.browser.getBaseUrl()}?${queryToClosePopups}#PurchaseOrder-manage`;
31
+ describe("navigation - navigateToApplication - preventPopups=true", function () {
32
+ it("Preparation", async function () {
33
+ browser.config.baseUrl = BASE_URL;
34
+ });
57
35
 
58
- await ui5.navigation.navigateToApplication("PurchaseOrder-manage", true); // preventPopups=true
59
- button = await nonUi5.element.getById("parseUrl");
60
- await nonUi5.userInteraction.click(button);
36
+ it("Execution", async function () {
37
+ await ui5.navigation.navigateToApplication(INTENT, true);
38
+ });
61
39
 
62
- await common.assertion.expectUrlToBe(urlExpected);
40
+ it("Verification", async function () {
41
+ const urlExp = `${BASE_URL}?${PREVENT_POPUP_QUERY_PARAMS}#Shell-home`;
42
+ await common.assertion.expectUrlToBe(urlExp);
43
+ });
44
+ });
63
45
 
64
- parsedUrlElement = await nonUi5.element.getById("navigationUrl");
65
- parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
46
+ describe("navigation - navigateToApplication - baseUrl with closePopup query parameters", function () {
47
+ it("Preparation", async function () {
48
+ browser.config.baseUrl = `${BASE_URL}?${PREVENT_POPUP_QUERY_PARAMS}`;
49
+ });
66
50
 
67
- await common.assertion.expectEqual(urlExpected, parsedUrlValue);
51
+ it("Execution", async function () {
52
+ await ui5.navigation.navigateToApplication(INTENT, false);
53
+ });
68
54
 
55
+ it("Verification", async function () {
56
+ const urlExp = `${BASE_URL}?${PREVENT_POPUP_QUERY_PARAMS}#Shell-home`;
57
+ await common.assertion.expectUrlToBe(urlExp);
69
58
  });
70
59
  });
71
60
 
72
- describe("navigation - navigateToApplication wrong navigation intent type with/without verification(unhappy case)", function () {
73
- const wrongApplication = { strange: "intent" };
74
- const application = "Shell-home";
75
-
76
- it("Execution & Verification", async function () {
77
- await ui5.navigation.navigateToApplication(application, true);
78
-
79
- await ui5.navigation.navigateToApplication(wrongApplication, false); // verify=false - no verification
80
- const currentUrl = await browser.getUrl();
61
+ describe("navigation - navigateToApplication - baseUrl with dummy query parameters", function () {
62
+ it("Preparation", async function () {
63
+ browser.config.baseUrl = `${BASE_URL}?${DUMMY_QUERY_PARAM}`;
64
+ });
81
65
 
82
- // system first navigates to '<urlToSystem>#%5Bobject%20Object%5D'
83
- expect(currentUrl).toContain(browser.config.baseUrl + "#[object%20Object]");
66
+ it("Execution", async function () {
67
+ await ui5.navigation.navigateToApplication(INTENT, false);
68
+ });
84
69
 
85
- await expect(ui5.navigation.navigateToApplication(wrongApplication, false, true)) // verify = true,
86
- .rejects.toThrow(/Navigation failed/);
70
+ it("Verification", async function () {
71
+ const urlExp = `${BASE_URL}?${DUMMY_QUERY_PARAM}#Shell-home`;
72
+ await common.assertion.expectUrlToBe(urlExp);
87
73
  });
88
74
  });
89
75
 
90
-
91
- const selectorForErrorPopupText = {
92
- "elementProperties": {
93
- "metadata": "sap.m.Text",
94
- "ancestorProperties": {
95
- "elementProperties": {
96
- "metadata": "sap.m.Dialog",
97
- "type": "Message",
98
- "state": "Error"
99
- }
100
- }
101
- }
102
- };
103
-
104
- // Test is unstable - system itself can close the popup
105
- // TODO: discuss local server usage for assertion tests execution
106
- describe.skip("assertion - expectUnsupportedNavigationPopup", function () {
76
+ describe("navigation - navigateToApplication - intent with dummy query parameters", function () {
107
77
  it("Preparation", async function () {
108
- await ui5.navigation.navigateToApplication("Shell-home", true);
109
- await ui5.session.loginFiori("PURCHASER", "super-duper-sensitive-pw");
78
+ browser.config.baseUrl = BASE_URL;
110
79
  });
111
80
 
112
81
  it("Execution", async function () {
113
- await ui5.navigation.navigateToApplication("SomeWrong-intent", true);
82
+ await ui5.navigation.navigateToApplication(`${INTENT}?${DUMMY_QUERY_PARAM}`, false);
114
83
  });
115
84
 
116
85
  it("Verification", async function () {
117
- await ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrong-intent");
118
- });
119
-
120
- it("Clean Up", async function () {
121
- await ui5.session.logout();
86
+ const urlExp = `${BASE_URL}?${DUMMY_QUERY_PARAM}#Shell-home`;
87
+ await common.assertion.expectUrlToBe(urlExp);
122
88
  });
123
89
  });
124
90
 
125
- // Test is unstable - system itself can close the popup
126
- // TODO: discuss local server usage for assertion tests execution
127
- describe.skip("assertion - expectUnsupportedNavigationPopup with '&' (unhappy case, another error popup)", function () {
91
+ describe("navigation - navigateToApplication - baseUrl with multiple query parameters", function () {
128
92
  it("Preparation", async function () {
129
- await ui5.navigation.navigateToApplication("Shell-home", true);
130
- await ui5.session.loginFiori("PURCHASER", "super-duper-sensitive-pw");
93
+ browser.config.baseUrl = `${BASE_URL}?${DUMMY_QUERY_PARAM}&${PREVENT_POPUP_QUERY_PARAMS}`;
131
94
  });
132
95
 
133
96
  it("Execution", async function () {
134
- await ui5.navigation.navigateToApplication("SomeWrongIntentWith&", false);
97
+ await ui5.navigation.navigateToApplication(INTENT, false);
135
98
  });
136
99
 
137
100
  it("Verification", async function () {
138
- await expect(ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrongIntentWith&"))
139
- .rejects.toThrow(/No visible elements found/);
140
- const textElement = await ui5.element.getDisplayed(selectorForErrorPopupText);
141
- const text = await textElement.getText();
142
- await common.assertion.expectEqual(text, "Could not open app. Please try again later.");
101
+ const urlExp = `${BASE_URL}?${DUMMY_QUERY_PARAM}&${PREVENT_POPUP_QUERY_PARAMS}#Shell-home`;
102
+ await common.assertion.expectUrlToBe(urlExp);
103
+ });
104
+ });
105
+
106
+ describe("navigation - navigateToApplication - verify=true", function () {
107
+ it("Preparation", async function () {
108
+ browser.config.baseUrl = BASE_URL;
143
109
  });
144
110
 
145
- it("Clean Up", async function () {
146
- await ui5.session.logout();
111
+ it("Execution & Verification", async function () {
112
+ await ui5.navigation.navigateToApplication(INTENT, false, true);
147
113
  });
148
- });
114
+ });
@@ -33,7 +33,6 @@ describe("navigation - navigateToApplicationAndRetry with closePopups=true", fun
33
33
  parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
34
34
 
35
35
  await common.assertion.expectEqual(urlExpected, parsedUrlValue);
36
-
37
36
  });
38
37
  });
39
38
 
@@ -68,86 +67,5 @@ describe("navigation - navigateToApplicationAndRetry with closePopups=false", fu
68
67
  parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
69
68
 
70
69
  await common.assertion.expectEqual(urlExpected, parsedUrlValue);
71
-
72
- });
73
- });
74
-
75
- describe("navigation - navigateToApplicationAndRetry wrong navigation intent type with/without verification(unhappy case)", function () {
76
- const wrongApplication = {
77
- strange: "intent"
78
- };
79
- const application = "Shell-home";
80
-
81
- it("Execution & Verification", async function () {
82
- await ui5.navigation.navigateToApplicationAndRetry(application, false, true); // closePopups=false, verify=true
83
-
84
- await ui5.navigation.navigateToApplicationAndRetry(wrongApplication, false, false); // closePopups=false, verify=false - no verification
85
- const currentUrl = await browser.getUrl();
86
-
87
- // system first navigates to '<urlToSystem>#%5Bobject%20Object%5D'
88
- expect(currentUrl).toContain(browser.config.baseUrl + "#[object%20Object]");
89
-
90
- await expect(ui5.navigation.navigateToApplicationAndRetry(wrongApplication, false, true)) // verify = true,
91
- .rejects.toThrow(/failed/);
92
- });
93
- });
94
-
95
-
96
- const selectorForErrorPopupText = {
97
- "elementProperties": {
98
- "metadata": "sap.m.Text",
99
- "ancestorProperties": {
100
- "elementProperties": {
101
- "metadata": "sap.m.Dialog",
102
- "type": "Message",
103
- "state": "Error"
104
- }
105
- }
106
- }
107
- };
108
-
109
- // Test is unstable - system itself can close the popup
110
- // TODO: discuss local server usage for assertion tests execution
111
- describe.skip("assertion - expectUnsupportedNavigationPopup", function () {
112
- it("Preparation", async function () {
113
- await ui5.navigation.navigateToApplicationAndRetry("Shell-home", true);
114
- await ui5.session.loginFiori("PURCHASER", "super-duper-sensitive-pw");
115
- });
116
-
117
- it("Execution", async function () {
118
- await ui5.navigation.navigateToApplicationAndRetry("SomeWrong-intent", false);
119
- });
120
-
121
- it("Verification", async function () {
122
- await ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrong-intent");
123
- });
124
-
125
- it("Clean Up", async function () {
126
- await ui5.session.logout();
127
70
  });
128
71
  });
129
-
130
- // Test is unstable - system itself can close the popup
131
- // TODO: discuss local server usage for assertion tests execution
132
- describe.skip("assertion - expectUnsupportedNavigationPopup with '&' (unhappy case, another error popup)", function () {
133
- it("Preparation", async function () {
134
- await ui5.navigation.navigateToApplicationAndRetry("Shell-home", true);
135
- await ui5.session.loginFiori("PURCHASER", "super-duper-sensitive-pw");
136
- });
137
-
138
- it("Execution", async function () {
139
- await ui5.navigation.navigateToApplicationAndRetry("SomeWrongIntentWith&", false);
140
- });
141
-
142
- it("Verification", async function () {
143
- await expect(ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrongIntentWith&"))
144
- .rejects.toThrow(/No visible elements found/);
145
- const textElement = await ui5.element.getDisplayed(selectorForErrorPopupText);
146
- const text = await textElement.getText();
147
- await common.assertion.expectEqual(text, "Could not open app. Please try again later.");
148
- });
149
-
150
- it("Clean Up", async function () {
151
- await ui5.session.logout();
152
- });
153
- });
@@ -19,31 +19,6 @@ describe("navigation - navigateToApplicationWithQueryParams with query param in
19
19
  });
20
20
  });
21
21
 
22
- describe("navigation - navigateToApplicationWithQueryParams with wrong param in url", function () {
23
- const query = "unknownParam=value"; // query without '?' mark
24
- const intent = "PurchaseOrder-manage";
25
-
26
- it("Preparation", async function () {
27
- await ui5.navigation.navigateToApplication("Shell-home", false);
28
- const urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`;
29
- await common.assertion.expectUrlToBe(urlExpected);
30
- });
31
-
32
- it("Execution", async function () {
33
- await ui5.navigation.navigateToApplicationWithQueryParams(intent, query, false);
34
- });
35
-
36
-
37
- it("Verification", async function () {
38
- const urlExpected = `${await util.browser.getBaseUrl()}${query}#${intent}`;
39
- await common.assertion.expectUrlToBe(urlExpected);
40
-
41
- // if 'query' includes no "?", url will be interpreted as another (unsupported) mount
42
- await expect(nonUi5.element.getById("parseUrl"))
43
- .rejects.toThrow(/Element with id "parseUrl" not found/);
44
- });
45
- });
46
-
47
22
  describe("navigation - navigateToApplicationWithQueryParams with empty param in url", function () {
48
23
  const intent = "PurchaseOrder-manage";
49
24
 
@@ -20,31 +20,6 @@ describe("navigation - navigateToApplicationWithQueryParamsAndRetry with query p
20
20
  });
21
21
  });
22
22
 
23
- describe("navigation - navigateToApplicationWithQueryParamsAndRetry with wrong param in url", function () {
24
- const query = "unknownParam=value"; // query without '?' mark
25
- const intent = "PurchaseOrder-manage";
26
-
27
- it("Preparation", async function () {
28
- await ui5.navigation.navigateToApplication("Shell-home", false);
29
- const urlExpected = `${await util.browser.getBaseUrl()}#Shell-home`;
30
- await common.assertion.expectUrlToBe(urlExpected);
31
- });
32
-
33
- it("Execution", async function () {
34
- await ui5.navigation.navigateToApplicationWithQueryParamsAndRetry(intent, query, false);
35
- });
36
-
37
-
38
- it("Verification", async function () {
39
- const urlExpected = `${await util.browser.getBaseUrl()}${query}#${intent}`;
40
- await common.assertion.expectUrlToBe(urlExpected);
41
-
42
- // if 'query' includes no "?", url will be interpreted as another (unsupported) mount
43
- await expect(nonUi5.element.getById("parseUrl"))
44
- .rejects.toThrow(/Element with id "parseUrl" not found/);
45
- });
46
- });
47
-
48
23
  describe("navigation - navigateToApplicationWithQueryParamsAndRetry with empty param in url", function () {
49
24
  const intent = "PurchaseOrder-manage";
50
25
 
@@ -7,25 +7,23 @@ exports.config = merge(profile.config, {
7
7
  baseUrl: "http://localhost:34099/ui",
8
8
 
9
9
  services: [
10
- ["static-server", {
11
- port: 34099,
12
- folders: [{
13
- mount: "/ui",
14
- path: path.resolve(__dirname, "./website/main.html")
15
- }, ]
16
- }]
10
+ [
11
+ "static-server",
12
+ {
13
+ port: 34099,
14
+ folders: [
15
+ {
16
+ mount: "/ui",
17
+ path: path.resolve(__dirname, "./website/main.html")
18
+ }
19
+ ]
20
+ }
21
+ ]
17
22
  ],
18
23
 
19
- specs: [
20
- // path.resolve(__dirname, "navigateToApplication.spec.js"),
21
- path.resolve(__dirname, "navigateToApplicationAndRetry.spec.js"),
22
- // path.resolve(__dirname, "navigateToApplicationWithQueryParams.spec.js"),
23
- // path.resolve(__dirname, "navigateToApplicationWithQueryParamsAndRetry.spec.js")
24
- ],
25
-
26
- exclude: [],
24
+ specs: [path.resolve(__dirname, "navigateToApplication.spec.js"), path.resolve(__dirname, "navigateToApplicationAndRetry.spec.js"), path.resolve(__dirname, "navigateToApplicationWithQueryParams.spec.js"), path.resolve(__dirname, "navigateToApplicationWithQueryParamsAndRetry.spec.js")],
27
25
 
28
26
  mochaOpts: {
29
- timeout: 2000000,
30
- },
31
- });
27
+ timeout: 2000000
28
+ }
29
+ });
@@ -22,29 +22,28 @@
22
22
 
23
23
  <body>
24
24
 
25
- <nav class="navbar navbar-light ">
26
- <a class="navbar-brand" href="#">Ui5 navigation testing</a>
27
- </nav>
25
+ <nav class="navbar navbar-light ">
26
+ <a class="navbar-brand" href="#">Ui5 navigation testing</a>
27
+ </nav>
28
28
 
29
- <div class="container-fluid">
30
- <div class="row content">
31
- <div class="well">
32
- <button type="button" id="parseUrl" onclick="parseUrl();"
33
- class="btn btn-default">Parse URL</button>
34
- </div>
35
- <br>
36
- <div class="col-sm-5">
37
- <div class="row">
38
- <div class="col-sm-5">
39
- <div class="well">
40
- <label> Your URL is: </label>
41
- <p><span id="navigationUrl">not parsed yet</span></p>
29
+ <div class="container-fluid">
30
+ <div class="row content">
31
+ <div class="well">
32
+ <button type="button" id="parseUrl" onclick="parseUrl();" class="btn btn-default">Parse URL</button>
33
+ </div>
34
+ <br>
35
+ <div class="col-sm-5">
36
+ <div class="row">
37
+ <div class="col-sm-5">
38
+ <div class="well">
39
+ <label> Your URL is: </label>
40
+ <p><span id="navigationUrl">not parsed yet</span></p>
41
+ </div>
42
42
  </div>
43
43
  </div>
44
44
  </div>
45
45
  </div>
46
46
  </div>
47
- </div>
48
47
  </body>
49
48
 
50
49
  </html>
@@ -2,12 +2,12 @@
2
2
 
3
3
  describe("navigationBar - clickBack", async function () {
4
4
  it("Preparation", async function () {
5
- await common.navigation.navigateToUrl("https://sapui5.hana.ondemand.com/test-resources/sap/ui/demoapps/demokit/rta/fiori-elements/test/index.html#Shell-home");
5
+ await common.navigation.navigateToUrl(browser.config.baseUrl);
6
6
  const selector = {
7
- elementProperties: {
8
- viewName: "sap.ushell.components.tiles.cdm.applauncher.StaticTile",
9
- metadata: "sap.m.GenericTile",
10
- bindingContextPath: "/pages/0/sections/0/visualizations/0"
7
+ "elementProperties": {
8
+ "viewName": "sap.ushell.components.homepage.DashboardContent",
9
+ "metadata": "sap.m.GenericTile",
10
+ "bindingContextPath": "/groups/1/tiles/1/content/0"
11
11
  }
12
12
  };
13
13
  await ui5.userInteraction.click(selector);
@@ -24,7 +24,7 @@ describe("navigationBar - clickBack", async function () {
24
24
 
25
25
  describe("navigationBar - clickBack - error case", function () {
26
26
  it("Preparation", async function () {
27
- await common.navigation.navigateToUrl("https://sapui5.hana.ondemand.com/test-resources/sap/ui/demoapps/demokit/rta/fiori-elements/test/index.html#Shell-home");
27
+ await common.navigation.navigateToUrl(browser.config.baseUrl);
28
28
  });
29
29
 
30
30
  it("Execution & Verification", async function () {
@@ -3,7 +3,7 @@
3
3
  describe("navigationBar - clickUserIcon", async function () {
4
4
 
5
5
  it("Preparation", async function () {
6
- await common.navigation.navigateToUrl("https://sapui5.hana.ondemand.com/test-resources/sap/ui/demoapps/demokit/rta/fiori-elements/test/index.html#Shell-home");
6
+ await common.navigation.navigateToUrl(browser.config.baseUrl);
7
7
  });
8
8
 
9
9
  it("Execution", async function () {
@@ -2,7 +2,7 @@
2
2
 
3
3
  describe("navigationBar - expectPageTitle", function () {
4
4
  it("Preparation", async function () {
5
- await common.navigation.navigateToUrl("https://sapui5.hana.ondemand.com/test-resources/sap/ui/demoapps/demokit/rta/fiori-elements/test/index.html#Shell-home");
5
+ await common.navigation.navigateToUrl(browser.config.baseUrl);
6
6
  });
7
7
 
8
8
  it("Execution & Verification", async function () {
@@ -2,7 +2,7 @@
2
2
 
3
3
  describe("navigationBar - expectShellHeader", function () {
4
4
  it("Preparation", async function () {
5
- await common.navigation.navigateToUrl("https://sapui5.hana.ondemand.com/test-resources/sap/ui/demoapps/demokit/rta/fiori-elements/test/index.html#Shell-home");
5
+ await common.navigation.navigateToUrl(browser.config.baseUrl);
6
6
  });
7
7
 
8
8
  it("Execution & Verification", async function () {
@@ -6,7 +6,7 @@ exports.config = merge(profile.config, {
6
6
  maxInstances: 4,
7
7
  specFileRetries: 2,
8
8
 
9
- baseUrl: "https://sapui5.hana.ondemand.com/test-resources/sap/ui/demoapps/demokit/rta/fiori-elements/test/index.html#Shell-home",
9
+ baseUrl: "https://sapui5.hana.ondemand.com/1.96.27/test-resources/sap/ui/demoapps/demokit/rta/fiori-elements/test/index.html#Shell-home",
10
10
 
11
11
  specs: [
12
12
  path.resolve(__dirname, "clickBack.spec.js"),