@sapui5/sap.fe.test 1.111.1 → 1.113.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 +1 -1
  2. package/src/sap/fe/test/.library +1 -1
  3. package/src/sap/fe/test/CollaborationClient.js +4 -4
  4. package/src/sap/fe/test/CollaborationClient.ts +3 -3
  5. package/src/sap/fe/test/FeMocks.js +5 -5
  6. package/src/sap/fe/test/FeMocks.ts +5 -5
  7. package/src/sap/fe/test/JestTemplatingHelper.js +79 -26
  8. package/src/sap/fe/test/JestTemplatingHelper.ts +77 -25
  9. package/src/sap/fe/test/JourneyRunner.js +5 -7
  10. package/src/sap/fe/test/ListReport.js +4 -6
  11. package/src/sap/fe/test/ObjectPage.js +2 -2
  12. package/src/sap/fe/test/Shell.js +2 -2
  13. package/src/sap/fe/test/Stubs.js +1 -1
  14. package/src/sap/fe/test/TemplatePage.js +2 -2
  15. package/src/sap/fe/test/TemplatingTestUtils.js +2 -3
  16. package/src/sap/fe/test/UI5MockHelper.js +39 -3
  17. package/src/sap/fe/test/UI5MockHelper.ts +33 -3
  18. package/src/sap/fe/test/api/ChartActions.js +1 -1
  19. package/src/sap/fe/test/api/CollaborationAPI.js +14 -19
  20. package/src/sap/fe/test/api/CollaborationAPI.ts +17 -24
  21. package/src/sap/fe/test/api/DialogValueHelpAssertions.js +68 -27
  22. package/src/sap/fe/test/api/FilterBarAssertions.js +3 -3
  23. package/src/sap/fe/test/builder/MacroFieldBuilder.js +3 -3
  24. package/src/sap/fe/test/builder/MdcTableBuilder.js +12 -3
  25. package/src/sap/fe/test/internal/ConsoleErrorChecker.js +1 -1
  26. package/src/sap/fe/test/internal/ConsoleErrorChecker.ts +3 -0
  27. package/src/sap/fe/test/internal/FEArrangements.js +9 -5
  28. package/src/sap/fe/test/library-preload.js +252 -119
  29. package/src/sap/fe/test/library-preload.js.map +1 -1
  30. package/src/sap/fe/test/library.js +1 -1
  31. package/src/sap/fe/test/manifest.json +1 -1
@@ -491,10 +491,10 @@ sap.ui.predefine("sap/fe/test/CollaborationClient", ["sap/fe/core/controllerexte
491
491
  CollaborationAPI.discardDraft();
492
492
  }).description("Remote session discarding draft").execute();
493
493
  },
494
- iDeleteDraft: function () {
494
+ iDeleteObject: function (objectPath) {
495
495
  return OpaBuilder.create(this).do(function () {
496
- CollaborationAPI.deleteDraft();
497
- }).description("Remote session deleting draft").execute();
496
+ CollaborationAPI.deleteObject(objectPath);
497
+ }).description(`Remote session deleting object ${objectPath}`).execute();
498
498
  }
499
499
  },
