@sapui5/sap.fe.test 1.100.0 → 1.102.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.
Files changed (31) hide show
  1. package/package.json +2 -3
  2. package/src/sap/fe/test/.library +1 -1
  3. package/src/sap/fe/test/BaseArrangements.js +65 -18
  4. package/src/sap/fe/test/CollaborationClient.js +77 -0
  5. package/src/sap/fe/test/CollaborationClient.ts +105 -0
  6. package/src/sap/fe/test/FeMocks.js +3 -3
  7. package/src/sap/fe/test/FeMocks.ts +10 -6
  8. package/src/sap/fe/test/FlexibleColumnLayout.js +148 -141
  9. package/src/sap/fe/test/JestTemplatingHelper.js +31 -10
  10. package/src/sap/fe/test/JestTemplatingHelper.ts +62 -48
  11. package/src/sap/fe/test/ListReport.js +72 -77
  12. package/src/sap/fe/test/LocationUtil.js +12 -16
  13. package/src/sap/fe/test/ObjectPage.js +116 -124
  14. package/src/sap/fe/test/Shell.js +94 -34
  15. package/src/sap/fe/test/TemplatePage.js +49 -27
  16. package/src/sap/fe/test/UI5MockHelper.js +100 -20
  17. package/src/sap/fe/test/UI5MockHelper.ts +79 -14
  18. package/src/sap/fe/test/api/APIHelper.js +26 -15
  19. package/src/sap/fe/test/api/CollaborationAPI.js +215 -0
  20. package/src/sap/fe/test/api/CollaborationAPI.ts +240 -0
  21. package/src/sap/fe/test/api/DialogActions.js +3 -1
  22. package/src/sap/fe/test/api/DialogMessageActions.js +78 -64
  23. package/src/sap/fe/test/api/HeaderActions.js +229 -226
  24. package/src/sap/fe/test/api/HeaderAssertions.js +76 -41
  25. package/src/sap/fe/test/api/TableAPI.js +30 -34
  26. package/src/sap/fe/test/api/TableActions.js +58 -70
  27. package/src/sap/fe/test/api/TableAssertions.js +51 -46
  28. package/src/sap/fe/test/builder/MacroFieldBuilder.js +161 -153
  29. package/src/sap/fe/test/builder/MdcTableBuilder.js +247 -191
  30. package/src/sap/fe/test/library.js +26 -35
  31. package/src/sap/fe/test/library.ts +28 -0
@@ -12,7 +12,7 @@ sap.ui.define(
12
12
  "sap/fe/test/builder/MacroFieldBuilder",
13
13
  "./APIHelper"
14
14
  ],
