graphdb-workbench-tests 3.4.0-TR4 → 3.4.0-TR5

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 (365) hide show
  1. package/.editorconfig +17 -0
  2. package/.nycrc +10 -0
  3. package/cypress-flaky.config.js +20 -6
  4. package/cypress-legacy.config.js +47 -0
  5. package/cypress-security.config.js +36 -0
  6. package/cypress.config.js +45 -6
  7. package/{integration-flaky → e2e-flaky}/explore/visual.graph.spec.js +4 -1
  8. package/{integration-flaky → e2e-flaky}/import/import-server-files-operations.spec.js +2 -2
  9. package/{integration-flaky → e2e-flaky}/import/import-user-data-batch-operations.spec.js +3 -3
  10. package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
  11. package/{integration-flaky → e2e-flaky}/setup/sparql-template-create.js +10 -18
  12. package/{integration-flaky → e2e-flaky}/sparql-editor/actions/execute-update-query.spec.js +2 -12
  13. package/{integration-flaky → e2e-flaky}/sparql-editor/actions/share-query.spec.js +1 -7
  14. package/{integration-flaky → e2e-flaky}/sparql-editor/yasr/table-plugin.spec.js +3 -7
  15. package/{integration → e2e-legacy}/cluster/cluster-states.spec.js +3 -3
  16. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository-without-class-hierarchy.spec.js +42 -0
  17. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository.spec.js +43 -0
  18. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-without-selected-repository.spec.js +30 -0
  19. package/{integration/explore → e2e-legacy/explore/class-hierarchy}/class.hierarchy.spec.js +1 -1
  20. package/e2e-legacy/explore/class-relationships/class-relationships-repository-with-data.spec.js +42 -0
  21. package/e2e-legacy/explore/class-relationships/class-relationships-with-selected-repository.spec.js +39 -0
  22. package/e2e-legacy/explore/class-relationships/class-relationships-without-selected-repository.spec.js +21 -0
  23. package/{integration/explore/class.relationships.spec.js → e2e-legacy/explore/class-relationships/class-relationships.spec.js} +20 -50
  24. package/{integration/explore → e2e-legacy/explore/graphs-overview}/graphs.overview.spec.js +4 -4
  25. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-with-selected-repository.spec.js +44 -0
  26. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-without-selected-repository.spec.js +32 -0
  27. package/e2e-legacy/explore/similarity-index/similarity-index-with-repository.spec.js +38 -0
  28. package/e2e-legacy/explore/similarity-index/similarity-index-without-repository.spec.js +21 -0
  29. package/{integration → e2e-legacy}/explore/visual-graph/graphs-config.spec.js +5 -10
  30. package/e2e-legacy/explore/visual-graph/node-info-panel.spec.js +58 -0
  31. package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +142 -0
  32. package/{integration → e2e-legacy}/explore/visual-graph/visual-graph-node-labels.spec.js +14 -2
  33. package/e2e-legacy/explore/visual-graph/visual-graph-with-selected-repository.js +38 -0
  34. package/e2e-legacy/explore/visual-graph/visual-graph-without-selected-repository.js +21 -0
  35. package/{integration → e2e-legacy}/explore/visual-graph/visual.graph.spec.js +75 -96
  36. package/{integration → e2e-legacy}/graphql/create-graphql-endpoint.spec.js +0 -2
  37. package/{integration → e2e-legacy}/graphql/edit-graphql-enpoint.spec.js +1 -1
  38. package/{integration → e2e-legacy}/graphql/filter-graphql-endpoints-on-management-view.spec.js +1 -1
  39. package/{integration → e2e-legacy}/graphql/graphql-endpoint-management-view.spec.js +4 -4
  40. package/e2e-legacy/graphql/graphql-endpoint-management-with-endpoints.spec.js +43 -0
  41. package/e2e-legacy/graphql/graphql-endpoint-management-with-selected-repository.spec.js +39 -0
  42. package/e2e-legacy/graphql/graphql-endpoint-management-without-selected-repository.spec.js +21 -0
  43. package/e2e-legacy/graphql/graphql-playground-with-endpoints.spec.js +40 -0
  44. package/e2e-legacy/graphql/graphql-playground-with-selected-repository.spec.js +38 -0
  45. package/e2e-legacy/graphql/graphql-playground-without-selected-repository.spec.js +22 -0
  46. package/{integration → e2e-legacy}/graphql/graphql-playground.spec.js +1 -1
  47. package/e2e-legacy/graphql/graphql-theme.spec.js +73 -0
  48. package/{integration → e2e-legacy}/graphql/import-graphql-endpoint-definitions.spec.js +0 -6
  49. package/e2e-legacy/guides/autocomplete/enable-autocomplete-guide.spec.js +49 -0
  50. package/e2e-legacy/guides/class-hierarcy/class-hierarchy-guide.spec.js +89 -0
  51. package/e2e-legacy/guides/class-relations/class-relations-guide.spec.js +76 -0
  52. package/e2e-legacy/guides/connectors/connectors-guide.spec.js +163 -0
  53. package/e2e-legacy/guides/create-similarity-index/create-similarity-index-guide.spec.js +74 -0
  54. package/e2e-legacy/guides/download-guide-resource/download-guide-resource-guide.js +55 -0
  55. package/e2e-legacy/guides/execute-sparql-query/execute-sparql-query-guide.spec.js +92 -0
  56. package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +63 -0
  57. package/e2e-legacy/guides/import-rdf-file/import-rdf-file.spec.js +105 -0
  58. package/e2e-legacy/guides/main-menu/main-menu-guide.spec.js +302 -0
  59. package/e2e-legacy/guides/navigation/navigation-guide.spec.js +64 -0
  60. package/e2e-legacy/guides/rdf-rank/rdf-rank-guide.spec.js +42 -0
  61. package/e2e-legacy/guides/repositories/create-repository-guide.spec.js +69 -0
  62. package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +168 -0
  63. package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +158 -0
  64. package/e2e-legacy/guides/ttyg/conversation/ttyg-conversation-guide.spec.js +92 -0
  65. package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +88 -0
  66. package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +372 -0
  67. package/e2e-legacy/guides/welcome/welcome-guide.spec.js +36 -0
  68. package/e2e-legacy/help/guides/guides-autostart.spec.js +126 -0
  69. package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +83 -0
  70. package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
  71. package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
  72. package/e2e-legacy/help/guides/movies-interactive-guide.spec.js +71 -0
  73. package/{integration/guides/star-wars-interactive-guide.js → e2e-legacy/help/guides/star-wars-interactive-guide.spec.js} +3 -2
  74. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
  75. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
  76. package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
  77. package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
  78. package/e2e-legacy/home/cookie-policy/cookie-policy.spec.js +182 -0
  79. package/e2e-legacy/home/documentation-link.spec.js +41 -0
  80. package/{integration → e2e-legacy}/home/google-analytics.spec.js +4 -6
  81. package/e2e-legacy/home/home-page-with-selected-repository.spec.js +69 -0
  82. package/e2e-legacy/home/home-page-without-repositories.spec.js +87 -0
  83. package/e2e-legacy/home/home-page-without-selected-repository.spec.js +59 -0
  84. package/{integration → e2e-legacy}/home/language-change.spec.js +2 -2
  85. package/e2e-legacy/home/rdf-resource-search.spec.js +160 -0
  86. package/e2e-legacy/home/view-resource-autocomplete.spec.js +65 -0
  87. package/{integration → e2e-legacy}/import/import-server-files.spec.js +5 -3
  88. package/{integration → e2e-legacy}/import/import-user-data-file-upload.spec.js +19 -13
  89. package/{integration → e2e-legacy}/import/import-user-data-text-snippet.spec.js +0 -2
  90. package/{integration → e2e-legacy}/import/import-user-data-url.spec.js +0 -23
  91. package/{integration → e2e-legacy}/import/import-user-data.spec.js +11 -4
  92. package/e2e-legacy/import/initial-state/import-page-with-selected-repositor.js +51 -0
  93. package/e2e-legacy/import/initial-state/import-page-with-selected-repository-without-imported-files.js +45 -0
  94. package/e2e-legacy/import/initial-state/import-page-without-selected-repository.spec.js +28 -0
  95. package/e2e-legacy/license/license-with-repository.spec.js +113 -0
  96. package/e2e-legacy/license/license-without-repository.spec.js +103 -0
  97. package/{integration → e2e-legacy}/license/license.spec.js +4 -4
  98. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-with-repository.spec.js +36 -0
  99. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-without-repository.spec.js +25 -0
  100. package/{integration/monitor/monitor.backup-and-restore.spec.js → e2e-legacy/monitor/backup-and-restore/backup-and-restore.spec.js} +2 -2
  101. package/{integration → e2e-legacy}/monitor/global-operation-statuses-component.spec.js +12 -5
  102. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-with-repository.spec.js +39 -0
  103. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-without-repository.spec.js +21 -0
  104. package/{integration/monitor → e2e-legacy/monitor/system}/monitor.resources.spec.js +3 -2
  105. package/e2e-legacy/monitor/system/system-monitoring-with-repository.spec.js +32 -0
  106. package/e2e-legacy/monitor/system/system-monitoring-without-repository.spec.js +20 -0
  107. package/e2e-legacy/not-found/not-found.spec.js +23 -0
  108. package/{integration → e2e-legacy}/repository/ontop-repository.spec.js +1 -1
  109. package/{integration → e2e-legacy}/repository/repositories.spec.js +37 -45
  110. package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +181 -0
  111. package/{integration → e2e-legacy}/resource/resource.spec.js +50 -20
  112. package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +84 -0
  113. package/e2e-legacy/setup/aclmanagement/acl-management-without-repositories.spec.js +21 -0
  114. package/{integration → e2e-legacy}/setup/aclmanagement/create-rule.spec.js +4 -0
  115. package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
  116. package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
  117. package/{integration/setup → e2e-legacy/setup/autocomplete}/autocomplete.spec.js +6 -7
  118. package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
  119. package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
  120. package/e2e-legacy/setup/connectors/connectors-initial-state-with-selected-repository.spec.js +41 -0
  121. package/e2e-legacy/setup/connectors/connectors-initial-state-without-repositories.spec.js +21 -0
  122. package/{integration → e2e-legacy}/setup/connectors-lucene.spec.js +26 -10
  123. package/{integration → e2e-legacy}/setup/jdbc/jdbc-create.spec.js +4 -4
  124. package/e2e-legacy/setup/jdbc/jdbc-with-repository.spec.js +39 -0
  125. package/e2e-legacy/setup/jdbc/jdbc-without-repository.spec.js +27 -0
  126. package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
  127. package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
  128. package/{integration/setup → e2e-legacy/setup/namespaces}/namespaces.spec.js +6 -5
  129. package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
  130. package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
  131. package/{integration/setup → e2e-legacy/setup/plugins}/plugins.spec.js +3 -3
  132. package/e2e-legacy/setup/rdf-rank/rdf-rank-with-repository.spec.js +40 -0
  133. package/e2e-legacy/setup/rdf-rank/rdf-rank-without-repository.spec.js +30 -0
  134. package/{integration/setup → e2e-legacy/setup/rdf-rank}/rdf-rank.spec.js +3 -5
  135. package/e2e-legacy/setup/repositories/repositories-view-with-repositories.spec.js +40 -0
  136. package/e2e-legacy/setup/repositories/repositories-view-without-repositories.spec.js +28 -0
  137. package/e2e-legacy/setup/settings/my-settings-initial-state.spec.js +86 -0
  138. package/e2e-legacy/setup/settings/my-settings.spec.js +207 -0
  139. package/{integration/setup/sparql-template-create.js → e2e-legacy/setup/sparql-template/sparql-template-create.spec.js} +16 -8
  140. package/e2e-legacy/setup/sparql-template/sparql-template-with-repository.spec.js +39 -0
  141. package/e2e-legacy/setup/sparql-template/sparql-template-without-repository.spec.js +29 -0
  142. package/{integration/setup → e2e-legacy/setup/sparql-template}/sparql-templates.spec.js +4 -4
  143. package/{integration/setup → e2e-legacy/setup/users-and-access}/user-and-access.spec.js +184 -87
  144. package/e2e-legacy/setup/users-and-access/users-and-access-initial-state.spec.js +25 -0
  145. package/{integration → e2e-legacy}/sparql-editor/actions/expand-results-over-sameas.spec.js +12 -12
  146. package/{integration → e2e-legacy}/sparql-editor/actions/include-inferred-statements.spec.js +6 -6
  147. package/{integration → e2e-legacy}/sparql-editor/actions/inferred-sameas.spec.js +10 -8
  148. package/{integration → e2e-legacy}/sparql-editor/actions/show-saved-queries.spec.js +1 -6
  149. package/{integration → e2e-legacy}/sparql-editor/saved-query/abort-query.spec.js +1 -1
  150. package/{integration → e2e-legacy}/sparql-editor/saved-query/edit-query.spec.js +3 -3
  151. package/{integration → e2e-legacy}/sparql-editor/saved-query/readonly-query.spec.js +15 -24
  152. package/{integration → e2e-legacy}/sparql-editor/saved-query/share-query.spec.js +32 -1
  153. package/e2e-legacy/sparql-editor/sparql-page-with-selected-repository.spec.js +33 -0
  154. package/e2e-legacy/sparql-editor/sparql-page-without-selected-repository.spec.js +26 -0
  155. package/{integration → e2e-legacy}/sparql-editor/yasgui-tabs.spec.js +2 -12
  156. package/e2e-legacy/sparql-editor/yasqe-themes.spec.js +54 -0
  157. package/{integration → e2e-legacy}/sparql-editor/yasr/pagination.spec.js +5 -18
  158. package/{integration → e2e-legacy}/sparql-editor/yasr/table-plugin.spec.js +1 -6
  159. package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +106 -0
  160. package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +80 -0
  161. package/{integration → e2e-legacy}/ttyg/agent-list.spec.js +53 -2
  162. package/{integration → e2e-legacy}/ttyg/agent-select-menu.spec.js +25 -2
  163. package/{integration → e2e-legacy}/ttyg/chat-list.spec.js +3 -14
  164. package/{integration → e2e-legacy}/ttyg/chat-panel.spec.js +74 -6
  165. package/{integration → e2e-legacy}/ttyg/clone-agent.spec.js +24 -2
  166. package/{integration → e2e-legacy}/ttyg/create-agent.spec.js +37 -66
  167. package/{integration → e2e-legacy}/ttyg/create-chat.spec.js +6 -4
  168. package/{integration → e2e-legacy}/ttyg/delete-agent.spec.js +1 -2
  169. package/e2e-legacy/ttyg/edit-agent.spec.js +178 -0
  170. package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
  171. package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
  172. package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
  173. package/{integration-flaky → e2e-legacy}/ttyg/ttyg-permission.spec.js +23 -17
  174. package/{integration → e2e-legacy}/ttyg/ttyg-view.spec.js +2 -2
  175. package/e2e-security/repository/url-with-repository-id-parameter.spec.js +57 -0
  176. package/e2e-security/setup/home/cookie-policy.spec.js +290 -0
  177. package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +193 -0
  178. package/e2e-security/setup/users-and-access/graphql-user.spec.js +126 -0
  179. package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +70 -0
  180. package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +99 -0
  181. package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
  182. package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
  183. package/eslint.config.js +39 -0
  184. package/fixtures/graph/graph-configurations.json +59 -0
  185. package/fixtures/guides/autocomplete/enable-autocomplete-guide.json +12 -0
  186. package/fixtures/guides/class-hierarchy/class-hierarchy-guide.json +35 -0
  187. package/fixtures/guides/class-relations/class-relations-guide.json +33 -0
  188. package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +15 -0
  189. package/fixtures/guides/connectors/connectors-guide.json +66 -0
  190. package/fixtures/guides/connectors/lucene-connector-guide.json +120 -0
  191. package/fixtures/guides/create-repository/create-repository-guide.json +25 -0
  192. package/fixtures/guides/create-similarity-index/create-similarity-index-guide.json +36 -0
  193. package/fixtures/guides/download-guide-resource/download-guide-resource-guide.json +25 -0
  194. package/fixtures/guides/download-resource.ttl +629 -0
  195. package/fixtures/guides/execute-sparql-query/execute-sparql-query-guide.json +54 -0
  196. package/fixtures/guides/import-rdf-file/confirm-duplicate-rdf-file-guide.json +30 -0
  197. package/fixtures/guides/import-rdf-file/import-rdf-file-guide.json +21 -0
  198. package/fixtures/guides/main-menu/main-menu-guide.json +98 -0
  199. package/fixtures/guides/navigation/navigation-guide.json +60 -0
  200. package/fixtures/guides/rdf-rank/rdf-rank-guide.json +18 -0
  201. package/fixtures/guides/table-graph-explore/table-graph-explore-guide.json +51 -0
  202. package/fixtures/guides/table-graph-explore/table-graph-explore-without-substeps-guide.json +25 -0
  203. package/fixtures/guides/ttyg/configure-agent/configure-ttyg-agent-guide.json +74 -0
  204. package/fixtures/guides/ttyg/conversation/ttyg-conversation-guide.json +26 -0
  205. package/fixtures/guides/ttyg/edit-ttyg-agent/edit-ttyg-agent-guide.json +22 -0
  206. package/fixtures/guides/visual-graph/visual-graph-config-guide.json +39 -0
  207. package/fixtures/guides/visual-graph/visual-graph-guide.json +85 -0
  208. package/fixtures/guides/welcome/welcome-guide.json +18 -0
  209. package/fixtures/repositories/free-access.json +13 -0
  210. package/fixtures/similarity/get-ttyg-similarity-instances.json +10 -0
  211. package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
  212. package/fixtures/ttyg/agent/get-agent-defaults.json +9 -2
  213. package/fixtures/ttyg/agent/get-agent-list-with-incompatible-agents.json +79 -0
  214. package/fixtures/ttyg/agent/get-similarity-indexes-for-another-repo.json +8 -0
  215. package/fixtures/ttyg/agent/get-similarity-indexes.json +22 -0
  216. package/fixtures/ttyg/chats/ask-question-cancel.json +12 -0
  217. package/fixtures/ttyg/chats/ask-question.json +12 -2
  218. package/fixtures/ttyg/chats/cancel-question-response.json +1 -0
  219. package/fixtures/ttyg/chats/create/create-chat-response.json +10 -14
  220. package/fixtures/ttyg/chats/create/question-response-after-chat-creation.json +29 -0
  221. package/fixtures/ttyg/chats/explain-response-1.json +2 -48
  222. package/fixtures/ttyg/chats/explain-response-3.json +12 -0
  223. package/fixtures/ttyg/chats/get-chat.json +6 -1
  224. package/npm-shrinkwrap.json +11004 -3815
  225. package/package.json +58 -42
  226. package/plugins/index.js +10 -5
  227. package/steps/application-steps.js +8 -6
  228. package/steps/base-steps.js +29 -0
  229. package/steps/class-views-steps.js +35 -7
  230. package/steps/cluster/cluster-page-steps.js +12 -2
  231. package/steps/cookie-policy/cookie-consent-banner-steps.js +21 -0
  232. package/steps/cookie-policy/cookie-policy-modal.steps.js +56 -0
  233. package/steps/error-page-steps.js +9 -0
  234. package/steps/error-steps.js +15 -3
  235. package/steps/explore/class-relationships-steps.js +64 -0
  236. package/steps/explore/graphs-overview-steps.js +21 -1
  237. package/steps/explore/similarity-index-create-steps.js +5 -3
  238. package/steps/explore/similarity-indexes-steps.js +16 -2
  239. package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
  240. package/steps/graphql/playground-editor-steps.js +46 -0
  241. package/steps/guides/guide-dialog-steps.js +81 -2
  242. package/steps/guides/guide-steps.js +54 -2
  243. package/steps/guides/movies-guide-steps.js +2 -1
  244. package/steps/header-steps.js +22 -0
  245. package/steps/home-steps.js +184 -77
  246. package/steps/import/import-resource-message-dialog.js +1 -1
  247. package/steps/import/import-steps.js +12 -16
  248. package/steps/import/import-user-data-steps.js +5 -1
  249. package/steps/language-selector-steps.js +2 -2
  250. package/steps/license-steps.js +91 -9
  251. package/steps/login-steps.js +31 -6
  252. package/steps/main-menu-steps.js +244 -19
  253. package/steps/modal-dialog-steps.js +32 -1
  254. package/steps/monitoring/backup-and-restore-steps.js +9 -3
  255. package/steps/monitoring/queries-and-updates-steps.js +20 -0
  256. package/steps/monitoring/system-monitoring-steps.js +40 -0
  257. package/steps/not-found/not-found-steps.js +23 -0
  258. package/steps/operations-statuses-component-steps.js +5 -10
  259. package/steps/rdf-resource-search-steps.js +55 -0
  260. package/steps/repository-selector-steps.js +3 -3
  261. package/steps/repository-steps.js +88 -18
  262. package/steps/resource/resource-steps.js +6 -10
  263. package/steps/rest-api-documentation-steps.js +15 -0
  264. package/steps/setup/acl-management-steps.js +18 -2
  265. package/steps/setup/autocomplete-steps.js +23 -8
  266. package/steps/setup/connectors-steps.js +32 -0
  267. package/steps/setup/jdbc-steps.js +18 -4
  268. package/steps/setup/namespace-steps.js +10 -7
  269. package/steps/setup/plugins-steps.js +12 -5
  270. package/steps/setup/rdf-rank-steps.js +23 -9
  271. package/steps/setup/settings-steps.js +101 -2
  272. package/steps/setup/sparql-templates-steps.js +19 -1
  273. package/steps/setup/user-and-access-steps.js +50 -16
  274. package/steps/shared-modal-dialog-steps.js +45 -0
  275. package/steps/sparql-editor-steps.js +21 -2
  276. package/steps/sparql-steps.js +13 -1
  277. package/steps/system-information-steps.js +70 -0
  278. package/steps/toaster-steps.js +18 -6
  279. package/steps/ttyg/chat-panel-steps.js +40 -2
  280. package/steps/ttyg/ttyg-agent-settings-modal.steps.js +136 -31
  281. package/steps/ttyg/ttyg-view-steps.js +80 -10
  282. package/steps/visual-graph-split-button-steps.js +45 -0
  283. package/steps/visual-graph-steps.js +106 -10
  284. package/steps/widgets/active-repository-widget-steps.js +29 -0
  285. package/steps/widgets/license-widget-steps.js +9 -0
  286. package/steps/widgets/repository-errors-widget-steps.js +21 -0
  287. package/steps/widgets/saved-sparql-queries-widget-steps.js +9 -0
  288. package/steps/yasgui/yasgui-loader.js +3 -3
  289. package/steps/yasgui/yasgui-steps.js +1 -1
  290. package/steps/yasgui/yasqe-steps.js +35 -4
  291. package/steps/yasgui/yasr-steps.js +35 -5
  292. package/stubs/autocomplete/autocomplete-stubs.js +7 -0
  293. package/stubs/browser-stubs.js +21 -0
  294. package/stubs/environment-stubs.js +9 -1
  295. package/stubs/graph-config-stubs.js +17 -0
  296. package/stubs/guides/guides-stubs.js +103 -0
  297. package/stubs/license-stubs.js +51 -0
  298. package/stubs/repositories/repositories-stubs.js +180 -75
  299. package/stubs/saved-queries-stubs.js +5 -0
  300. package/stubs/security-stubs.js +12 -0
  301. package/stubs/similarity-index-stubs.js +4 -0
  302. package/stubs/sparql-stubs.js +10 -0
  303. package/stubs/ttyg/ttyg-stubs.js +64 -15
  304. package/stubs/yasgui/query-stubs.js +5 -1
  305. package/support/commands.js +22 -1
  306. package/support/connector-commands.js +13 -0
  307. package/support/e2e-security.js +9 -0
  308. package/support/{index.js → e2e.js} +9 -3
  309. package/support/repository-commands.js +29 -4
  310. package/support/settings-commands.js +33 -1
  311. package/support/url-commands.js +13 -0
  312. package/support/user-commands.js +9 -4
  313. package/utils/html-util.js +24 -4
  314. package/Dockerfile +0 -11
  315. package/fixtures/locale-en.json +0 -3342
  316. package/integration/explore/similarity-index/similarity-index-create.spec.js +0 -333
  317. package/integration/explore/similarity-index/similarity-index.spec.js +0 -88
  318. package/integration/explore/similarity-index/similarity.spec.js +0 -628
  319. package/integration/guides/movies-interactive-guide.spec.js +0 -73
  320. package/integration/home/cookie-policy.spec.js +0 -90
  321. package/integration/home/documentation-link.spec.js +0 -60
  322. package/integration/home/language-selector.spec.js +0 -19
  323. package/integration/home/rdf-resource-search.spec.js +0 -177
  324. package/integration/home/view-resource-autocomplete.spec.js +0 -52
  325. package/integration/home/workbench.home.spec.js +0 -30
  326. package/integration/monitor/monitor.queries.spec.js +0 -31
  327. package/integration/setup/my-settings.spec.js +0 -289
  328. package/integration/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -57
  329. package/integration/ttyg/edit-agent.spec.js +0 -99
  330. package/integration-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -54
  331. package/stubs/repositories-stub.js +0 -73
  332. package/{integration-flaky → e2e-flaky}/import/import.server.files.spec.js +0 -0
  333. package/{integration-flaky → e2e-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
  334. package/{integration-flaky → e2e-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
  335. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +0 -0
  336. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +0 -0
  337. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
  338. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration.spec.js +0 -0
  339. package/{integration → e2e-legacy}/cluster/cluster-legend.spec.js +0 -0
  340. package/{integration → e2e-legacy}/cluster/edit-cluster-nodes-modal.spec.js +0 -0
  341. package/{integration → e2e-legacy}/graphql/activate-deactivate-graphql-endpoint.spec.js +0 -0
  342. package/{integration → e2e-legacy}/graphql/delete-graphql-endpoint.spec.js +0 -0
  343. package/{integration → e2e-legacy}/graphql/export-graphql-endpoint-definition.spec.js +0 -0
  344. package/{integration → e2e-legacy}/graphql/set-default-graphql-endpoint.spec.js +0 -0
  345. package/{integration/help → e2e-legacy/help/system-information}/system-information.spec.js +0 -0
  346. package/{integration → e2e-legacy}/home/create-repository.spec.js +0 -0
  347. package/{integration → e2e-legacy}/import/import-server-files-batch-operations.spec.js +0 -0
  348. package/{integration → e2e-legacy}/import/import-user-data-settings-dialog.spec.js +0 -0
  349. package/{integration → e2e-legacy}/import/import-view.spec.js +0 -0
  350. package/{integration → e2e-legacy}/repository/attach-remote-location.spec.js +1 -1
  351. /package/{integration → e2e-legacy}/repository/repository-commands.spec.js +0 -0
  352. /package/{integration → e2e-legacy}/setup/aclmanagement/delete-rule.spec.js +0 -0
  353. /package/{integration → e2e-legacy}/setup/aclmanagement/edit-rule.spec.js +0 -0
  354. /package/{integration → e2e-legacy}/setup/aclmanagement/render-rules.spec.js +0 -0
  355. /package/{integration → e2e-legacy}/setup/aclmanagement/reorder-rules.spec.js +0 -0
  356. /package/{integration → e2e-legacy}/setup/aclmanagement/revert-rules.spec.js +0 -0
  357. /package/{integration → e2e-legacy}/setup/aclmanagement/scopes.spec.js +0 -0
  358. /package/{integration → e2e-legacy}/setup/aclmanagement/update-rules.spec.js +0 -0
  359. /package/{integration → e2e-legacy}/setup/jdbc/jdbc.spec.js +0 -0
  360. /package/{integration → e2e-legacy}/sparql-editor/actions/execute-query.spec.js +0 -0
  361. /package/{integration → e2e-legacy}/sparql-editor/actions/save-query.spec.js +0 -0
  362. /package/{integration → e2e-legacy}/sparql-editor/internationalization.spec.js +0 -0
  363. /package/{integration → e2e-legacy}/sparql-editor/saved-query/delete-query.spec.js +0 -0
  364. /package/{integration → e2e-legacy}/sparql-editor/sparql-editor.spec.js +0 -0
  365. /package/{integration → e2e-legacy}/sparql-editor/yasr/download-as.spec.js +0 -0
@@ -18,6 +18,57 @@ export class LicenseStubs {
18
18
  }).as('enterpriseLicense');
19
19
  }