500
500
  assertions: {
@@ -704,7 +704,7 @@ sap.ui.predefine("sap/fe/test/FCLView", ["sap/ui/test/OpaBuilder"], function (Op
704
704
  * SAP UI development toolkit for HTML5 (SAPUI5)
705
705
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
706
706
  */
707
- sap.ui.predefine("sap/fe/test/FeMocks", ["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerextensions/InternalEditFlow", "sap/fe/core/PageController", "sap/ui/mdc/FilterBar"], function (generic, InternalEditFlow, PageController, FilterBar) {
707
+ sap.ui.predefine("sap/fe/test/FeMocks", ["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/PageController", "sap/ui/mdc/FilterBar"], function (generic, EditFlow, PageController, FilterBar) {
708
708
  "use strict";
709
709
 
710
710
  var _exports = {};
@@ -722,8 +722,8 @@ sap.ui.predefine("sap/fe/test/FeMocks", ["@sap-ux/jest-mock-ui5/dist/generic", "
722
722
  _shouldAutoTriggerSearch: jest.fn(),
723
723
  _getTable: jest.fn(),
724
724
  getExtensionAPI: jest.fn(),
725
- _editFlow: mock(InternalEditFlow),
726
- getChartControl: jest.fn()
725
+ getChartControl: jest.fn(),
726
+ editFlow: mock(EditFlow)
727
727
  };
728
728
  return Object.assign(mock(PageController), listReport);
729
729
  }
@@ -733,7 +733,7 @@ sap.ui.predefine("sap/fe/test/FeMocks", ["@sap-ux/jest-mock-ui5/dist/generic", "
733
733
  const objectPage = {
734
734
  getStickyEditMode: jest.fn(),
735
735
  getExtensionAPI: jest.fn(),
736
- _editFlow: mock(InternalEditFlow)
736
+ editFlow: mock(EditFlow)
737
737
  };
738
738
  return Object.assign(mock(PageController), objectPage);
739
739
  }
@@ -1788,12 +1788,12 @@ sap.ui.predefine("sap/fe/test/JestFlexibilityHelper", [], function () {
1788
1788
  * SAP UI development toolkit for HTML5 (SAPUI5)
1789
1789
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
1790
1790
  */
1791
- sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs", "@prettier/plugin-xml", "path", "prettier", "sap/base/Log", "sap/base/util/LoaderExtensions", "sap/base/util/merge", "sap/fe/core/buildingBlocks/BuildingBlockRuntime", "sap/fe/core/converters/ConverterContext", "sap/fe/core/services/SideEffectsServiceFactory", "sap/fe/core/TemplateModel", "sap/ui/base/BindingParser", "sap/ui/base/ManagedObjectMetadata", "sap/ui/core/Component", "sap/ui/core/InvisibleText", "sap/ui/core/util/serializer/Serializer", "sap/ui/core/util/XMLPreprocessor", "sap/ui/fl/apply/_internal/flexState/FlexState", "sap/ui/fl/apply/_internal/preprocessors/XmlPreprocessor", "sap/ui/fl/initial/_internal/Storage", "sap/ui/fl/Utils", "sap/ui/model/json/JSONModel", "sap/ui/model/odata/v4/lib/_MetadataRequestor", "sap/ui/model/odata/v4/ODataMetaModel", "xpath", "./JestFlexibilityHelper"], function (compiler, fs, plugin, path, prettier, Log, LoaderExtensions, merge, BuildingBlockRuntime, ConverterContext, SideEffectsFactory, TemplateModel, BindingParser, ManagedObjectMetadata, Component, InvisibleText, Serializer, XMLPreprocessor, FlexState, XmlPreprocessor, AppStorage, Utils, JSONModel, _MetadataRequestor, ODataMetaModel, xpath, JestFlexibilityHelper) {
1791
+ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs", "@prettier/plugin-xml", "path", "prettier", "sap/base/Log", "sap/base/util/LoaderExtensions", "sap/base/util/merge", "sap/fe/core/converters/ConverterContext", "sap/fe/core/services/SideEffectsServiceFactory", "sap/fe/core/TemplateModel", "sap/fe/test/UI5MockHelper", "sap/ui/base/BindingParser", "sap/ui/base/ManagedObjectMetadata", "sap/ui/core/Component", "sap/ui/core/InvisibleText", "sap/ui/core/util/serializer/Serializer", "sap/ui/core/util/XMLPreprocessor", "sap/ui/fl/apply/_internal/flexState/FlexState", "sap/ui/fl/apply/_internal/preprocessors/XmlPreprocessor", "sap/ui/fl/initial/_internal/Storage", "sap/ui/fl/Utils", "sap/ui/model/json/JSONModel", "sap/ui/model/odata/v4/lib/_MetadataRequestor", "sap/ui/model/odata/v4/ODataMetaModel", "xpath", "./JestFlexibilityHelper"], function (compiler, fs, plugin, path, prettier, Log, LoaderExtensions, merge, ConverterContext, SideEffectsFactory, TemplateModel, UI5MockHelper, BindingParser, ManagedObjectMetadata, Component, InvisibleText, Serializer, XMLPreprocessor, FlexState, XmlPreprocessor, AppStorage, Utils, JSONModel, _MetadataRequestor, ODataMetaModel, xpath, JestFlexibilityHelper) {
1792
1792
  "use strict";
1793
1793
 
1794
1794
  var _exports = {};
1795
1795
  var createFlexibilityChangesObject = JestFlexibilityHelper.createFlexibilityChangesObject;
1796
- var registerBuildingBlock = BuildingBlockRuntime.registerBuildingBlock;
1796
+ var createMockResourceModel = UI5MockHelper.createMockResourceModel;
1797
1797
  var format = prettier.format;
1798
1798
  // eslint-disable-next-line @typescript-eslint/no-var-requires
1799
1799
  const formatXml = require("xml-formatter");
@@ -1807,6 +1807,7 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1807
1807
  log: "http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1",
1808
1808
  unittest: "http://schemas.sap.com/sapui5/preprocessorextension/sap.fe.unittesting/1",
1809
1809
  control: "sap.fe.core.controls",
1810
+ controls: "sap.fe.macros.controls",
1810
1811
  core: "sap.ui.core",
1811
1812
  dt: "sap.ui.dt",
1812
1813
  m: "sap.m",
@@ -1823,6 +1824,9 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1823
1824
  macroTable: "sap.fe.macros.table"
1824
1825
  };
1825
1826
  const select = xpath.useNamespaces(nameSpaceMap);
1827
+ const defaultFakeSideEffectService = {
1828
+ computeFieldGroupIds: () => []
1829
+ };
1826
1830
  function _getTemplatedSelector(xmldom, selector) {
1827
1831
  /**
1828
1832
  * if a root element has been added during the templating by our Jest Templating methods
@@ -1831,7 +1835,7 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1831
1835
  const rootPath = "/root";
1832
1836
  return `${xmldom.nodeName === "root" && !selector.startsWith(rootPath) ? rootPath : ""}${selector}`;
1833
1837
  }
1834
- async function _buildPreProcessorSettings(sMetadataUrl, mBindingContexts, mModels) {
1838
+ async function _buildPreProcessorSettings(sMetadataUrl, mBindingContexts, mModels, fakeSideEffectService) {
1835
1839
  const oMetaModel = await getMetaModel(sMetadataUrl);
1836
1840
 
1837
1841
  // To ensure our macro can use #setBindingContext we ensure there is a pre existing JSONModel for converterContext
@@ -1850,9 +1854,13 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1850
1854
  models: Object.assign({
1851
1855
  metaModel: oMetaModel
1852
1856
  }, mModels),
1853
- bindingContexts: {}
1857
+ bindingContexts: {},
1858
+ appComponent: {
1859
+ getSideEffectsService: jest.fn(),
1860
+ getDiagnostics: () => undefined
1861
+ }
1854
1862
  };
1855
-
1863
+ settings.appComponent.getSideEffectsService.mockReturnValue(fakeSideEffectService ?? defaultFakeSideEffectService);
1856
1864
  //Inject models and bindingContexts
1857
1865
  Object.keys(mBindingContexts).forEach(function (sKey) {
1858
1866
  /* Assert to make sure the annotations are in the test metadata -> avoid misleading tests */
@@ -1873,17 +1881,6 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1873
1881
  const view = LoaderExtensions.loadResource(name);
1874
1882
  return view.documentElement;
1875
1883
  }
1876
- const registerMacro = function (macroMetadata) {
1877
- registerBuildingBlock(macroMetadata);
1878
- };
1879
- _exports.registerMacro = registerMacro;
1880
- const unregisterMacro = function (macroMetadata) {
1881
- XMLPreprocessor.plugIn(null, macroMetadata.namespace, macroMetadata.name);
1882
- if (macroMetadata.publicNamespace) {
1883
- XMLPreprocessor.plugIn(null, macroMetadata.publicNamespace, macroMetadata.name);
1884
- }
1885
- };
1886
- _exports.unregisterMacro = unregisterMacro;
1887
1884
  const runXPathQuery = function (selector, xmldom) {
1888
1885
  return select(selector, xmldom);
1889
1886
  };
@@ -1907,6 +1904,38 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1907
1904
  },
1908
1905
  pass: nodes && nodes.length === 0
1909
1906
  };
1907
+ },
1908
+ /**
1909
+ * Checks for errors in `xml` created during templating of an XML string or
1910
+ * an XML node.
1911
+ *
1912
+ * This function checkes for the xml errors created by the
1913
+ * function [BuildingBlockTemplateProcessor.createErrorXML]{@link sap.fe.core.buildingBlocks.BuildingBlockTemplateProcessor#createErrorXML}.
1914
+ *
1915
+ * @param xml XML String or XML Node to be tested for errors
1916
+ * @returns Jest Matcher result object
1917
+ */
1918
+ toHaveTemplatingErrors(xml) {
1919
+ const xmlText = typeof xml === "string" ? xml : serializeXML(xml);
1920
+ const base64Entries = xmlText.match(/BBF\.base64Decode\('([^']*)'\)/gm) || [];
1921
+ const errorMessages = base64Entries.map(message => {
1922
+ if (message && message.length > 0) {
1923
+ var _message$match, _message$match$;
1924
+ return atob(((_message$match = message.match(/('[^']*)/)) === null || _message$match === void 0 ? void 0 : (_message$match$ = _message$match[0]) === null || _message$match$ === void 0 ? void 0 : _message$match$.slice(1)) || "");
1925
+ }
1926
+ return "";
1927
+ });
1928
+ if (errorMessages.length <= 0) {
1929
+ return {
1930
+ message: () => `XML Templating without errors`,
1931
+ pass: false
1932
+ };
1933
+ } else {
1934
+ return {
1935
+ message: () => errorMessages.join("\n"),
1936
+ pass: true
1937
+ };
1938
+ }
1910
1939
  }
1911
1940
  });
1912
1941
  _exports.runXPathQuery = runXPathQuery;
@@ -1915,7 +1944,7 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1915
1944
  xmlString = xmlString.join("");
1916
1945
  }
1917
1946
  let xmlFormatted = formatXML(xmlString);
1918
- xmlFormatted = xmlFormatted.replace(/uid--id-[0-9]{13}-[0-9]{1,2}/g, "uid--id");
1947
+ xmlFormatted = xmlFormatted.replace(/uid--id-[0-9]{13}-[0-9]{1,3}/g, "uid--id");
1919
1948
  return xmlFormatted;
1920
1949
  };
1921
1950
  _exports.formatBuildingBlockXML = formatBuildingBlockXML;
@@ -1923,10 +1952,24 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
1923
1952
  const selector = `string(${_getTemplatedSelector(xmlDom, controlSelector)}/@${attributeName})`;
1924
1953
  return runXPathQuery(selector, xmlDom);
1925
1954
  };
