@sap_oss/wdio-qmate-service 2.9.5 → 2.9.7

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,34 @@ 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
+ const intentQueryParams = this._extractQueryParams(intent);
37
+ // Check if baseUrl has query params, extract them from the baseUrl and merge them with the existing params
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 params
44
+ let constructedParams = this._constructUrlParams(queryParams);
45
+ if (constructedParams !== "")
46
+ constructedParams = `?${constructedParams}`;
47
+ // Construct the intent params
48
+ let constructedIntentParams = this._constructUrlParams(intentQueryParams);
49
+ if (constructedIntentParams !== "")
50
+ constructedIntentParams = `?${constructedIntentParams}`;
51
+ // Construct the final url
52
+ const urlWithParams = `${baseUrlNormalized}${constructedParams}#${intentNormalized}${constructedIntentParams}`;
53
+ vl.log(`Url with params: ${urlWithParams}`);
37
54
  try {
38
- await browser.navigateTo(`${browser.config.baseUrl.split("#")[0] + urlParams}#${intent}`);
55
+ await browser.navigateTo(urlWithParams);
39
56
  const url = await browser.getUrl();
40
57
  await util.browser.logCurrentUrl();
41
- if (url && url.indexOf(intent) === -1 && verify) {
42
- this.ErrorHandler.logException(new Error("For retrying use 'navigateToSystemAndApplicationAndRetry'."));
58
+ if (url && !url.includes(intent) && verify) {
59
+ new Error("Failed to verify successful navigation.");
43
60
  }
44
61
  if (refresh) {
45
62
  await util.browser.refresh();
@@ -127,7 +144,16 @@ class Navigation {
127
144
  const vl = this.vlf.initLog(this.navigateToApplicationWithQueryParams);
128
145
  let url;
129
146
  try {
130
- await browser.url(`${browser.config.baseUrl}${queryParams}#${intent}`);
147
+ let parsedQueryParams = "";
148
+ if (queryParams) {
149
+ if (queryParams.startsWith("?")) {
150
+ parsedQueryParams = queryParams;
151
+ }
152
+ else {
153
+ parsedQueryParams = `?${queryParams}`;
154
+ }
155
+ }
156
+ await browser.url(`${browser.config.baseUrl}${parsedQueryParams}#${intent}`);
131
157
  url = await browser.getUrl();
132
158
  await util.browser.logCurrentUrl();
133
159
  if (url && url.indexOf(intent) === -1 && verify) {
@@ -223,30 +249,40 @@ class Navigation {
223
249
  return common.assertion.expectTrue(stringExists);
224
250
  }
225
251
  // =================================== HELPER ===================================
226
- _generateUrlParams() {
227
- let urlParams;
228
- let prefix;
229
- if (browser.config.baseUrl.includes("ui?")) {
230
- prefix = "&";
252
+ _extractQueryParams(input) {
253
+ const queryParams = [];
254
+ const queryParts = input.split("?");
255
+ if (queryParts.length > 1) {
256
+ queryParams.push(...this._mapQueryParams(queryParts[1]));
231
257
  }
232
- else {
233
- prefix = "?";
234
- }
235
- if (browser.config.baseUrl.includes("help-readCatalog=false") && browser.config.baseUrl.includes("help-stateUACP=PRODUCTION")) {
236
- urlParams = "";
258
+ return queryParams;
259
+ }
260
+ _normalizeQueryString(input) {
261
+ const queryParts = input.split("?");
262
+ return queryParts[0];
263
+ }
264
+ _constructUrlParams(queryParams) {
265
+ return queryParams.map((param) => `${param.key}=${param.value}`).join("&");
266
+ }
267
+ _getPreventPopupParams(queryParams) {
268
+ const combinedQueryParams = [];
269
+ const READ_CATALOG_PARAM = "help-readCatalog";
270
+ const STATE_UACP_PARAM = "help-stateUACP";
271
+ const hasReadCatalog = queryParams.some((param) => param.key === READ_CATALOG_PARAM);
272
+ const hasStateUACP = queryParams.some((param) => param.key === STATE_UACP_PARAM);
273
+ if (!hasReadCatalog) {
274
+ combinedQueryParams.push({ key: READ_CATALOG_PARAM, value: "false" });
237
275
  }
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
- }
276
+ if (!hasStateUACP) {
277
+ combinedQueryParams.push({ key: STATE_UACP_PARAM, value: "PRODUCTION" });
248
278
  }
249
- return prefix + urlParams;
279
+ return combinedQueryParams;
280
+ }
281
+ _mapQueryParams(params) {
282
+ return params.split("&").map((param) => {
283
+ const [key, value] = param.split("=");
284
+ return { key, value };
285
+ });
250
286
  }
251
287
  async _closePopup(popup, timeout = 30000) {
252
288
  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":"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"}
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.7",
4
4
  "author": "SAP SE",
5
5
  "types": "./@types/index.d.ts",
6
6
  "main": "./lib/index.js",
@@ -1,148 +1,130 @@
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_1 = "dummyQueryParam1=dummyValue1";
14
+ const DUMMY_QUERY_PARAM_2 = "dummyQueryParam2=dummyValue2";
15
+ const PREVENT_POPUP_QUERY_PARAMS = "help-readCatalog=false&help-stateUACP=PRODUCTION";
16
+
17
+ describe("navigation - navigateToApplication - preventPopups=false", function () {
18
+ it("Preparation", async function () {
19
+ browser.config.baseUrl = BASE_URL;
20
+ });
30
21
 
31
- await common.assertion.expectEqual(urlExpected, parsedUrlValue);
22
+ it("Execution", async function () {
23
+ await ui5.navigation.navigateToApplication(INTENT, false);
24
+ });
32
25
 
26
+ it("Verification", async function () {
27
+ const urlExp = `${BASE_URL}#Shell-home`;
28
+ await common.assertion.expectUrlToBe(urlExp);
33
29
  });
34
30
  });
35
31
 
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);
32
+ describe("navigation - navigateToApplication - preventPopups=true", function () {
33
+ it("Preparation", async function () {
34
+ browser.config.baseUrl = BASE_URL;
35
+ });
48
36
 
49
- let parsedUrlElement = await nonUi5.element.getById("navigationUrl");
50
- let parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
37
+ it("Execution", async function () {
38
+ await ui5.navigation.navigateToApplication(INTENT, true);
39
+ });
51
40
 
52
- await common.assertion.expectEqual(urlExpected, parsedUrlValue);
41
+ it("Verification", async function () {
42
+ const urlExp = `${BASE_URL}?${PREVENT_POPUP_QUERY_PARAMS}#Shell-home`;
43
+ await common.assertion.expectUrlToBe(urlExp);
44
+ });
45
+ });
53
46
 
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`;
47
+ describe("navigation - navigateToApplication - baseUrl with closePopup query parameters", function () {
48
+ it("Preparation", async function () {
49
+ browser.config.baseUrl = `${BASE_URL}?${PREVENT_POPUP_QUERY_PARAMS}`;
50
+ });
57
51
 
58
- await ui5.navigation.navigateToApplication("PurchaseOrder-manage", true); // preventPopups=true
59
- button = await nonUi5.element.getById("parseUrl");
60
- await nonUi5.userInteraction.click(button);
52
+ it("Execution", async function () {
53
+ await ui5.navigation.navigateToApplication(INTENT, false);
54
+ });
61
55
 
62
- await common.assertion.expectUrlToBe(urlExpected);
56
+ it("Verification", async function () {
57
+ const urlExp = `${BASE_URL}?${PREVENT_POPUP_QUERY_PARAMS}#Shell-home`;
58
+ await common.assertion.expectUrlToBe(urlExp);
59
+ });
60
+ });
63
61
 
64
- parsedUrlElement = await nonUi5.element.getById("navigationUrl");
65
- parsedUrlValue = await nonUi5.element.getValue(parsedUrlElement);
62
+ describe("navigation - navigateToApplication - baseUrl with dummy query parameters", function () {
63
+ it("Preparation", async function () {
64
+ browser.config.baseUrl = `${BASE_URL}?${DUMMY_QUERY_PARAM_1}`;
65
+ });
66
66
 
67
- await common.assertion.expectEqual(urlExpected, parsedUrlValue);
67
+ it("Execution", async function () {
68
+ await ui5.navigation.navigateToApplication(INTENT, false);
69
+ });
68
70
 
71
+ it("Verification", async function () {
72
+ const urlExp = `${BASE_URL}?${DUMMY_QUERY_PARAM_1}#Shell-home`;
73
+ await common.assertion.expectUrlToBe(urlExp);
69
74
  });
70
75
  });
71
76
 
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();
77
+ describe("navigation - navigateToApplication - intent and baseUrl with query parameters", function () {
78
+ it("Preparation", async function () {
79
+ browser.config.baseUrl = `${BASE_URL}?${DUMMY_QUERY_PARAM_1}`;
80
+ });
81
81
 
82
- // system first navigates to '<urlToSystem>#%5Bobject%20Object%5D'
83
- expect(currentUrl).toContain(browser.config.baseUrl + "#[object%20Object]");
82
+ it("Execution", async function () {
83
+ await ui5.navigation.navigateToApplication(`${INTENT}?${DUMMY_QUERY_PARAM_2}`, false);
84
+ });
84
85
 
85
- await expect(ui5.navigation.navigateToApplication(wrongApplication, false, true)) // verify = true,
86
- .rejects.toThrow(/Navigation failed/);
86
+ it("Verification", async function () {
87
+ const urlExp = `${BASE_URL}?${DUMMY_QUERY_PARAM_1}#Shell-home?${DUMMY_QUERY_PARAM_2}`;
88
+ await common.assertion.expectUrlToBe(urlExp);
87
89
  });
88
90
  });
89
91
 
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 () {
92
+ describe("navigation - navigateToApplication - intent with multiple query parameters", function () {
107
93
  it("Preparation", async function () {
108
- await ui5.navigation.navigateToApplication("Shell-home", true);
109
- await ui5.session.loginFiori("PURCHASER", "super-duper-sensitive-pw");
94
+ browser.config.baseUrl = BASE_URL;
110
95
  });
111
96
 
112
97
  it("Execution", async function () {
113
- await ui5.navigation.navigateToApplication("SomeWrong-intent", true);
98
+ await ui5.navigation.navigateToApplication(`${INTENT}?${DUMMY_QUERY_PARAM_1}&${DUMMY_QUERY_PARAM_2}`, false);
114
99
  });
115
100
 
116
101
  it("Verification", async function () {
117
- await ui5.assertion.expectUnsupportedNavigationPopup("#SomeWrong-intent");
118
- });
119
-
120
- it("Clean Up", async function () {
121
- await ui5.session.logout();
102
+ const urlExp = `${BASE_URL}#Shell-home?${DUMMY_QUERY_PARAM_1}&${DUMMY_QUERY_PARAM_2}`;
103
+ await common.assertion.expectUrlToBe(urlExp);
122
104
  });
123
105
  });
124
106
 
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 () {
107
+ describe("navigation - navigateToApplication - baseUrl with multiple query parameters", function () {
128
108
  it("Preparation", async function () {
129
- await ui5.navigation.navigateToApplication("Shell-home", true);
130
- await ui5.session.loginFiori("PURCHASER", "super-duper-sensitive-pw");
109
+ browser.config.baseUrl = `${BASE_URL}?${DUMMY_QUERY_PARAM_1}&${PREVENT_POPUP_QUERY_PARAMS}`;
131
110
  });
132
111
 
133
112
  it("Execution", async function () {
134
- await ui5.navigation.navigateToApplication("SomeWrongIntentWith&", false);
113
+ await ui5.navigation.navigateToApplication(INTENT, false);
135
114
  });
136
115
 
137
116
  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.");
117
+ const urlExp = `${BASE_URL}?${DUMMY_QUERY_PARAM_1}&${PREVENT_POPUP_QUERY_PARAMS}#Shell-home`;
118
+ await common.assertion.expectUrlToBe(urlExp);
119
+ });
120
+ });
121
+
122
+ describe("navigation - navigateToApplication - verify=true", function () {
123
+ it("Preparation", async function () {
124
+ browser.config.baseUrl = BASE_URL;
143
125
  });
144
126
 
145
- it("Clean Up", async function () {
146
- await ui5.session.logout();
127
+ it("Execution & Verification", async function () {
128
+ await ui5.navigation.navigateToApplication(INTENT, false, true);
147
129
  });
148
- });
130
+ });
@@ -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"),