@openui5/sap.ui.core 1.112.2 → 1.114.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 (400) hide show
  1. package/.dtsgenrc +102 -1
  2. package/THIRDPARTY.txt +1 -1
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +10 -4
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +7 -7
  9. package/src/jquery.sap.trace.js +14 -14
  10. package/src/sap/base/Log.js +92 -8
  11. package/src/sap/base/assert.js +1 -1
  12. package/src/sap/base/config/MemoryConfigurationProvider.js +22 -0
  13. package/src/sap/base/config.js +54 -0
  14. package/src/sap/base/security/URLWhitelist.js +1 -1
  15. package/src/sap/base/util/Deferred.js +3 -2
  16. package/src/sap/base/util/restricted/_CancelablePromise.js +2 -2
  17. package/src/sap/base/util/restricted/_castArray.js +1 -1
  18. package/src/sap/base/util/restricted/_compact.js +1 -1
  19. package/src/sap/base/util/restricted/_curry.js +1 -1
  20. package/src/sap/base/util/restricted/_debounce.js +1 -1
  21. package/src/sap/base/util/restricted/_difference.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_flatten.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_intersection.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isNil.js +1 -1
  36. package/src/sap/base/util/restricted/_max.js +1 -1
  37. package/src/sap/base/util/restricted/_merge.js +1 -1
  38. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  39. package/src/sap/base/util/restricted/_min.js +1 -1
  40. package/src/sap/base/util/restricted/_omit.js +1 -1
  41. package/src/sap/base/util/restricted/_pick.js +1 -1
  42. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  43. package/src/sap/base/util/restricted/_throttle.js +1 -1
  44. package/src/sap/base/util/restricted/_toArray.js +1 -1
  45. package/src/sap/base/util/restricted/_union.js +1 -1
  46. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  47. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  48. package/src/sap/base/util/restricted/_uniq.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  51. package/src/sap/base/util/restricted/_without.js +1 -1
  52. package/src/sap/base/util/restricted/_xor.js +1 -1
  53. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  54. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  57. package/src/sap/ui/Device.js +8 -3
  58. package/src/sap/ui/Global.js +4 -4
  59. package/src/sap/ui/base/BindingParser.js +79 -18
  60. package/src/sap/ui/base/Event.js +1 -1
  61. package/src/sap/ui/base/EventProvider.js +1 -1
  62. package/src/sap/ui/base/ExpressionParser.js +15 -5
  63. package/src/sap/ui/base/Interface.js +1 -1
  64. package/src/sap/ui/base/ManagedObject.js +16 -13
  65. package/src/sap/ui/base/ManagedObjectMetadata.js +35 -35
  66. package/src/sap/ui/base/Metadata.js +23 -12
  67. package/src/sap/ui/base/Object.js +1 -1
  68. package/src/sap/ui/base/ObjectPool.js +1 -1
  69. package/src/sap/ui/core/.library +1 -1
  70. package/src/sap/ui/core/BusyIndicator.js +4 -4
  71. package/src/sap/ui/core/Component.js +10 -7
  72. package/src/sap/ui/core/ComponentContainer.js +1 -1
  73. package/src/sap/ui/core/ComponentMetadata.js +3 -1
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +104 -45
  76. package/src/sap/ui/core/Control.js +23 -6
  77. package/src/sap/ui/core/Core.js +36 -15
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/CustomStyleClassSupport.js +5 -2
  80. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +19 -4
  83. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  84. package/src/sap/ui/core/EventBus.js +4 -4
  85. package/src/sap/ui/core/Fragment.js +1 -1
  86. package/src/sap/ui/core/HTML.js +1 -1
  87. package/src/sap/ui/core/History.js +1 -1
  88. package/src/sap/ui/core/Icon.js +1 -1
  89. package/src/sap/ui/core/IconPool.js +17 -2
  90. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  91. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  92. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  93. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  94. package/src/sap/ui/core/InvisibleText.js +1 -1
  95. package/src/sap/ui/core/Item.js +1 -1
  96. package/src/sap/ui/core/LabelEnablement.js +10 -2
  97. package/src/sap/ui/core/LayoutData.js +1 -1
  98. package/src/sap/ui/core/Lib.js +28 -2
  99. package/src/sap/ui/core/ListItem.js +1 -1
  100. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  101. package/src/sap/ui/core/Locale.js +2 -2
  102. package/src/sap/ui/core/LocaleData.js +87 -19
  103. package/src/sap/ui/core/Manifest.js +5 -5
  104. package/src/sap/ui/core/Message.js +1 -1
  105. package/src/sap/ui/core/Popup.js +34 -36
  106. package/src/sap/ui/core/RenderManager.js +8 -2
  107. package/src/sap/ui/core/Renderer.js +1 -1
  108. package/src/sap/ui/core/Rendering.js +2 -3
  109. package/src/sap/ui/core/ResizeHandler.js +2 -2
  110. package/src/sap/ui/core/ScrollBar.js +1 -1
  111. package/src/sap/ui/core/SeparatorItem.js +1 -1
  112. package/src/sap/ui/core/Title.js +1 -1
  113. package/src/sap/ui/core/TooltipBase.js +1 -1
  114. package/src/sap/ui/core/UIArea.js +9 -2
  115. package/src/sap/ui/core/UIComponent.js +16 -13
  116. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  117. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  118. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  119. package/src/sap/ui/core/XMLComposite.js +1 -1
  120. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  121. package/src/sap/ui/core/XMLTemplateProcessor.js +30 -6
  122. package/src/sap/ui/core/cache/CacheManager.js +1 -1
  123. package/src/sap/ui/core/cache/LRUPersistentCache.js +1 -1
  124. package/src/sap/ui/core/date/CalendarUtils.js +14 -26
  125. package/src/sap/ui/core/date/CalendarWeekNumbering.js +32 -0
  126. package/src/sap/ui/core/date/UI5Date.js +14 -8
  127. package/src/sap/ui/core/date/UniversalDate.js +15 -53
  128. package/src/sap/ui/core/date/UniversalDateUtils.js +4 -4
  129. package/src/sap/ui/core/date/_Calendars.js +1 -1
  130. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  131. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  132. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  133. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  134. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  135. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  136. package/src/sap/ui/core/format/DateFormat.js +166 -59
  137. package/src/sap/ui/core/format/NumberFormat.js +40 -5
  138. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  139. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  140. package/src/sap/ui/core/library.js +3 -3
  141. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  142. package/src/sap/ui/core/message/Message.js +1 -1
  143. package/src/sap/ui/core/message/MessageManager.js +1 -1
  144. package/src/sap/ui/core/message/MessageParser.js +1 -1
  145. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  146. package/src/sap/ui/core/messagebundle.properties +2 -0
  147. package/src/sap/ui/core/messagebundle_ar.properties +2 -1
  148. package/src/sap/ui/core/messagebundle_bg.properties +1 -0
  149. package/src/sap/ui/core/messagebundle_ca.properties +1 -0
  150. package/src/sap/ui/core/messagebundle_cs.properties +2 -1
  151. package/src/sap/ui/core/messagebundle_cy.properties +2 -1
  152. package/src/sap/ui/core/messagebundle_da.properties +2 -1
  153. package/src/sap/ui/core/messagebundle_de.properties +2 -1
  154. package/src/sap/ui/core/messagebundle_el.properties +2 -1
  155. package/src/sap/ui/core/messagebundle_en.properties +2 -1
  156. package/src/sap/ui/core/messagebundle_en_GB.properties +2 -1
  157. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +1 -0
  158. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  159. package/src/sap/ui/core/messagebundle_es.properties +5 -4
  160. package/src/sap/ui/core/messagebundle_es_MX.properties +2 -1
  161. package/src/sap/ui/core/messagebundle_et.properties +2 -1
  162. package/src/sap/ui/core/messagebundle_fi.properties +2 -1
  163. package/src/sap/ui/core/messagebundle_fr.properties +2 -1
  164. package/src/sap/ui/core/messagebundle_fr_CA.properties +2 -1
  165. package/src/sap/ui/core/messagebundle_hi.properties +2 -1
  166. package/src/sap/ui/core/messagebundle_hr.properties +2 -1
  167. package/src/sap/ui/core/messagebundle_hu.properties +2 -1
  168. package/src/sap/ui/core/messagebundle_id.properties +2 -1
  169. package/src/sap/ui/core/messagebundle_it.properties +2 -1
  170. package/src/sap/ui/core/messagebundle_iw.properties +2 -1
  171. package/src/sap/ui/core/messagebundle_ja.properties +1 -0
  172. package/src/sap/ui/core/messagebundle_kk.properties +2 -1
  173. package/src/sap/ui/core/messagebundle_ko.properties +2 -1
  174. package/src/sap/ui/core/messagebundle_lt.properties +2 -1
  175. package/src/sap/ui/core/messagebundle_lv.properties +2 -1
  176. package/src/sap/ui/core/messagebundle_ms.properties +2 -1
  177. package/src/sap/ui/core/messagebundle_nl.properties +2 -1
  178. package/src/sap/ui/core/messagebundle_no.properties +2 -1
  179. package/src/sap/ui/core/messagebundle_pl.properties +2 -1
  180. package/src/sap/ui/core/messagebundle_pt.properties +2 -1
  181. package/src/sap/ui/core/messagebundle_pt_PT.properties +2 -1
  182. package/src/sap/ui/core/messagebundle_ro.properties +2 -1
  183. package/src/sap/ui/core/messagebundle_ru.properties +3 -2
  184. package/src/sap/ui/core/messagebundle_sh.properties +2 -1
  185. package/src/sap/ui/core/messagebundle_sk.properties +2 -1
  186. package/src/sap/ui/core/messagebundle_sl.properties +2 -1
  187. package/src/sap/ui/core/messagebundle_sv.properties +2 -1
  188. package/src/sap/ui/core/messagebundle_th.properties +2 -1
  189. package/src/sap/ui/core/messagebundle_tr.properties +2 -1
  190. package/src/sap/ui/core/messagebundle_uk.properties +2 -1
  191. package/src/sap/ui/core/messagebundle_vi.properties +2 -1
  192. package/src/sap/ui/core/messagebundle_zh_CN.properties +2 -1
  193. package/src/sap/ui/core/messagebundle_zh_TW.properties +2 -1
  194. package/src/sap/ui/core/mvc/Controller.js +2 -3
  195. package/src/sap/ui/core/mvc/ControllerExtension.js +1 -1
  196. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  197. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  198. package/src/sap/ui/core/mvc/JSView.js +1 -1
  199. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  200. package/src/sap/ui/core/mvc/View.js +24 -17
  201. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  202. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  203. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  204. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  205. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  206. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  207. package/src/sap/ui/core/routing/Route.js +30 -22
  208. package/src/sap/ui/core/routing/Router.js +5 -3
  209. package/src/sap/ui/core/routing/Target.js +170 -3
  210. package/src/sap/ui/core/routing/Targets.js +5 -214
  211. package/src/sap/ui/core/routing/Views.js +1 -1
  212. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  213. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  214. package/src/sap/ui/core/service/Service.js +1 -1
  215. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  216. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  217. package/src/sap/ui/core/support/Plugin.js +1 -1
  218. package/src/sap/ui/core/support/Support.js +1 -1
  219. package/src/sap/ui/core/support/controls/InteractionTree.js +5 -3
  220. package/src/sap/ui/core/support/plugins/Breakpoint.js +2 -2
  221. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  222. package/src/sap/ui/core/support/plugins/Interaction.js +6 -4
  223. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  224. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  225. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  226. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  227. package/src/sap/ui/core/support/plugins/Trace.js +4 -3
  228. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  229. package/src/sap/ui/core/themes/base/base.less +4358 -78
  230. package/src/sap/ui/core/themes/base/global.less +114 -8
  231. package/src/sap/ui/core/themes/sap_hcb/global.less +114 -8
  232. package/src/sap/ui/core/theming/Parameters.js +10 -2
  233. package/src/sap/ui/core/theming/ThemeManager.js +16 -12
  234. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  235. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  236. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  237. package/src/sap/ui/core/tmpl/Template.js +1 -1
  238. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  239. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  240. package/src/sap/ui/core/util/Export.js +1 -1
  241. package/src/sap/ui/core/util/ExportCell.js +1 -1
  242. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  243. package/src/sap/ui/core/util/ExportRow.js +1 -1
  244. package/src/sap/ui/core/util/ExportType.js +1 -1
  245. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  246. package/src/sap/ui/core/util/File.js +1 -1
  247. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  248. package/src/sap/ui/core/util/MockServer.js +1 -1
  249. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  250. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  251. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  252. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  253. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  254. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  255. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  256. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  257. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  258. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  259. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  260. package/src/sap/ui/debug/ControlTree.js +1 -1
  261. package/src/sap/ui/debug/DebugEnv.js +1 -1
  262. package/src/sap/ui/debug/PropertyList.js +1 -1
  263. package/src/sap/ui/dom/includeScript.js +3 -3
  264. package/src/sap/ui/dom/includeStylesheet.js +3 -3
  265. package/src/sap/ui/events/ControlEvents.js +2 -2
  266. package/src/sap/ui/events/PseudoEvents.js +4 -2
  267. package/src/sap/ui/model/ClientModel.js +1 -1
  268. package/src/sap/ui/model/CompositeBinding.js +1 -1
  269. package/src/sap/ui/model/CompositeDataState.js +1 -1
  270. package/src/sap/ui/model/CompositeType.js +1 -1
  271. package/src/sap/ui/model/DataState.js +1 -1
  272. package/src/sap/ui/model/ManagedObjectBindingSupport.js +19 -2
  273. package/src/sap/ui/model/MetaModel.js +1 -1
  274. package/src/sap/ui/model/Model.js +1 -1
  275. package/src/sap/ui/model/SelectionModel.js +1 -1
  276. package/src/sap/ui/model/SimpleType.js +7 -3
  277. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  278. package/src/sap/ui/model/Type.js +1 -1
  279. package/src/sap/ui/model/base/ManagedObjectModel.js +12 -4
  280. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +2 -0
  281. package/src/sap/ui/model/json/JSONModel.js +1 -1
  282. package/src/sap/ui/model/message/MessageModel.js +1 -1
  283. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  284. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  285. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  286. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  287. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  288. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
  289. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  290. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  291. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  292. package/src/sap/ui/model/odata/type/Date.js +67 -21
  293. package/src/sap/ui/model/odata/type/DateTime.js +51 -8
  294. package/src/sap/ui/model/odata/type/DateTimeBase.js +55 -26
  295. package/src/sap/ui/model/odata/type/DateTimeOffset.js +42 -1
  296. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +37 -21
  297. package/src/sap/ui/model/odata/type/Decimal.js +28 -33
  298. package/src/sap/ui/model/odata/type/Double.js +21 -26
  299. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  300. package/src/sap/ui/model/odata/type/Int.js +15 -20
  301. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  302. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  303. package/src/sap/ui/model/odata/type/Int64.js +16 -21
  304. package/src/sap/ui/model/odata/type/ODataType.js +33 -6
  305. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  306. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  307. package/src/sap/ui/model/odata/type/Single.js +20 -25
  308. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  309. package/src/sap/ui/model/odata/type/String.js +1 -1
  310. package/src/sap/ui/model/odata/type/Time.js +91 -21
  311. package/src/sap/ui/model/odata/type/TimeOfDay.js +70 -24
  312. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  313. package/src/sap/ui/model/odata/v2/Context.js +72 -28
  314. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +5 -4
  315. package/src/sap/ui/model/odata/v2/ODataListBinding.js +29 -10
  316. package/src/sap/ui/model/odata/v2/ODataModel.js +92 -36
  317. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +8 -1
  318. package/src/sap/ui/model/odata/v4/Context.js +36 -21
  319. package/src/sap/ui/model/odata/v4/ODataBinding.js +50 -21
  320. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +7 -25
  321. package/src/sap/ui/model/odata/v4/ODataListBinding.js +208 -74
  322. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +4 -1
  323. package/src/sap/ui/model/odata/v4/ODataModel.js +4 -3
  324. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +42 -28
  325. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  326. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +100 -21
  327. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +1 -1
  328. package/src/sap/ui/model/odata/v4/lib/_Cache.js +99 -64
  329. package/src/sap/ui/model/odata/v4/lib/_Helper.js +75 -2
  330. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +6 -0
  331. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +3 -0
  332. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  333. package/src/sap/ui/model/type/Boolean.js +1 -1
  334. package/src/sap/ui/model/type/Currency.js +1 -1
  335. package/src/sap/ui/model/type/Date.js +15 -1
  336. package/src/sap/ui/model/type/DateInterval.js +15 -1
  337. package/src/sap/ui/model/type/DateTime.js +1 -1
  338. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  339. package/src/sap/ui/model/type/FileSize.js +1 -1
  340. package/src/sap/ui/model/type/Float.js +1 -1
  341. package/src/sap/ui/model/type/Integer.js +1 -1
  342. package/src/sap/ui/model/type/String.js +1 -1
  343. package/src/sap/ui/model/type/Time.js +1 -1
  344. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  345. package/src/sap/ui/model/type/Unit.js +1 -1
  346. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  347. package/src/sap/ui/performance/Measurement.js +9 -9
  348. package/src/sap/ui/performance/trace/Interaction.js +50 -4
  349. package/src/sap/ui/performance/trace/initTraces.js +20 -14
  350. package/src/sap/ui/qunit/qunit-coverage-istanbul.js +180 -0
  351. package/src/sap/ui/qunit/qunit-coverage.js +9 -4
  352. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  353. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  354. package/src/sap/ui/test/Opa.js +54 -21
  355. package/src/sap/ui/test/Opa5.js +181 -131
  356. package/src/sap/ui/test/OpaBuilder.js +106 -73
  357. package/src/sap/ui/test/OpaPlugin.js +27 -28
  358. package/src/sap/ui/test/PageObjectFactory.js +17 -7
  359. package/src/sap/ui/test/RecordReplay.js +7 -3
  360. package/src/sap/ui/test/_ParameterValidator.js +3 -3
  361. package/src/sap/ui/test/_UsageReport.js +3 -3
  362. package/src/sap/ui/test/_ValidationParameters.js +8 -10
  363. package/src/sap/ui/test/actions/Action.js +3 -3
  364. package/src/sap/ui/test/actions/EnterText.js +3 -2
  365. package/src/sap/ui/test/actions/Press.js +4 -4
  366. package/src/sap/ui/test/autowaiter/WaiterBase.js +5 -3
  367. package/src/sap/ui/test/autowaiter/_autoWaiter.js +6 -3
  368. package/src/sap/ui/test/autowaiter/_cssAnimationWaiter.js +3 -3
  369. package/src/sap/ui/test/autowaiter/_cssTransitionWaiter.js +3 -3
  370. package/src/sap/ui/test/autowaiter/_fetchWaiter.js +73 -0
  371. package/src/sap/ui/test/autowaiter/_moduleWaiter.js +2 -2
  372. package/src/sap/ui/test/autowaiter/_promiseWaiter.js +4 -4
  373. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +2 -2
  374. package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +4 -4
  375. package/src/sap/ui/test/generic/TestBase.js +1 -1
  376. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +3 -1
  377. package/src/sap/ui/test/gherkin/GherkinTestGenerator.js +424 -423
  378. package/src/sap/ui/test/gherkin/StepDefinitions.js +160 -158
  379. package/src/sap/ui/test/gherkin/dataTableUtils.js +387 -385
  380. package/src/sap/ui/test/gherkin/opa5TestHarness.js +188 -189
  381. package/src/sap/ui/test/gherkin/qUnitTestHarness.js +74 -71
  382. package/src/sap/ui/test/gherkin/simpleGherkinParser.js +195 -193
  383. package/src/sap/ui/test/launchers/componentLauncher.js +11 -9
  384. package/src/sap/ui/test/launchers/iFrameLauncher.js +34 -20
  385. package/src/sap/ui/test/matchers/Descendant.js +1 -1
  386. package/src/sap/ui/test/matchers/Interactable.js +2 -2
  387. package/src/sap/ui/test/matchers/LabelFor.js +2 -2
  388. package/src/sap/ui/test/matchers/MatcherFactory.js +10 -9
  389. package/src/sap/ui/test/matchers/Properties.js +5 -4
  390. package/src/sap/ui/test/matchers/Sibling.js +1 -1
  391. package/src/sap/ui/test/matchers/matchers.js +35 -3
  392. package/src/sap/ui/test/pipelines/PipelineFactory.js +2 -2
  393. package/src/sap/ui/test/qunitPause.js +3 -2
  394. package/src/sap/ui/test/starter/_configureLoader.js +7 -5
  395. package/src/sap/ui/test/starter/_setupAndStart.js +113 -27
  396. package/src/sap/ui/test/starter/_utils.js +4 -1
  397. package/src/sap/ui/util/Mobile.js +8 -1
  398. package/src/sap/ui/util/Storage.js +1 -1
  399. package/src/ui5loader-autoconfig.js +661 -49
  400. package/src/ui5loader.js +18 -5