1955
+
1956
+ /**
1957
+ * Serialize the parts or the complete given XML DOM to string.
1958
+ *
1959
+ * @param xmlDom DOM node that is to be serialized.
1960
+ * @param selector Optional selector of sub nodes
1961
+ * @returns XML string
1962
+ */
1926
1963
  _exports.getControlAttribute = getControlAttribute;
1927
- const serializeXML = function (xmlDom) {
1964
+ const serializeXML = function (xmlDom, selector) {
1928
1965
  const serializer = new window.XMLSerializer();
1929
- const xmlString = serializer.serializeToString(xmlDom);
1966
+ let xmlString;
1967
+ if (selector) {
1968
+ const nodes = runXPathQuery(selector, xmlDom);
1969
+ xmlString = nodes.map(node => serializer.serializeToString(node)).join("\n");
1970
+ } else {
1971
+ xmlString = serializer.serializeToString(xmlDom);
1972
+ }
1930
1973
  return formatXML(xmlString);
1931
1974
  };
1932
1975
  _exports.serializeXML = serializeXML;
@@ -2157,7 +2200,10 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
2157
2200
  };
2158
2201
  const getChangesFromXML = xml => [...xml.querySelectorAll("*")].flatMap(e => [...e.attributes].map(a => a.name)).filter(attr => attr.includes("sap.ui.fl.appliedChanges"));
2159
2202
  _exports.getChangesFromXML = getChangesFromXML;