20
20
 
21
+ static stubLicenseNotSet() {
22
+ cy.intercept('GET', '/rest/graphdb-settings/license', {
23
+ statusCode: 200,
24
+ body:{
25
+ "installationId": null,
26
+ "message": "No license was set",
27
+ "productType": "unknown",
28
+ "licenseCapabilities": [],
29
+ "present": false,
30
+ "valid": false,
31
+ "version": "Invalid",
32
+ "product": "Invalid",
33
+ "licensee": "Invalid",
34
+ "typeOfUse": "Invalid",
35
+ "maxCpuCores": 0,
36
+ "usageRestriction": "Invalid",
37
+ "expiryDate": 0,
38
+ "latestPublicationDate": 0
39
+ }
40
+ }).as('licenseNotSet');
41
+ }
42
+
43
+ static stubNoValidLicense() {
44
+ cy.intercept('GET', '/rest/graphdb-settings/license', {
45
+ statusCode: 200,
46
+ body:{
47
+ "installationId": null,
48
+ "message": "The license key expired on 2025-01-31",
49
+ "valid": false,
50
+ "productType": "enterprise",
51
+ "licenseCapabilities": [
52
+ "Lucene connector",
53
+ "Solr connector",
54
+ "Elasticsearch connector",
55
+ "OpenSearch connector",
56
+ "Kafka connector",
57
+ "Cluster"
58
+ ],
59
+ "version": null,
60
+ "product": "GRAPHDB_ENTERPRISE",
61
+ "licensee": "ONTOTEXT_INTERNAL",
62
+ "typeOfUse": "Non-commercial research only",
63
+ "usageRestriction": null,
64
+ "expiryDate": 1738274400000,
65
+ "latestPublicationDate": null,
66
+ "maxCpuCores": null,
67
+ "present": true
68
+ }
69
+ }).as('noValidLicense');
70
+ }
71
+
21
72
  static stubEvaluationLicense() {
22
73
  cy.intercept('GET', '/rest/graphdb-settings/license', {
23
74
  statusCode: 200,
@@ -1,16 +1,25 @@
1
- import {Stubs} from "../stubs";
2
- import {REPOSITORIES_URL} from "../../support/repository-commands";
3
- import {RepositoriesStub} from "../repositories-stub";
1
+ import {Stubs} from '../stubs';
2
+ import {REPOSITORIES_URL} from '../../support/repository-commands';
3
+ import {GlobalOperationsStatusesStub} from '../global-operations-statuses-stub.js';
4
+ import repoTemplate from "../../fixtures/repo-template.json";
4
5
 
5
6
  export class RepositoriesStubs extends Stubs {
6
7
  static stubRepositories(withDelay = 0, fixture = '/repositories/get-repositories.json') {
7
8
  RepositoriesStubs.stubGetQueryResponse('/rest/repositories/all', fixture, 'get-all-repositories', withDelay);
8
9
  }
9
10
 
11
+ static stubFreeAccess(withDelay = 0, fixture = '/repositories/free-access.json') {
12
+ RepositoriesStubs.stubGetQueryResponse('/rest/security/free-access', fixture, 'free-access', withDelay);
13
+ }
14
+
10
15
  static spyGetRepositories() {
11
16
  cy.intercept('GET', '/rest/repositories/all').as('getRepositories');
12
17
  }
13
18
 
19
+ static spyGetActiveLocations() {
20
+ cy.intercept('GET', '/rest/locations/active').as('getActiveLocations');
21
+ }
22
+
14
23
  static stubLocations(withDelay = 0) {
15
24
  RepositoriesStubs.stubQueryResponse('/rest/locations', '/repositories/get-locations.json', 'get-locations', withDelay);
16
25
  }
@@ -27,52 +36,52 @@ export class RepositoriesStubs extends Stubs {
27
36
  this.interceptRepository(repositoryId, 200);
28
37
  }
29
38
 
30
- static stubGetRepositoryConfig(repositoryId, fixture = '/repositories/get-repository-config.json', widthDelay = 0) {
39
+ static stubGetRepositoryConfig(repositoryId, fixture = '/repositories/get-repository-config.json') {
31
40
  RepositoriesStubs.stubQueryResponse(`/rest/repositories/${repositoryId}`, fixture, 'get-repository-config');
32
41
  }
33
42
 
34
43
  static getFixtureParams() {
35
44
  return {
36
- "propertiesFile": {
37
- "name": "propertiesFile",
38
- "label": "JDBC properties file",
39
- "value": "repositories/ontop/ontop_jdbc.properties"
45
+ propertiesFile: {
46
+ name: 'propertiesFile',
47
+ label: 'JDBC properties file',
48
+ value: 'repositories/ontop/ontop_jdbc.properties',
40
49
  },
41
- "lensesFile": {
42
- "name": "lensesFile",
43
- "label": "Lenses file",
44
- "value": ""
50
+ lensesFile: {
51
+ name: 'lensesFile',
52
+ label: 'Lenses file',
53
+ value: '',
45
54
  },
46
- "isShacl": {
47
- "name": "isShacl",
48
- "label": "Enable SHACL validation",
49
- "value": "false"
55
+ isShacl: {
56
+ name: 'isShacl',
57
+ label: 'Enable SHACL validation',
58
+ value: 'false',
50
59
  },
51
- "owlFile": {
52
- "name": "owlFile",
53
- "label": "Ontology file",
54
- "value": ""
60
+ owlFile: {
61
+ name: 'owlFile',
62
+ label: 'Ontology file',
63
+ value: '',
55
64
  },
56
- "member": {
57
- "name": "member",
58
- "label": "FedX repo members",
59
- "value": []
65
+ member: {
66
+ name: 'member',
67
+ label: 'FedX repo members',
68
+ value: [],
60
69
  },
61
- "constraintFile": {
62
- "name": "constraintFile",
63
- "label": "Constraint file",
64
- "value": ""
70
+ constraintFile: {
71
+ name: 'constraintFile',
72
+ label: 'Constraint file',
73
+ value: '',
65
74
  },
66
- "obdaFile": {
67
- "name": "obdaFile",
68
- "label": "OBDA or R2RML file",
69
- "value": "repositories/ontop/university-complete.obda"
75
+ obdaFile: {
76
+ name: 'obdaFile',
77
+ label: 'OBDA or R2RML file',
78
+ value: 'repositories/ontop/university-complete.obda',
79
+ },
80
+ dbMetadataFile: {
81
+ name: 'dbMetadataFile',
82
+ label: 'DB metadata file',
83
+ value: '',
70
84
  },
71
- "dbMetadataFile": {
72
- "name": "dbMetadataFile",
73
- "label": "DB metadata file",
74
- "value": ""
75
- }
76
85
  };
77
86
  }
78
87
 
@@ -80,14 +89,14 @@ export class RepositoriesStubs extends Stubs {
80
89
  cy.intercept(`${REPOSITORIES_URL}/${id}?location=`, {
81
90
  statusCode,
82
91
  body: {
83
- "id": id,
84
- "title": "",
85
- "type": "ontop",
86
- "sesameType": "graphdb:OntopRepository",
87
- "location": "",
88
- "hostName": "localhost",
89
- "params": { ...this.getFixtureParams(), ...extraParams }
90
- }
92
+ id: id,
93
+ title: '',
94
+ type: 'ontop',
95
+ sesameType: 'graphdb:OntopRepository',
96
+ location: '',
97
+ hostName: 'localhost',
98
+ params: {...this.getFixtureParams(), ...extraParams},
99
+ },
91
100
  });
92
101
  }
93
102
 
@@ -95,33 +104,39 @@ export class RepositoriesStubs extends Stubs {
95
104
  cy.intercept(REPOSITORIES_URL + '/all', {
96
105
  statusCode: 200,
97
106
  body: {
98
- "": [
107
+ '': [
99
108
  {
100
- "id": repositoryId,
101
- "title": "",
102
- "uri": "http://address:5423/repositories/ontop",
103
- "externalUrl": "http://address:5423/repositories/ontop",
104
- "local": true,
105
- "type": "ontop",
106
- "sesameType": "graphdb:OntopRepository",
107
- "location": "",
108
- "readable": true,
109
- "writable": true,
110
- "unsupported": false,
111
- "state": "ACTIVE"
112
- }
113
- ]
114
- }
109
+ id: repositoryId,
110
+ title: '',
111
+ uri: 'http://address:5423/repositories/ontop',
112
+ externalUrl: 'http://address:5423/repositories/ontop',
113
+ local: true,
114
+ type: 'ontop',
115
+ sesameType: 'graphdb:OntopRepository',
116
+ location: '',
117
+ readable: true,
118
+ writable: true,
119
+ unsupported: false,
120
+ state: 'ACTIVE',
121
+ },
122
+ ],
123
+ },
115
124
  }).as('getMockRepositories');
116
125
 
117
126
  cy.intercept(`${REPOSITORIES_URL}/${repositoryId}/restart?location=*`, {
118
127
  statusCode: 200,
119
- body: {}
128
+ body: {},
120
129
  }).as('restartRepository');
121
130
 
122
- RepositoriesStub.stubBaseEndpoints(repositoryId, [{
123
- "type": "literal",
124
- "value": "http://jena.apache.org/ARQ/function/aggregate#"
131
+ RepositoriesStubs.stubBaseEndpoints(repositoryId, [{
132
+ prefix: {
133
+ type: 'literal',
134
+ value: 'agg',
135
+ },
136
+ namespace: {
137
+ type: 'literal',
138
+ value: 'http://jena.apache.org/ARQ/function/aggregate#',
139
+ },
125
140
  }]);
126
141
  }
127
142
 
@@ -129,17 +144,107 @@ export class RepositoriesStubs extends Stubs {
129
144
  cy.intercept(`${REPOSITORIES_URL}/ontop/jdbc-properties?driverType=*`, {
130
145
  statusCode: 200,
131
146
  body: {
132
- "id": repositoryId,
133
- "title": "",
134
- "type": "ontop",
135
- "sesameType": "graphdb:OntopRepository",
136
- "location": "",
137
- "hostName": "localhost",
138
- "driverClass": "postgresql",
139
- "params": this.getFixtureParams()
140
- }
147
+ id: repositoryId,
148
+ title: '',
149
+ type: 'ontop',
150
+ sesameType: 'graphdb:OntopRepository',
151
+ location: '',
152
+ hostName: 'localhost',
153
+ driverClass: 'postgresql',
154
+ params: this.getFixtureParams(),
155
+ },
141
156
  }).as('saveChanges');
142
157
 
143
- cy.intercept(`/rest/repositories/${repositoryId}`, { statusCode: 200 });
158
+ cy.intercept(`/rest/repositories/${repositoryId}`, {statusCode: 200});
159
+ }
160
+
161
+ static stubOntopRepository(repositoryId) {
162
+ const alRepositoryResponse = {
163
+ '': [{
164
+ 'id': repositoryId,
165
+ 'title': '',
166
+ 'uri': `http://b:9000/repositories/${repositoryId}`,
167
+ 'externalUrl': `http://b:9000/repositories/${repositoryId}`,
168
+ 'local': true,
169
+ 'type': 'ontop',
170
+ 'sesameType': 'graphdb:OntopRepository',
171
+ 'location': '',
172
+ 'readable': true,
173
+ 'writable': true,
174
+ 'unsupported': false,
175
+ 'state': 'RUNNING',
176
+ }],
177
+ };
178
+
179
+ cy.intercept('GET', '/rest/repositories/all', {
180
+ statusCode: 200,
181
+ body: alRepositoryResponse,
182
+ }).as('all-repositories');
183
+ }
184
+
185
+ /**
186
+ * @param {string} repositoryId
187
+ * @param {[]}namespaces - An instance of array object have to be:
188
+ * {
189
+ * "prefix" : {
190
+ * "type" : "literal",
191
+ * "value" : "agg"
192
+ * },
193
+ * "namespace" : {
194
+ * "type" : "literal",
195
+ * "value" : "http://jena.apache.org/ARQ/function/aggregate#"
196
+ * }
197
+ * }
198
+ */
199
+ static stubNameSpaces(repositoryId, namespaces = []) {
200
+ const namespacesResponse = {
201
+ 'head': {
202
+ 'vars': [
203
+ 'prefix',
204
+ 'namespace',
205
+ ],
206
+ },
207
+ 'results': {
208
+ 'bindings': namespaces,
209
+ },
210
+ };
211
+ cy.intercept('GET', `/repositories/${repositoryId}/namespaces`, {
212
+ statusCode: 200,
213
+ body: namespacesResponse,
214
+ }).as('namespaces-response');
215
+ }
216
+
217
+ static stubAutocomplete() {
218
+ cy.intercept(`/rest/autocomplete/enabled`, {
219
+ statusCode: 200,
220
+ body: {},
221
+ });
222
+ }
223
+
224
+ static stubBaseEndpoints(repositoryId, namespaces) {
225
+ RepositoriesStubs.stubNameSpaces(repositoryId, namespaces);
226
+ RepositoriesStubs.stubAutocomplete();
227
+ GlobalOperationsStatusesStub.stubNoOperationsResponse('starwars');
228
+ }
229
+
230
+ static stubRepositoryModel(repositoryId, options = {}) {
231
+ const body = Cypress._.defaultsDeep(
232
+ { id: repositoryId, ...options },
233
+ repoTemplate
234
+ );
235
+ cy.intercept('GET', `/rest/repositories/${repositoryId}`, {
236
+ statusCode: 200,
237
+ body
238
+ }).as('repository-model');
239
+ }
240
+
241
+ static stubFtsSearchDisabled(repositoryId) {
242
+ RepositoriesStubs.stubRepositoryModel(repositoryId, {
243
+ params: {
244
+ enableFtsIndex: {
245
+ value: 'false'
246
+ }
247
+ }
248
+ });
144
249
  }
145
250
  }
@@ -0,0 +1,5 @@
1
+ export class SavedQueriesStubs {
2
+ static spyGetSavedQueries() {
3
+ cy.intercept('GET', '/rest/sparql/saved-queries').as('getSavedQueries');
4
+ }
5
+ }
@@ -1,17 +1,29 @@
1
1
  export class SecurityStubs {
2
2
 
3
+ static spyOnAuthenticatedUser() {
4
+ cy.intercept('/rest/security/authenticated-user').as('get-authenticated-user')
5
+ }
6
+
3
7
  static stubUserSecurity(infer = true, sameAs = true, userName = 'admin') {
4
8
  cy.intercept(`rest/security/users/${userName}`, (req) => {
5
9
  req.reply(SecurityStubs.getAdminResponse(infer, sameAs));
6
10
  }).as('security-get-admin');
7
11
  }
8
12
 
13
+ static spyOnUserCreate() {
14
+ cy.intercept('POST', 'rest/security/users/*').as('create-user');
15
+ }
16
+
9
17
  static stubInferAndSameAsDefaults() {
10
18
  cy.intercept('rest/security/all', (req) => {
11
19
  req.reply(SecurityStubs.getResponseSecurityEnabled());
12
20
  }).as('security-all');
13
21
  }
14
22
 
23
+ static spyOnUserUpdate(userName) {
24
+ cy.intercept('PATCH', `rest/security/users/${userName}`).as('updateUser');
25
+ }
26
+
15
27
  static stubUpdateUserData(userName) {
16
28
  cy.intercept('PATCH', `/rest/security/users/${userName}`, {
17
29
  statusCode: 200,
@@ -29,4 +29,8 @@ export class SimilarityIndexStubs extends Stubs {
29
29
  }).as('get-ttyg-similarity-indexes');
30
30
  });
31
31
  }
32
+
33
+ static stubTTYGSimilarityInstances(fixture = '/similarity/get-ttyg-similarity-instances.json', delay = 0) {
34
+ this.stubQueryResponse('/rest/similarity/**/indexes', fixture, 'get-ttyg-similarity-instances', delay);
35
+ }
32
36
  }
@@ -0,0 +1,10 @@
1
+ import {Stubs} from './stubs.js';
2
+
3
+ export class SparqlStubs extends Stubs {
4
+ static spyAddKnownPrefixes() {
5
+ cy.intercept('/rest/sparql/add-known-prefixes', {
6
+ method: 'POST',
7
+ body: 'PREFIX voc: <https://swapi.co/vocabulary/> SELECT ?name ?height WHERE { ?character voc:height ?height; rdfs:label ?name. FILTER(?name = "Luke Skywalker" || ?name = "Leia Organa") }'
8
+ }).as('addKnownPrefixes')
9
+ }
10
+ }
@@ -86,6 +86,18 @@ export class TTYGStubs extends Stubs {
86
86
  }).as('get-agent-list');
87
87
  }
88
88
 
89
+ static getSimilarityIndexesForRepo(repositoryId, fixture = '/ttyg/agent/get-similarity-indexes.json', delay = 0) {
90
+ cy.intercept('GET', `rest/similarity/${repositoryId}/indexes`, {
91
+ fixture: fixture,
92
+ statusCode: 200,
93
+ delay: delay
94
+ }).as('get-similarity-indexes');
95
+ }
96
+
97
+ static stubAgentListWithIncompatibleGet(delay = 0) {
98
+ this.stubAgentListGet('/ttyg/agent/get-agent-list-with-incompatible-agents.json', delay);
99
+ }
100
+
89
101
  static stubAgentGet(fixture = '/ttyg/agent/get-agent.json', delay = 0) {
90
102
  cy.intercept('GET', '/rest/chat/agents/*', {
91
103
  fixture: fixture,
@@ -94,12 +106,10 @@ export class TTYGStubs extends Stubs {
94
106
  }).as('get-agent');
95
107
  }
96
108
 
97
- static stubAgentListGetError() {
109
+ static stubAgentListGetError(error = 'Internal Server Error') {
98
110
  cy.intercept('GET', '/rest/chat/agents', {
99
111
  statusCode: 500,
100
- response: {
101
- error: 'Internal Server Error'
102
- }
112
+ body: error
103
113
  }).as('get-agent-list-error');
104
114
  }
105
115
 
@@ -131,30 +141,60 @@ export class TTYGStubs extends Stubs {
131
141
  }).as('delete-agent');
132
142
  }
133
143
 
134
- static stubAgentDefaultsGet() {
144
+ static stubAgentDefaultsGet(fixture = '/ttyg/agent/get-agent-defaults.json') {
135
145
  cy.intercept('GET', '/rest/chat/agents/default', {
136
- fixture: '/ttyg/agent/get-agent-defaults.json',
146
+ fixture,
137
147
  statusCode: 200
138
148
  }).as('get-agent-defaults');
139
149
  }
140
150
 
141
151
  static stubAnswerQuestion(fixture = '/ttyg/chats/ask-question.json') {
142
- cy.intercept('POST', '/rest/chat/conversations', {
152
+ cy.intercept('POST', '/rest/chat/chats/**/question', {
143
153
  fixture,
144
154
  statusCode: 200
145
155
  }).as('get-agent-defaults');
146
156
  }
147
157
 
148
- static stubCrateNewChat(fixture = 'ttyg/chats/create/create-chat-response.json') {
149
- cy.fixture(fixture).then((fixtureData) => {
158
+ static stubAnswerQuestionWithDelay(fixture = '/ttyg/chats/ask-question-cancel.json', delay = 1000) {
159
+ cy.intercept({
160
+ method: 'POST',
161
+ url: '/rest/chat/chats/**/question',
162
+ }, (req) => {
163
+ req.reply({
164
+ fixture,
165
+ statusCode: 200,
166
+ delay
167
+ });
168
+ }).as('get-cancelled-answer');
169
+ }
170
+
171
+ static stubCancelQuestion(fixture = '/ttyg/chats/cancel-question-response.json', delay = 1000) {
172
+ cy.intercept({
173
+ method: 'POST',
174
+ url: 'rest/chat/chats/**/cancel'
175
+ }, (req) => {
176
+ req.reply({
177
+ fixture,
178
+ statusCode: 200,
179
+ delay
180
+ });
181
+ }).as('get-cancel-response');
182
+ }
183
+
184
+ static stubCreateNewChat() {
185
+ cy.intercept('POST', '/rest/chat/chats', {
186
+ fixture: 'ttyg/chats/create/create-chat-response.json',
187
+ statusCode: 200
188
+ }).as('ask-first-chat-question');
189
+
190
+ cy.fixture('ttyg/chats/create/question-response-after-chat-creation.json').then((fixtureData) => {
150
191
  const today = Math.floor(Date.now() / 1000) + '';
151
192
  const body = JSON.stringify(fixtureData).replace(/"creationDate"/g, today);
152
- cy.intercept('POST', '/rest/chat/conversations', {
193
+ cy.intercept('POST', '/rest/chat/chats/**/question', {
153
194
  statusCode: 200,
154
195
  body: JSON.parse(body)
155
196
  }).as('create-chat');
156
197
  });
157
-
158
198
  }
159
199
 
160
200
  static stubExplainResponse(fixture = '/ttyg/chats/explain-response-1.json') {
@@ -164,10 +204,19 @@ export class TTYGStubs extends Stubs {
164
204
  }).as('explain-response');
165
205
  }
166
206
 
167
- static stubAutocompleteResponse(fixture = '/ttyg/autocomplete-response.json') {
168
- cy.intercept('GET', '/rest/autocomplete/query?*', {
169
- fixture,
207
+ static getExternalUrl() {
208
+ cy.intercept('GET', 'rest/info/external-url', {
170
209
  statusCode: 200,
171
- }).as('autocomplete-suggestions');
210
+ body: 'http://user-pc:7200'
211
+ }).as('external-url');
212
+ }
213
+
214
+ static stubForApiType(type = 'default') {
215
+ const fixtures = {
216
+ default: '/ttyg/agent/get-agent-defaults.json',
217
+ assistants: '/ttyg/agent/get-agent-defaults-assistant-api.json'
218
+ };
219
+ this.stubAgentListGet('/ttyg/agent/get-agent-list-autocomplete-query.json');
220
+ this.stubAgentDefaultsGet(fixtures[type]);
172
221
  }
173
222
  }
@@ -85,7 +85,7 @@ export class QueryStubs {
85
85
  }).as(`query-${page}_${offset}_${limit}_${returnResult}`);
86
86
  }
87
87
 
88
- static stubTotalQueryCount(repositoryId, totalElements, resultType, delay = 0) {
88
+ static stubTotalQueryCount(repositoryId, totalElements, resultType) {
89
89
  const result = QueryStubs.createEmptyResponse(resultType);
90
90
  result.results.bindings = [QueryStubs.createTotalResultsCount(resultType, totalElements)];
91
91
  cy.intercept(`/repositories/${repositoryId}`, (req) => {
@@ -221,6 +221,10 @@ export class QueryStubs {
221
221
  }
222
222
  };
223
223
  }
224
+
225
+ static interceptSavedQueryCreation() {
226
+ cy.intercept('POST', '/rest/sparql/saved-queries').as('saveQuery');
227
+ }
224
228
  }
225
229
 
226
230
  export class QueryStubDescription {
@@ -6,7 +6,9 @@ import './settings-commands';
6
6
  import './visual-graph-commands';
7
7
  import './user-commands';
8
8
  import './security-command';
9
+ import './connector-commands';
9
10
  import 'cypress-wait-until';
11
+ import './url-commands.js';
10
12
 
11
13
  /**
12
14
  * Loads fixtures from the given paths recursively and returns them as an array.
@@ -82,7 +84,26 @@ Cypress.Commands.add("form_request", (url, formData) => {
82
84
  * @author Sava Savov sava.savov@ontotext.com
83
85
  */
84
86
 
85
- Cypress.Commands.add("hideToastContainer", (url, formData) => {
87
+ Cypress.Commands.add("hideToastContainer", () => {
86
88
  cy.get('.toast-success')
87
89
  .then((toastContainer) => toastContainer && toastContainer.remove());
88
90
  });
91
+
92
+
93
+ /**
94
+ * Get element by testId. Can be chained to another cypress command, or used directly
95
+ *
96
+ * @Example
97
+ * MySteps.getSomething().getByTestId('my-test-id');
98
+ * Or
99
+ * cy.getByTestId('my-test-id');
100
+ */
101
+ Cypress.Commands.add('getByTestId', {prevSubject: 'optional'}, (subject, testId) => {
102
+ return subject
103
+ ? cy.wrap(subject).find(buildTestIdAttr(testId))
104
+ : cy.get(buildTestIdAttr(testId));
105
+ });
106
+
107
+ function buildTestIdAttr(testId) {
108
+ return `[data-test="${testId}"]`;
109
+ }
@@ -0,0 +1,13 @@
1
+ const REPOSITORIES_URL = '/repositories/';
2
+ const STATEMENTS_URL = '/statements';
3
+
4
+ Cypress.Commands.add('createConnector', (repositoryId, connectorType, connectorName) => {
5
+ cy.request({
6
+ headers: {
7
+ 'content-type': 'application/x-www-form-urlencoded'
8
+ },
9
+ method: 'POST',
10
+ url: REPOSITORIES_URL + repositoryId + STATEMENTS_URL,
11
+ body: `update=PREFIX%20%3A%3Chttp%3A%2F%2Fwww.ontotext.com%2Fconnectors%2F${connectorType}%23%3E%0APREFIX%20inst%3A%3Chttp%3A%2F%2Fwww.ontotext.com%2Fconnectors%2F${connectorType}%2Finstance%23%3E%0AINSERT%20DATA%20%7B%0A%09inst%3A${connectorName}%20%3AcreateConnector%20'''%0A%7B%0A%20%20%22fields%22%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22fieldName%22%3A%20%22sss%22%2C%0A%20%20%20%20%20%20%22propertyChain%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%22rdf%3Alabel%22%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22indexed%22%3A%20true%2C%0A%20%20%20%20%20%20%22stored%22%3A%20true%2C%0A%20%20%20%20%20%20%22analyzed%22%3A%20true%2C%0A%20%20%20%20%20%20%22multivalued%22%3A%20true%2C%0A%20%20%20%20%20%20%22ignoreInvalidValues%22%3A%20false%2C%0A%20%20%20%20%20%20%22facet%22%3A%20true%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22fieldName%22%3A%20%22description%22%2C%0A%20%20%20%20%20%20%22propertyChain%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%22rdfs%3Acomment%22%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22indexed%22%3A%20true%2C%0A%20%20%20%20%20%20%22stored%22%3A%20true%2C%0A%20%20%20%20%20%20%22analyzed%22%3A%20true%2C%0A%20%20%20%20%20%20%22multivalued%22%3A%20false%2C%0A%20%20%20%20%20%20%22ignoreInvalidValues%22%3A%20false%2C%0A%20%20%20%20%20%20%22facet%22%3A%20false%0A%20%20%20%20%7D%0A%20%20%5D%2C%0A%20%20%22languages%22%3A%20%5B%5D%2C%0A%20%20%22types%22%3A%20%5B%0A%20%20%20%20%22rdf%3Alabel%22%0A%20%20%5D%2C%0A%20%20%22readonly%22%3A%20false%2C%0A%20%20%22detectFields%22%3A%20false%2C%0A%20%20%22importGraph%22%3A%20false%2C%0A%20%20%22skipInitialIndexing%22%3A%20false%2C%0A%20%20%22boostProperties%22%3A%20%5B%5D%2C%0A%20%20%22stripMarkup%22%3A%20false%0A%7D%0A'''%20.%0A%7D%0A`
12
+ }).should((response) => expect(response.status).to.equal(204));
13
+ });
@@ -0,0 +1,9 @@
1
+ import './e2e';
2
+
3
+ beforeEach(() => {
4
+ cy.loginAsAdmin();
5
+ // Switch off security after each test to ensure that tests are independent and don't affect each other.
6
+ // For example, if security is enabled in one test, it can cause other tests that don't expect security to fail.
7
+ cy.switchOffSecurity(true);
8
+ cy.switchOffFreeAccess(true);
9
+ });