@@ -10,197 +10,196 @@
10
10
  // Load synchronously to avoid QUnit issue where tests run before QUnit is loaded
11
11
  // Only load QUnit if it has not been loaded via script tag
12
12
  if (!window.QUnit || !window.QUnit.test) {
13
- jQuery.sap.require("sap.ui.thirdparty.qunit");
13
+ jQuery.sap.require("sap.ui.thirdparty.qunit");
14
14
  }
15
15
 
16
16
  // put qunit-coverage last so library files don't get measured
17
17
  sap.ui.define([
18
- "jquery.sap.global",
19
- "sap/base/Log",
20
- "sap/base/util/ObjectPath",
21
- "sap/ui/test/opaQunit",
22
- "sap/ui/test/Opa5",
23
- "sap/ui/test/gherkin/GherkinTestGenerator",
24
- "sap/ui/test/gherkin/dataTableUtils",
25
- "sap/ui/test/gherkin/StepDefinitions",
26
- "sap/ui/test/launchers/componentLauncher",
27
- "sap/ui/test/launchers/iFrameLauncher",
28
- "sap/ui/qunit/qunit-css",
29
- "sap/ui/qunit/qunit-junit",
30
- "sap/ui/qunit/qunit-coverage"
31
- ], function($, Log, ObjectPath, opaTest, Opa5, GherkinTestGenerator, dataTableUtils, StepDefinitions, componentLauncher,
32
- iFrameLauncher) {
33
- "use strict";
34
-
35
- QUnit.config.urlConfig.splice(0, 0, {
36
- id: "closeFrame",
37
- label: "Close Frame",
38
- tooltip: "Closes the application-under-test's frame after all tests have executed",
39
- value: "true"
40
- });
41
-
42
- QUnit.done(function() {
43
- if (new URLSearchParams(window.location.search).has("closeFrame")) {
44
- Opa5.emptyQueue();
45
- }
46
- });
47
-
48
- /**
49
- * Dynamically generates and executes Opa5 tests based on a Gherkin feature file and step definitions.
50
- *
51
- * Logs activity to Opa5, and some debug information to the console with the prefix "[GHERKIN]"
52
- *
53
- * @author Jonathan Benn
54
- * @alias sap.ui.test.gherkin.opa5TestHarness
55
- * @namespace
56
- * @static
57
- * @since 1.40
58
- * @public
59
- */
60
- var opa5TestHarness = {
61
-
62
- // for testability these need to be accessible outside of public 'test' function's scope
63
- _oOpa5: new Opa5(),
64
- _opaTest: opaTest,
65
- _fnAlternateTestStepGenerator: function(oStep) {
66
- // Automatically generates test steps from Opa Page Objects, only used when args.generateMissingSteps is true
67
-
68
- var sContext = oStep.keyword;
69
- var sFinalFunction = oStep.text;
70
- var aMatch = oStep.text.match(/(.*?)\s*:\s*(.*)/);
71
- if (aMatch) {
72
- sContext += "." + dataTableUtils.normalization.camelCase(aMatch[1]);
73
- sFinalFunction = aMatch[2];
74
- }
75
- sFinalFunction = dataTableUtils.normalization.camelCase(sFinalFunction);
76
- var sToEval = sContext + "." + sFinalFunction + "();";
77
- var func;
78
- if ( /^(Given|When|Then)(\.[a-zA-Z_$][a-zA-Z0-9_$]*)*$/.test(sContext) && /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(sFinalFunction) ) {
79
- func = function(Given, When, Then) {
80
- Log.info("[GHERKIN] Generated Step: " + sToEval);
81
- var oContext = ObjectPath.get(sContext, {Given: Given, When: When, Then: Then});
82
- if ( oContext && typeof oContext[sFinalFunction] === "function" ) {
83
- oContext[sFinalFunction]();
84
- } else {
85
- throw new TypeError(sContext + "." + sFinalFunction + " is not a function");
86
- }
87
- };
88
- } else {
89
- func = function(Given, When, Then) {
90
- Log.info("[GHERKIN] Generated Step (eval): " + sToEval);
91
- eval(sToEval);
92
- };
93
- }
94
-
95
- return {
96
- isMatch: true,
97
- text: oStep.text,
98
- regex: /Generated Step/,
99
- parameters: [],
100
- func: func,
101
- _sToEval: sToEval // exposing this for testability
102
- };
103
- },
104
-
105
- /**
106
- * Dynamically generates Opa5 tests
107
- *
108
- * If a test step is missing and args.generateMissingSteps is true then the Gherkin step will be converted into Opa
109
- * Page Object code and executed. The text will be converted to camelCase and have any non-alphanumeric character
110
- * removed. Here are two pertinent examples:
111
- *
112
- * (1) The simple step "Given I start my app" will be converted into the call "Given.iStartMyApp();"
113
- *
114
- * (2) The step "Then on page 1: I should see the page 1 text" will become the call
115
- * "Then.onPage1.iShouldSeeThePage1Text();"
116
- *
117
- * Chaining function calls, such as "Then.iStartMyApp().and.iCloseMyApp()" is not possible at this time.
118
- *
119
- * @param {object} args - the arguments to the function
120
- * @param {string} args.featurePath - the path to the Gherkin feature file to parse, as an SAPUI5 module path. The
121
- * ".feature" extension is assumed and should not be included. See
122
- * {@link jQuery.sap.registerModulePath}
123
- * @param {function} [args.steps] - the constructor function of type {@link sap.ui.test.gherkin.StepDefinitions}.
124
- * If this parameter is ommitted then args.generateMissingSteps must be explicitly
125
- * set to true.
126
- * @param {boolean} [args.generateMissingSteps=false] - When true: if a Gherkin step cannot be matched to a step
127
- * definition then it will be assumed that the user wants to
128
- * convert the step into an Opa Page Object call.
129
- * @public
130
- * @throws {Error} if any parameters are invalid
131
- * @function
132
- * @static
133
- */
134
- test: function(args) {
135
-
136
- // args is mandatory
137
- if (!args || typeof args !== "object") {
138
- throw new Error("opa5TestHarness.test: input all arguments via a single object");
139
- }
140
-
141
- if (typeof args.featurePath !== "string" && !(args.featurePath instanceof String)) {
142
- throw new Error("opa5TestHarness.test: parameter 'featurePath' must be a valid string");
143
- }
144
-
145
- if (args.steps && ((typeof args.steps !== "function") || !((new args.steps())._generateTestStep))) {
146
- throw new Error("opa5TestHarness.test: if specified, parameter 'steps' must be a valid StepDefinitions constructor");
147
- }
148
-
149
- if (!args.steps && (args.generateMissingSteps !== true)) {
150
- throw new Error("opa5TestHarness.test: if parameter 'generateMissingSteps' is not true then parameter 'steps' must be a valid StepDefinitions constructor");
151
- }
152
-
153
- if (args.generateMissingSteps && (typeof args.generateMissingSteps !== "boolean")) {
154
- throw new Error("opa5TestHarness.test: if specified, parameter 'generateMissingSteps' must be a valid boolean");
155
- }
156
-
157
- // if the user did not input a StepDefinitions constructor
158
- if (!args.steps) {
159
- // then use a default StepDefinitions constructor
160
- args.steps = StepDefinitions;
161
- }
162
- var fnTestStepGenerator = (args.generateMissingSteps) ? this._fnAlternateTestStepGenerator : null;
163
-
164
- var oTestGenerator = new GherkinTestGenerator(args.featurePath, args.steps, fnTestStepGenerator);
165
- var oFeatureTest = oTestGenerator.generate();
166
-
167
- QUnit.module(oFeatureTest.name, {
168
- beforeEach: function() {
169
- oTestGenerator.setUp();
170
- },
171
- afterEach: function() {
172
- if (this._oOpa5.hasAppStarted()) {
173
- this._oOpa5.iTeardownMyApp();
174
- }
175
- oTestGenerator.tearDown();
176
- }.bind(this)
177
- });
178
-
179
- Log.info("[GHERKIN] Running feature: '" + oFeatureTest.name + "'");
180
- oFeatureTest.testScenarios.forEach(function(oTestScenario) {
181
- var fnTestFunction = (!oFeatureTest.skip && !oTestScenario.skip) ? this._opaTest : QUnit.skip;
182
- fnTestFunction(oTestScenario.name, function(Given, When, Then) {
183
- Log.info("[GHERKIN] Running scenario: '" + oTestScenario.name + "'");
184
- oTestScenario.testSteps.forEach(function(oTestStep) {
185
- // Put test execution inside a waitFor so that they are executed in order, even if the user fails to put
186
- // a waitFor statement in one of the test steps
187
- this._oOpa5.waitFor({
188
- viewName: "",
189
- success: function() {
190
- Log.info("[GHERKIN] Running step: text='" + oTestStep.text + "' regex='" + oTestStep.regex + "'");
191
- Opa5.assert.ok(oTestStep.isMatch, oTestStep.text);
192
- if (oTestStep.isMatch) {
193
- QUnit.config.current.assertions.pop(); // don't break QUnit expect() behaviour
194
- }
195
- oTestStep.parameters = (oTestStep.parameters || []).concat([Given, When, Then]);
196
- oTestGenerator.execute(oTestStep, Opa5.assert);
197
- }
198
- });
199
- }.bind(this));
200
- }.bind(this));
201
- }.bind(this));
202
- }
203
- };
204
-
205
- return opa5TestHarness;
18
+ "sap/base/Log",
19
+ "sap/base/util/ObjectPath",
20
+ "sap/ui/test/opaQunit",
21
+ "sap/ui/test/Opa5",
22
+ "sap/ui/test/gherkin/GherkinTestGenerator",
23
+ "sap/ui/test/gherkin/dataTableUtils",
24
+ "sap/ui/test/gherkin/StepDefinitions",
25
+ "sap/ui/test/launchers/componentLauncher",
26
+ "sap/ui/test/launchers/iFrameLauncher",
27
+ "sap/ui/qunit/qunit-css",
28
+ "sap/ui/qunit/qunit-junit",
29
+ "sap/ui/qunit/qunit-coverage"
30
+ ], function(Log, ObjectPath, opaTest, Opa5, GherkinTestGenerator, dataTableUtils, StepDefinitions, componentLauncher,
31
+ iFrameLauncher) {
32
+ "use strict";
33
+
34
+ QUnit.config.urlConfig.splice(0, 0, {
35
+ id: "closeFrame",
36
+ label: "Close Frame",
37
+ tooltip: "Closes the application-under-test's frame after all tests have executed",
38
+ value: "true"
39
+ });
40
+
41
+ QUnit.done(function() {
42
+ if (new URLSearchParams(window.location.search).has("closeFrame")) {
43
+ Opa5.emptyQueue();
44
+ }
45
+ });
46
+
47
+ /**
48
+ * Dynamically generates and executes Opa5 tests based on a Gherkin feature file and step definitions.
49
+ *
50
+ * Logs activity to Opa5, and some debug information to the console with the prefix "[GHERKIN]"
51
+ *
52
+ * @author Jonathan Benn
53
+ * @alias sap.ui.test.gherkin.opa5TestHarness
54
+ * @namespace
55
+ * @static
56
+ * @since 1.40
57
+ * @public
58
+ */
59
+ var opa5TestHarness = {
60
+
61
+ // for testability these need to be accessible outside of public 'test' function's scope
62
+ _oOpa5: new Opa5(),
63
+ _opaTest: opaTest,
64
+ _fnAlternateTestStepGenerator: function(oStep) {
65
+ // Automatically generates test steps from Opa Page Objects, only used when args.generateMissingSteps is true
66
+
67
+ var sContext = oStep.keyword;
68
+ var sFinalFunction = oStep.text;
69
+ var aMatch = oStep.text.match(/(.*?)\s*:\s*(.*)/);
70
+ if (aMatch) {
71
+ sContext += "." + dataTableUtils.normalization.camelCase(aMatch[1]);
72
+ sFinalFunction = aMatch[2];
73
+ }
74
+ sFinalFunction = dataTableUtils.normalization.camelCase(sFinalFunction);
75
+ var sToEval = sContext + "." + sFinalFunction + "();";
76
+ var func;
77
+ if ( /^(Given|When|Then)(\.[a-zA-Z_$][a-zA-Z0-9_$]*)*$/.test(sContext) && /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(sFinalFunction) ) {
78
+ func = function(Given, When, Then) {
79
+ Log.info("[GHERKIN] Generated Step: " + sToEval);
80
+ var oContext = ObjectPath.get(sContext, {Given: Given, When: When, Then: Then});
81
+ if ( oContext && typeof oContext[sFinalFunction] === "function" ) {
82
+ oContext[sFinalFunction]();
83
+ } else {
84
+ throw new TypeError(sContext + "." + sFinalFunction + " is not a function");
85
+ }
86
+ };
87
+ } else {
88
+ func = function(Given, When, Then) {
89
+ Log.info("[GHERKIN] Generated Step (eval): " + sToEval);
90
+ eval(sToEval);
91
+ };
92
+ }
93
+
94
+ return {
95
+ isMatch: true,
96
+ text: oStep.text,
97
+ regex: /Generated Step/,
98
+ parameters: [],
99
+ func: func,
100
+ _sToEval: sToEval // exposing this for testability
101
+ };
102
+ },
103
+
104
+ /**
105
+ * Dynamically generates Opa5 tests
106
+ *
107
+ * If a test step is missing and args.generateMissingSteps is true then the Gherkin step will be converted into Opa
108
+ * Page Object code and executed. The text will be converted to camelCase and have any non-alphanumeric character
109
+ * removed. Here are two pertinent examples:
110
+ *
111
+ * (1) The simple step "Given I start my app" will be converted into the call "Given.iStartMyApp();"
112
+ *
113
+ * (2) The step "Then on page 1: I should see the page 1 text" will become the call
114
+ * "Then.onPage1.iShouldSeeThePage1Text();"
115
+ *
116
+ * Chaining function calls, such as "Then.iStartMyApp().and.iCloseMyApp()" is not possible at this time.
117
+ *
118
+ * @param {object} args - the arguments to the function
119
+ * @param {string} args.featurePath - the path to the Gherkin feature file to parse, as an SAPUI5 module path. The
120
+ * ".feature" extension is assumed and should not be included. See
121
+ * {@link jQuery.sap.registerModulePath}
122
+ * @param {function} [args.steps] - the constructor function of type {@link sap.ui.test.gherkin.StepDefinitions}.
123
+ * If this parameter is ommitted then args.generateMissingSteps must be explicitly
124
+ * set to true.
125
+ * @param {boolean} [args.generateMissingSteps=false] - When true: if a Gherkin step cannot be matched to a step
126
+ * definition then it will be assumed that the user wants to
127
+ * convert the step into an Opa Page Object call.
128
+ * @public
129
+ * @throws {Error} if any parameters are invalid
130
+ * @function
131
+ * @static
132
+ */
133
+ test: function(args) {
134
+
135
+ // args is mandatory
136
+ if (!args || typeof args !== "object") {
137
+ throw new Error("opa5TestHarness.test: input all arguments via a single object");
138
+ }
139
+
140
+ if (typeof args.featurePath !== "string" && !(args.featurePath instanceof String)) {
141
+ throw new Error("opa5TestHarness.test: parameter 'featurePath' must be a valid string");
142
+ }
143
+
144
+ if (args.steps && ((typeof args.steps !== "function") || !((new args.steps())._generateTestStep))) {
145
+ throw new Error("opa5TestHarness.test: if specified, parameter 'steps' must be a valid StepDefinitions constructor");
146
+ }
147
+
148
+ if (!args.steps && (args.generateMissingSteps !== true)) {
149
+ throw new Error("opa5TestHarness.test: if parameter 'generateMissingSteps' is not true then parameter 'steps' must be a valid StepDefinitions constructor");
150
+ }
151
+
152
+ if (args.generateMissingSteps && (typeof args.generateMissingSteps !== "boolean")) {
153
+ throw new Error("opa5TestHarness.test: if specified, parameter 'generateMissingSteps' must be a valid boolean");
154
+ }
155
+
156
+ // if the user did not input a StepDefinitions constructor
157
+ if (!args.steps) {
158
+ // then use a default StepDefinitions constructor
159
+ args.steps = StepDefinitions;
160
+ }
161
+ var fnTestStepGenerator = (args.generateMissingSteps) ? this._fnAlternateTestStepGenerator : null;
162
+
163
+ var oTestGenerator = new GherkinTestGenerator(args.featurePath, args.steps, fnTestStepGenerator);
164
+ var oFeatureTest = oTestGenerator.generate();
165
+
166
+ QUnit.module(oFeatureTest.name, {
167
+ beforeEach: function() {
168
+ oTestGenerator.setUp();
169
+ },
170
+ afterEach: function() {
171
+ if (this._oOpa5.hasAppStarted()) {
172
+ this._oOpa5.iTeardownMyApp();
173
+ }
174
+ oTestGenerator.tearDown();
175
+ }.bind(this)
176
+ });
177
+
178
+ Log.info("[GHERKIN] Running feature: '" + oFeatureTest.name + "'");
179
+ oFeatureTest.testScenarios.forEach(function(oTestScenario) {
180
+ var fnTestFunction = (!oFeatureTest.skip && !oTestScenario.skip) ? this._opaTest : QUnit.skip;
181
+ fnTestFunction(oTestScenario.name, function(Given, When, Then) {
182
+ Log.info("[GHERKIN] Running scenario: '" + oTestScenario.name + "'");
183
+ oTestScenario.testSteps.forEach(function(oTestStep) {
184
+ // Put test execution inside a waitFor so that they are executed in order, even if the user fails to put
185
+ // a waitFor statement in one of the test steps
186
+ this._oOpa5.waitFor({
187
+ viewName: "",
188
+ success: function() {
189
+ Log.info("[GHERKIN] Running step: text='" + oTestStep.text + "' regex='" + oTestStep.regex + "'");
190
+ Opa5.assert.ok(oTestStep.isMatch, oTestStep.text);
191
+ if (oTestStep.isMatch) {
192
+ QUnit.config.current.assertions.pop(); // don't break QUnit expect() behaviour
193
+ }
194
+ oTestStep.parameters = (oTestStep.parameters || []).concat([Given, When, Then]);
195
+ oTestGenerator.execute(oTestStep, Opa5.assert);
196
+ }
197
+ });
198
+ }.bind(this));
199
+ }.bind(this));
200
+ }.bind(this));
201
+ }
202
+ };
203
+
204
+ return opa5TestHarness;
206
205
  }, /* bExport= */ true);