2160
- const getTemplatingResult = async function (xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges) {
2203
+ const getTemplatingResult = async function (xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges, fakeSideEffectService) {
2204
+ if (!mModels["sap.fe.i18n"]) {
2205
+ mModels["sap.fe.i18n"] = createMockResourceModel();
2206
+ }
2161
2207
  const templatedXml = `<root>${xmlInput}</root>`;
2162
2208
  const parser = new window.DOMParser();
2163
2209
  const xmlDoc = parser.parseFromString(templatedXml, "text/xml");
@@ -2165,7 +2211,7 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
2165
2211
  // if not already passed to teh templating
2166
2212
 
2167
2213
  const oMetaModel = await getMetaModel(sMetadataUrl);
2168
- const oPreprocessorSettings = await _buildPreProcessorSettings(sMetadataUrl, mBindingContexts, mModels);
2214
+ const oPreprocessorSettings = await _buildPreProcessorSettings(sMetadataUrl, mBindingContexts, mModels, fakeSideEffectService);
2169
2215
 
2170
2216
  //This context for macro testing
2171
2217
  if (oPreprocessorSettings.models["this"]) {
@@ -2181,9 +2227,11 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
2181
2227
  return resultXML;
2182
2228
  };
2183
2229
  _exports.getTemplatingResult = getTemplatingResult;
2184
- const getTemplatedXML = async function (xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges) {
2185
- const templatedXML = await getTemplatingResult(xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges);
2186
- return serializeXML(templatedXML);
2230
+ const getTemplatedXML = async function (xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges, fakeSideEffectService) {
2231
+ const templatedXML = await getTemplatingResult(xmlInput, sMetadataUrl, mBindingContexts, mModels, flexChanges, fakeSideEffectService);
2232
+ const serialiedXML = serializeXML(templatedXML);
2233
+ expect(serialiedXML).not.toHaveTemplatingErrors();
2234
+ return serialiedXML;
2187
2235
  };
2188
2236
 
2189
2237
  /**
@@ -2230,7 +2278,11 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
2230
2278
  // build model and bindings for given test data
2231
2279
  const settings = {
2232
2280
  models: {},
2233
- bindingContexts: {}
2281
+ bindingContexts: {},
2282
+ appComponent: {
2283
+ getSideEffectsService: jest.fn(),
2284
+ getDiagnostics: () => undefined
2285
+ }
2234
2286
  };
2235
2287
  for (const model in testData) {
2236
2288
  const jsonModel = new JSONModel();
@@ -2238,6 +2290,7 @@ sap.ui.predefine("sap/fe/test/JestTemplatingHelper", ["@sap/cds-compiler", "fs",
2238
2290
  settings.models[model] = jsonModel;
2239
2291
  settings.bindingContexts[model] = settings.models[model].createBindingContext("/");
2240
2292
  }
2293
+ settings.appComponent.getSideEffectsService.mockReturnValue(defaultFakeSideEffectService);
2241
2294
 
2242
2295
  // execute the pre-processor
2243
2296
  const resultDoc = await XMLPreprocessor.process(inputDoc.firstElementChild, {
@@ -2422,7 +2475,7 @@ sap.ui.predefine(
2422
2475
  * @param {string} [mSettings.launchUrl] The URL to the launching page (usually a FLP.html)
2423
2476
  * @param {object} [mSettings.launchParameters] The URL launch parameters
2424
2477
  * @param {boolean} [mSettings.async] If false (default), only one JourneyRunner is executed at a time
2425
- * @param {Function[] | string[]} vJourneys The journeys to be executed. If a journey is represented as a string, it will be interpreted
2478
+ * @param {Function[] | string[]} _vJourneys The journeys to be executed. If a journey is represented as a string, it will be interpreted
2426
2479
  * as a module path to the file that should be loaded. Else it is expected to be a function.
2427
2480
  * Alternatively, instead of being wrapped in an array, the journeys can also be given as separate parameters:
2428
2481
  * <pre>.run(mSettings, Journey1, Journey2, ...)</pre>
@@ -2431,7 +2484,7 @@ sap.ui.predefine(
2431
2484
  * @name sap.fe.test.JourneyRunner#run
2432
2485
  * @public
2433
2486
  */
2434
- run: function (mSettings, vJourneys) {
2487
+ run: function (mSettings, _vJourneys) {
2435
2488
  var iJourneyParameterIndex = 1;
2436
2489
  if (!Utils.isOfType(mSettings, Object)) {
2437
2490
  iJourneyParameterIndex = 0;
@@ -2477,13 +2530,12 @@ sap.ui.predefine(
2477
2530
  *
2478
2531
  * By default, an instance of {@link sap.fe.test.BaseActions} will be returned.
2479
2532
  *
2480
- * @param {object} mSettings The settings object of the runner instance
2481
2533
  * @returns {sap.ui.test.Opa} An Opa instance for the base actions
2482
2534
  * @function
2483
2535
  * @name sap.fe.test.JourneyRunner#getBaseActions
2484
2536
  * @protected
2485
2537
  */
2486
- getBaseActions: function (mSettings) {
2538
+ getBaseActions: function () {
2487
2539
  return new BaseActions();
2488
2540
  },
2489
2541
 
@@ -2495,13 +2547,12 @@ sap.ui.predefine(
2495
2547
  *
2496
2548
  * By default, an instance of {@link sap.fe.test.BaseAssertions} will be returned.
2497
2549
  *
2498
- * @param {object} mSettings The settings object of the runner instance
2499
2550
  * @returns {sap.ui.test.Opa} An Opa instance for the base assertions
2500
2551
  * @function
2501
2552
  * @name sap.fe.test.JourneyRunner#getBaseAssertions
2502
2553
  * @protected
2503
2554
  */
2504
- getBaseAssertions: function (mSettings) {
2555
+ getBaseAssertions: function () {
2505
2556
  return new BaseAssertions();
2506
2557
  },
2507
2558
 
@@ -2546,7 +2597,7 @@ sap.ui.predefine(
2546
2597
  aJourneys.forEach(function (vJourney) {
2547
2598
  if (Utils.isOfType(vJourney, String)) {
2548
2599
  pPromiseChain = pPromiseChain.then(function () {
2549
- return new Promise(function (resolve, reject) {
2600
+ return new Promise(function (resolve) {
2550
2601
  sap.ui.require([vJourney], function (oJourney) {
2551
2602
  resolve(oJourney);
2552
2603
  });
@@ -2735,13 +2786,13 @@ sap.ui.predefine(
2735
2786
  * @param {string} oPageDefinition.componentId The component id (defined in the target section for the list report within the manifest)
2736
2787
  * @param {string} oPageDefinition.entitySet The entitySet (optional)(defined in the settings of the corresponding target component within the manifest)
2737
2788
  * @param {string} oPageDefinition.contextPath The contextPath (optional)(defined in the settings of the corresponding target component within the manifest)
2738
- * @param {...object} [aInAdditionalPageDefinitions] Additional custom page functions, provided in an object containing <code>actions</code> and <code>assertions</code>
2789
+ * @param {...object} [_aInAdditionalPageDefinitions] Additional custom page functions, provided in an object containing <code>actions</code> and <code>assertions</code>
2739
2790
  * @returns {sap.fe.test.ListReport} A list report page definition
2740
2791
  * @name sap.fe.test.ListReport
2741
2792
  * @extends sap.fe.test.TemplatePage
2742
2793
  * @public
2743
2794
  */
2744
- function ListReport(oPageDefinition, aInAdditionalPageDefinitions) {
2795
+ function ListReport(oPageDefinition, _aInAdditionalPageDefinitions) {
2745
2796
  var sAppId = oPageDefinition.appId,
2746
2797
  sComponentId = oPageDefinition.componentId,
2747
2798
  sContextPath = oPageDefinition.contextPath,
@@ -2915,11 +2966,10 @@ sap.ui.predefine(
2915
2966
  /**
2916
2967
  * TODO This function is only here for legacy reasons and therefore private. Use iGoToView instead.
2917
2968
  *
2918
- * @param {string} sName The name of the view within the List Report table
2919
2969
  * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
2920
2970
  * @private
2921
2971
  */
2922
- iOpenIconTabWithTitle: function (sName) {
2972
+ iOpenIconTabWithTitle: function () {
2923
2973
  // return this.iGoToView(sName);
2924
2974
  return OpaBuilder.create(this)
2925
2975
  .timeout(1)
@@ -3289,11 +3339,10 @@ sap.ui.predefine(
3289
3339
  /**
3290
3340
  * TODO This function is only here for legacy reasons and therefore private. Use iCheckView instead.
3291
3341
  *
3292
- * @param {object} mProperties Object containing the text: property and any other properties to be checked
3293
3342
  * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
3294
3343
  * @private
3295
3344
  */
3296
- iSeeIconTabWithProperties: function (mProperties) {
3345
+ iSeeIconTabWithProperties: function () {
3297
3346
  // return this.iCheckView(mProperties.text, mProperties);
3298
3347
  return OpaBuilder.create(this)
3299
3348
  .timeout(1)
@@ -3541,13 +3590,13 @@ sap.ui.predefine(
3541
3590
  * @param {string} oPageDefinition.componentId The component id (defined in the target section for the list report within the manifest)
3542
3591
  * @param {string} oPageDefinition.entitySet The entitySet (defined in the settings of the corresponding target component within the manifest)
3543
3592
  * @param {string} oPageDefinition.contextPath The contextPath (optional)(defined in the settings of the corresponding target component within the manifest)
3544
- * @param {...object} [aAdditionalPageDefinitions] Additional custom page functions, provided in an object containing <code>actions</code> and <code>assertions</code>
3593
+ * @param {...object} [_aAdditionalPageDefinitions] Additional custom page functions, provided in an object containing <code>actions</code> and <code>assertions</code>
3545
3594
  * @returns {sap.fe.test.ObjectPage} An object page page definition
3546
3595
  * @name sap.fe.test.ObjectPage
3547
3596
  * @extends sap.fe.test.TemplatePage
3548
3597
  * @public
3549
3598
  */
3550
- function ObjectPage(oPageDefinition, aAdditionalPageDefinitions) {
3599
+ function ObjectPage(oPageDefinition, _aAdditionalPageDefinitions) {
3551
3600
  var sAppId = oPageDefinition.appId,
3552
3601
  sComponentId = oPageDefinition.componentId,
3553
3602
  ViewId = sAppId + "::" + sComponentId,
@@ -4521,7 +4570,7 @@ sap.ui.predefine("sap/fe/test/Shell", ["sap/ui/test/OpaBuilder", "sap/ui/test/Op
4521
4570
  actions: function (oTile) {
4522
4571
  oTile.getTileViews()[0].$().trigger("tap");
4523
4572
  },
4524
- success: function (oTile) {
4573
+ success: function () {
4525
4574
  Opa5.assert.ok(true, Utils.formatMessage("Clicking on tile with target '{0}'", sTarget));
4526
4575
  },
4527
4576
  errorMessage: "Could not find the tile"
@@ -4552,7 +4601,7 @@ sap.ui.predefine("sap/fe/test/Shell", ["sap/ui/test/OpaBuilder", "sap/ui/test/Op
4552
4601
  .description("Selecting item: " + sOption)
4553
4602
  .execute();
4554
4603
  },
4555
- iLaunchExtendedParameterDialog: function (sProperty) {
4604
+ iLaunchExtendedParameterDialog: function () {
4556
4605
  return OpaBuilder.create(this)
4557
4606
  .hasType("sap.m.Button")
4558
4607
  .isDialogElement()
@@ -4710,7 +4759,7 @@ sap.ui.predefine("sap/fe/test/Shell", ["sap/ui/test/OpaBuilder", "sap/ui/test/Op
4710
4759
  /**
4711
4760
  * Actions and assertions to be used with a page hosted in an FCL
4712
4761
  */
4713
- sap.ui.predefine("sap/fe/test/Stubs", ["sap/ui/test/OpaBuilder"], function (OpaBuilder) {
4762
+ sap.ui.predefine("sap/fe/test/Stubs", [], function () {
4714
4763
  "use strict";
4715
4764
  var Stubs = {
4716
4765
  prepareStubs: function (oWindow) {
@@ -5044,13 +5093,13 @@ sap.ui.predefine(
5044
5093
  /**
5045
5094
  * @class Provides a test page definition for a template page with the corresponding parameters.
5046
5095
  * @param {object | string} vViewId The viewId
5047
- * @param {...object} [aAdditionalPageDefinitions] Additional custom page functions, provided in an object containing <code>actions</code> and <code>assertions</code>
5096
+ * @param {...object} [_aAdditionalPageDefinitions] Additional custom page functions, provided in an object containing <code>actions</code> and <code>assertions</code>
5048
5097
  * @returns {sap.fe.test.TemplatePage} A list report page definition
5049
5098
  * @name sap.fe.test.TemplatePage
5050
5099
  * @hideconstructor
5051
5100
  * @public
5052
5101
  */
5053
- function TemplatePage(vViewId, aAdditionalPageDefinitions) {
5102
+ function TemplatePage(vViewId, _aAdditionalPageDefinitions) {
5054
5103
  var sViewId = Utils.isOfType(vViewId, String) ? vViewId : vViewId.viewId,
5055
5104
  aAdditionalPages = Array.prototype.slice.call(arguments, 1);
5056
5105
 
@@ -5323,8 +5372,7 @@ sap.ui.predefine(
5323
5372
  "sap/ui/core/util/XMLPreprocessor",
5324
5373
  "sap/ui/core/XMLTemplateProcessor",
5325
5374
  "sap/fe/macros/macroLibrary",
5326
- "sap/fe/core/TemplateModel",
5327
- "sap/fe/macros/ResourceModel"
5375
+ "sap/fe/core/TemplateModel"
5328
5376
  ],
5329
5377
  function (ODataMetaModel, XMLPreprocessor, XMLTemplateProcessor, macroLibrary, TemplateModel) {
5330
5378
  "use strict";
@@ -5377,7 +5425,7 @@ sap.ui.predefine(
5377
5425
  oMetaModel = new ODataMetaModel(oRequestor, sServiceUrl + "$metadata", undefined, null);
5378
5426
 
5379
5427
  //Switch of all plugins as we only template individual fragments in the test
5380
- macroLibrary.deregister();
5428
+ macroLibrary.unregister();
5381
5429
  if (useMacros) {
5382
5430
  //Force option to use macros for some tests
5383
5431
  macroLibrary.register();
@@ -5559,7 +5607,7 @@ sap.ui.predefine(
5559
5607
  * SAP UI development toolkit for HTML5 (SAPUI5)
5560
5608
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
5561
5609
  */
5562
- sap.ui.predefine("sap/fe/test/UI5MockHelper", ["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InternalEditFlow", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/ui/base/Event", "sap/ui/core/mvc/Controller", "sap/ui/core/mvc/View", "sap/ui/model/CompositeBinding", "sap/ui/model/odata/v4/Context", "sap/ui/model/odata/v4/ODataContextBinding", "sap/ui/model/odata/v4/ODataListBinding", "sap/ui/model/odata/v4/ODataMetaModel", "sap/ui/model/odata/v4/ODataModel", "sap/ui/model/odata/v4/ODataPropertyBinding"], function (generic, EditFlow, InternalEditFlow, InternalRouting, Share, SideEffects, Event, Controller, View, CompositeBinding, Context, ODataContextBinding, ODataListBinding, ODataMetaModel, ODataModel, ODataPropertyBinding) {
5610
+ sap.ui.predefine("sap/fe/test/UI5MockHelper", ["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/fe/core/ResourceModel", "sap/ui/base/Event", "sap/ui/core/mvc/Controller", "sap/ui/core/mvc/View", "sap/ui/model/CompositeBinding", "sap/ui/model/odata/v4/Context", "sap/ui/model/odata/v4/ODataContextBinding", "sap/ui/model/odata/v4/ODataListBinding", "sap/ui/model/odata/v4/ODataMetaModel", "sap/ui/model/odata/v4/ODataModel", "sap/ui/model/odata/v4/ODataPropertyBinding"], function (generic, EditFlow, InternalRouting, Share, SideEffects, ResourceModel, Event, Controller, View, CompositeBinding, Context, ODataContextBinding, ODataListBinding, ODataMetaModel, ODataModel, ODataPropertyBinding) {
5563
5611
  "use strict";
5564
5612
 
5565
5613
  var _exports = {};
@@ -5961,7 +6009,6 @@ sap.ui.predefine("sap/fe/test/UI5MockHelper", ["@sap-ux/jest-mock-ui5/dist/gener
5961
6009
  function createMockController() {
5962
6010
  const mocked = mock(Controller);
5963
6011
  mocked._routing = mock(InternalRouting);
5964
- mocked._editFlow = mock(InternalEditFlow);
5965
6012
  mocked._sideEffects = mock(SideEffects);
5966
6013
  mocked.editFlow = mock(EditFlow);
5967
6014
  mocked.share = mock(Share);
@@ -5996,7 +6043,44 @@ sap.ui.predefine("sap/fe/test/UI5MockHelper", ["@sap-ux/jest-mock-ui5/dist/gener
5996
6043
  controller
5997
6044
  };
5998
6045
  }
6046
+
6047
+ /**
6048
+ * To be used to load messages bundles for tests without app/page component.
6049
+ *
6050
+ * @param textID ID of the Text
6051
+ * @param parameters Array of parameters that are used to create the text
6052
+ * @param metaPath Entity set name or action name to overload a text
6053
+ * @returns Determined text
6054
+ */
5999
6055
  _exports.mockMVC = mockMVC;
6056
+ function getText(textID, parameters, metaPath) {
6057
+ const resourceModel = new ResourceModel({
6058
+ bundleName: "sap.fe.core.messagebundle",
6059
+ enhanceWith: [{
6060
+ bundleName: "sap.fe.macros.messagebundle"
6061
+ }, {
6062
+ bundleName: "sap.fe.templates.messagebundle"
6063
+ }],
6064
+ async: false
6065
+ });
6066
+ return resourceModel.getText(textID, parameters, metaPath);
6067
+ }
6068
+
6069
+ /**
6070
+ * Utility type to mock ResourceModel
6071
+ */
6072
+ _exports.getText = getText;
6073
+ /**
6074
+ * Factory function to create a new MockView.
6075
+ *
6076
+ * @returns A new MockView
6077
+ */
6078
+ function createMockResourceModel() {
6079
+ const mocked = mock(ResourceModel);
6080
+ mocked.getText = jest.fn().mockImplementation(getText);
6081
+ return mocked;
6082
+ }
6083
+ _exports.createMockResourceModel = createMockResourceModel;
6000
6084
  return _exports;
6001
6085
  }, false);
6002
6086
  /*!
@@ -6736,7 +6820,7 @@ sap.ui.predefine(
6736
6820
 
6737
6821
  Actions.prototype.iSelectItems = function (innerData, bClearSelection) {
6738
6822
  if (typeof bClearSelection === "boolean") {
6739
- bClearSelection = bClearSelection;
6823
+ bClearSelection = !!bClearSelection;
6740
6824
  } else {
6741
6825
  bClearSelection = true;
6742
6826
  }
@@ -7081,25 +7165,17 @@ sap.ui.predefine("sap/fe/test/api/CollaborationAPI", ["sap/base/Log", "sap/fe/co
7081
7165
  }
7082
7166
  },
7083
7167
  /**
7084
- * Simulates that the user has deleted the draft.
7168
+ * Simulates that the user has deleted an object (child of draft root).
7169
+ *
7170
+ * @param objectPath The path of the object to delete
7085
7171
  */
7086
- deleteDraft: function () {
7172
+ deleteObject: function (objectPath) {
7087
7173
  if (this._internalModel) {
7088
- const draftContext = this._getDraftContext();
7089
- let activeContext;
7090
- draftContext.requestProperty("IsActiveEntity").then(() => {
7091
- return draftContext.getModel().bindContext(`${this._rootPath}/SiblingEntity`).getBoundContext();
7092
- }).then(context => {
7093
- activeContext = context;
7094
- return context.requestCanonicalPath();
7095
- }).then(() => {
7096
- return draft.deleteDraft(draftContext);
7097
- }).then(() => {
7098
- activeContext.delete();
7099
- broadcastCollaborationMessage(Activity.Delete, this._rootPath, this._internalModel);
7100
- this._internalModel.destroy();
7101
- this._internalModel = undefined;
7102
- }).catch(function (err) {
7174
+ const objectContext = this._getObjectContext(objectPath);
7175
+ objectContext.requestProperty("IsActiveEntity").then(() => {
7176
+ objectContext.delete();
7177
+ broadcastCollaborationMessage(Activity.Delete, objectPath, this._internalModel);
7178
+ }).catch(err => {
7103
7179
  Log.error(err);
7104
7180
  });
7105
7181
  }
@@ -7108,7 +7184,10 @@ sap.ui.predefine("sap/fe/test/api/CollaborationAPI", ["sap/base/Log", "sap/fe/co
7108
7184
  // Private methods
7109
7185
 
7110
7186
  _getDraftContext: function () {
7111
- return this._oModel.bindContext(this._rootPath, undefined, {
7187
+ return this._getObjectContext(this._rootPath);
7188
+ },
7189
+ _getObjectContext: function (path) {
7190
+ return this._oModel.bindContext(path, undefined, {
7112
7191
  $$patchWithoutSideEffects: true,
7113
7192
  $$groupId: "$auto",
7114
7193
  $$updateGroupId: "$auto"
@@ -8720,53 +8799,94 @@ sap.ui.predefine(
8720
8799
  );
8721
8800
  };
8722
8801
 
8723
- function _checkTabBuilder(oApiInstance, sIdSuffix, mState) {
8724
- var oBuilder = FEBuilder.create(oApiInstance.getOpaInstance())
8725
- .isDialogElement()
8726
- .mustBeVisible(false)
8727
- .description(
8728
- Utils.formatMessage(
8729
- "Checking that the tab '{1}' on value help dialog '{0}' has state='{2}'",
8730
- oApiInstance.getIdentifier(),
8731
- sIdSuffix,
8732
- mState
8733
- )
8734
- ),
8735
- oTabIdMatcher = FEBuilder.Matchers.id(RegExp(sIdSuffix + "$"));
8802
+ function _checkIconTabBarBuilder(oValueHelpBuilder, idMatcher, mState) {
8803
+ var bSuccess = true;
8736
8804
 
8737
8805
  if (mState && mState.visible === false) {
8738
- oBuilder.hasType("sap.m.IconTabBar");
8739
- oBuilder.check(function (aIconTabFilters) {
8740
- return OpaBuilder.Matchers.filter(oTabIdMatcher)(aIconTabFilters).length === 0;
8741
- });
8806
+ oValueHelpBuilder
8807
+ .hasChildren(
8808
+ OpaBuilder.create(this).hasConditional(
8809
+ function (oControl) {
8810
+ // in the visible=false case, there should never be a sap.m.IconTabBar --> let test fail
8811
+ // if a sap.m.IconTabBar is found, both tabs are visible (SearchSelect and DefineConditions)
8812
+ if (oControl.isA("sap.m.IconTabBar")) {
8813
+ bSuccess = false;
8814
+ return true;
8815
+ } else {
8816
+ return false;
8817
+ }
8818
+ },
8819
+ function (oSuccess) {
8820
+ return false;
8821
+ },
8822
+ function (oElse) {
8823
+ return true;
8824
+ }
8825
+ ),
8826
+ false
8827
+ )
8828
+ .check(function () {
8829
+ return bSuccess;
8830
+ });
8742
8831
  } else {
8743
- oBuilder.hasType("sap.m.IconTabFilter").has(oTabIdMatcher).hasState(mState);
8832
+ oValueHelpBuilder.hasChildren(OpaBuilder.create(this).hasType("sap.m.IconTabFilter").has(idMatcher), false);
8744
8833
  }
8745
-
8746
- return oApiInstance.prepareResult(oBuilder.execute());
8834
+ return oValueHelpBuilder;
8747
8835
  }
8748
8836
 
8749
8837
  /**
8750
- * Checks the <code>Search and Select</code> tab.
8838
+ * Checks the <code>Define conditions</code> tab in a value help dialog.
8839
+ * Please be aware that the tab control of the toolbar is checked.
8751
8840
  *
8752
8841
  * @param {object} [mState] Defines the expected state of the filter bar
8753
8842
  * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, that can be used for chaining statements
8754
8843
  * @public
8755
8844
  */
8756
- DialogValueHelpAssertions.prototype.iCheckSearchAndSelect = function (mState) {
8757
- return _checkTabBuilder(this, "-ITB--header-0", mState); // might be an issue, but there´s no stable id provided anymore
8758
- };
8845
+ DialogValueHelpAssertions.prototype.iCheckDefineConditions = function (mState) {
8846
+ var sIdSuffix = "-ITB--header-1",
8847
+ idMatcher = FEBuilder.Matchers.id(RegExp(sIdSuffix + "$")),
8848
+ oBuilder = _checkIconTabBarBuilder(this.getBuilder(), idMatcher, mState);
8759
8849
 
8850
+ return this.prepareResult(
8851
+ oBuilder
8852
+ .description(
8853
+ Utils.formatMessage(
8854
+ "Checking that the Define Conditions tab '{1}' on value help dialog '{0}' has state='{2}'",
8855
+ this.getIdentifier(),
8856
+ sIdSuffix,
8857
+ mState
8858
+ )
8859
+ )
8860
+ .execute()
8861
+ );
8862
+ };
8760
8863
  /**
8761
- * Checks the <code>Define conditions</code> tab.
8864
+ * Checks the <code>Search and Select</code> tab in a value help dialog.
8865
+ * Please be aware that the tab control of the toolbar is checked.
8762
8866
  *
8763
8867
  * @param {object} [mState] Defines the expected state of the filter bar
8764
8868
  * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, that can be used for chaining statements
8765
8869
  * @public
8766
8870
  */
8767
- DialogValueHelpAssertions.prototype.iCheckDefineConditions = function (mState) {
8768
- return _checkTabBuilder(this, "-ITB--header-1", mState); // might be an issue, but there´s no stable id provided anymore
8871
+ DialogValueHelpAssertions.prototype.iCheckSearchAndSelect = function (mState) {
8872
+ var sIdSuffix = "-ITB--header-0",
8873
+ idMatcher = FEBuilder.Matchers.id(RegExp(sIdSuffix + "$")),
8874
+ oBuilder = _checkIconTabBarBuilder(this.getBuilder(), idMatcher, mState);
8875
+
8876
+ return this.prepareResult(
8877
+ oBuilder
8878
+ .description(
8879
+ Utils.formatMessage(
8880
+ "Checking that the Search and Select tab '{1}' on value help dialog '{0}' has state='{2}'",
8881
+ this.getIdentifier(),
8882
+ sIdSuffix,
8883
+ mState
8884
+ )
8885
+ )
8886
+ .execute()
8887
+ );
8769
8888
  };
8889
+
8770
8890
  /**
8771
8891
  * Checks the dialog.
8772
8892
  *
@@ -9530,9 +9650,9 @@ sap.ui.predefine(
9530
9650
 
9531
9651
  /**
9532
9652
  * Checks if the focus is on the filter field.
9533
-
9653
+ *
9534
9654
  * @param {string} [sFilterFieldLabel] The field label
9535
- * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
9655
+ * @returns {object} The result of the {@link sa p.ui.test.Opa5#waitFor} function, to be used for chained statements
9536
9656
  * @public
9537
9657
  */
9538
9658
 
@@ -9548,7 +9668,7 @@ sap.ui.predefine(
9548
9668
 
9549
9669
  /**
9550
9670
  * Checks if the focus is on the Go Button of the filter bar.
9551
-
9671
+ *
9552
9672
  * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
9553
9673
  * @public
9554
9674
  */
@@ -15337,17 +15457,17 @@ sap.ui.predefine(
15337
15457
  // we need to do this to be able to retrieve the child of the FormElementWrapper when its child is not visible
15338
15458
  return _getMainControls(oContent.getContent());
15339
15459
  }
15340
- if (oContent.isA("sap.fe.core.controls.FileWrapper")) {
15460
+ if (oContent.isA("sap.fe.macros.controls.FileWrapper")) {
15341
15461
  return _getMainControls(oContent.getAvatar());
15342
15462
  }
15343
- if (oContent.isA("sap.fe.core.controls.FieldWrapper")) {
15463
+ if (oContent.isA("sap.fe.macros.controls.FieldWrapper")) {
15344
15464
  if (oContent.getEditMode() === "Display") {
15345
15465
  return _getMainControls(oContent.getContentDisplay());
15346
15466
  } else {
15347
15467
  return _getMainControls(oContent.getContentEdit()[0]);
15348
15468
  }
15349
15469
  }
15350
- if (oContent.isA("sap.fe.core.controls.ConditionalWrapper")) {
15470
+ if (oContent.isA("sap.fe.macros.controls.ConditionalWrapper")) {
15351
15471
  var oLink = oContent.getCondition() ? oContent.getContentTrue() : oContent.getContentFalse();
15352
15472
  return _getMainControls(oLink);
15353
15473
  }
@@ -16011,6 +16131,15 @@ sap.ui.predefine(
16011
16131
  return oMdcTable ? _getColumnIndex(vColumn, oMdcTable) : -1;
16012
16132
  }
16013
16133
 
16134
+ function _getTableForSelection(oRow) {
16135
+ var oUIControl = oRow,
16136
+ sTableType = oRow.getMetadata().getName() === "sap.ui.table.Row" ? "sap.ui.table.Table" : "sap.ui.mdc.Table";
16137
+ while (oUIControl && !oUIControl.isA(sTableType)) {
16138
+ oUIControl = oUIControl._feMdcTableWrapper || oUIControl.getParent();
16139
+ }
16140
+ return oUIControl;
16141
+ }
16142
+
16014
16143
  function _getCell(oRow, iColumn) {
16015
16144
  var oCell;
16016
16145
  if (!oRow) {
@@ -16331,7 +16460,7 @@ sap.ui.predefine(
16331
16460
 
16332
16461
  TableBuilder.prototype.doSelect = function (vRowMatcher) {
16333
16462
  return this.doOnRows(vRowMatcher, function (oRow) {
16334
- var oTable = oRow.getParent();
16463
+ var oTable = _getTableForSelection(oRow);
16335
16464
  // if several rows are selected, the table may be blocked by other events, e.g. tableRuntime.js --> setContexts
16336
16465
  if (oTable.getBusy()) {
16337
16466
  oTable.setBusy(false);
@@ -17073,7 +17202,7 @@ sap.ui.predefine(
17073
17202
  oCellControl = _getCell(oRow, iColumn);
17074
17203
 
17075
17204
  // if the cellControl is a FieldWrapper replace it by its active control (edit or display)
17076
- if (oCellControl.isA("sap.fe.core.controls.FieldWrapper")) {
17205
+ if (oCellControl.isA("sap.fe.macros.controls.FieldWrapper")) {
17077
17206
  oCellControl =
17078
17207
  oCellControl.getEditMode() === "Display"
17079
17208
  ? oCellControl.getContentDisplay()
@@ -17085,7 +17214,7 @@ sap.ui.predefine(
17085
17214
  ? oCellControl.getItems()[0].getContent().getContentDisplay()
17086
17215
  : oCellControl.getItems()[0].getContent().getContentEdit()[0];
17087
17216
  }
17088
- if (oCellControl.isA("sap.fe.core.controls.ConditionalWrapper")) {
17217
+ if (oCellControl.isA("sap.fe.macros.controls.ConditionalWrapper")) {
17089
17218
  oCellControl = oCellControl.getCondition() ? oCellControl.getContentTrue() : oCellControl.getContentFalse();
17090
17219
  }
17091
17220
 
@@ -17839,11 +17968,15 @@ sap.ui.predefine(
17839
17968
  oUriParams = new UriParameters(window.location.href),
17840
17969
  sBackendUrl = oUriParams.get("useBackendUrl"),
17841
17970
  sProxyPrefix = sBackendUrl ? "/databinding/proxy/" + sBackendUrl.replace("://", "/") : "",
17842
- bSuccess = false,
17843
- sTenantID =
17844
- window.__karma__ && window.__karma__.config && window.__karma__.config.ui5
17845
- ? window.__karma__.config.ui5.shardIndex
17846
- : "default";
17971
+ bSuccess = false;
17972
+ var sTenantID = "";
17973
+ if (window.__karma__ && window.__karma__.config && window.__karma__.config.ui5) {
17974
+ sTenantID = window.__karma__.config.ui5.shardIndex;
17975
+ } else {
17976
+ sTenantID = window.location.href.includes("sap-client")
17977
+ ? new URL(window.location.href).searchParams.get("sap-client")
17978
+ : "default";
17979
+ }
17847
17980
 
17848
17981
  return OpaBuilder.create(this)
17849
17982
  .success(function () {
@@ -17982,12 +18115,12 @@ sap.ui.predefine("sap/fe/test/library", ["sap/ui/core/Core", "sap/ui/core/librar
17982
18115
  controls: [],
17983
18116
  elements: [],
17984
18117
  // eslint-disable-next-line no-template-curly-in-string
17985
- version: "1.111.1",
18118
+ version: "1.113.0",
17986
18119
  noLibraryCSS: true
17987
18120
  });
17988
18121
  return thisLib;
17989
18122
  }, false);
17990
18123
  sap.ui.require.preload({
17991
- "sap/fe/test/manifest.json":'{"_version":"1.21.0","sap.app":{"id":"sap.fe.test","type":"library","embeds":[],"applicationVersion":{"version":"1.111.1"},"title":"UI5 library: sap.fe.test","description":"UI5 library: sap.fe.test","resources":"resources.json","offline":true},"sap.ui":{"technology":"UI5","supportedThemes":[]},"sap.ui5":{"dependencies":{"libs":{"sap.ui.core":{}}},"library":{"i18n":false,"content":{"controls":[],"elements":[],"types":[],"interfaces":[]}}}}'
18124
+ "sap/fe/test/manifest.json":'{"_version":"1.21.0","sap.app":{"id":"sap.fe.test","type":"library","embeds":[],"applicationVersion":{"version":"1.113.0"},"title":"UI5 library: sap.fe.test","description":"UI5 library: sap.fe.test","resources":"resources.json","offline":true},"sap.ui":{"technology":"UI5","supportedThemes":[]},"sap.ui5":{"dependencies":{"libs":{"sap.ui.core":{}}},"library":{"i18n":false,"content":{"controls":[],"elements":[],"types":[],"interfaces":[]}}}}'
17992
18125
  });
17993
18126
  //# sourceMappingURL=library-preload.js.map