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
@@ -2,28 +2,22 @@ import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
2
2
  import {TTYGStubs} from "../../stubs/ttyg/ttyg-stubs";
3
3
  import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
4
4
  import {TtygAgentSettingsModalSteps} from "../../steps/ttyg/ttyg-agent-settings-modal.steps";
5
- import {SimilarityIndexStubs} from "../../stubs/similarity-index-stubs";
6
5
  import {ConnectorStubs} from "../../stubs/connector-stubs";
7
- import {ModalDialogSteps} from "../../steps/modal-dialog-steps";
8
- import {RepositoriesStub} from "../../stubs/repositories-stub";
6
+ import {ModalDialogSteps} from "../../steps/modal-dialog-steps"
9
7
  import {AlertDialogSteps} from "../../steps/alert-dialog-steps";
8
+ import {ApplicationSteps} from '../../steps/application-steps.js';
10
9
 
11
10
  describe('TTYG create new agent', () => {
12
11
  const repositoryId = 'starwars';
13
12
 
14
13
  beforeEach(() => {
15
14
  RepositoriesStubs.stubRepositories(0, '/repositories/get-ttyg-repositories.json');
16
- RepositoriesStub.stubBaseEndpoints(repositoryId);
15
+ RepositoriesStubs.stubBaseEndpoints(repositoryId);
17
16
  cy.presetRepository(repositoryId);
18
17
  TTYGStubs.stubAgentDefaultsGet();
19
18
  });
20
19
 
21
- it('Should be able to cancel the new agent creation on the no agents view', {
22
- retries: {
23
- runMode: 1,
24
- openMode: 0
25
- }
26
- }, () => {
20
+ it('Should be able to cancel the new agent creation on the no agents view', () => {
27
21
  TTYGStubs.stubChatsListGetNoResults();
28
22
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
29
23
  // Given I have opened the ttyg page
@@ -39,12 +33,7 @@ describe('TTYG create new agent', () => {
39
33
  TTYGViewSteps.getNoAgentsView().should('be.visible');
40
34
  });
41
35
 
42
- it('Should be able to create a new agent with SPARQL extraction method on the no agents view', {
43
- retries: {
44
- runMode: 1,
45
- openMode: 0
46
- }
47
- }, () => {
36
+ it('Should be able to create a new agent with SPARQL extraction method on the no agents view', () => {
48
37
  TTYGStubs.stubChatsListGetNoResults();
49
38
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json', 1000);
50
39
  // Given I have opened the ttyg page
@@ -68,10 +57,12 @@ describe('TTYG create new agent', () => {
68
57
  // enable SPARQL extraction method and disable it again to check the error message for the extraction methods
69
58
  TtygAgentSettingsModalSteps.enableSparqlExtractionMethod();
70
59
  // The component here is the bootstrap collapse component, so we need to wait for the animation to finish, otherwise the test might fail randomly
60
+ // eslint-disable-next-line cypress/no-unnecessary-waiting
71
61
  cy.wait(1000);
72
62
  TtygAgentSettingsModalSteps.getSparqlExtractionMethodPanel().should('be.visible');
73
63
  TtygAgentSettingsModalSteps.disableSparqlExtractionMethod();
74
64
  // The component here is the bootstrap collapse component, so we need to wait for the animation to finish, otherwise the test might fail randomly
65
+ // eslint-disable-next-line cypress/no-unnecessary-waiting
75
66
  cy.wait(1000);
76
67
  TtygAgentSettingsModalSteps.getSparqlExtractionMethodPanel().should('not.exist');
77
68
  TtygAgentSettingsModalSteps.getSaveAgentButton().should('be.disabled');
@@ -105,12 +96,12 @@ describe('TTYG create new agent', () => {
105
96
 
106
97
  // Validate the other agent settings
107
98
 
108
- // gpt model
109
- TtygAgentSettingsModalSteps.getGptModelField().should('have.value', 'gpt-4o');
110
- TtygAgentSettingsModalSteps.clearGptModel();
99
+ // LLM model
100
+ TtygAgentSettingsModalSteps.getLLMModelField().should('have.value', 'gpt-4o');
101
+ TtygAgentSettingsModalSteps.clearLLMModel();
111
102
  TtygAgentSettingsModalSteps.getSaveAgentButton().should('be.disabled');
112
- TtygAgentSettingsModalSteps.getGptModelError().should('be.visible').and('contain', 'This field is required');
113
- TtygAgentSettingsModalSteps.typeGptModel('gpt-4o');
103
+ TtygAgentSettingsModalSteps.getLLMModelError().should('be.visible').and('contain', 'This field is required');
104
+ TtygAgentSettingsModalSteps.typeLLMModel('gpt-4o');
114
105
 
115
106
  // temperature
116
107
  TtygAgentSettingsModalSteps.setTemperature('0.2');
@@ -143,11 +134,13 @@ describe('TTYG create new agent', () => {
143
134
  TtygAgentSettingsModalSteps.saveAgent();
144
135
  TtygAgentSettingsModalSteps.getCreatingAgentLoader().should('be.visible');
145
136
  cy.wait('@create-agent').then((interception) => {
137
+ // eslint-disable-next-line no-undef
146
138
  assert.deepEqual(interception.request.body, {
147
139
  "id": "id",
148
140
  "name": "Test Agent",
149
141
  "repositoryId": "starwars",
150
142
  "model": "gpt-4o",
143
+ "contextSize": 128000,
151
144
  "temperature": "0.2",
152
145
  "topP": "0.2",
153
146
  "seed": 0,
@@ -179,12 +172,7 @@ describe('TTYG create new agent', () => {
179
172
  TTYGViewSteps.getAgent(0).should('contain', 'Test Agent').and('contain', 'starwars');
180
173
  });
181
174
 
182
- it('Should require FTS to be enabled for selected repository when creating agent with FTS extraction method', {
183
- retries: {
184
- runMode: 1,
185
- openMode: 0
186
- }
187
- }, () => {
175
+ it('Should require FTS to be enabled for selected repository when creating agent with FTS extraction method', () => {
188
176
  RepositoriesStubs.stubGetRepositoryConfig(repositoryId, '/repositories/get-repository-config-starwars-disabled-fts.json');
189
177
  TTYGStubs.stubChatsListGetNoResults();
190
178
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
@@ -201,12 +189,7 @@ describe('TTYG create new agent', () => {
201
189
  TtygAgentSettingsModalSteps.getFtsDisabledHelp().should('be.visible');
202
190
  });
203
191
 
204
- it('Should be able to create agent with FTS extraction method', {
205
- retries: {
206
- runMode: 1,
207
- openMode: 0
208
- }
209
- }, () => {
192
+ it('Should be able to create agent with FTS extraction method', () => {
210
193
  RepositoriesStubs.stubGetRepositoryConfig(repositoryId, '/repositories/get-repository-config-starwars-enabled-fts.json');
211
194
  TTYGStubs.stubChatsListGetNoResults();
212
195
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
@@ -242,15 +225,10 @@ describe('TTYG create new agent', () => {
242
225
  TTYGViewSteps.getAgent(0).should('contain', 'Test Agent').and('contain', 'starwars');
243
226
  });
244
227
 
245
- it('Should require similarity index in order to create agent with similarity search method', {
246
- retries: {
247
- runMode: 1,
248
- openMode: 0
249
- }
250
- }, () => {
228
+ it('Should require similarity index in order to create agent with similarity search method', () => {
251
229
  TTYGStubs.stubChatsListGetNoResults();
252
230
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
253
- SimilarityIndexStubs.stubGetSimilarityIndexes('/similarity/get-similarity-indexes-0.json');
231
+ TTYGStubs.getSimilarityIndexesForRepo();
254
232
  // Given I have opened the ttyg page
255
233
  TTYGViewSteps.visit();
256
234
  cy.wait('@get-all-repositories');
@@ -265,15 +243,10 @@ describe('TTYG create new agent', () => {
265
243
  TtygAgentSettingsModalSteps.getSaveAgentButton().should('be.disabled');
266
244
  });
267
245
 
268
- it('Should be able to configure and create agent with similarity index search method', {
269
- retries: {
270
- runMode: 1,
271
- openMode: 0
272
- }
273
- }, () => {
246
+ it('Should be able to configure and create agent with similarity index search method', () => {
274
247
  TTYGStubs.stubChatsListGetNoResults();
275
248
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
276
- SimilarityIndexStubs.stubGetSimilarityIndexes();
249
+ TTYGStubs.getSimilarityIndexesForRepo(repositoryId);
277
250
  // Given I have opened the ttyg page
278
251
  TTYGViewSteps.visit();
279
252
  cy.wait('@get-all-repositories');
@@ -285,8 +258,10 @@ describe('TTYG create new agent', () => {
285
258
  TtygAgentSettingsModalSteps.selectRepository(repositoryId);
286
259
  // And I enable the similarity search extraction method
287
260
  TtygAgentSettingsModalSteps.enableSimilaritySearchMethodPanel();
288
- // Then I expect similarity index to be selected
289
- TtygAgentSettingsModalSteps.getSimilarityIndexField().should('have.value', '0');
261
+ // Then I expect the first similarity search index instance to be selected
262
+ TtygAgentSettingsModalSteps.getSimilarityIndexSelectedOption().should('have.text', 'otkg-vector-new');
263
+ // And I expect that no vector fields from that instance should be selected
264
+ TtygAgentSettingsModalSteps.getSimilarityIndexSelectedVectorFieldsValue().should('contain', 'Select field');
290
265
  // Then agent save button should be enabled
291
266
  TtygAgentSettingsModalSteps.getSaveAgentButton().should('be.enabled');
292
267
  // When I set the similarity index threshold
@@ -296,6 +271,7 @@ describe('TTYG create new agent', () => {
296
271
  TtygAgentSettingsModalSteps.getSimilarityIndexMaxTriplesField().should('have.value', '');
297
272
  TtygAgentSettingsModalSteps.setSimilarityIndexMaxTriples('100');
298
273
  // When I save the agent
274
+ // !!! This stub is not for agent with similarity search method, but it's ok for this test !!!
299
275
  TTYGStubs.stubAgentCreate();
300
276
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-new-agent.json');
301
277
  TtygAgentSettingsModalSteps.saveAgent();
@@ -310,12 +286,7 @@ describe('TTYG create new agent', () => {
310
286
  TTYGViewSteps.getAgent(0).should('contain', 'Test Agent').and('contain', 'starwars');
311
287
  });
312
288
 
313
- it('Should require retrieval connector in order to create an agent with GPT retrieval connector method', {
314
- retries: {
315
- runMode: 1,
316
- openMode: 0
317
- }
318
- }, () => {
289
+ it('Should require retrieval connector in order to create an agent with GPT retrieval connector method', () => {
319
290
  TTYGStubs.stubChatsListGetNoResults();
320
291
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
321
292
  ConnectorStubs.stubGetConnectors();
@@ -337,12 +308,7 @@ describe('TTYG create new agent', () => {
337
308
  TtygAgentSettingsModalSteps.getSaveAgentButton().should('be.disabled');
338
309
  });
339
310
 
340
- it('Should be able to configure and create an agent with retrieval connector method', {
341
- retries: {
342
- runMode: 1,
343
- openMode: 0
344
- }
345
- }, () => {
311
+ it('Should be able to configure and create an agent with retrieval connector method', () => {
346
312
  TTYGStubs.stubChatsListGetNoResults();
347
313
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
348
314
  ConnectorStubs.stubGetConnectors();
@@ -431,7 +397,7 @@ describe('TTYG create new agent', () => {
431
397
  TTYGStubs.stubChatsListGetNoResults();
432
398
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
433
399
  ConnectorStubs.stubGetConnectors();
434
- SimilarityIndexStubs.stubTTYGSimilarityIndexes();
400
+ TTYGStubs.getSimilarityIndexesForRepo(repositoryId );
435
401
  // Given I have opened the ttyg page
436
402
  TTYGViewSteps.visit();
437
403
  cy.wait('@get-all-repositories');
@@ -443,16 +409,21 @@ describe('TTYG create new agent', () => {
443
409
 
444
410
  // When I open Similarity index name panel
445
411
  TtygAgentSettingsModalSteps.enableSimilaritySearchMethodPanel();
412
+ cy.wait('@get-similarity-indexes');
446
413
  // Then I expect to see the first index selected.
447
- TtygAgentSettingsModalSteps.verifySimilarityIndexSelected('similarity_index_starwars_one');
414
+ TtygAgentSettingsModalSteps.verifySimilarityIndexSelected('otkg-vector-new');
448
415
 
449
416
  // When I select another repository that have similarity connectors
417
+ TTYGStubs.getSimilarityIndexesForRepo('biomarkers', '/ttyg/agent/get-similarity-indexes-for-another-repo.json');
450
418
  TtygAgentSettingsModalSteps.selectRepository('biomarkers');
419
+ cy.wait('@get-similarity-indexes');
451
420
  // Then I expect to see the first similarity index from new repository selected.
452
- TtygAgentSettingsModalSteps.verifySimilarityIndexSelected('similarity_index_biomarkers_one');
421
+ TtygAgentSettingsModalSteps.verifySimilarityIndexSelected('biomarkers-vector');
453
422
 
454
423
  // When I select a repository that not have similarity indexes
455
424
  TtygAgentSettingsModalSteps.selectRepository('ttyg-repo-1725518186812');
425
+ // Then I expect an error message to be open for similarity search index missing
426
+ ApplicationSteps.getErrorNotifications().should('be.visible');
456
427
  // Then I expect help message to be open
457
428
  TtygAgentSettingsModalSteps.getSimilaritySearchIndexMissingHelp().should('be.visible');
458
429
 
@@ -480,7 +451,7 @@ describe('TTYG create new agent', () => {
480
451
  TtygAgentSettingsModalSteps.setTemperature('1.2');
481
452
  TtygAgentSettingsModalSteps.getTemperatureSliderField().should('have.value', '1.2');
482
453
  // Then I should see a warning message
483
- TtygAgentSettingsModalSteps.getTemperatureWarning().should('be.visible');
454
+ TtygAgentSettingsModalSteps.scrollToTemperatureWarning().should('be.visible');
484
455
  TtygAgentSettingsModalSteps.getTemperatureField().should('have.class', 'has-warning');
485
456
  // When I change the temperature to value below 1.0
486
457
  TtygAgentSettingsModalSteps.setTemperature('0.9');
@@ -521,7 +492,7 @@ describe('TTYG create new agent', () => {
521
492
  // When I open agent settings dialog and make all steps so the create button became enabled.
522
493
  TTYGStubs.stubChatsListGetNoResults();
523
494
  TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
524
- SimilarityIndexStubs.stubGetSimilarityIndexes('/similarity/get-similarity-indexes-0.json');
495
+ TTYGStubs.getSimilarityIndexesForRepo();
525
496
  TTYGViewSteps.visit();
526
497
  cy.wait('@get-all-repositories');
527
498
  TTYGViewSteps.createFirstAgent();
@@ -1,5 +1,4 @@
1
1
  import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
2
- import {RepositoriesStub} from "../../stubs/repositories-stub";
3
2
  import {TTYGStubs} from "../../stubs/ttyg/ttyg-stubs";
4
3
  import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
5
4
  import {ChatPanelSteps} from "../../steps/ttyg/chat-panel-steps";
@@ -9,7 +8,7 @@ describe('TTYG create chat', () => {
9
8
  beforeEach(() => {
10
9
  // Create an actual repository to prevent stubbing all background requests that are not related to the ttyg view
11
10
  RepositoriesStubs.stubRepositories(0, '/repositories/get-ttyg-repositories.json');
12
- RepositoriesStub.stubBaseEndpoints('starwars');
11
+ RepositoriesStubs.stubBaseEndpoints('starwars');
13
12
  cy.presetRepository('starwars');
14
13
  TTYGStubs.stubChatsListGet("/ttyg/chats/create/get-chats-before-create.json");
15
14
  TTYGStubs.stubAgentListGet();
@@ -38,16 +37,19 @@ describe('TTYG create chat', () => {
38
37
  // When I type a question
39
38
  ChatPanelSteps.getQuestionInputElement()
40
39
  .should('be.visible')
41
- .and('not.be.disabled')
40
+ .and('not.have.attr', 'disabled');
41
+ ChatPanelSteps.getQuestionInputElement()
42
42
  .type('Who is Han Solo?');
43
43
 
44
+
44
45
  // Then I expect the "Ask" button be active.
45
46
  ChatPanelSteps.getAskButtonElement().should('be.enabled');
46
47
 
47
48
  // When I click on "Ask" button.
48
- TTYGStubs.stubCrateNewChat();
49
+ TTYGStubs.stubCreateNewChat();
49
50
  ChatPanelSteps.getAskButtonElement().scrollIntoView().click();
50
51
  cy.wait('@create-chat');
52
+ cy.wait('@ask-first-chat-question');
51
53
 
52
54
  // Then I expect new chat to be created in a new group "Today" and be selected
53
55
  TTYGViewSteps.getChatGroup(0).should('contain', 'Today');
@@ -2,14 +2,13 @@ import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
2
2
  import {TTYGStubs} from "../../stubs/ttyg/ttyg-stubs";
3
3
  import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
4
4
  import {ModalDialogSteps} from "../../steps/modal-dialog-steps";
5
- import {RepositoriesStub} from "../../stubs/repositories-stub";
6
5
 
7
6
  describe('TTYG delete agent', () => {
8
7
  const repositoryId = 'starwars';
9
8
 
10
9
  beforeEach(() => {
11
10
  RepositoriesStubs.stubRepositories(0, '/repositories/get-ttyg-repositories.json');
12
- RepositoriesStub.stubBaseEndpoints(repositoryId);
11
+ RepositoriesStubs.stubBaseEndpoints(repositoryId);
13
12
  cy.presetRepository(repositoryId);
14
13
  });
15
14
 
@@ -0,0 +1,178 @@
1
+ import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
2
+ import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
3
+ import {TTYGStubs} from "../../stubs/ttyg/ttyg-stubs";
4
+ import {TtygAgentSettingsModalSteps} from "../../steps/ttyg/ttyg-agent-settings-modal.steps";
5
+ import {ToasterSteps} from "../../steps/toaster-steps";
6
+ import {AutocompleteStubs} from "../../stubs/autocomplete/autocomplete-stubs";
7
+ import {ModalDialogSteps} from "../../steps/modal-dialog-steps";
8
+
9
+ describe('TTYG edit an agent', () => {
10
+ const repositoryId = 'starwars';
11
+
12
+ beforeEach(() => {
13
+ RepositoriesStubs.stubRepositories(0, '/repositories/get-ttyg-repositories.json');
14
+ RepositoriesStubs.stubBaseEndpoints(repositoryId);
15
+ RepositoriesStubs.stubRepositoryModel(repositoryId);
16
+ cy.presetRepository(repositoryId);
17
+ TTYGStubs.stubAgentDefaultsGet();
18
+ });
19
+
20
+ it(' should be able to edit an agent.', () => {
21
+ TTYGStubs.stubChatsListGet();
22
+ TTYGStubs.stubAgentListGet();
23
+ TTYGStubs.stubChatGet();
24
+ // Given I have opened the ttyg page
25
+ TTYGViewSteps.visit();
26
+ cy.wait('@get-chat-list');
27
+ cy.wait('@get-agent-list');
28
+ cy.wait('@get-chat');
29
+ // When I select an agent that don't have activated additional extraction method
30
+ TTYGViewSteps.openAgentSettingsModalForAgent(0);
31
+
32
+ // Then I expect that the iri discovery checkbox is not checked
33
+ TtygAgentSettingsModalSteps.getIriDiscoverySearchCheckbox().should('not.be.checked');
34
+
35
+ // When I check the iri discovery checkbox
36
+ TtygAgentSettingsModalSteps.checkIriDiscoverySearchCheckbox();
37
+
38
+ // and save the agent.
39
+ TTYGStubs.stubAgentEdit();
40
+ TtygAgentSettingsModalSteps.saveAgent();
41
+ cy.wait('@edit-agent').then((interception) => {
42
+ expect(interception.request.body.additionalExtractionMethods[0].method).to.equal('iri_discovery_search');
43
+ });
44
+ // Then I expect the agent to be saved
45
+ ToasterSteps.verifySuccess('The agent \'agent-1\' was saved successfully.');
46
+ });
47
+
48
+ it('should not be able to edit an agent if an extraction method is selected but the precondition has failed', () => {
49
+ TTYGStubs.stubChatsListGet();
50
+ TTYGStubs.stubAgentListGet();
51
+ TTYGStubs.stubChatGet();
52
+ RepositoriesStubs.stubFtsSearchDisabled(repositoryId);
53
+ // GIVEN: I have opened the TTYG page
54
+ TTYGViewSteps.visit();
55
+ cy.wait('@get-chat-list');
56
+ cy.wait('@get-agent-list');
57
+ cy.wait('@get-chat');
58
+ // WHEN: I try to edit an agent that has the FTS extraction method enabled, but FTS is disabled in the repository
59
+ TTYGViewSteps.openAgentSettingsModalForAgent(0);
60
+
61
+ // THEN: The Save Agent button should be disabled
62
+ TtygAgentSettingsModalSteps.getSaveAgentButton().should('be.disabled');
63
+ });
64
+
65
+ it('should be able to edit Autocomplete extraction method option', () => {
66
+ TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-autocomplete-query.json');
67
+ // Given I have opened the ttyg page
68
+ TTYGViewSteps.visit();
69
+ cy.wait('@get-agent-list');
70
+ // When I select an agent that don't have activated additional extraction method
71
+ TTYGViewSteps.openAgentSettingsModalForAgent(0);
72
+
73
+ // Then I expect that the autocomplete iri discovery checkbox is not checked
74
+ TtygAgentSettingsModalSteps.getAutocompleteSearchCheckbox().should('not.be.checked');
75
+
76
+ // When I check the autocomplete iri discovery checkbox
77
+ TtygAgentSettingsModalSteps.checkAutocompleteSearchCheckbox();
78
+
79
+ // Then I can set a value for the max results
80
+ TtygAgentSettingsModalSteps.setAutocompleteMaxResults(2);
81
+
82
+ // When I save the agent
83
+ TTYGStubs.stubAgentEdit();
84
+ TtygAgentSettingsModalSteps.saveAgent();
85
+ cy.wait('@edit-agent').then((interception) => {
86
+ const additionalMethod = interception.request.body.additionalExtractionMethods[0];
87
+ expect(additionalMethod).to.not.be.undefined;
88
+ expect(additionalMethod.method).to.equal('autocomplete_iri_discovery_search');
89
+ expect(additionalMethod.limit).to.equal(2);
90
+ });
91
+ // Then I expect the agent to be saved
92
+ ToasterSteps.verifySuccess('The agent \'Test autocomplete extraction agent\' was saved successfully.');
93
+ TTYGViewSteps.editCurrentAgent();
94
+ TtygAgentSettingsModalSteps.toggleAutocompleteSearchPanel();
95
+
96
+ // When: I select a repository with disabled autocomplete
97
+ AutocompleteStubs.stubAutocompleteEnabled(false);
98
+ TtygAgentSettingsModalSteps.selectRepository('biomarkers');
99
+ // Then: I expect to see a disabled message
100
+ TtygAgentSettingsModalSteps.getAutocompleteDisabledMessage().should('be.visible');
101
+
102
+ // When: I click on the link to enable autocomplete
103
+ TtygAgentSettingsModalSteps.clickOnEnableFTSSearch();
104
+ // Then: I expect a confirmation dialog displayed.
105
+ ModalDialogSteps.getDialogBody().contains('If you proceed with enabling the autocomplete index, GraphDB will open in a new tab and switch to the biomarkers repository.');
106
+
107
+ // When: I don't confirm the dialog
108
+ ModalDialogSteps.cancelDialogWithBody('If you proceed with enabling the autocomplete index, GraphDB will open in a new tab and switch to the biomarkers repository.');
109
+ // Then: I expect the dialog be disappeared and the disabled message still visible
110
+ TtygAgentSettingsModalSteps.getAutocompleteDisabledMessage().should('be.visible');
111
+ });
112
+
113
+ it('should allow copy of External integration configuration', () => {
114
+ TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-autocomplete-query.json');
115
+ TTYGStubs.getExternalUrl();
116
+ // Given I have opened the ttyg page
117
+ TTYGViewSteps.visit();
118
+ cy.wait('@get-agent-list');
119
+ // When I select an agent
120
+ TTYGViewSteps.openAgentSettingsModalForAgent(0);
121
+
122
+ // Then I should see the External integration configuration button
123
+ TtygAgentSettingsModalSteps.getExtIntegrationConfigBtn().should('be.visible');
124
+ // When I click the button
125
+ TtygAgentSettingsModalSteps.openExtIntegrationConfig();
126
+ cy.wait('@external-url');
127
+ // The url dialog should open
128
+ TtygAgentSettingsModalSteps.getExternalIntegrationModal().should('be.visible');
129
+ // The dialog should have all the fields
130
+ TtygAgentSettingsModalSteps.getAgentUrlField().invoke('val')
131
+ .then((val) => {
132
+ expect(val).to.equal('asst_G8EtHyT8kAGeDmCa3Nh6y74v');
133
+ });
134
+
135
+ TtygAgentSettingsModalSteps.getMethodUrlField().invoke('val')
136
+ .then((val) => {
137
+ expect(val).to.equal('http://user-pc:7200/rest/llm/tool/ttyg/asst_G8EtHyT8kAGeDmCa3Nh6y74v');
138
+ });
139
+
140
+ TtygAgentSettingsModalSteps.getDifyUrlField().invoke('val')
141
+ .then((val) => {
142
+ expect(val).to.equal('http://user-pc:7200/rest/llm/ttyg/asst_G8EtHyT8kAGeDmCa3Nh6y74v/dify');
143
+ });
144
+ });
145
+
146
+ it('should show Context size if not openai-assistants API', () => {
147
+ // Open TTYG page and select first agent
148
+ TTYGViewSteps.visit();
149
+ TTYGStubs.stubForApiType('default');
150
+ cy.wait('@get-agent-list');
151
+ TTYGViewSteps.openAgentSettingsModalForAgent(0);
152
+
153
+ // Then I should see the Context size field
154
+ TtygAgentSettingsModalSteps.getContextSizeField().should('be.visible');
155
+ // When I clear the value
156
+ TtygAgentSettingsModalSteps.clearContextSize();
157
+ // And click another field
158
+ TtygAgentSettingsModalSteps.clickLLMModelField();
159
+ // Then the error for required should appear
160
+ TtygAgentSettingsModalSteps.getContextSizeError().should('be.visible');
161
+ // When I type a value
162
+ TtygAgentSettingsModalSteps.enterContextSize('120000');
163
+ // Then the error disappears
164
+ TtygAgentSettingsModalSteps.getContextSizeError().should('not.exist');
165
+ // I should be allowed to reset the value of the Context size
166
+ TtygAgentSettingsModalSteps.resetContextSizeValue();
167
+ });
168
+
169
+ it('should NOT show Context size if openai-assistants API', () => {
170
+ // Open TTYG page and select first agent
171
+ TTYGViewSteps.visit();
172
+ TTYGStubs.stubForApiType('assistants');
173
+ cy.wait('@get-agent-list');
174
+ TTYGViewSteps.openAgentSettingsModalForAgent(0);
175
+ // Then I should see the Context size field
176
+ TtygAgentSettingsModalSteps.getContextSizeField().should('not.exist');
177
+ });
178
+ });
@@ -0,0 +1,46 @@
1
+ import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
2
+ import {MainMenuSteps} from "../../steps/main-menu-steps";
3
+ import HomeSteps from "../../steps/home-steps";
4
+ import {TTYGStubs} from "../../stubs/ttyg/ttyg-stubs";
5
+
6
+ function verifyStateWithApiKey() {
7
+ TTYGViewSteps.getChatListComponent().should('be.visible');
8
+ TTYGViewSteps.getChatPanel().should('be.visible');
9
+ TTYGViewSteps.getAgentsMenu().should('be.visible');
10
+ TTYGViewSteps.getEditCurrentAgentButton().should('be.visible');
11
+ TTYGViewSteps.getHelpButton().should('be.visible');
12
+ TTYGViewSteps.getCreateAgentButton().should('be.visible');
13
+ TTYGViewSteps.getToggleAgentsSidebarButton().should('be.visible');
14
+ }
15
+
16
+ describe('TTYG initial state with API key', () => {
17
+ let repositoryId;
18
+
19
+ beforeEach(() => {
20
+ repositoryId = 'ttyg-api-key-init-' + Date.now();
21
+ cy.createRepository({id: repositoryId});
22
+ cy.presetRepository(repositoryId);
23
+ TTYGStubs.stubAgentListGet();
24
+ TTYGStubs.stubChatsListGet();
25
+ TTYGStubs.stubChatGet();
26
+ });
27
+
28
+ afterEach(() => {
29
+ cy.deleteRepository(repositoryId);
30
+ });
31
+
32
+ it('Should display the correct initial state when navigating via URL', () => {
33
+ // Given, I visit the TTYG page via URL
34
+ TTYGViewSteps.visit();
35
+ // Then,
36
+ verifyStateWithApiKey();
37
+ });
38
+
39
+ it('Should display the correct initial state when navigating via the navigation menu', () => {
40
+ // Given, I visit the TTYG page via the navigation menu
41
+ HomeSteps.visit();
42
+ MainMenuSteps.clickOnTTYG();
43
+ // Then,
44
+ verifyStateWithApiKey();
45
+ });
46
+ });
@@ -0,0 +1,45 @@
1
+ import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
2
+ import {MainMenuSteps} from "../../steps/main-menu-steps";
3
+ import HomeSteps from "../../steps/home-steps";
4
+
5
+ function verifyStateWithSelectedRepository() {
6
+ TTYGViewSteps.getNoAgentsView().should('be.visible');
7
+ TTYGViewSteps.getCreateFirstAgentButton().should('be.visible');
8
+ TTYGViewSteps.getTtygInfoMessage().should('be.visible');
9
+ TTYGViewSteps.getTtygagentMessage().should('be.visible');
10
+ TTYGViewSteps.getApiKeyMessage().should('be.visible');
11
+ TTYGViewSteps.getMissingApiKeyToastMessage()
12
+ .should('be.visible')
13
+ .and('contain', 'Set the config property \'graphdb.llm.api-key\' to your LLM API key');
14
+ }
15
+
16
+ // TODO: skipped until BE releases an updated version with the new API key.
17
+ // https://graphwise.atlassian.net/browse/GDB-12738
18
+ describe.skip('TTYG initial state with selected repository', () => {
19
+ let repositoryId;
20
+
21
+ beforeEach(() => {
22
+ repositoryId = 'ttyg-init-' + Date.now();
23
+ cy.createRepository({id: repositoryId});
24
+ cy.presetRepository(repositoryId);
25
+ });
26
+
27
+ afterEach(() => {
28
+ cy.deleteRepository(repositoryId);
29
+ });
30
+
31
+ it('Should display the correct initial state when navigating via URL', () => {
32
+ // Given, I visit the TTYG page via URL with a repository selected
33
+ TTYGViewSteps.visit();
34
+ // Then,
35
+ verifyStateWithSelectedRepository();
36
+ });
37
+
38
+ it('Should display the correct initial state when navigating via the navigation menu', () => {
39
+ // Given, I visit the TTYG page via the navigation menu with a repository selected
40
+ HomeSteps.visit();
41
+ MainMenuSteps.clickOnTTYG();
42
+ // Then,
43
+ verifyStateWithSelectedRepository();
44
+ });
45
+ });
@@ -0,0 +1,21 @@
1
+ import {MainMenuSteps} from "../../steps/main-menu-steps";
2
+ import HomeSteps from "../../steps/home-steps";
3
+ import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
4
+ import {ErrorSteps} from "../../steps/error-steps";
5
+
6
+ describe('TTYG initial state without selected repository', () => {
7
+ it('Should display the correct initial state when navigating via URL', () => {
8
+ // Given, I visit the TTYG page via URL without a repository selected
9
+ TTYGViewSteps.visit();
10
+ // Then,
11
+ ErrorSteps.verifyNoConnectedRepoMessage();
12
+ });
13
+
14
+ it('Should display the correct initial state when navigating via the navigation menu', () => {
15
+ // Given, I visit the TTYG page via the navigation menu without a repository selected
16
+ HomeSteps.visit();
17
+ MainMenuSteps.clickOnTTYG();
18
+ // Then,
19
+ ErrorSteps.verifyNoConnectedRepoMessage();
20
+ });
21
+ });