15
- function(HeaderAPI, Utils, OpaBuilder, FEBuilder, FieldBuilder, APIHelper) {
15
+ function (HeaderAPI, Utils, OpaBuilder, FEBuilder, FieldBuilder, APIHelper) {
16
16
  "use strict";
17
17
 
18
18
  /**
@@ -26,7 +26,7 @@ sap.ui.define(
26
26
  * @hideconstructor
27
27
  * @public
28
28
  */
29
- var HeaderAssertions = function(oHeaderBuilder, vHeaderDescription) {
29
+ var HeaderAssertions = function (oHeaderBuilder, vHeaderDescription) {
30
30
  this._sObjectPageLayoutId = vHeaderDescription.id;
31
31
  this._sHeaderId = vHeaderDescription.headerId;
32
32
  this._sHeaderContentId = vHeaderDescription.headerContentId;
@@ -48,7 +48,7 @@ sap.ui.define(
48
48
  *
49
49
  * @public
50
50
  */
51
- HeaderAssertions.prototype.iCheckAction = function(vActionIdentifier, mState) {
51
+ HeaderAssertions.prototype.iCheckAction = function (vActionIdentifier, mState) {
52
52
  var oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sObjectPageLayoutId);
53
53
  return this.prepareResult(
54
54
  oOverflowToolbarBuilder
@@ -66,7 +66,7 @@ sap.ui.define(
66
66
  *
67
67
  * @public
68
68
  */
69
- HeaderAssertions.prototype.iCheckEdit = function(mState) {
69
+ HeaderAssertions.prototype.iCheckEdit = function (mState) {
70
70
  return this.iCheckAction({ service: "StandardAction", action: "Edit", unbound: true }, mState);
71
71
  };
72
72
 
@@ -78,7 +78,7 @@ sap.ui.define(
78
78
  *
79
79
  * @public
80
80
  */
81
- HeaderAssertions.prototype.iCheckDelete = function(mState) {
81
+ HeaderAssertions.prototype.iCheckDelete = function (mState) {
82
82
  return this.iCheckAction({ service: "StandardAction", action: "Delete", unbound: true }, mState);
83
83
  };
84
84
 
@@ -90,7 +90,7 @@ sap.ui.define(
90
90
  *
91
91
  * @public
92
92
  */
93
- HeaderAssertions.prototype.iCheckRelatedApps = function(mState) {
93
+ HeaderAssertions.prototype.iCheckRelatedApps = function (mState) {
94
94
  return this.iCheckAction({ service: "fe", action: "RelatedApps", unbound: true }, mState);
95
95
  };
96
96
 
@@ -102,7 +102,7 @@ sap.ui.define(
102
102
  *
103
103
  * @public
104
104
  */
105
- HeaderAssertions.prototype.iCheckMenuAction = function(vAction) {
105
+ HeaderAssertions.prototype.iCheckMenuAction = function (vAction) {
106
106
  return this.prepareResult(APIHelper.createMenuActionCheckBuilder(vAction).execute());
107
107
  };
108
108
 
@@ -115,15 +115,15 @@ sap.ui.define(
115
115
  *
116
116
  * @ui5-restricted
117
117
  */
118
- HeaderAssertions.prototype.iCheckNumberOfHeaderContentItems = function(iNumberOfItems, bIncludeHidden) {
118
+ HeaderAssertions.prototype.iCheckNumberOfHeaderContentItems = function (iNumberOfItems, bIncludeHidden) {
119
119
  var oHeaderContentBuilder = this.getObjectPageDynamicHeaderContentBuilder(this._sHeaderContentId);
120
120
 
121
121
  return this.prepareResult(
122
122
  oHeaderContentBuilder
123
- .has(function(oOPHeaderContent) {
123
+ .has(function (oOPHeaderContent) {
124
124
  var aItems = oOPHeaderContent.getContent()[0].getItems();
125
125
  if (!bIncludeHidden) {
126
- aItems = aItems.filter(function(oControl) {
126
+ aItems = aItems.filter(function (oControl) {
127
127
  return oControl.getVisible();
128
128
  });
129
129
  }
@@ -151,7 +151,7 @@ sap.ui.define(
151
151
  *
152
152
  * @public
153
153
  */
154
- HeaderAssertions.prototype.iCheckFieldInFieldGroup = function(vFieldIdentifier, vValue, mState) {
154
+ HeaderAssertions.prototype.iCheckFieldInFieldGroup = function (vFieldIdentifier, vValue, mState) {
155
155
  var aArguments = Utils.parseArguments([Object, [Array, String], Object], arguments),
156
156
  sFieldId =
157
157
  (vFieldIdentifier.targetAnnotation
@@ -184,7 +184,7 @@ sap.ui.define(
184
184
  *
185
185
  * @ui5-restricted
186
186
  */
187
- HeaderAssertions.prototype.iCheckDataPoint = function(sTitle, sValue) {
187
+ HeaderAssertions.prototype.iCheckDataPoint = function (sTitle, sValue) {
188
188
  var oHeaderContentBuilder = this.getObjectPageDynamicHeaderContentBuilder(this._sHeaderContentId);
189
189
 
190
190
  return this.prepareResult(
@@ -194,7 +194,7 @@ sap.ui.define(
194
194
  OpaBuilder.create(this)
195
195
  .hasType("sap.m.ObjectNumber")
196
196
  .hasProperties({ number: sValue })
197
- .has(function(oObjectNumber) {
197
+ .has(function (oObjectNumber) {
198
198
  return oObjectNumber.getParent();
199
199
  })
200
200
  .hasAggregationProperties("items", { text: sTitle })
@@ -216,24 +216,18 @@ sap.ui.define(
216
216
  *
217
217
  * @public
218
218
  */
219
- HeaderAssertions.prototype.iCheckTitle = function(sTitle, sDescription) {
219
+ HeaderAssertions.prototype.iCheckTitle = function (sTitle, sDescription) {
220
220
  var oHeaderTitleBuilder = this.getObjectPageDynamicHeaderTitleBuilder(this._sObjectPageLayoutId);
221
221
  return this.prepareResult(
222
222
  oHeaderTitleBuilder
223
223
  .hasConditional(
224
224
  sTitle !== undefined,
225
- OpaBuilder.Matchers.childrenMatcher(
226
- OpaBuilder.create(this)
227
- .hasType("sap.m.Title")
228
- .hasProperties({ text: sTitle })
229
- )
225
+ OpaBuilder.Matchers.childrenMatcher(OpaBuilder.create(this).hasType("sap.m.Title").hasProperties({ text: sTitle }))
230
226
  )
231
227
  .hasConditional(
232
228
  sDescription !== undefined,
233
229
  OpaBuilder.Matchers.childrenMatcher(
234
- OpaBuilder.create(this)
235
- .hasType("sap.m.Label")
236
- .hasProperties({ text: sDescription })
230
+ OpaBuilder.create(this).hasType("sap.m.Label").hasProperties({ text: sDescription })
237
231
  )
238
232
  )
239
233
  .description(
@@ -253,7 +247,7 @@ sap.ui.define(
253
247
  *
254
248
  * @public
255
249
  */
256
- HeaderAssertions.prototype.iCheckPaginatorDown = function(mState) {
250
+ HeaderAssertions.prototype.iCheckPaginatorDown = function (mState) {
257
251
  return this.prepareResult(
258
252
  this.createPaginatorBuilder(
259
253
  OpaBuilder.Matchers.properties({ icon: "sap-icon://navigation-down-arrow" }),
@@ -273,7 +267,7 @@ sap.ui.define(
273
267
  *
274
268
  * @public
275
269
  */
276
- HeaderAssertions.prototype.iCheckPaginatorUp = function(mState) {
270
+ HeaderAssertions.prototype.iCheckPaginatorUp = function (mState) {
277
271
  return this.prepareResult(
278
272
  this.createPaginatorBuilder(
279
273
  OpaBuilder.Matchers.properties({ icon: "sap-icon://navigation-up-arrow" }),
@@ -294,7 +288,7 @@ sap.ui.define(
294
288
  * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
295
289
  * @ui5-restricted
296
290
  */
297
- HeaderAssertions.prototype.iCheckMicroChart = function(vMicroChartIdentifier, sUoMLabel) {
291
+ HeaderAssertions.prototype.iCheckMicroChart = function (vMicroChartIdentifier, sUoMLabel) {
298
292
  var oOpaBuilder = OpaBuilder.create(this.getOpaInstance());
299
293
 
300
294
  if (!Utils.isOfType(vMicroChartIdentifier, String)) {
@@ -349,7 +343,7 @@ sap.ui.define(
349
343
  *
350
344
  * @public
351
345
  */
352
- HeaderAssertions.prototype.iCheckHeaderFacet = function(vFacetIdentifier, mState) {
346
+ HeaderAssertions.prototype.iCheckHeaderFacet = function (vFacetIdentifier, mState) {
353
347
  var aArguments = Utils.parseArguments([[Object, String], Object], arguments),
354
348
  oHeaderContentBuilder = this.getObjectPageDynamicHeaderContentBuilder(this._sHeaderContentId),
355
349
  sId = new RegExp("fe::HeaderFacetContainer::" + vFacetIdentifier.facetId + "$");
@@ -362,13 +356,7 @@ sap.ui.define(
362
356
 
363
357
  return this.prepareResult(
364
358
  oHeaderContentBuilder
365
- .has(
366
- OpaBuilder.Matchers.childrenMatcher(
367
- FEBuilder.create(this.getOpaInstance())
368
- .hasId(sId)
369
- .hasState(mState)
370
- )
371
- )
359
+ .has(OpaBuilder.Matchers.childrenMatcher(FEBuilder.create(this.getOpaInstance()).hasId(sId).hasState(mState)))
372
360
  .description(Utils.formatMessage("Checking Header Facet '{0}' with state='{1}'", aArguments[0], aArguments[1]))
373
361
  .execute()
374
362
  );
@@ -390,7 +378,7 @@ sap.ui.define(
390
378
  *
391
379
  * @ui5-restricted
392
380
  */
393
- HeaderAssertions.prototype.iCheckBreadCrumb = function(sLink) {
381
+ HeaderAssertions.prototype.iCheckBreadCrumb = function (sLink) {
394
382
  var oFEBuilder = FEBuilder.create(this.getOpaInstance()).hasId(this._sBreadCrumbId);
395
383
 
396
384
  if (sLink !== undefined && sLink.length > 0) {
@@ -416,7 +404,7 @@ sap.ui.define(
416
404
  *
417
405
  * @public
418
406
  */
419
- HeaderAssertions.prototype.iCheckSaveAsTile = function(mState) {
407
+ HeaderAssertions.prototype.iCheckSaveAsTile = function (mState) {
420
408
  var oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sObjectPageLayoutId),
421
409
  sShareId = "fe::Share";
422
410
 
@@ -442,7 +430,7 @@ sap.ui.define(
442
430
  *
443
431
  * @public
444
432
  */
445
- HeaderAssertions.prototype.iCheckSendEmail = function(mState) {
433
+ HeaderAssertions.prototype.iCheckSendEmail = function (mState) {
446
434
  var oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sObjectPageLayoutId),
447
435
  sShareId = "fe::Share";
448
436
 
@@ -471,7 +459,7 @@ sap.ui.define(
471
459
  *
472
460
  * @private
473
461
  */
474
- HeaderAssertions.prototype.iCheckLink = function(vLinkIdentifier, mState) {
462
+ HeaderAssertions.prototype.iCheckLink = function (vLinkIdentifier, mState) {
475
463
  // TODO this function needs to aligned with onForm().iCheckLink - for now vLinkIdentifier must be the link text!
476
464
  var aArguments = Utils.parseArguments([String, Object], arguments),
477
465
  oHeaderContentBuilder = this.getObjectPageDynamicHeaderContentBuilder(this._sHeaderContentId);
@@ -479,10 +467,7 @@ sap.ui.define(
479
467
  oHeaderContentBuilder
480
468
  .has(
481
469
  OpaBuilder.Matchers.childrenMatcher(
482
- FEBuilder.create()
483
- .hasType("sap.m.Link")
484
- .hasProperties({ text: vLinkIdentifier })
485
- .hasState(aArguments[1])
470
+ FEBuilder.create().hasType("sap.m.Link").hasProperties({ text: vLinkIdentifier }).hasState(aArguments[1])
486
471
  )
487
472
  )
488
473
  .description(Utils.formatMessage("Checking link '{0}' with state='{1}'", aArguments[0], aArguments[1]))
@@ -490,6 +475,56 @@ sap.ui.define(
490
475
  );
491
476
  };
492
477
 
478
+ /**
479
+ * Checks the number of users collaborating in the draft.
480
+ *
481
+ * @param {number} iExpectedNumber The expected number of users
482
+ * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
483
+ *
484
+ * @ui5-restricted
485
+ */
486
+ HeaderAssertions.prototype.iCheckNumberOfCollaboratingUsers = function (iExpectedNumber) {
487
+ var objectPageBuilder = FEBuilder.create(this.getOpaInstance()).hasId(this._sObjectPageLayoutId);
488
+
489
+ return this.prepareResult(
490
+ objectPageBuilder
491
+ .hasChildren(
492
+ FEBuilder.create(this)
493
+ .hasType("sap.uxap.ObjectPageDynamicHeaderTitle")
494
+ .hasChildren(
495
+ FEBuilder.create(this)
496
+ .hasType("sap.m.Avatar")
497
+ .checkNumberOfMatches(iExpectedNumber + 1) // +1 because of avatar to add a user
498
+ )
499
+ )
500
+ .description(Utils.formatMessage("Checking number of collaborating user: {0}", iExpectedNumber))
501
+ .execute()
502
+ );
503
+ };
504
+
505
+ /**
506
+ * Checks if a collaborating user is present.
507
+ *
508
+ * @param {string} sInitials The initials of the user (displayed in the avatar)
509
+ * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
510
+ *
511
+ * @ui5-restricted
512
+ */
513
+ HeaderAssertions.prototype.iCheckCollaboratingUser = function (sInitials) {
514
+ var objectPageBuilder = FEBuilder.create(this.getOpaInstance()).hasId(this._sObjectPageLayoutId);
515
+
516
+ return this.prepareResult(
517
+ objectPageBuilder
518
+ .hasChildren(
519
+ FEBuilder.create(this)
520
+ .hasType("sap.uxap.ObjectPageDynamicHeaderTitle")
521
+ .hasChildren(FEBuilder.create(this).hasType("sap.m.Avatar").hasProperties({ initials: sInitials }))
522
+ )
523
+ .description(Utils.formatMessage("Checking collaborating user with initials '{0}'", sInitials))
524
+ .execute()
525
+ );
526
+ };
527
+
493
528
  return HeaderAssertions;
494
529
  }
495
530
  );
@@ -14,7 +14,7 @@ sap.ui.define(
14
14
  "sap/ui/test/actions/Action",
15
15
  "sap/ui/core/SortOrder"
16
16
  ],
17
- function(BaseAPI, Utils, FEBuilder, TableBuilder, DialogBuilder, OpaBuilder, Action, SortOrder) {
17
+ function (BaseAPI, Utils, FEBuilder, TableBuilder, DialogBuilder, OpaBuilder, Action, SortOrder) {
18
18
  "use strict";
19
19
 
20
20
  /**
@@ -38,7 +38,7 @@ sap.ui.define(
38
38
  * @hideconstructor
39
39
  * @public
40
40
  */
41
- var TableAPI = function(oTableBuilder, vTableDescription) {
41
+ var TableAPI = function (oTableBuilder, vTableDescription) {
42
42
  if (!Utils.isOfType(oTableBuilder, TableBuilder)) {
43
43
  throw new Error("oTableBuilder parameter must be an TableBuilder instance");
44
44
  }
@@ -47,13 +47,13 @@ sap.ui.define(
47
47
  TableAPI.prototype = Object.create(BaseAPI.prototype);
48
48
  TableAPI.prototype.constructor = TableAPI;
49
49
 
50
- TableAPI.createRowMatchers = function(vRowValues, mRowState, vAdditionalMatchers, vEmptyCells) {
50
+ TableAPI.createRowMatchers = function (vRowValues, mRowState, vAdditionalMatchers, vEmptyCells) {
51
51
  var aArguments = Utils.parseArguments([[Object, Number], Object, [Array, Function], Array], arguments),
52
52
  aRowMatchers = [];
53
53
  if (Utils.isOfType(aArguments[0], Object)) {
54
54
  aRowMatchers.push(TableBuilder.Row.Matchers.cellValues(aArguments[0]));
55
55
  } else if (Utils.isOfType(aArguments[0], Number)) {
56
- aRowMatchers.push(function(oRow) {
56
+ aRowMatchers.push(function (oRow) {
57
57
  var oRowParent = oRow.getParent(),
58
58
  sParentAggregation = oRow.sParentAggregationName;
59
59
  return oRowParent && sParentAggregation
@@ -73,7 +73,7 @@ sap.ui.define(
73
73
  return aRowMatchers;
74
74
  };
75
75
 
76
- TableAPI.prototype.createGroupRowMatchers = function(iLevel, sTitle) {
76
+ TableAPI.prototype.createGroupRowMatchers = function (iLevel, sTitle) {
77
77
  return [TableBuilder.Row.Matchers.visualGroup(iLevel, sTitle)];
78
78
  };
79
79
 
@@ -84,7 +84,7 @@ sap.ui.define(
84
84
  *
85
85
  * @public
86
86
  */
87
- TableAPI.prototype.iOpenColumnAdaptation = function() {
87
+ TableAPI.prototype.iOpenColumnAdaptation = function () {
88
88
  var oTableBuilder = this.getBuilder();
89
89
  return this.prepareResult(
90
90
  oTableBuilder
@@ -103,7 +103,7 @@ sap.ui.define(
103
103
  *
104
104
  * @public
105
105
  */
106
- TableAPI.prototype.iConfirmColumnAdaptation = function() {
106
+ TableAPI.prototype.iConfirmColumnAdaptation = function () {
107
107
  return this.prepareResult(
108
108
  TableBuilder.createAdaptationDialogBuilder(this.getOpaInstance())
109
109
  .doPressFooterButton(OpaBuilder.Matchers.resourceBundle("text", "sap.ui.mdc", "p13nDialog.OK"))
@@ -121,7 +121,7 @@ sap.ui.define(
121
121
  *
122
122
  * @public
123
123
  */
124
- TableAPI.prototype.iOpenColumnSorting = function() {
124
+ TableAPI.prototype.iOpenColumnSorting = function () {
125
125
  var oTableBuilder = this.getBuilder();
126
126
  return this.prepareResult(
127
127
  oTableBuilder
@@ -138,7 +138,7 @@ sap.ui.define(
138
138
  *
139
139
  * @public
140
140
  */
141
- TableAPI.prototype.iConfirmColumnSorting = function() {
141
+ TableAPI.prototype.iConfirmColumnSorting = function () {
142
142
  return this.prepareResult(
143
143
  TableBuilder.createSortingDialogBuilder(this.getOpaInstance())
144
144
  .doPressFooterButton(OpaBuilder.Matchers.resourceBundle("text", "sap.ui.mdc", "p13nDialog.OK"))
@@ -156,7 +156,7 @@ sap.ui.define(
156
156
  *
157
157
  * @public
158
158
  */
159
- TableAPI.prototype.iOpenFilterDialog = function() {
159
+ TableAPI.prototype.iOpenFilterDialog = function () {
160
160
  var oTableBuilder = this.getBuilder();
161
161
  return this.prepareResult(
162
162
  oTableBuilder
@@ -173,7 +173,7 @@ sap.ui.define(
173
173
  *
174
174
  * @public
175
175
  */
176
- TableAPI.prototype.iConfirmFilterDialog = function() {
176
+ TableAPI.prototype.iConfirmFilterDialog = function () {
177
177
  return this.prepareResult(
178
178
  TableBuilder.createFilteringDialogBuilder(this.getOpaInstance())
179
179
  .doPressFooterButton(OpaBuilder.Matchers.resourceBundle("text", "sap.ui.mdc", "p13nDialog.OK"))
@@ -203,7 +203,7 @@ sap.ui.define(
203
203
  *
204
204
  * @ui5-restricted
205
205
  */
206
- TableAPI.prototype.personalization = function(
206
+ TableAPI.prototype.personalization = function (
207
207
  vColumnIdentifier,
208
208
  mState,
209
209
  vActions,
@@ -218,9 +218,7 @@ sap.ui.define(
218
218
  ),
219
219
  oBuilder = FEBuilder.create(this.getOpaInstance()),
220
220
  bDialogOpen,
221
- oAdaptColumnBuilder = FEBuilder.create(this.getOpaInstance())
222
- .hasType("sap.m.ColumnListItem")
223
- .isDialogElement();
221
+ oAdaptColumnBuilder = FEBuilder.create(this.getOpaInstance()).hasType("sap.m.ColumnListItem").isDialogElement();
224
222
 
225
223
  oDialogBuilder = aArguments[4];
226
224
  fnOpenDialog = aArguments[5];
@@ -255,7 +253,7 @@ sap.ui.define(
255
253
  sDescription = aArguments[3];
256
254
  return this.prepareResult(
257
255
  oBuilder
258
- .success(function() {
256
+ .success(function () {
259
257
  bDialogOpen = FEBuilder.controlsExist(oDialogBuilder);
260
258
  if (!bDialogOpen) {
261
259
  fnOpenDialog();
@@ -263,7 +261,7 @@ sap.ui.define(
263
261
  }
264
262
  return oDialogBuilder
265
263
  .has(OpaBuilder.Matchers.children(oAdaptColumnBuilder))
266
- .has(function(aFoundAdaptationColumns) {
264
+ .has(function (aFoundAdaptationColumns) {
267
265
  if (bCheckForNotVisible) {
268
266
  return aFoundAdaptationColumns.length === 0;
269
267
  }
@@ -296,7 +294,7 @@ sap.ui.define(
296
294
  *
297
295
  * @ui5-restricted
298
296
  */
299
- TableAPI.prototype.sortingPersonalization = function(
297
+ TableAPI.prototype.sortingPersonalization = function (
300
298
  vColumnIdentifier,
301
299
  mState,
302
300
  vActions,
@@ -311,13 +309,9 @@ sap.ui.define(
311
309
  ),
312
310
  oBuilder = FEBuilder.create(this.getOpaInstance()),
313
311
  bDialogOpen,
314
- oAdaptColumnBuilder = FEBuilder.create(this.getOpaInstance())
315
- .hasType("sap.m.CustomListItem")
316
- .isDialogElement(),
312
+ oAdaptColumnBuilder = FEBuilder.create(this.getOpaInstance()).hasType("sap.m.CustomListItem").isDialogElement(),
317
313
  oNoneColumnMatcher = OpaBuilder.Matchers.childrenMatcher(
318
- OpaBuilder.create()
319
- .hasType("sap.m.Select")
320
- .hasProperties({ selectedKey: "$_none" })
314
+ OpaBuilder.create().hasType("sap.m.ComboBox").hasProperties({ placeholder: "Sort by" })
321
315
  ),
322
316
  oTargetColumnMatcher;
323
317
 
@@ -329,29 +323,31 @@ sap.ui.define(
329
323
  if (Utils.isOfType(vColumnIdentifier, String)) {
330
324
  oTargetColumnMatcher = OpaBuilder.Matchers.childrenMatcher(
331
325
  OpaBuilder.create(this.getOpaInstance())
332
- .hasType("sap.m.Select")
333
- .has(function(oSelectControl) {
334
- return oSelectControl.getSelectedItem().getText() === vColumnIdentifier;
326
+ .hasType("sap.m.ComboBox")
327
+ .has(function (oSelectControl) {
328
+ return oSelectControl.getSelectedItem()
329
+ ? oSelectControl.getSelectedItem().getText() === vColumnIdentifier
330
+ : false;
335
331
  })
336
332
  );
337
333
  } else {
338
334
  oTargetColumnMatcher = OpaBuilder.Matchers.childrenMatcher(
339
335
  OpaBuilder.create(this.getOpaInstance())
340
- .hasType("sap.m.Select")
336
+ .hasType("sap.m.ComboBox")
341
337
  .hasProperties({ selectedKey: vColumnIdentifier.name })
342
338
  );
343
339
  }
344
340
 
345
341
  oDialogBuilder
346
342
  .has(OpaBuilder.Matchers.children(oAdaptColumnBuilder))
347
- .has(function(aCustomListItems) {
343
+ .has(function (aCustomListItems) {
348
344
  var aMatchingListItems = OpaBuilder.Matchers.filter(oTargetColumnMatcher)(aCustomListItems);
349
345
  if (aMatchingListItems.length) {
350
346
  return aMatchingListItems;
351
347
  }
352
348
  return OpaBuilder.Matchers.filter(oNoneColumnMatcher)(aCustomListItems);
353
349
  })
354
- .has(function(aFoundAdaptationColumns) {
350
+ .has(function (aFoundAdaptationColumns) {
355
351
  if (bCheckForNotVisible) {
356
352
  return aFoundAdaptationColumns.length === 0;
357
353
  }
@@ -367,7 +363,7 @@ sap.ui.define(
367
363
  oDialogBuilder.hasChildren(
368
364
  OpaBuilder.create()
369
365
  .hasType("sap.m.SegmentedButton")
370
- .has(function(oSegmentedButton) {
366
+ .has(function (oSegmentedButton) {
371
367
  if (sSortOrder === SortOrder.None) {
372
368
  return !oSegmentedButton.enabled;
373
369
  }
@@ -386,7 +382,7 @@ sap.ui.define(
386
382
  sDescription = aArguments[3];
387
383
  return this.prepareResult(
388
384
  oBuilder
389
- .success(function() {
385
+ .success(function () {
390
386
  bDialogOpen = FEBuilder.controlsExist(oDialogBuilder);
391
387
  if (!bDialogOpen) {
392
388
  fnOpenDialog();
@@ -410,7 +406,7 @@ sap.ui.define(
410
406
  *
411
407
  * @ui5-restricted
412
408
  */
413
- TableAPI.prototype.columnAdaptation = function(vColumnIdentifier, mState, vActions, sDescription) {
409
+ TableAPI.prototype.columnAdaptation = function (vColumnIdentifier, mState, vActions, sDescription) {
414
410
  return this.personalization(
415
411
  vColumnIdentifier,
416
412
  mState,
@@ -435,7 +431,7 @@ sap.ui.define(
435
431
  *
436
432
  * @ui5-restricted
437
433
  */
438
- TableAPI.prototype.columnSorting = function(vColumnIdentifier, mState, vActions, sDescription) {
434
+ TableAPI.prototype.columnSorting = function (vColumnIdentifier, mState, vActions, sDescription) {
439
435
  return this.sortingPersonalization(
440
436
  vColumnIdentifier,
441
437
  mState,