@@ -9,89 +9,92 @@
9
9
  // Load synchronously to avoid QUnit issue where tests run before QUnit is loaded
10
10
  // Only load QUnit if it has not been loaded via script tag
11
11
  if (!window.QUnit || !window.QUnit.test) {
12
- jQuery.sap.require("sap.ui.thirdparty.qunit");
12
+ jQuery.sap.require("sap.ui.thirdparty.qunit");
13
13
  }
14
14
 
15
15
  // put qunit-coverage last so library files don't get measured (we load StepDefinitions, even though we don't have to,
16
16
  // so that it doesn't appear in the code coverage list, knowing that the user will need to load it)
17
17
  sap.ui.define([
18
- "jquery.sap.global", "sap/ui/test/gherkin/GherkinTestGenerator",
19
- "sap/ui/test/gherkin/StepDefinitions", "sap/ui/qunit/qunit-css", "sap/ui/qunit/qunit-junit",
20
- "sap/ui/qunit/qunit-coverage"
21
- ], function($, GherkinTestGenerator) {
22
- 'use strict';
18
+ "sap/base/Log",
19
+ "sap/ui/test/gherkin/GherkinTestGenerator",
20
+ "sap/ui/test/gherkin/StepDefinitions",
21
+ "sap/ui/qunit/qunit-css",
22
+ "sap/ui/qunit/qunit-junit",
23
+ "sap/ui/qunit/qunit-coverage"
24
+ ], function(Log, GherkinTestGenerator) {
25
+ 'use strict';
23
26
 
24
- /**
25
- * Dynamically generates and executes QUnit tests based on a Gherkin feature file and step definitions
26
- *
27
- * Logs activity to QUnit, and some debug information to the console with the prefix "[GHERKIN]"
28
- *
29
- * @author Jonathan Benn
30
- * @alias sap.ui.test.gherkin.qUnitTestHarness
31
- * @namespace
32
- * @since 1.40
33
- * @public
34
- * @static
35
- */
36
- var qUnitTestHarness = {
27
+ /**
28
+ * Dynamically generates and executes QUnit tests based on a Gherkin feature file and step definitions
29
+ *
30
+ * Logs activity to QUnit, and some debug information to the console with the prefix "[GHERKIN]"
31
+ *
32
+ * @author Jonathan Benn
33
+ * @alias sap.ui.test.gherkin.qUnitTestHarness
34
+ * @namespace
35
+ * @since 1.40
36
+ * @public
37
+ * @static
38
+ */
39
+ var qUnitTestHarness = {
37
40
 
38
- /**
39
- * Dynamically generates and executes QUnit tests
40
- *
41
- * @param {object} args - the arguments to the function
42
- * @param {string} args.featurePath - the path to the Gherkin feature file to parse, as an SAPUI5 module path. The
43
- * ".feature" extension is assumed and should not be included. See
44
- * {@link jQuery.sap.registerModulePath}
45
- * @param {function} args.steps - the constructor function of type {@link sap.ui.test.gherkin.StepDefinitions}
46
- * @public
47
- * @throws {Error} if any parameters are invalid
48
- * @function
49
- * @static
50
- */
51
- test: function(args) {
41
+ /**
42
+ * Dynamically generates and executes QUnit tests
43
+ *
44
+ * @param {object} args - the arguments to the function
45
+ * @param {string} args.featurePath - the path to the Gherkin feature file to parse, as an SAPUI5 module path. The
46
+ * ".feature" extension is assumed and should not be included. See
47
+ * {@link jQuery.sap.registerModulePath}
48
+ * @param {function} args.steps - the constructor function of type {@link sap.ui.test.gherkin.StepDefinitions}
49
+ * @public
50
+ * @throws {Error} if any parameters are invalid
51
+ * @function
52
+ * @static
53
+ */
54
+ test: function(args) {
52
55
 
53
- // args is mandatory
54
- if (!args || typeof args !== "object") {
55
- throw new Error("qUnitTestHarness.test: input all arguments via a single object");
56
- }
56
+ // args is mandatory
57
+ if (!args || typeof args !== "object") {
58
+ throw new Error("qUnitTestHarness.test: input all arguments via a single object");
59
+ }
57
60
 
58
- if (typeof args.featurePath !== "string" && !(args.featurePath instanceof String)) {
59
- throw new Error("qUnitTestHarness.test: parameter 'featurePath' must be a valid string");
60
- }
61
+ if (typeof args.featurePath !== "string" && !(args.featurePath instanceof String)) {
62
+ throw new Error("qUnitTestHarness.test: parameter 'featurePath' must be a valid string");
63
+ }
61
64
 
62
- if ((typeof args.steps !== "function") || !((new args.steps())._generateTestStep)) {
63
- throw new Error("qUnitTestHarness.test: parameter 'steps' must be a valid StepDefinitions constructor");
64
- }
65
+ if ((typeof args.steps !== "function") || !((new args.steps())._generateTestStep)) {
66
+ throw new Error("qUnitTestHarness.test: parameter 'steps' must be a valid StepDefinitions constructor");
67
+ }
65
68
 
66
- var oTestGenerator = new GherkinTestGenerator(args.featurePath, args.steps);
67
- var oFeatureTest = oTestGenerator.generate();
69
+ var oTestGenerator = new GherkinTestGenerator(args.featurePath, args.steps);
70
+ var oFeatureTest = oTestGenerator.generate();
68
71
 
69
- QUnit.module(oFeatureTest.name, {
70
- beforeEach: function() {
71
- oTestGenerator.setUp();
72
- },
73
- afterEach: function() {
74
- oTestGenerator.tearDown();
75
- }
76
- });
72
+ QUnit.module(oFeatureTest.name, {
73
+ beforeEach: function() {
74
+ oTestGenerator.setUp();
75
+ },
76
+ afterEach: function() {
77
+ oTestGenerator.tearDown();
78
+ }
79
+ });
77
80
 
78
- $.sap.log.info("[GHERKIN] Running feature: '" + oFeatureTest.name + "'");
79
- oFeatureTest.testScenarios.forEach(function(oTestScenario) {
80
- var fnTestFunction = (!oFeatureTest.skip && !oTestScenario.skip) ? QUnit.test : QUnit.skip;
81
- fnTestFunction(oTestScenario.name, function(assert) {
82
- $.sap.log.info("[GHERKIN] Running scenario: '" + oTestScenario.name + "'");
83
- oTestScenario.testSteps.forEach(function(oTestStep) {
84
- $.sap.log.info("[GHERKIN] Running step: text='" + oTestStep.text + "' regex='" + oTestStep.regex + "'");
85
- assert.ok(oTestStep.isMatch, oTestStep.text);
86
- if (oTestStep.isMatch) {
87
- QUnit.config.current.assertions.pop(); // don't break QUnit expect() behaviour
88
- }
89
- oTestGenerator.execute(oTestStep, assert);
90
- });
91
- });
92
- });
93
- }
94
- };
81
+ Log.info("[GHERKIN] Running feature: '" + oFeatureTest.name + "'");
82
+ oFeatureTest.testScenarios.forEach(function(oTestScenario) {
83
+ var fnTestFunction = (!oFeatureTest.skip && !oTestScenario.skip) ? QUnit.test : QUnit.skip;
84
+ fnTestFunction(oTestScenario.name, function(assert) {
85
+ Log.info("[GHERKIN] Running scenario: '" + oTestScenario.name + "'");
86
+ oTestScenario.testSteps.forEach(function(oTestStep) {
87
+ Log.info("[GHERKIN] Running step: text='" + oTestStep.text + "' regex='" + oTestStep.regex + "'");
88
+ assert.ok(oTestStep.isMatch, oTestStep.text);
89
+ if (oTestStep.isMatch) {
90
+ QUnit.config.current.assertions.pop(); // don't break QUnit expect() behaviour
91
+ }
92
+ oTestGenerator.execute(oTestStep, assert);
93
+ });
94
+ });
95
+ });
96
+ }
97
+ };
95
98
 
96
- return qUnitTestHarness;
99
+ return qUnitTestHarness;
97
100
  }, /* bExport= */ true);