graphdb-workbench-tests 3.4.0-TR4 → 3.4.0-TR6

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
@@ -0,0 +1,42 @@
1
+ import {ClassRelationshipsSteps} from "../../../steps/explore/class-relationships-steps";
2
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
3
+ import HomeSteps from "../../../steps/home-steps";
4
+
5
+ describe('Class Relationships repository with date', () => {
6
+ let repositoryId
7
+
8
+ beforeEach(() => {
9
+ repositoryId = 'class-relationships-date-' + Date.now()
10
+ cy.createRepository({id: repositoryId});
11
+ cy.presetRepository(repositoryId);
12
+ cy.importServerFile(repositoryId, 'wine.rdf');
13
+ });
14
+
15
+ afterEach(() => {
16
+ cy.deleteRepository(repositoryId);
17
+ });
18
+
19
+ it('Should render Class Relationships with selected repository via URL', () => {
20
+ // Given, I visit the Class Relationships page via URL and I have a selected repository with data
21
+ ClassRelationshipsSteps.visit();
22
+
23
+ // Then
24
+ validateInitialStateWithData();
25
+ });
26
+
27
+ it('Should render Class Relationships with selected repository via navigation menu', () => {
28
+ // Given, I visit the Class Relationships page via navigation menu and I have a selected repository with data
29
+ HomeSteps.visit();
30
+ MainMenuSteps.clickOnClassRelationships();
31
+
32
+ // Then
33
+ validateInitialStateWithData();
34
+ });
35
+ });
36
+
37
+ function validateInitialStateWithData() {
38
+ ClassRelationshipsSteps.verifyRelationsToolbarContent();
39
+ ClassRelationshipsSteps.getFilterField().should('be.visible');
40
+ ClassRelationshipsSteps.getDependenciesList().should('be.visible');
41
+ ClassRelationshipsSteps.getDependenciesDiagram().should('be.visible');
42
+ }
@@ -0,0 +1,39 @@
1
+ import HomeSteps from "../../../steps/home-steps";
2
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
3
+ import {ClassRelationshipsSteps} from "../../../steps/explore/class-relationships-steps";
4
+
5
+ describe('Class Relationships with selected repository', () => {
6
+ let repositoryId;
7
+
8
+ beforeEach(() => {
9
+ repositoryId = 'class-relationships-' + Date.now();
10
+ cy.createRepository({id: repositoryId});
11
+ cy.presetRepository(repositoryId);
12
+ });
13
+
14
+ afterEach(() => {
15
+ cy.deleteRepository(repositoryId);
16
+ });
17
+
18
+ it('Should render Class Relationships with selected repository via URL', () => {
19
+ // Given, I visit the Class Relationships page via URL and I have a selected repository
20
+ ClassRelationshipsSteps.visit();
21
+ // Then
22
+ validateNoRelationshipsClassRelationshipsPage();
23
+ });
24
+
25
+ it('Should render Class Relationships with selected repository via navigation menu', () => {
26
+ // Given, I visit the Class Relationships page via navigation menu and I have a selected repository'
27
+ HomeSteps.visit();
28
+ MainMenuSteps.clickOnClassRelationships();
29
+ // Then
30
+ validateNoRelationshipsClassRelationshipsPage();
31
+ });
32
+ });
33
+
34
+ function validateNoRelationshipsClassRelationshipsPage() {
35
+ ClassRelationshipsSteps.getReloadDiagramButton().should('be.visible');
36
+ ClassRelationshipsSteps.getNoDataWarning()
37
+ .should('be.visible')
38
+ .and('contain', 'The currently selected repository contains no dependencies data. Please, reload the diagram if you have imported data recently.')
39
+ }
@@ -0,0 +1,21 @@
1
+ import {ClassRelationshipsSteps} from "../../../steps/explore/class-relationships-steps";
2
+ import HomeSteps from "../../../steps/home-steps";
3
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
4
+ import {ErrorSteps} from "../../../steps/error-steps";
5
+
6
+ describe('Class Relationships without selected repository', () => {
7
+ it('Should display the correct initial state when navigating via URL', () => {
8
+ // Given, I visit the Class Relationships page via URL without a repository selected
9
+ ClassRelationshipsSteps.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 Class Relationships page via the navigation menu without a repository selected
16
+ HomeSteps.visit();
17
+ MainMenuSteps.clickOnClassRelationships();
18
+ // Then,
19
+ ErrorSteps.verifyNoConnectedRepoMessage();
20
+ });
21
+ })
@@ -1,4 +1,5 @@
1
- import ClassViewsSteps, {ALL_GRAPHS, GRAPH_FILE, NEWS_GRAPH} from "../../steps/class-views-steps";
1
+ import ClassViewsSteps, {ALL_GRAPHS, GRAPH_FILE, NEWS_GRAPH} from "../../../steps/class-views-steps";
2
+ import {ClassRelationshipsSteps} from "../../../steps/explore/class-relationships-steps";
2
3
 
