graphdb-workbench-tests 3.4.0-TR2 → 3.4.0-TR4

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 (363) hide show
  1. package/Dockerfile +11 -0
  2. package/cypress-flaky.config.js +6 -20
  3. package/cypress.config.js +6 -45
  4. package/fixtures/locale-en.json +3342 -0
  5. package/fixtures/ttyg/agent/get-agent-defaults.json +2 -9
  6. package/fixtures/ttyg/chats/ask-question.json +2 -12
  7. package/fixtures/ttyg/chats/create/create-chat-response.json +14 -10
  8. package/fixtures/ttyg/chats/explain-response-1.json +48 -2
  9. package/fixtures/ttyg/chats/get-chat.json +1 -6
  10. package/{e2e-legacy → integration}/cluster/cluster-states.spec.js +3 -3
  11. package/{e2e-legacy/explore/class-hierarchy → integration/explore}/class.hierarchy.spec.js +1 -1
  12. package/{e2e-legacy/explore/class-relationships/class-relationships.spec.js → integration/explore/class.relationships.spec.js} +50 -20
  13. package/{e2e-legacy/explore/graphs-overview → integration/explore}/graphs.overview.spec.js +4 -4
  14. package/integration/explore/similarity-index/similarity-index-create.spec.js +333 -0
  15. package/integration/explore/similarity-index/similarity-index.spec.js +88 -0
  16. package/integration/explore/similarity-index/similarity.spec.js +628 -0
  17. package/{e2e-legacy → integration}/explore/visual-graph/graphs-config.spec.js +10 -5
  18. package/{e2e-legacy → integration}/explore/visual-graph/visual-graph-node-labels.spec.js +2 -14
  19. package/{e2e-legacy → integration}/explore/visual-graph/visual.graph.spec.js +96 -75
  20. package/{e2e-legacy → integration}/graphql/create-graphql-endpoint.spec.js +2 -0
  21. package/{e2e-legacy → integration}/graphql/edit-graphql-enpoint.spec.js +1 -1
  22. package/{e2e-legacy → integration}/graphql/filter-graphql-endpoints-on-management-view.spec.js +1 -1
  23. package/{e2e-legacy → integration}/graphql/graphql-endpoint-management-view.spec.js +4 -4
  24. package/{e2e-legacy → integration}/graphql/graphql-playground.spec.js +1 -1
  25. package/{e2e-legacy → integration}/graphql/import-graphql-endpoint-definitions.spec.js +6 -0
  26. package/integration/guides/movies-interactive-guide.spec.js +73 -0
  27. package/{e2e-legacy/help/guides/star-wars-interactive-guide.spec.js → integration/guides/star-wars-interactive-guide.js} +2 -3
  28. package/integration/home/cookie-policy.spec.js +90 -0
  29. package/integration/home/documentation-link.spec.js +60 -0
  30. package/{e2e-legacy → integration}/home/google-analytics.spec.js +6 -4
  31. package/{e2e-legacy → integration}/home/language-change.spec.js +2 -2
  32. package/integration/home/language-selector.spec.js +19 -0
  33. package/integration/home/rdf-resource-search.spec.js +177 -0
  34. package/integration/home/view-resource-autocomplete.spec.js +52 -0
  35. package/integration/home/workbench.home.spec.js +30 -0
  36. package/{e2e-legacy → integration}/import/import-server-files.spec.js +3 -5
  37. package/{e2e-legacy → integration}/import/import-user-data-file-upload.spec.js +13 -19
  38. package/{e2e-legacy → integration}/import/import-user-data-text-snippet.spec.js +2 -0
  39. package/{e2e-legacy → integration}/import/import-user-data-url.spec.js +23 -0
  40. package/{e2e-legacy → integration}/import/import-user-data.spec.js +4 -11
  41. package/{e2e-legacy → integration}/license/license.spec.js +4 -4
  42. package/{e2e-legacy → integration}/monitor/global-operation-statuses-component.spec.js +5 -12
  43. package/{e2e-legacy/monitor/backup-and-restore/backup-and-restore.spec.js → integration/monitor/monitor.backup-and-restore.spec.js} +2 -2
  44. package/integration/monitor/monitor.queries.spec.js +31 -0
  45. package/{e2e-legacy/monitor/system → integration/monitor}/monitor.resources.spec.js +2 -3
  46. package/{e2e-legacy → integration}/repository/ontop-repository.spec.js +1 -1
  47. package/{e2e-legacy → integration}/repository/repositories.spec.js +45 -37
  48. package/{e2e-legacy → integration}/resource/resource.spec.js +7 -17
  49. package/{e2e-legacy → integration}/setup/aclmanagement/create-rule.spec.js +0 -4
  50. package/{e2e-legacy/setup/autocomplete → integration/setup}/autocomplete.spec.js +7 -6
  51. package/{e2e-legacy → integration}/setup/connectors-lucene.spec.js +10 -26
  52. package/{e2e-legacy → integration}/setup/jdbc/jdbc-create.spec.js +4 -4
  53. package/integration/setup/my-settings.spec.js +289 -0
  54. package/{e2e-legacy/setup/namespaces → integration/setup}/namespaces.spec.js +5 -6
  55. package/{e2e-legacy/setup/plugins → integration/setup}/plugins.spec.js +3 -3
  56. package/{e2e-legacy/setup/rdf-rank → integration/setup}/rdf-rank.spec.js +5 -3
  57. package/{e2e-legacy/setup/sparql-template/sparql-template-create.spec.js → integration/setup/sparql-template-create.js} +8 -16
  58. package/{e2e-legacy/setup/sparql-template → integration/setup}/sparql-templates.spec.js +4 -4
  59. package/{e2e-legacy/setup/users-and-access → integration/setup}/user-and-access.spec.js +87 -184
  60. package/{e2e-legacy → integration}/sparql-editor/actions/expand-results-over-sameas.spec.js +12 -12
  61. package/{e2e-legacy → integration}/sparql-editor/actions/include-inferred-statements.spec.js +6 -6
  62. package/{e2e-legacy → integration}/sparql-editor/actions/inferred-sameas.spec.js +8 -10
  63. package/{e2e-legacy → integration}/sparql-editor/actions/show-saved-queries.spec.js +6 -1
  64. package/{e2e-legacy → integration}/sparql-editor/saved-query/abort-query.spec.js +1 -1
  65. package/{e2e-legacy → integration}/sparql-editor/saved-query/edit-query.spec.js +3 -3
  66. package/{e2e-legacy → integration}/sparql-editor/saved-query/readonly-query.spec.js +24 -15
  67. package/{e2e-legacy → integration}/sparql-editor/saved-query/share-query.spec.js +1 -32
  68. package/{e2e-legacy → integration}/sparql-editor/yasgui-tabs.spec.js +12 -2
  69. package/{e2e-legacy → integration}/sparql-editor/yasr/pagination.spec.js +18 -5
  70. package/{e2e-legacy → integration}/sparql-editor/yasr/table-plugin.spec.js +6 -1
  71. package/integration/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +57 -0
  72. package/{e2e-legacy → integration}/ttyg/agent-list.spec.js +2 -53
  73. package/{e2e-legacy → integration}/ttyg/agent-select-menu.spec.js +2 -25
  74. package/{e2e-legacy → integration}/ttyg/chat-list.spec.js +14 -3
  75. package/{e2e-legacy → integration}/ttyg/chat-panel.spec.js +6 -74
  76. package/{e2e-legacy → integration}/ttyg/clone-agent.spec.js +2 -24
  77. package/{e2e-legacy → integration}/ttyg/create-agent.spec.js +66 -37
  78. package/{e2e-legacy → integration}/ttyg/create-chat.spec.js +4 -6
  79. package/{e2e-legacy → integration}/ttyg/delete-agent.spec.js +2 -1
  80. package/integration/ttyg/edit-agent.spec.js +99 -0
  81. package/{e2e-legacy → integration}/ttyg/ttyg-view.spec.js +2 -2
  82. package/{e2e-flaky → integration-flaky}/explore/visual.graph.spec.js +1 -4
  83. package/{e2e-flaky → integration-flaky}/import/import-server-files-operations.spec.js +2 -2
  84. package/{e2e-flaky → integration-flaky}/import/import-user-data-batch-operations.spec.js +3 -3
  85. package/{e2e-flaky → integration-flaky}/setup/sparql-template-create.js +18 -10
  86. package/integration-flaky/setup/users-and-access/security-and-free-access.spec.js +54 -0
  87. package/{e2e-flaky → integration-flaky}/sparql-editor/actions/execute-update-query.spec.js +12 -2
  88. package/{e2e-flaky → integration-flaky}/sparql-editor/actions/share-query.spec.js +7 -1
  89. package/{e2e-flaky → integration-flaky}/sparql-editor/yasr/table-plugin.spec.js +7 -3
  90. package/{e2e-legacy → integration-flaky}/ttyg/ttyg-permission.spec.js +17 -23
  91. package/npm-shrinkwrap.json +3815 -11004
  92. package/package.json +42 -58
  93. package/plugins/index.js +5 -10
  94. package/steps/application-steps.js +6 -8
  95. package/steps/class-views-steps.js +7 -35
  96. package/steps/cluster/cluster-page-steps.js +2 -12
  97. package/steps/error-steps.js +3 -15
  98. package/steps/explore/graphs-overview-steps.js +1 -21
  99. package/steps/explore/similarity-index-create-steps.js +3 -5
  100. package/steps/explore/similarity-indexes-steps.js +2 -16
  101. package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
  102. package/steps/guides/guide-dialog-steps.js +2 -81
  103. package/steps/guides/guide-steps.js +2 -54
  104. package/steps/home-steps.js +77 -184
  105. package/steps/import/import-resource-message-dialog.js +1 -1
  106. package/steps/import/import-steps.js +16 -12
  107. package/steps/import/import-user-data-steps.js +1 -5
  108. package/steps/language-selector-steps.js +2 -2
  109. package/steps/license-steps.js +9 -91
  110. package/steps/login-steps.js +6 -31
  111. package/steps/main-menu-steps.js +19 -244
  112. package/steps/modal-dialog-steps.js +1 -32
  113. package/steps/monitoring/backup-and-restore-steps.js +3 -9
  114. package/steps/operations-statuses-component-steps.js +10 -5
  115. package/steps/repository-selector-steps.js +3 -3
  116. package/steps/repository-steps.js +18 -64
  117. package/steps/resource/resource-steps.js +2 -6
  118. package/steps/setup/acl-management-steps.js +2 -6
  119. package/steps/setup/autocomplete-steps.js +8 -23
  120. package/steps/setup/jdbc-steps.js +4 -18
  121. package/steps/setup/namespace-steps.js +7 -10
  122. package/steps/setup/plugins-steps.js +5 -12
  123. package/steps/setup/rdf-rank-steps.js +9 -23
  124. package/steps/setup/settings-steps.js +2 -101
  125. package/steps/setup/sparql-templates-steps.js +1 -19
  126. package/steps/setup/user-and-access-steps.js +16 -50
  127. package/steps/sparql-editor-steps.js +2 -8
  128. package/steps/sparql-steps.js +1 -13
  129. package/steps/toaster-steps.js +6 -18
  130. package/steps/ttyg/chat-panel-steps.js +2 -40
  131. package/steps/ttyg/ttyg-agent-settings-modal.steps.js +31 -136
  132. package/steps/ttyg/ttyg-view-steps.js +10 -80
  133. package/steps/visual-graph-steps.js +10 -106
  134. package/steps/yasgui/yasgui-loader.js +3 -3
  135. package/steps/yasgui/yasgui-steps.js +1 -1
  136. package/steps/yasgui/yasqe-steps.js +4 -35
  137. package/steps/yasgui/yasr-steps.js +3 -73
  138. package/stubs/autocomplete/autocomplete-stubs.js +0 -7
  139. package/stubs/environment-stubs.js +1 -9
  140. package/stubs/license-stubs.js +0 -51
  141. package/stubs/repositories/repositories-stubs.js +75 -180
  142. package/stubs/repositories-stub.js +73 -0
  143. package/stubs/security-stubs.js +0 -12
  144. package/stubs/similarity-index-stubs.js +0 -4
  145. package/stubs/ttyg/ttyg-stubs.js +15 -64
  146. package/stubs/yasgui/query-stubs.js +1 -5
  147. package/support/commands.js +1 -22
  148. package/support/{e2e.js → index.js} +3 -9
  149. package/support/repository-commands.js +4 -29
  150. package/support/settings-commands.js +1 -33
  151. package/support/user-commands.js +4 -9
  152. package/utils/html-util.js +4 -24
  153. package/.editorconfig +0 -17
  154. package/.nycrc +0 -10
  155. package/cypress-legacy.config.js +0 -47
  156. package/cypress-security.config.js +0 -36
  157. package/e2e-flaky/import/import-user-data-url.spec.js +0 -63
  158. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository-without-class-hierarchy.spec.js +0 -42
  159. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository.spec.js +0 -43
  160. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-without-selected-repository.spec.js +0 -30
  161. package/e2e-legacy/explore/class-relationships/class-relationships-repository-with-data.spec.js +0 -42
  162. package/e2e-legacy/explore/class-relationships/class-relationships-with-selected-repository.spec.js +0 -39
  163. package/e2e-legacy/explore/class-relationships/class-relationships-without-selected-repository.spec.js +0 -21
  164. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-with-selected-repository.spec.js +0 -44
  165. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-without-selected-repository.spec.js +0 -32
  166. package/e2e-legacy/explore/similarity-index/similarity-index-with-repository.spec.js +0 -38
  167. package/e2e-legacy/explore/similarity-index/similarity-index-without-repository.spec.js +0 -21
  168. package/e2e-legacy/explore/visual-graph/node-info-panel.spec.js +0 -58
  169. package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +0 -140
  170. package/e2e-legacy/explore/visual-graph/visual-graph-with-selected-repository.js +0 -38
  171. package/e2e-legacy/explore/visual-graph/visual-graph-without-selected-repository.js +0 -21
  172. package/e2e-legacy/graphql/graphql-endpoint-management-with-endpoints.spec.js +0 -43
  173. package/e2e-legacy/graphql/graphql-endpoint-management-with-selected-repository.spec.js +0 -39
  174. package/e2e-legacy/graphql/graphql-endpoint-management-without-selected-repository.spec.js +0 -21
  175. package/e2e-legacy/graphql/graphql-playground-with-endpoints.spec.js +0 -40
  176. package/e2e-legacy/graphql/graphql-playground-with-selected-repository.spec.js +0 -38
  177. package/e2e-legacy/graphql/graphql-playground-without-selected-repository.spec.js +0 -22
  178. package/e2e-legacy/graphql/graphql-theme.spec.js +0 -73
  179. package/e2e-legacy/guides/autocomplete/enable-autocomplete-guide.spec.js +0 -49
  180. package/e2e-legacy/guides/class-hierarcy/class-hierarchy-guide.spec.js +0 -89
  181. package/e2e-legacy/guides/class-relations/class-relations-guide.spec.js +0 -76
  182. package/e2e-legacy/guides/connectors/connectors-guide.spec.js +0 -163
  183. package/e2e-legacy/guides/create-similarity-index/create-similarity-index-guide.spec.js +0 -74
  184. package/e2e-legacy/guides/download-guide-resource/download-guide-resource-guide.js +0 -55
  185. package/e2e-legacy/guides/execute-sparql-query/execute-sparql-query-guide.spec.js +0 -92
  186. package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +0 -63
  187. package/e2e-legacy/guides/import-rdf-file/import-rdf-file.spec.js +0 -105
  188. package/e2e-legacy/guides/main-menu/main-menu-guide.spec.js +0 -302
  189. package/e2e-legacy/guides/navigation/navigation-guide.spec.js +0 -64
  190. package/e2e-legacy/guides/rdf-rank/rdf-rank-guide.spec.js +0 -42
  191. package/e2e-legacy/guides/repositories/create-repository-guide.spec.js +0 -69
  192. package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +0 -167
  193. package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +0 -157
  194. package/e2e-legacy/guides/ttyg/conversation/ttyg-conversation-guide.spec.js +0 -92
  195. package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +0 -88
  196. package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +0 -372
  197. package/e2e-legacy/guides/welcome/welcome-guide.spec.js +0 -36
  198. package/e2e-legacy/help/guides/guides-autostart.spec.js +0 -126
  199. package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +0 -83
  200. package/e2e-legacy/help/guides/guides-with-repository.spec.js +0 -32
  201. package/e2e-legacy/help/guides/guides-without-repository.spec.js +0 -20
  202. package/e2e-legacy/help/guides/movies-interactive-guide.spec.js +0 -71
  203. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +0 -32
  204. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +0 -20
  205. package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +0 -32
  206. package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +0 -20
  207. package/e2e-legacy/home/cookie-policy/cookie-policy.spec.js +0 -182
  208. package/e2e-legacy/home/documentation-link.spec.js +0 -41
  209. package/e2e-legacy/home/home-page-with-selected-repository.spec.js +0 -69
  210. package/e2e-legacy/home/home-page-without-repositories.spec.js +0 -87
  211. package/e2e-legacy/home/home-page-without-selected-repository.spec.js +0 -59
  212. package/e2e-legacy/home/rdf-resource-search.spec.js +0 -160
  213. package/e2e-legacy/home/view-resource-autocomplete.spec.js +0 -65
  214. package/e2e-legacy/import/initial-state/import-page-with-selected-repositor.js +0 -51
  215. package/e2e-legacy/import/initial-state/import-page-with-selected-repository-without-imported-files.js +0 -45
  216. package/e2e-legacy/import/initial-state/import-page-without-selected-repository.spec.js +0 -28
  217. package/e2e-legacy/license/license-with-repository.spec.js +0 -113
  218. package/e2e-legacy/license/license-without-repository.spec.js +0 -103
  219. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-with-repository.spec.js +0 -36
  220. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-without-repository.spec.js +0 -25
  221. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-with-repository.spec.js +0 -39
  222. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-without-repository.spec.js +0 -21
  223. package/e2e-legacy/monitor/system/system-monitoring-with-repository.spec.js +0 -32
  224. package/e2e-legacy/monitor/system/system-monitoring-without-repository.spec.js +0 -20
  225. package/e2e-legacy/not-found/not-found.spec.js +0 -23
  226. package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +0 -181
  227. package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +0 -40
  228. package/e2e-legacy/setup/aclmanagement/acl-management-without-repositories.spec.js +0 -21
  229. package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +0 -40
  230. package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +0 -27
  231. package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +0 -34
  232. package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +0 -25
  233. package/e2e-legacy/setup/connectors/connectors-initial-state-with-selected-repository.spec.js +0 -41
  234. package/e2e-legacy/setup/connectors/connectors-initial-state-without-repositories.spec.js +0 -21
  235. package/e2e-legacy/setup/jdbc/jdbc-with-repository.spec.js +0 -39
  236. package/e2e-legacy/setup/jdbc/jdbc-without-repository.spec.js +0 -27
  237. package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +0 -44
  238. package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +0 -27
  239. package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +0 -38
  240. package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +0 -28
  241. package/e2e-legacy/setup/rdf-rank/rdf-rank-with-repository.spec.js +0 -40
  242. package/e2e-legacy/setup/rdf-rank/rdf-rank-without-repository.spec.js +0 -30
  243. package/e2e-legacy/setup/repositories/repositories-view-with-repositories.spec.js +0 -40
  244. package/e2e-legacy/setup/repositories/repositories-view-without-repositories.spec.js +0 -28
  245. package/e2e-legacy/setup/settings/my-settings-initial-state.spec.js +0 -86
  246. package/e2e-legacy/setup/settings/my-settings.spec.js +0 -207
  247. package/e2e-legacy/setup/sparql-template/sparql-template-with-repository.spec.js +0 -39
  248. package/e2e-legacy/setup/sparql-template/sparql-template-without-repository.spec.js +0 -29
  249. package/e2e-legacy/setup/users-and-access/users-and-access-initial-state.spec.js +0 -25
  250. package/e2e-legacy/sparql-editor/sparql-page-with-selected-repository.spec.js +0 -33
  251. package/e2e-legacy/sparql-editor/sparql-page-without-selected-repository.spec.js +0 -26
  252. package/e2e-legacy/sparql-editor/yasqe-themes.spec.js +0 -54
  253. package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -106
  254. package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +0 -80
  255. package/e2e-legacy/ttyg/edit-agent.spec.js +0 -178
  256. package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +0 -46
  257. package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +0 -45
  258. package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +0 -21
  259. package/e2e-security/repository/url-with-repository-id-parameter.spec.js +0 -57
  260. package/e2e-security/setup/home/cookie-policy.spec.js +0 -290
  261. package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +0 -193
  262. package/e2e-security/setup/users-and-access/graphql-user.spec.js +0 -126
  263. package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +0 -70
  264. package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +0 -99
  265. package/e2e-security/setup/users-and-access/user-and-access.spec.js +0 -87
  266. package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +0 -38
  267. package/eslint.config.js +0 -39
  268. package/fixtures/graph/graph-configurations.json +0 -59
  269. package/fixtures/guides/autocomplete/enable-autocomplete-guide.json +0 -12
  270. package/fixtures/guides/class-hierarchy/class-hierarchy-guide.json +0 -35
  271. package/fixtures/guides/class-relations/class-relations-guide.json +0 -33
  272. package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +0 -15
  273. package/fixtures/guides/connectors/connectors-guide.json +0 -66
  274. package/fixtures/guides/connectors/lucene-connector-guide.json +0 -120
  275. package/fixtures/guides/create-repository/create-repository-guide.json +0 -25
  276. package/fixtures/guides/create-similarity-index/create-similarity-index-guide.json +0 -36
  277. package/fixtures/guides/download-guide-resource/download-guide-resource-guide.json +0 -25
  278. package/fixtures/guides/download-resource.ttl +0 -629
  279. package/fixtures/guides/execute-sparql-query/execute-sparql-query-guide.json +0 -54
  280. package/fixtures/guides/import-rdf-file/confirm-duplicate-rdf-file-guide.json +0 -30
  281. package/fixtures/guides/import-rdf-file/import-rdf-file-guide.json +0 -21
  282. package/fixtures/guides/main-menu/main-menu-guide.json +0 -98
  283. package/fixtures/guides/navigation/navigation-guide.json +0 -60
  284. package/fixtures/guides/rdf-rank/rdf-rank-guide.json +0 -18
  285. package/fixtures/guides/table-graph-explore/table-graph-explore-guide.json +0 -51
  286. package/fixtures/guides/table-graph-explore/table-graph-explore-without-substeps-guide.json +0 -25
  287. package/fixtures/guides/ttyg/configure-agent/configure-ttyg-agent-guide.json +0 -74
  288. package/fixtures/guides/ttyg/conversation/ttyg-conversation-guide.json +0 -26
  289. package/fixtures/guides/ttyg/edit-ttyg-agent/edit-ttyg-agent-guide.json +0 -22
  290. package/fixtures/guides/visual-graph/visual-graph-config-guide.json +0 -39
  291. package/fixtures/guides/visual-graph/visual-graph-guide.json +0 -85
  292. package/fixtures/guides/welcome/welcome-guide.json +0 -18
  293. package/fixtures/repositories/free-access.json +0 -13
  294. package/fixtures/similarity/get-ttyg-similarity-instances.json +0 -10
  295. package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +0 -44
  296. package/fixtures/ttyg/agent/get-agent-list-with-incompatible-agents.json +0 -79
  297. package/fixtures/ttyg/agent/get-similarity-indexes-for-another-repo.json +0 -8
  298. package/fixtures/ttyg/agent/get-similarity-indexes.json +0 -22
  299. package/fixtures/ttyg/chats/ask-question-cancel.json +0 -12
  300. package/fixtures/ttyg/chats/cancel-question-response.json +0 -1
  301. package/fixtures/ttyg/chats/create/question-response-after-chat-creation.json +0 -29
  302. package/fixtures/ttyg/chats/explain-response-3.json +0 -12
  303. package/steps/base-steps.js +0 -29
  304. package/steps/cookie-policy/cookie-consent-banner-steps.js +0 -21
  305. package/steps/cookie-policy/cookie-policy-modal.steps.js +0 -56
  306. package/steps/error-page-steps.js +0 -9
  307. package/steps/explore/class-relationships-steps.js +0 -64
  308. package/steps/graphql/playground-editor-steps.js +0 -46
  309. package/steps/header-steps.js +0 -22
  310. package/steps/monitoring/queries-and-updates-steps.js +0 -20
  311. package/steps/monitoring/system-monitoring-steps.js +0 -40
  312. package/steps/not-found/not-found-steps.js +0 -23
  313. package/steps/rdf-resource-search-steps.js +0 -55
  314. package/steps/rest-api-documentation-steps.js +0 -15
  315. package/steps/setup/connectors-steps.js +0 -32
  316. package/steps/shared-modal-dialog-steps.js +0 -45
  317. package/steps/system-information-steps.js +0 -70
  318. package/steps/widgets/active-repository-widget-steps.js +0 -29
  319. package/steps/widgets/license-widget-steps.js +0 -9
  320. package/steps/widgets/repository-errors-widget-steps.js +0 -21
  321. package/steps/widgets/saved-sparql-queries-widget-steps.js +0 -9
  322. package/stubs/browser-stubs.js +0 -21
  323. package/stubs/graph-config-stubs.js +0 -17
  324. package/stubs/guides/guides-stubs.js +0 -103
  325. package/stubs/saved-queries-stubs.js +0 -5
  326. package/stubs/sparql-stubs.js +0 -10
  327. package/support/connector-commands.js +0 -13
  328. package/support/e2e-security.js +0 -9
  329. package/support/url-commands.js +0 -13
  330. package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +0 -0
  331. package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +0 -0
  332. package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
  333. package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration.spec.js +0 -0
  334. package/{e2e-legacy → integration}/cluster/cluster-legend.spec.js +0 -0
  335. package/{e2e-legacy → integration}/cluster/edit-cluster-nodes-modal.spec.js +0 -0
  336. package/{e2e-legacy → integration}/graphql/activate-deactivate-graphql-endpoint.spec.js +0 -0
  337. package/{e2e-legacy → integration}/graphql/delete-graphql-endpoint.spec.js +0 -0
  338. package/{e2e-legacy → integration}/graphql/export-graphql-endpoint-definition.spec.js +0 -0
  339. package/{e2e-legacy → integration}/graphql/set-default-graphql-endpoint.spec.js +0 -0
  340. package/{e2e-legacy/help/system-information → integration/help}/system-information.spec.js +0 -0
  341. package/{e2e-legacy → integration}/home/create-repository.spec.js +0 -0
  342. package/{e2e-legacy → integration}/import/import-server-files-batch-operations.spec.js +0 -0
  343. package/{e2e-legacy → integration}/import/import-user-data-settings-dialog.spec.js +0 -0
  344. package/{e2e-legacy → integration}/import/import-view.spec.js +0 -0
  345. package/{e2e-legacy → integration}/repository/attach-remote-location.spec.js +1 -1
  346. /package/{e2e-legacy → integration}/repository/repository-commands.spec.js +0 -0
  347. /package/{e2e-legacy → integration}/setup/aclmanagement/delete-rule.spec.js +0 -0
  348. /package/{e2e-legacy → integration}/setup/aclmanagement/edit-rule.spec.js +0 -0
  349. /package/{e2e-legacy → integration}/setup/aclmanagement/render-rules.spec.js +0 -0
  350. /package/{e2e-legacy → integration}/setup/aclmanagement/reorder-rules.spec.js +0 -0
  351. /package/{e2e-legacy → integration}/setup/aclmanagement/revert-rules.spec.js +0 -0
  352. /package/{e2e-legacy → integration}/setup/aclmanagement/scopes.spec.js +0 -0
  353. /package/{e2e-legacy → integration}/setup/aclmanagement/update-rules.spec.js +0 -0
  354. /package/{e2e-legacy → integration}/setup/jdbc/jdbc.spec.js +0 -0
  355. /package/{e2e-legacy → integration}/sparql-editor/actions/execute-query.spec.js +0 -0
  356. /package/{e2e-legacy → integration}/sparql-editor/actions/save-query.spec.js +0 -0
  357. /package/{e2e-legacy → integration}/sparql-editor/internationalization.spec.js +0 -0
  358. /package/{e2e-legacy → integration}/sparql-editor/saved-query/delete-query.spec.js +0 -0
  359. /package/{e2e-legacy → integration}/sparql-editor/sparql-editor.spec.js +0 -0
  360. /package/{e2e-legacy → integration}/sparql-editor/yasr/download-as.spec.js +0 -0
  361. /package/{e2e-flaky → integration-flaky}/import/import.server.files.spec.js +0 -0
  362. /package/{e2e-flaky → integration-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
  363. /package/{e2e-flaky → integration-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
@@ -0,0 +1,628 @@
1
+ import {SparqlEditorSteps} from "../../../steps/sparql-editor-steps";
2
+ import {YasqeSteps} from "../../../steps/yasgui/yasqe-steps";
3
+ import {YasrSteps} from "../../../steps/yasgui/yasr-steps";
4
+ import {SimilarityIndexCreateSteps} from "../../../steps/explore/similarity-index-create-steps";
5
+ import {SimilarityIndexesSteps} from "../../../steps/explore/similarity-indexes-steps";
6
+ import {ModalDialogSteps, VerifyConfirmationDialogOptions} from "../../../steps/modal-dialog-steps";
7
+ import {ErrorSteps} from "../../../steps/error-steps";
8
+
9
+ const INDEX_NAME = 'index-' + Date.now();
10
+ const FILE_TO_IMPORT = 'people.zip';
11
+ const INDEX_CREATE_URL = '/similarity/index/create';
12
+ const BUILD_PARAM = ' -trainingcycles 4';
13
+ const STOP_WORD = 'stopword';
14
+ const LUCENE_ANALYZER = 'org.apache.lucene.analysis.de.GermanAnalyzer';
15
+ const MODIFIED_SEARCH_QUERY = 'PREFIX :<http://www.ontotext.com/graphdb/similarity/> \n' +
16
+ 'SELECT ?documentID ?score { \n' +
17
+ '?search a ?index ; \n' +
18
+ '?searchType ?query; \n' +
19
+ ':searchParameters ?parameters; \n' +
20
+ '?resultType ?result . \n' +
21
+ '?result :value ?documentID ; \n' +
22
+ ':score ?score. \n' +
23
+ 'OPTIONAL { ?result <http://dbpedia.org/ontology/birthPlace> ?birthDate . }}';
24
+ const MODIFIED_ANALOGICAL_QUERY = 'PREFIX :<http://www.ontotext.com/graphdb/similarity/>\n' +
25
+ 'PREFIX psi:<http://www.ontotext.com/graphdb/similarity/psi/>\n' +
26
+ 'PREFIX inst:<http://www.ontotext.com/graphdb/similarity/instance/>\n' +
27
+ '\n' +
28
+ 'SELECT ?resultValue ?score {\n' +
29
+ ' ?search a ?index ;\n' +
30
+ ' psi:givenSubject ?givenSubject;\n' +
31
+ ' psi:givenObject ?givenObject;\n' +
32
+ ' psi:searchSubject ?searchSubject;\n' +
33
+ ' :searchParameters ?parameters;\n' +
34
+ ' psi:resultObject ?result .\n' +
35
+ ' ?result :value ?resultValue;\n' +
36
+ ' :score ?score .\n' +
37
+ 'OPTIONAL { ?result <http://dbpedia.org/ontology/birthPlace> ?birthDate . }}';
38
+ const MODIFIED_DATA_QUERY = 'SELECT ?documentID ?documentText { \n' +
39
+ '?documentID <http://dbpedia.org/ontology/birthDate> ?documentText . \n' +
40
+ 'filter(isLiteral(?documentText)) \n' +
41
+ '}order by asc(str(?documentID))';
42
+
43
+ describe('Similarity screen validation', () => {
44
+
45
+ let repositoryId;
46
+
47
+ afterEach(() => {
48
+ cy.deleteRepository(repositoryId);
49
+ });
50
+
51
+ it('Test similarity page default state', () => {
52
+ initRepositoryAndVisitSimilarityView();
53
+ checkSimilarityPageDefaultState();
54
+ });
55
+
56
+ context('Creating similarity index', () => {
57
+ beforeEach(() => {
58
+ initRepositoryAndVisitSimilarityView();
59
+ });
60
+
61
+ it('Create default text similarity index and view SPARQL query', () => {
62
+ openCreateNewIndexForm();
63
+ setIndexName();
64
+ createSimilarityIndex();
65
+ viewSPARQLQuery();
66
+ deleteSimilarityIndex();
67
+ });
68
+
69
+ it('Create default predication similarity index', () => {
70
+ openCreateNewIndexForm();
71
+ switchToPredicationIndex();
72
+ setIndexName();
73
+ createSimilarityIndex();
74
+ });
75
+
76
+ it('Create text similarity index with a build parameter, stop word and custom Lucene Analyzer', () => {
77
+ openCreateNewIndexForm();
78
+ setIndexName();
79
+ clickMoreOptionsMenu();
80
+ addBuildParam();
81
+ addStopWord();
82
+ addLuceneAnalyzer();
83
+ clickMoreOptionsMenu();
84
+ createSimilarityIndex();
85
+ });
86
+
87
+ it('Create predication similarity index with a build parameter', () => {
88
+ openCreateNewIndexForm();
89
+ switchToPredicationIndex();
90
+ setIndexName();
91
+ clickMoreOptionsMenu();
92
+ addBuildParam();
93
+ clickMoreOptionsMenu();
94
+ createSimilarityIndex();
95
+ });
96
+
97
+ it('Create text similarity - literal index', () => {
98
+ openCreateNewIndexForm();
99
+ setIndexName();
100
+ clickMoreOptionsMenu();
101
+ checkLiteralIndex();
102
+ createSimilarityIndex();
103
+ });
104
+
105
+ it('Should not allow create similarity index with name that already exist', () => {
106
+ // If we have a similarity index.
107
+ openCreateNewIndexForm();
108
+ setIndexName();
109
+ createSimilarityIndex();
110
+
111
+ // When I try to create a similarity index with same name.
112
+ openCreateNewIndexForm();
113
+ setIndexName();
114
+ getCreateIndexButton().click();
115
+ // Then I expect an error message to be displayed that describes me, that name is mandatory.
116
+ ErrorSteps.verifyError('Index with this name already exists.');
117
+ });
118
+ });
119
+
120
+ context('Index operations', () => {
121
+ beforeEach(() => {
122
+ initRepositoryAndVisitSimilarityView();
123
+ });
124
+
125
+ it('Change Data query in Create index', () => {
126
+ openCreateNewIndexForm();
127
+ setIndexName();
128
+ changeDataQuery();
129
+ createSimilarityIndex();
130
+ });
131
+
132
+ it('Change Search query in Create index', () => {
133
+ openCreateNewIndexForm();
134
+ setIndexName();
135
+ changeSearchQuery();
136
+ createSimilarityIndex();
137
+ });
138
+
139
+ it('Change Search query of existing text index', () => {
140
+ openCreateNewIndexForm();
141
+ setIndexName();
142
+ createSimilarityIndex();
143
+ openEditQueryView();
144
+ changeSearchQuery();
145
+ getSaveEditedQueryButton().click();
146
+ openEditQueryView();
147
+ verifyQueryIsChanged();
148
+ });
149
+
150
+ it('Change Analogical query of existing predication index', () => {
151
+ openCreateNewIndexForm();
152
+ switchToPredicationIndex();
153
+ setIndexName();
154
+ createSimilarityIndex();
155
+ openEditQueryView(true);
156
+ changeAnalogicalQuery();
157
+ getSaveEditedQueryButton().click();
158
+ openEditQueryView(true);
159
+ getAnalogicalQueryTab()
160
+ .scrollIntoView()
161
+ .should('be.visible')
162
+ .click()
163
+ .then(() => {
164
+ verifyQueryIsChanged();
165
+ });
166
+ });
167
+
168
+ it('Clone existing similarity index', () => {
169
+ openCreateNewIndexForm();
170
+ setIndexName();
171
+ createSimilarityIndex();
172
+ cloneExistingIndex();
173
+ });
174
+
175
+ it('Rebuild existing similarity index', () => {
176
+ openCreateNewIndexForm();
177
+ setIndexName();
178
+ createSimilarityIndex();
179
+ rebuildIndex();
180
+ });
181
+ });
182
+
183
+ context('Searching in index', () => {
184
+ beforeEach(() => {
185
+ initRepositoryAndVisitSimilarityView();
186
+ });
187
+
188
+ it('Search for entity in index', () => {
189
+ // I have created similarity index
190
+ openCreateNewIndexForm();
191
+ setIndexName();
192
+ createSimilarityIndex();
193
+ // wait a bit for the edit icon to ensure index is created
194
+ cy.get('.icon-edit').should('be.visible');
195
+
196
+ // When I open the index
197
+ openIndex(0);
198
+
199
+ // Then I expect the indexes table to become hidden
200
+ cy.get('#indexes-table table').should('not.be.visible');
201
+
202
+ // And index search panel to be opened
203
+ cy.get('.index-search-panel').should('be.visible');
204
+ cy.get('.selected-index').should('be.visible').and('contain', `Search in ${INDEX_NAME}`);
205
+ getSearchIndexInput().should('be.visible');
206
+ // The search and result types should both be set to Term
207
+ SimilarityIndexesSteps.getSearchTypeButton().should('contain.text', 'Term');
208
+ SimilarityIndexesSteps.getResultTypeButton().should('contain.text', 'Term');
209
+
210
+ // When I search for "Neal" in the index
211
+ searchIndex('Neal');
212
+
213
+ // Then I expect search results to be displayed
214
+ // And showing 20 results
215
+ YasrSteps.getResults().should('have.length', 20);
216
+
217
+ // When I select Document as the search type
218
+ SimilarityIndexesSteps.selectSearchTypeOption('Document');
219
+
220
+ // The result type should remain Term
221
+ SimilarityIndexesSteps.getResultTypeButton().should('contain.text', 'Term');
222
+
223
+ // When I select Document as the result type
224
+ SimilarityIndexesSteps.selectResultTypeOption('Document');
225
+
226
+ // The search type should remain Document
227
+ SimilarityIndexesSteps.getSearchTypeButton().should('contain.text', 'Document');
228
+
229
+ // The result type should be Document
230
+ SimilarityIndexesSteps.getResultTypeButton().should('contain.text', 'Document');
231
+ });
232
+ });
233
+
234
+ it('Disable and enable similarity plugin', {
235
+ retries: {
236
+ openMode: 0,
237
+ runMode: 2
238
+ }
239
+ }, () => {
240
+ const disableSimilarityPlugin = 'INSERT DATA { <u:a> <http://www.ontotext.com/owlim/system#stopplugin> \'similarity\' . }';
241
+ initRepository();
242
+ cy.presetRepository(repositoryId);
243
+
244
+ SparqlEditorSteps.visitSparqlEditorPage();
245
+
246
+ // When I disable the plugin.
247
+ YasqeSteps.pasteQuery(disableSimilarityPlugin);
248
+ YasqeSteps.executeQuery();
249
+
250
+ // Then I expect a message to be displayed confirming that operation is complete.
251
+ YasrSteps.getResponseInfo().should('be.visible').and('contain', 'The number of statements did not change.');
252
+
253
+ // When I try to disable it while it's disabled.
254
+ YasqeSteps.executeErrorQuery();
255
+
256
+ // Then I expect an error message to be displayed informing me that the plugin has been already disabled.
257
+ YasrSteps.getErrorBody().should('be.visible').and('contain', 'Plugin similarity has been already disabled');
258
+
259
+ // When I visit similarity view while the plugin is disabled.
260
+ cy.visit('/similarity');
261
+ cy.window();
262
+
263
+ // Then I expect a message to be displayed informing me that the plugin is disabled.
264
+ cy.get('.plugin-not-active-warning').should('be.visible').and('contain', 'Similarity Plugin is not active for this repository.');
265
+ // cy.pause()
266
+ // When I enable the plugin
267
+ cy.get('.confirm-btn')
268
+ .should('be.visible')
269
+ .and('contain', 'Activate')
270
+ .click().then(() => {
271
+ // Should confirm that want to activate plugin
272
+ cy.get('.modal-footer > .btn-primary')
273
+ .should('be.visible')
274
+ .click()
275
+ .then(() => {
276
+ // Then I expect default similarity view with no indexes available
277
+ // cy.pause()
278
+ checkSimilarityPageDefaultState();
279
+ });
280
+ });
281
+ });
282
+
283
+ context('Confirmations when try to change location', () => {
284
+
285
+ beforeEach(() => {
286
+ initRepositoryAndVisitSimilarityView();
287
+ openCreateNewIndexForm();
288
+ });
289
+
290
+ it('should not display confirm message when there are not changes', () => {
291
+ // Given I opened the create similarity view.
292
+ // When I click on cancel button.
293
+ SimilarityIndexCreateSteps.cancel();
294
+
295
+ // Then I expect to be redirected to similarity indexes view.
296
+ SimilarityIndexesSteps.verifyUrl();
297
+
298
+ });
299
+
300
+ it('should display confirm message if index name is filled', () => {
301
+ // Given I opened the create similarity view,
302
+ // and similarity index name is filled.
303
+ SimilarityIndexCreateSteps.typeSimilarityIndexName('index');
304
+
305
+ // When click on cancel button.
306
+ // Then I expect to be redirected to similarity indexes view.
307
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
308
+ });
309
+
310
+ it('should display confirm message if data query is changed', () => {
311
+ // Given I opened the create similarity view,
312
+ // and data query is changed.
313
+ // During the initialization query is changed and this broke the test.
314
+ // Most the time the broken flow is:
315
+ // 1. cypress start to type 's';
316
+ // 2. query is changed
317
+ // 3. cypress continuous to type 'ome changes'.
318
+ // as result query is 'ome changes<data query>. YasqeSteps.writeInEditor function has check if parameter is filled, in our case 'some changes',
319
+ // and this broke the test. Add a little wait time to give chance yasqe query to be filled.
320
+ cy.wait(1000);
321
+ YasqeSteps.writeInEditor('some changes');
322
+
323
+ // When click on cancel button.
324
+ // Then I expect to be redirected to similarity indexes view.
325
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
326
+ });
327
+
328
+ it('should display confirm message if "Semantic Vectors create index parameters" is changed', () => {
329
+ // Given I opened the create similarity view,
330
+ // and "Semantic Vectors create index parameters" is changed.
331
+ SimilarityIndexCreateSteps.showMoreOptions();
332
+ SimilarityIndexCreateSteps.getSemanticVectorsInput().type('semantic vector');
333
+
334
+ // When click on cancel button.
335
+ // Then I expect to be redirected to similarity indexes view.
336
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
337
+ });
338
+
339
+ it('should display confirm message if "Stop words" is changed', () => {
340
+ // Given I opened the create similarity view,
341
+ // and "Stop words" is changed.
342
+ SimilarityIndexCreateSteps.showMoreOptions();
343
+ SimilarityIndexCreateSteps.getStopWordsInput().type('stop words');
344
+
345
+ // When click on cancel button.
346
+ // Then I expect to be redirected to similarity indexes view.
347
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
348
+ });
349
+
350
+ it('should display confirm message if "Analyzer Class" is changed', () => {
351
+ // Given I opened the create similarity view,
352
+ // and "Analyzer Class" is changed.
353
+ SimilarityIndexCreateSteps.showMoreOptions();
354
+ SimilarityIndexCreateSteps.getAnalyzerClassInput().type('BulgarianAnalyzer');
355
+
356
+ // When click on cancel button.
357
+ // Then I expect to be redirected to similarity indexes view.
358
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
359
+ });
360
+
361
+ it('should display confirm message if "Literal index" is changed', () => {
362
+ // Given I opened the create similarity view,
363
+ // and "Literal index" is changed.
364
+ SimilarityIndexCreateSteps.showMoreOptions();
365
+ SimilarityIndexCreateSteps.checkLiteralIndex();
366
+
367
+ // When click on cancel button.
368
+ // Then I expect to be redirected to similarity indexes view.
369
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
370
+ });
371
+
372
+ it('should display confirm message if "Search query" is changed', () => {
373
+ // Given I opened the create similarity view,
374
+ // and "Search query" is changed.
375
+ SimilarityIndexCreateSteps.switchToSearchQueryTab();
376
+ YasqeSteps.writeInEditor('some changes');
377
+
378
+ // When click on cancel button.
379
+ // Then I expect to be redirected to similarity indexes view.
380
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
381
+ });
382
+
383
+ it('should display confirm message if "Analogical query" is changed', () => {
384
+ // Given I opened the create similarity view,
385
+ // and "Analogical query" is changed.
386
+ SimilarityIndexCreateSteps.switchToCreatePredictionIndexTab();
387
+ SimilarityIndexCreateSteps.switchToAnalogicalQueryTab();
388
+ YasqeSteps.writeInEditor('some changes');
389
+
390
+ // When click on cancel button.
391
+ // Then I expect to be redirected to similarity indexes view.
392
+ ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
393
+ });
394
+ });
395
+
396
+ function initRepository() {
397
+ repositoryId = 'similarity-repo-' + Date.now();
398
+ cy.createRepository({id: repositoryId});
399
+ cy.importServerFile(repositoryId, FILE_TO_IMPORT);
400
+ }
401
+
402
+ function initRepositoryAndVisitSimilarityView() {
403
+ initRepository();
404
+ cy.visit('/similarity', {
405
+ onBeforeLoad: (win) => {
406
+ win.localStorage.setItem('ls.repository-id', repositoryId);
407
+ }
408
+ });
409
+ cy.window()
410
+ .then(() => getExistingIndexesPanel());
411
+ }
412
+
413
+ function openIndex(index) {
414
+ getIndexLinks().eq(index).click();
415
+ }
416
+
417
+ function getSearchIndexInput() {
418
+ // There are 6 such fields and it's not obvious what selectors they should have.
419
+ // So we select it by placeholders.
420
+ return cy.get('input[placeholder="Search RDF resources for RDF entity"]');
421
+ }
422
+
423
+ function searchIndex(entity) {
424
+ getSearchIndexInput().type(entity);
425
+ // there are two buttons so we search in the context
426
+ getSearchIndexInput().closest('.input-group').find('.autocomplete-visual-btn').click();
427
+ }
428
+
429
+ function checkSimilarityPageDefaultState() {
430
+ //TODO: Should change the 'contain' method to 'eq' once GDB-3699 is fixed.
431
+ cy.url().should('contain', Cypress.config('baseUrl') + '/similarity');
432
+ getExistingIndexesPanel()
433
+ .find('.no-indexes')
434
+ .should('be.visible')
435
+ .and('contain', 'No Indexes');
436
+ }
437
+
438
+ function openCreateNewIndexForm() {
439
+ cy.get('.create-similarity-index').click();
440
+ cy.url().should('contain', `${Cypress.config('baseUrl')}/similarity/index/create`);
441
+ // Wait for query editor to become ready because consecutive command for index creation might
442
+ // fail because the query may not be submitted with the request.
443
+ YasqeSteps.waitUntilQueryIsVisible();
444
+ }
445
+
446
+ function setIndexName() {
447
+ cy.url().should('eq', Cypress.config('baseUrl') + INDEX_CREATE_URL);
448
+ getSimilarity().invoke('val', INDEX_NAME).trigger('change')
449
+ .then(() => getSimilarity().should('have.value', INDEX_NAME));
450
+ }
451
+
452
+ function clickMoreOptionsMenu() {
453
+ cy.get('.more-options-btn').click();
454
+ }
455
+
456
+ function addBuildParam() {
457
+ cy.get('#indexParameters').type(BUILD_PARAM);
458
+ }
459
+
460
+ function addStopWord() {
461
+ cy.get('.stop-words').type(STOP_WORD);
462
+ }
463
+
464
+ function addLuceneAnalyzer() {
465
+ cy.get('.analyzer-class').type(Cypress.env('modifierKey') + 'a{backspace}', {force: true})
466
+ .invoke('val', LUCENE_ANALYZER).trigger('change', {force: true});
467
+ }
468
+
469
+ function checkLiteralIndex() {
470
+ cy.get('.literal-index').click();
471
+ }
472
+
473
+ function createSimilarityIndex() {
474
+ getCreateIndexButton().click()
475
+ .then(() => {
476
+ cy.url().should('eq', `${Cypress.config('baseUrl')}/similarity`);
477
+ getExistingIndexesPanel();
478
+ cy.get('#indexes-table table').should('be.visible')
479
+ .find('.index-row').should('have.length', 1);
480
+ // Just wait for the row in the table to appear and the cell with the index name to be
481
+ // visible. Waiting for the loading indicator to disappear is just too brittle.
482
+ // Also trying to check for the index name in the cell with `.and('contain', INDEX_NAME);`
483
+ // fails often because during completing the index name on a previous step the WB seems to
484
+ // cut off part of the name on the leading side.
485
+ getIndexLinks().should('be.visible');
486
+ cy.waitUntil(() =>
487
+ cy.get('.edit-query-btn')
488
+ .then((editBtn) => editBtn));
489
+ });
490
+ }
491
+
492
+ function deleteSimilarityIndex() {
493
+ waitForIndexBuildingIndicatorToHide();
494
+ getDeleteIndexButton().should('be.visible');
495
+ getDeleteIndexButton().click();
496
+ cy.get('.modal-footer .confirm-btn').click();
497
+ cy.get('.no-indexes').should('be.visible').and('contain', 'No Indexes');
498
+ }
499
+
500
+ function switchToPredicationIndex() {
501
+ cy.get('#create-predication-index').click();
502
+ // Wait for query editor to become ready because consecutive command for index creation might
503
+ // fail because the query may not be submitted with the request.
504
+ YasqeSteps.waitUntilQueryIsVisible();
505
+ }
506
+
507
+ function cloneExistingIndex() {
508
+ cy.url().should('eq', Cypress.config('baseUrl') + '/similarity');
509
+ cy.get('.clone-index-btn').click()
510
+ .then(() => cy.url().should('contain', `${Cypress.config('baseUrl')}/similarity/index/create`));
511
+
512
+ // Makes sure YASQE has loaded before we click the Create button
513
+ YasqeSteps.waitUntilQueryIsVisible();
514
+ getCreateIndexButton().should('be.visible').click();
515
+
516
+ getExistingIndexesPanel();
517
+ waitForIndexBuildingIndicatorToHide();
518
+ cy.waitUntil(() =>
519
+ cy.get('#indexes-table')
520
+ .find('.index-row')
521
+ .then((indexes) => indexes.length === 2));
522
+
523
+ cy.url().should('contain', Cypress.config('baseUrl') + '/similarity'); //Should change the 'contain' method to 'eq' once GDB-3699 is resolved
524
+ }
525
+
526
+ function getIndexLinks() {
527
+ return cy.get('#indexes-table .index-name');
528
+ }
529
+
530
+ function rebuildIndex() {
531
+ cy.get('.similarity-index-icon-reload').should('be.visible').click();
532
+ cy.get('.modal-footer .btn-primary').click();
533
+ cy.get('.similarity-index-building-loader').should('be.visible');
534
+ getDeleteIndexButton().should('be.visible');
535
+ waitForIndexBuildingIndicatorToHide();
536
+ }
537
+
538
+ function viewSPARQLQuery() {
539
+ cy.get('.view-sparql-query-btn').click();
540
+ cy.get('.modal-title').should('be.visible').and('contain', 'View SPARQL Query');
541
+ cy.get('.btn-primary').should('be.visible').and('contain', 'Copy to clipboard');
542
+ cy.get('.close').click();
543
+ cy.get('.modal').should('not.exist');
544
+ cy.get('.modal-backdrop').should('not.exist');
545
+ }
546
+
547
+ function openEditQueryView(isPredication) {
548
+ cy.url().should('contain', Cypress.config('baseUrl') + '/similarity');
549
+ // Open "Edit search query" view
550
+ cy.get('.edit-query-btn').should('be.visible').click();
551
+ // Verify that 'similarity-index-name' input field is disabled
552
+ getSimilarity().should('be.disabled');
553
+ getSearchQueryTab().should('be.visible');
554
+ YasqeSteps.waitUntilQueryIsVisible();
555
+ const shouldAnalogicalTabBeVisible = (isPredication ? '' : 'not.') + 'exist';
556
+ getAnalogicalQueryTab().should(shouldAnalogicalTabBeVisible);
557
+ if (isPredication) {
558
+ YasqeSteps.verifyQueryContains('SELECT ?entity ?score {');
559
+ }
560
+ }
561
+
562
+ function changeDataQuery() {
563
+ YasqeSteps.pasteQuery(MODIFIED_DATA_QUERY);
564
+ cy.get('.test-query-btn', {force: true}).click();
565
+ cy.get('.sparql-loader').should('not.exist');
566
+ YasrSteps.getResults().its('length').should('be.gt', 1);
567
+ YasrSteps.getResults().contains('http://dbpedia.org/resource/Aaron_Jay_Kernis');
568
+ }
569
+
570
+ function changeSearchQuery() {
571
+ SimilarityIndexCreateSteps.switchToSearchQueryTab();
572
+ YasqeSteps.pasteQuery(MODIFIED_SEARCH_QUERY);
573
+ }
574
+
575
+ function changeAnalogicalQuery() {
576
+ getAnalogicalQueryTab()
577
+ .scrollIntoView()
578
+ .should('be.visible').click()
579
+ .then(() => {
580
+ YasqeSteps.pasteQuery(MODIFIED_ANALOGICAL_QUERY);
581
+ });
582
+ }
583
+
584
+ function getDeleteIndexButton() {
585
+ return cy.get('.delete-index-btn');
586
+ }
587
+
588
+ function getCreateIndexButton() {
589
+ return cy.get('.create-similarity-index-btn');
590
+ }
591
+
592
+ function getSearchQueryTab() {
593
+ return cy.get('.search-query-tab');
594
+ }
595
+
596
+ function getAnalogicalQueryTab() {
597
+ return cy.get('.analogical-query-tab');
598
+ }
599
+
600
+ function getSaveEditedQueryButton() {
601
+ return cy.get('.save-query-btn').scrollIntoView().should('be.visible');
602
+ }
603
+
604
+ function getSimilarity() {
605
+ return cy.get('.similarity-index-name');
606
+ }
607
+
608
+ function getExistingIndexesPanel() {
609
+ return cy.get('.existing-indexes').should('be.visible');
610
+ }
611
+
612
+ function waitForIndexBuildingIndicatorToHide() {
613
+ cy.get('.similarity-index-building-loader').should('not.exist');
614
+ }
615
+
616
+ function verifyQueryIsChanged() {
617
+ const query = 'OPTIONAL { ?result <http://dbpedia.org/ontology/birthPlace> ?birthDate .';
618
+ YasqeSteps.verifyQueryContains(query);
619
+ }
620
+
621
+ function createVerifyConfirmationDialogOptions() {
622
+ return new VerifyConfirmationDialogOptions()
623
+ .setChangePageFunction(() => SimilarityIndexCreateSteps.getCancelButton().click())
624
+ .setConfirmationMessage('You have unsaved changes. Are you sure that you want to exit?')
625
+ .setVerifyCurrentUrl(() => cy.url().should('include', `${Cypress.config('baseUrl')}/similarity/index/create`))
626
+ .setVerifyRedirectedUrl(() => cy.url().should('eq', `${Cypress.config('baseUrl')}/similarity`));
627
+ }
628
+ });
@@ -189,7 +189,7 @@ describe('Graphs config', () => {
189
189
  // When I click on cancel
190
190
  VisualGraphSteps.cancelSaveConfig();
191
191
  // Then I expect to be redirected to configs list view
192
- cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
192
+ cy.url().should('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
193
193
  });
194
194
 
195
195
  it('Should not allow config creation without a name', () => {
@@ -217,7 +217,12 @@ describe('Graphs config', () => {
217
217
  VisualGraphSteps.getGraphConfigSearchPanelName().should('contain', graphConfigName);
218
218
  });
219
219
 
220
- it('Should create graph config with fixed node', () => {
220
+ it('Should create graph config with fixed node', {
221
+ retries: {
222
+ runMode: 1,
223
+ openMode: 0
224
+ }
225
+ }, () => {
221
226
  cy.enableAutocomplete(repositoryId);
222
227
  // Given I have started a create config wizard
223
228
  startCreateConfigWizard();
@@ -349,7 +354,7 @@ describe('Graphs config', () => {
349
354
  // When I click cancel without changing the query
350
355
  VisualGraphSteps.cancelSaveConfig();
351
356
  // Then I expect to be redirected to configs list without confirmation
352
- cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
357
+ cy.url().should('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
353
358
  // And I open it for edit
354
359
  VisualGraphSteps.editConfig(graphConfigName);
355
360
  checkEditorWithQuery(QUERY_START);
@@ -372,7 +377,7 @@ describe('Graphs config', () => {
372
377
  ModalDialogSteps.clickOnConfirmButton();
373
378
  // Then I expect to be redirected to configs list page
374
379
  ModalDialogSteps.getDialog().should('not.exist');
375
- cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
380
+ cy.url().should('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
376
381
  });
377
382
 
378
383
  it('Should prevent leaving with confirmation when expand query is changed', () => {
@@ -454,7 +459,7 @@ function saveGraphConfig(graphConfigName) {
454
459
  // Then I expect a success notification
455
460
  ApplicationSteps.getSuccessNotifications().should('be.visible');
456
461
  // And I should be redirected to configs list view
457
- cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
462
+ cy.url().should('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
458
463
  // And the new config should be present in the list
459
464
  VisualGraphSteps.getGraphConfig(graphConfigName).should('be.visible');
460
465
  }