3
4
  const FILE_TO_IMPORT = 'wine.rdf';
4
5
 
@@ -13,11 +14,10 @@ describe('Class relations screen validation', () => {
13
14
 
14
15
  cy.importServerFile(repositoryId, FILE_TO_IMPORT);
15
16
 
16
- cy.visit('/relationships');
17
- cy.window();
17
+ ClassRelationshipsSteps.visit();
18
18
  // The diagram and the list should be visible in order to assume the page is ready
19
- cy.get('#dependencies-chord').should('be.visible');
20
- cy.get('#wb-dependencies-classInClasses').should('be.visible');
19
+ ClassRelationshipsSteps.getDependenciesDiagram().should('be.visible');
20
+ ClassRelationshipsSteps.getDependenciesList().should('be.visible');
21
21
  });
22
22
 
23
23
  afterEach(() => {
@@ -26,47 +26,45 @@ describe('Class relations screen validation', () => {
26
26
 
27
27
  it('Test initial state', function () {
28
28
  // Filter field should be visible
29
- getFilterField().should('be.visible');
29
+ ClassRelationshipsSteps.getFilterField().should('be.visible');
30
30
  // Dependencies label should be present and showing proper text
31
- cy.get('.available-dependencies-label')
31
+ ClassRelationshipsSteps.getAvailableDependenciesLabel()
32
32
  .should('be.visible')
33
33
  .contains('Showing the dependencies between 10 classes');
34
34
  // Directions filter buttons should be visible
35
- getDirectionFilter().should('be.visible');
35
+ ClassRelationshipsSteps.getDirectionFilter().should('be.visible');
36
36
  // And the "All" radio button must be selected by default
37
- verifySelectedDirectionFilter('all');
37
+ ClassRelationshipsSteps.verifySelectedDirectionFilter('all');
38
38
  // The toolbar and its buttons should be visible
39
- getRelationsToolbar().should('be.visible').within(() => {
40
- cy.get('.remove-all-classes-btn').should('be.visible');
41
- cy.get('.reload-diagram-btn').should('be.visible');
42
- cy.get('.export-diagram-btn').should('be.visible');
43
- });
39
+ ClassRelationshipsSteps.verifyRelationsToolbarContent();
44
40
  // Class relations list should be visible and have 10 classes selected
45
- getDependenciesList().should('be.visible').within(() => {
41
+ ClassRelationshipsSteps.getDependenciesList().should('be.visible').within(() => {
46
42
  cy.get('.item .row.active').should('have.length', 10);
47
43
  });
48
44
  // Diagram should be visible and showing 10 classes
49
- cy.get('#dependencies-chord').should('be.visible').within(() => {
45
+ ClassRelationshipsSteps.getDependenciesDiagram().should('be.visible').within(() => {
50
46
  cy.get('.group').should('have.length', 10);
47
+ // Ensure only one SVG/viewBox is rendered
48
+ cy.get('svg').should('have.length', 1);
51
49
  });
52
50
  });
53
51
 
54
52
  it('Search for a class', function () {
55
53
  // Expect 39 rows initially to be visible
56
- verifyListLength(39);
54
+ ClassRelationshipsSteps.verifyListLength(39);
57
55
  // Filter by partial name
58
- filterByClass(':Wine');
56
+ ClassRelationshipsSteps.filterByClass(':Wine');
59
57
  // Expecting 6 rows to be present
60
- verifyListLength(6);
58
+ ClassRelationshipsSteps.verifyListLength(6);
61
59
  // Clear the filter and expect all rows to be visible again
62
- getFilterField().clear();
63
- verifyListLength(39);
60
+ ClassRelationshipsSteps.getFilterField().clear();
61
+ ClassRelationshipsSteps.verifyListLength(39);
64
62
  });
65
63
 
66
64
  it('Test class relationships for given graph', () => {
67
65
  cy.importServerFile(repositoryId, GRAPH_FILE, {"context": NEWS_GRAPH});
68
66
  // Should re-enter page to display Graph dropdown
69
- cy.visit('/relationships');
67
+ ClassRelationshipsSteps.visit();
70
68
  ClassViewsSteps.verifyDataChangedWarning();
71
69
  ClassViewsSteps.verifyGraphIsDisplayed(ALL_GRAPHS);
72
70
 
@@ -79,32 +77,4 @@ describe('Class relations screen validation', () => {
79
77
  ClassViewsSteps.selectGraphFromDropDown(NEWS_GRAPH);
80
78
  ClassViewsSteps.verifyGraphIsDisplayed(NEWS_GRAPH);
81
79
  });
82
-
83
- function getFilterField() {
84
- return cy.get('.search-filter-field');
85
- }
86
-
87
- function filterByClass(name) {
88
- getFilterField().type(name);
89
- }
90
-
91
- function getDirectionFilter() {
92
- return cy.get('.direction-filter');
93
- }
94
-
95
- function verifySelectedDirectionFilter(name) {
96
- getDirectionFilter().find('input[type=radio]:checked').should('have.value', name);
97
- }
98
-
99
- function getRelationsToolbar() {
100
- return cy.get('.relations-toolbar');
101
- }
102
-
103
- function getDependenciesList() {
104
- return cy.get('#wb-dependencies-classInClasses');
105
- }
106
-
107
- function verifyListLength(count) {
108
- getDependenciesList().find('.item .row').should('have.length', count);
109
- }
110
80
  });
@@ -1,6 +1,6 @@
1
- import {YasrSteps} from "../../steps/yasgui/yasr-steps";
2
- import {GraphsOverviewSteps} from "../../steps/explore/graphs-overview-steps";
3
- import {JsonLdModalSteps} from "../../steps/json-ld-modal-steps";
1
+ import {YasrSteps} from "../../../steps/yasgui/yasr-steps";
2
+ import {GraphsOverviewSteps} from "../../../steps/explore/graphs-overview-steps";
3
+ import {JsonLdModalSteps} from "../../../steps/json-ld-modal-steps";
4
4
 
5
5
  const EXPORT_GRAPHS_TABLE_ID = '#export-graphs';
6
6
  const ROWS_PER_PAGE_20 = '1';
@@ -125,7 +125,7 @@ describe('Graphs overview screen validation', () => {
125
125
  verifyVisibleGraphsCount(1);
126
126
  verifyGraphExistence('The default graph');
127
127
  // open default graph through the link and verify that the table view is rendered
128
- cy.contains('The default graph').click();
128
+ cy.getByTestId('graph-is-not-shaql').contains('The default graph').trigger('mouseover').click();
129
129
  cy.url().should('contain', Cypress.config('baseUrl') + '/resource');
130
130
  YasrSteps.getResultTableHeader().should('be.visible');
131
131
  YasrSteps.getResultTableHeaderColumns().should('have.length', 5);
@@ -0,0 +1,44 @@
1
+ import {MainMenuSteps} from "../../../../steps/main-menu-steps";
2
+ import {GraphsOverviewSteps} from "../../../../steps/explore/graphs-overview-steps";
3
+ import HomeSteps from "../../../../steps/home-steps";
4
+ import {RepositoryErrorsWidgetSteps} from "../../../../steps/widgets/repository-errors-widget-steps";
5
+
6
+ describe('Initial state of the Graphs Overview view with a selected repository', () => {
7
+
8
+ let repositoryId;
9
+
10
+ beforeEach(() => {
11
+ repositoryId = 'repo' + Date.now();
12
+ cy.createRepository({id: repositoryId});
13
+ cy.presetRepository(repositoryId);
14
+ });
15
+
16
+ afterEach(() => {
17
+ cy.deleteRepository(repositoryId);
18
+ });
19
+
20
+ it('Should display the correct initial state when navigating via URL', () => {
21
+ // When: I visit the Graphs Overview page via URL with a repository selected
22
+ GraphsOverviewSteps.visit();
23
+ // Then:
24
+ verifyInitialStateWithSelectedRepository();
25
+ });
26
+
27
+ it('Should display the correct initial state when navigating via the navigation bar', () => {
28
+ // When: I visit the Graphs Overview page via the navigation menu with a repository selected
29
+ HomeSteps.visit();
30
+ MainMenuSteps.clickOnGraphsOverview();
31
+ // Then:
32
+ verifyInitialStateWithSelectedRepository();
33
+ });
34
+
35
+ const verifyInitialStateWithSelectedRepository = () => {
36
+ RepositoryErrorsWidgetSteps.getWidget().should('be.hidden');
37
+ GraphsOverviewSteps.getGraphsSearchInput().should('be.visible');
38
+ GraphsOverviewSteps.getGraphsPaginator().should('be.visible');
39
+ GraphsOverviewSteps.getClearRepositoryButton().should('be.visible');
40
+ GraphsOverviewSteps.getExportRepositoryButton().should('be.visible');
41
+ GraphsOverviewSteps.getDownloadAllButtons().should('be.visible');
42
+ GraphsOverviewSteps.getResultsElement().should('be.visible');
43
+ };
44
+ });
@@ -0,0 +1,32 @@
1
+ import {MainMenuSteps} from "../../../../steps/main-menu-steps";
2
+ import {GraphsOverviewSteps} from "../../../../steps/explore/graphs-overview-steps";
3
+ import HomeSteps from "../../../../steps/home-steps";
4
+ import {RepositoryErrorsWidgetSteps} from "../../../../steps/widgets/repository-errors-widget-steps";
5
+
6
+ describe('Initial state of the Graphs Overview view without a selected repository', () => {
7
+
8
+ it('Should display the correct initial state when navigating via URL', () => {
9
+ // When: I visit the Graphs Overview page via URL without a selected repository
10
+ GraphsOverviewSteps.visit();
11
+ // Then:
12
+ verifyInitialStateWithoutSelectedRepository();
13
+ });
14
+
15
+ it('Should display the correct initial state when navigating via the navigation bar', () => {
16
+ // When: I visit the Graphs Overview page via the navigation menu without a selected repository
17
+ HomeSteps.visit();
18
+ MainMenuSteps.clickOnGraphsOverview();
19
+ // Then:
20
+ verifyInitialStateWithoutSelectedRepository();
21
+ });
22
+
23
+ const verifyInitialStateWithoutSelectedRepository = () => {
24
+ RepositoryErrorsWidgetSteps.getWidget().should('be.visible');
25
+ GraphsOverviewSteps.getGraphsSearchInput().should('be.hidden');
26
+ GraphsOverviewSteps.getGraphsPaginator().should('be.hidden');
27
+ GraphsOverviewSteps.getClearRepositoryButton().should('be.hidden');
28
+ GraphsOverviewSteps.getExportRepositoryButton().should('be.hidden');
29
+ GraphsOverviewSteps.getDownloadAllButtons().should('be.hidden');
30
+ GraphsOverviewSteps.getResultsElement().should('be.hidden');
31
+ };
32
+ });
@@ -0,0 +1,38 @@
1
+ import HomeSteps from "../../../steps/home-steps";
2
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
3
+ import {SimilarityIndexesSteps} from "../../../steps/explore/similarity-indexes-steps";
4
+
5
+ describe('Similarity indexes with selected repository', () => {
6
+ let repositoryId;
7
+
8
+ beforeEach(() => {
9
+ repositoryId = 'similarity-index-init-' + Date.now();
10
+ cy.createRepository({id: repositoryId});
11
+ cy.presetRepository(repositoryId);
12
+ });
13
+
14
+ afterEach(() => {
15
+ cy.deleteRepository(repositoryId);
16
+ });
17
+
18
+ it('Should display the correct initial state when navigating via URL', () => {
19
+ // Given, I visit the Similarity indexes page via URL with a repository selected
20
+ SimilarityIndexesSteps.visit();
21
+ // Then,
22
+ verifyInitialStateWithSelectedRepository();
23
+ });
24
+
25
+ it('Should display the correct initial state when navigating via the navigation bar', () => {
26
+ // Given, I visit the Similarity indexes page via the navigation menu with a repository selected
27
+ HomeSteps.visit();
28
+ MainMenuSteps.clickOnSimilarity();
29
+ // Then,
30
+ verifyInitialStateWithSelectedRepository();
31
+ });
32
+
33
+ const verifyInitialStateWithSelectedRepository = () => {
34
+
35
+ SimilarityIndexesSteps.getExistingSimilarityIndexes().contains('Select one of your existing indexes to search in it');
36
+ SimilarityIndexesSteps.getCreateButton().should('be.visible');
37
+ };
38
+ })
@@ -0,0 +1,21 @@
1
+ import {ErrorSteps} from "../../../steps/error-steps";
2
+ import HomeSteps from "../../../steps/home-steps";
3
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
4
+ import {SimilarityIndexesSteps} from "../../../steps/explore/similarity-indexes-steps";
5
+
6
+ describe('Similarity indexes without selected repository', () => {
7
+ it('Should display the correct initial state when navigating via URL', () => {
8
+ // Given, I visit the Similarity indexes page via URL without a repository selected
9
+ SimilarityIndexesSteps.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 Similarity indexes page via the navigation menu without a repository selected
16
+ HomeSteps.visit();
17
+ MainMenuSteps.clickOnSimilarity();
18
+ // Then,
19
+ ErrorSteps.verifyNoConnectedRepoMessage();
20
+ });
21
+ })
@@ -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('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
192
+ cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
193
193
  });
194
194
 
195
195
  it('Should not allow config creation without a name', () => {
@@ -217,12 +217,7 @@ describe('Graphs config', () => {
217
217
  VisualGraphSteps.getGraphConfigSearchPanelName().should('contain', graphConfigName);
218
218
  });
219
219
 
220
- it('Should create graph config with fixed node', {
221
- retries: {
222
- runMode: 1,
223
- openMode: 0
224
- }
225
- }, () => {
220
+ it('Should create graph config with fixed node', () => {
226
221
  cy.enableAutocomplete(repositoryId);
227
222
  // Given I have started a create config wizard
228
223
  startCreateConfigWizard();
@@ -354,7 +349,7 @@ describe('Graphs config', () => {
354
349
  // When I click cancel without changing the query
355
350
  VisualGraphSteps.cancelSaveConfig();
356
351
  // Then I expect to be redirected to configs list without confirmation
357
- cy.url().should('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
352
+ cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
358
353
  // And I open it for edit
359
354
  VisualGraphSteps.editConfig(graphConfigName);
360
355
  checkEditorWithQuery(QUERY_START);
@@ -377,7 +372,7 @@ describe('Graphs config', () => {
377
372
  ModalDialogSteps.clickOnConfirmButton();
378
373
  // Then I expect to be redirected to configs list page
379
374
  ModalDialogSteps.getDialog().should('not.exist');
380
- cy.url().should('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
375
+ cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
381
376
  });
382
377
 
383
378
  it('Should prevent leaving with confirmation when expand query is changed', () => {
@@ -459,7 +454,7 @@ function saveGraphConfig(graphConfigName) {
459
454
  // Then I expect a success notification
460
455
  ApplicationSteps.getSuccessNotifications().should('be.visible');
461
456
  // And I should be redirected to configs list view
462
- cy.url().should('eq', Cypress.config('baseUrl') + '/graphs-visualizations');
457
+ cy.url().should('include', Cypress.config('baseUrl') + '/graphs-visualizations');
463
458
  // And the new config should be present in the list
464
459
  VisualGraphSteps.getGraphConfig(graphConfigName).should('be.visible');
465
460
  }
@@ -0,0 +1,58 @@
1
+ import {VisualGraphSteps} from '../../../steps/visual-graph-steps.js';
2
+ import {ApplicationSteps} from '../../../steps/application-steps.js';
3
+
4
+ const DATA_SNIPPET =
5
+ 'PREFIX ex: <http://example.org/>\n' +
6
+ 'PREFIX sysont: <http://www.ontotext.com/proton/protonsys#>\n' +
7
+ 'PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n' +
8
+ 'ex:MyNode a ex:Thing ;\n' +
9
+ 'rdfs:label "My Node" ;\n' +
10
+ 'ex:description """# My Node\n\nThis is a **Markdown** literal.\n\n- item 1\n- item 2"""^^sysont:Markdown .';
11
+
12
+ describe('Node info panel', () => {
13
+ let repositoryId;
14
+ let graphConfigName;
15
+
16
+ beforeEach(() => {
17
+ cy.clearLocalStorage('ls.graphs-viz');
18
+ repositoryId = 'node-info-panel-' + Date.now();
19
+ graphConfigName = 'graph-config-' + Date.now();
20
+ cy.createRepository({id: repositoryId});
21
+ cy.presetRepository(repositoryId);
22
+ cy.importRDFTextSnippet(repositoryId, DATA_SNIPPET);
23
+ })
24
+
25
+ afterEach(() => {
26
+ cy.clearLocalStorage('ls.graphs-viz');
27
+ cy.deleteGraphConfig(graphConfigName);
28
+ cy.deleteRepository(repositoryId);
29
+ });
30
+
31
+ it('should render markdown content for literals with markdown datatype', () => {
32
+ cy.enableAutocomplete(repositoryId);
33
+ // Given I have opened the graphs visualizations page
34
+ VisualGraphSteps.visit();
35
+ // And I have created a graph config with query results
36
+ VisualGraphSteps.getCreateCustomGraphLink().click();
37
+ cy.url().should('include', '/config/save');
38
+ VisualGraphSteps.typeGraphConfigName(graphConfigName);
39
+ VisualGraphSteps.selectStartMode('node');
40
+ VisualGraphSteps.selectStartNode('MyNode', 0);
41
+ VisualGraphSteps.saveConfig();
42
+ ApplicationSteps.getSuccessNotifications().should('be.visible');
43
+ VisualGraphSteps.getGraphConfig(graphConfigName).should('be.visible');
44
+ // When I open the graph config
45
+ VisualGraphSteps.openGraphConfig(graphConfigName);
46
+ // Then I expect the graph visualization of the saved config to be opened
47
+ cy.url().should('contain', Cypress.config('baseUrl') + '/graphs-visualizations?config=');
48
+ VisualGraphSteps.getGraphVisualizationPane().should('be.visible');
49
+ // When I click on the node with markdown content
50
+ VisualGraphSteps.getCircleOfNodeByNodeId('http://example.org/MyNode').click();
51
+ // Then node info panel should be opened
52
+ VisualGraphSteps.getSidePanelContent().should('be.visible');
53
+ // And the markdown typed literal should be rendered
54
+ VisualGraphSteps.getPropertyByIndex(1).should('contain', 'This is a Markdown literal')
55
+ .and('contain', 'item 1')
56
+ .and('contain', 'item 2');
57
+ });
58
+ });
@@ -0,0 +1,142 @@
1
+ import {VisualGraphSteps} from '../../../steps/visual-graph-steps';
2
+ import {MainMenuSteps} from '../../../steps/main-menu-steps.js';
3
+ import {LicenseStubs} from '../../../stubs/license-stubs';
4
+ import {ApplicationSteps} from '../../../steps/application-steps';
5
+ import HomeSteps from '../../../steps/home-steps.js';
6
+ import {BaseSteps} from "../../../steps/base-steps.js";
7
+ import SparqlSteps from "../../../steps/sparql-steps.js";
8
+ import {VisualGraphSplitButtonSteps} from '../../../steps/visual-graph-split-button-steps.js';
9
+
10
+ const FILE_TO_IMPORT = 'wine.rdf';
11
+ const VALID_RESOURCE = 'USRegion';
12
+ const DEFAULT_LINKS_LIMIT = 100;
13
+
14
+ describe('Visual graph linksLimit URL parameter', () => {
15
+
16
+ let repositoryId;
17
+
18
+ beforeEach(() => {
19
+ cy.clearLocalStorage('ls.graphs-viz');
20
+ repositoryId = 'graphRepo-' + Date.now();
21
+ cy.createRepository({id: repositoryId});
22
+ cy.presetRepository(repositoryId);
23
+ cy.importServerFile(repositoryId, FILE_TO_IMPORT);
24
+ cy.enableAutocomplete(repositoryId);
25
+
26
+ LicenseStubs.spyGetLicense();
27
+ });
28
+
29
+ afterEach(() => {
30
+ cy.clearLocalStorage('ls.graphs-viz');
31
+ cy.deleteRepository(repositoryId);
32
+ });
33
+
34
+ it('Should include linksLimit as a URL parameter and respect its value', () => {
35
+ // Given I am on the home page, and I don't have a linkLimit in the URL
36
+ HomeSteps.visit();
37
+ BaseSteps.getUrl().should('not.include', 'linksLimit');
38
+
39
+ // When, I visit the visual graph via the main menu and open a resource
40
+ MainMenuSteps.clickOnVisualGraph();
41
+ VisualGraphSteps.verifyPageLoaded();
42
+ VisualGraphSteps.searchForResourceAndOpen(VALID_RESOURCE, VALID_RESOURCE);
43
+
44
+ // Then, I expect to see the visual graph with the default linksLimit
45
+ BaseSteps.getUrl().should('include', `linksLimit=${DEFAULT_LINKS_LIMIT}`);
46
+
47
+
48
+ // When, I update the link limit from the input field
49
+ VisualGraphSteps.updateLinksLimitField(5);
50
+
51
+ // Then I expect the URL to include the updated linksLimit in the URL
52
+ BaseSteps.getUrl().should('include', 'linksLimit=5');
53
+ // And, I expect to see the visual graph with the updated linksLimit
54
+ VisualGraphSteps.getNodes().should('have.length', 6); // 5 links plus the main node
55
+
56
+ // When, I change the linksLimit URL param directly to 10 and navigate to the updated URL
57
+ BaseSteps.getUrl().then((url) => {
58
+ const newUrl = new URL(url);
59
+ newUrl.searchParams.set('linksLimit', '10');
60
+ BaseSteps.visit(newUrl.toString().replace(Cypress.config('baseUrl'), ''));
61
+ });
62
+ // Then, I expect to see the visual graph with the updated linksLimit
63
+ VisualGraphSteps.getNodes().should('have.length', 11) // 10 links plus the main node;
64
+ // And, I expect the menu to be updated with the new linksLimit
65
+ VisualGraphSteps.getLinksNumberField().should('have.value', '10');
66
+ });
67
+
68
+ it('Should show an error toast and ignore linksLimit when the URL param value is invalid', () => {
69
+ // Given, I visit the visual graph with an invalid linksLimit URL param (outside the 1-1000 range)
70
+ BaseSteps.visit(`/graphs-visualizations?uri=http:%2F%2Fwww.w3.org%2FTR%2F2003%2FPR-owl-guide-20031209%2Fwine%23${VALID_RESOURCE}&linksLimit=9999`);
71
+
72
+ // Then, I expect to see an error notification about the invalid links limit
73
+ ApplicationSteps.getErrorNotifications()
74
+ .should('be.visible')
75
+ .and('contain', 'Invalid links limit');
76
+ // And I expect to see the visual graph with the default linksLimit
77
+ BaseSteps.getUrl().should('include', 'linksLimit=100');
78
+ VisualGraphSteps.getLinksNumberField().should('have.value', String(DEFAULT_LINKS_LIMIT));
79
+
80
+ // When, I try to set the limit to an invalid value via the form
81
+ VisualGraphSteps.updateLinksLimitField(1001);
82
+
83
+ // Then, I should see a warning message that the link limit is invalid
84
+ VisualGraphSteps.getInvalidLinksMessage().should('be.visible').and('contain', 'Enter a number up to 1000');
85
+ });
86
+
87
+ describe('When the user has a custom graph config', () => {
88
+ const configName = 'linkLimitConfig';
89
+
90
+ it('should change link limit, when starting point is query', () => {
91
+ // Given, I visit the visual graph and create a config with query starting point
92
+ VisualGraphSteps.visit();
93
+ VisualGraphSteps.createCustomGraph();
94
+ VisualGraphSteps.typeGraphConfigName(configName);
95
+ VisualGraphSteps.selectStartMode('query');
96
+ VisualGraphSteps.selectPredefinedQuerySample(0);
97
+ VisualGraphSteps.saveConfig();
98
+ VisualGraphSteps.openGraphConfig(configName);
99
+
100
+ // Then, I expect to see 10 nodes before changing the limit
101
+ BaseSteps.getUrl().should('include', 'linksLimit=10');
102
+ VisualGraphSteps.getNodes().should('have.length', 10); // 10 nodes total, since we don't have a root node
103
+
104
+ // When, I update the link limit from the input field
105
+ VisualGraphSteps.updateLinksLimitField(5);
106
+
107
+ // Then I expect the URL to include the updated linksLimit in the URL
108
+ BaseSteps.getUrl().should('include', 'linksLimit=5');
109
+ // And, I expect to see the visual graph with the updated linksLimit
110
+ VisualGraphSteps.getNodes().should('have.length', 5); // 5 nodes total, since we don't have a root node
111
+ });
112
+
113
+ afterEach(() => {
114
+ cy.deleteGraphConfig(configName)
115
+ });
116
+ });
117
+
118
+ describe('When the user has opened a graph with construct query', () => {
119
+ it('should change link limit, when is graph is opened in queryResultsMode', () => {
120
+ // Given, I open a graph in queryResultsMode (after construct query in the SPARQL editor)
121
+ // And enter a construct query, so I can visualize the results in a graph
122
+ SparqlSteps.visit();
123
+ SparqlSteps.typeQuery(`CONSTRUCT WHERE {?s ?p ?o} LIMIT 10`);
124
+ SparqlSteps.executeQuery();
125
+ VisualGraphSplitButtonSteps.clickOnVisualizeMainButton();
126
+
127
+ // Then, I expect to see 10 nodes before changing the limit
128
+ BaseSteps.getUrl().should('include', 'linksLimit=10');
129
+ VisualGraphSteps.getNodes().should('have.length', 10); // 10 nodes total, since we don't have a root node
130
+
131
+ // When, I update the link limit from the input field
132
+ VisualGraphSteps.updateLinksLimitField(5);
133
+
134
+ // Then I expect the URL to include the updated linksLimit in the URL
135
+ BaseSteps.getUrl().should('include', 'linksLimit=5');
136
+ // And, I expect to see the visual graph with the updated linksLimit
137
+ VisualGraphSteps.getNodes().should('have.length', 5); // 5 nodes total, since we don't have a root node
138
+ });
139
+ });
140
+ });
141
+
142
+