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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/.editorconfig +17 -0
  2. package/.nycrc +10 -0
  3. package/cypress-flaky.config.js +20 -6
  4. package/cypress-legacy.config.js +47 -0
  5. package/cypress-security.config.js +36 -0
  6. package/cypress.config.js +45 -6
  7. package/{integration-flaky → e2e-flaky}/explore/visual.graph.spec.js +4 -1
  8. package/{integration-flaky → e2e-flaky}/import/import-server-files-operations.spec.js +2 -2
  9. package/{integration-flaky → e2e-flaky}/import/import-user-data-batch-operations.spec.js +3 -3
  10. package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
  11. package/{integration-flaky → e2e-flaky}/setup/sparql-template-create.js +10 -18
  12. package/{integration-flaky → e2e-flaky}/sparql-editor/actions/execute-update-query.spec.js +2 -12
  13. package/{integration-flaky → e2e-flaky}/sparql-editor/actions/share-query.spec.js +1 -7
  14. package/{integration-flaky → e2e-flaky}/sparql-editor/yasr/table-plugin.spec.js +3 -7
  15. package/{integration → e2e-legacy}/cluster/cluster-states.spec.js +3 -3
  16. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository-without-class-hierarchy.spec.js +42 -0
  17. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository.spec.js +43 -0
  18. package/e2e-legacy/explore/class-hierarchy/class-hierarchy-without-selected-repository.spec.js +30 -0
  19. package/{integration/explore → e2e-legacy/explore/class-hierarchy}/class.hierarchy.spec.js +1 -1
  20. package/e2e-legacy/explore/class-relationships/class-relationships-repository-with-data.spec.js +42 -0
  21. package/e2e-legacy/explore/class-relationships/class-relationships-with-selected-repository.spec.js +39 -0
  22. package/e2e-legacy/explore/class-relationships/class-relationships-without-selected-repository.spec.js +21 -0
  23. package/{integration/explore/class.relationships.spec.js → e2e-legacy/explore/class-relationships/class-relationships.spec.js} +20 -50
  24. package/{integration/explore → e2e-legacy/explore/graphs-overview}/graphs.overview.spec.js +4 -4
  25. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-with-selected-repository.spec.js +44 -0
  26. package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-without-selected-repository.spec.js +32 -0
  27. package/e2e-legacy/explore/similarity-index/similarity-index-with-repository.spec.js +38 -0
  28. package/e2e-legacy/explore/similarity-index/similarity-index-without-repository.spec.js +21 -0
  29. package/{integration → e2e-legacy}/explore/visual-graph/graphs-config.spec.js +5 -10
  30. package/e2e-legacy/explore/visual-graph/node-info-panel.spec.js +58 -0
  31. package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +142 -0
  32. package/{integration → e2e-legacy}/explore/visual-graph/visual-graph-node-labels.spec.js +14 -2
  33. package/e2e-legacy/explore/visual-graph/visual-graph-with-selected-repository.js +38 -0
  34. package/e2e-legacy/explore/visual-graph/visual-graph-without-selected-repository.js +21 -0
  35. package/{integration → e2e-legacy}/explore/visual-graph/visual.graph.spec.js +75 -96
  36. package/{integration → e2e-legacy}/graphql/create-graphql-endpoint.spec.js +0 -2
  37. package/{integration → e2e-legacy}/graphql/edit-graphql-enpoint.spec.js +1 -1
  38. package/{integration → e2e-legacy}/graphql/filter-graphql-endpoints-on-management-view.spec.js +1 -1
  39. package/{integration → e2e-legacy}/graphql/graphql-endpoint-management-view.spec.js +4 -4
  40. package/e2e-legacy/graphql/graphql-endpoint-management-with-endpoints.spec.js +43 -0
  41. package/e2e-legacy/graphql/graphql-endpoint-management-with-selected-repository.spec.js +39 -0
  42. package/e2e-legacy/graphql/graphql-endpoint-management-without-selected-repository.spec.js +21 -0
  43. package/e2e-legacy/graphql/graphql-playground-with-endpoints.spec.js +40 -0
  44. package/e2e-legacy/graphql/graphql-playground-with-selected-repository.spec.js +38 -0
  45. package/e2e-legacy/graphql/graphql-playground-without-selected-repository.spec.js +22 -0
  46. package/{integration → e2e-legacy}/graphql/graphql-playground.spec.js +1 -1
  47. package/e2e-legacy/graphql/graphql-theme.spec.js +73 -0
  48. package/{integration → e2e-legacy}/graphql/import-graphql-endpoint-definitions.spec.js +0 -6
  49. package/e2e-legacy/guides/autocomplete/enable-autocomplete-guide.spec.js +49 -0
  50. package/e2e-legacy/guides/class-hierarcy/class-hierarchy-guide.spec.js +89 -0
  51. package/e2e-legacy/guides/class-relations/class-relations-guide.spec.js +76 -0
  52. package/e2e-legacy/guides/connectors/connectors-guide.spec.js +163 -0
  53. package/e2e-legacy/guides/create-similarity-index/create-similarity-index-guide.spec.js +74 -0
  54. package/e2e-legacy/guides/download-guide-resource/download-guide-resource-guide.js +55 -0
  55. package/e2e-legacy/guides/execute-sparql-query/execute-sparql-query-guide.spec.js +92 -0
  56. package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +63 -0
  57. package/e2e-legacy/guides/import-rdf-file/import-rdf-file.spec.js +105 -0
  58. package/e2e-legacy/guides/main-menu/main-menu-guide.spec.js +302 -0
  59. package/e2e-legacy/guides/navigation/navigation-guide.spec.js +64 -0
  60. package/e2e-legacy/guides/rdf-rank/rdf-rank-guide.spec.js +42 -0
  61. package/e2e-legacy/guides/repositories/create-repository-guide.spec.js +69 -0
  62. package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +168 -0
  63. package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +158 -0
  64. package/e2e-legacy/guides/ttyg/conversation/ttyg-conversation-guide.spec.js +92 -0
  65. package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +88 -0
  66. package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +372 -0
  67. package/e2e-legacy/guides/welcome/welcome-guide.spec.js +36 -0
  68. package/e2e-legacy/help/guides/guides-autostart.spec.js +126 -0
  69. package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +83 -0
  70. package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
  71. package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
  72. package/e2e-legacy/help/guides/movies-interactive-guide.spec.js +71 -0
  73. package/{integration/guides/star-wars-interactive-guide.js → e2e-legacy/help/guides/star-wars-interactive-guide.spec.js} +3 -2
  74. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
  75. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
  76. package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
  77. package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
  78. package/e2e-legacy/home/cookie-policy/cookie-policy.spec.js +182 -0
  79. package/e2e-legacy/home/documentation-link.spec.js +41 -0
  80. package/{integration → e2e-legacy}/home/google-analytics.spec.js +4 -6
  81. package/e2e-legacy/home/home-page-with-selected-repository.spec.js +69 -0
  82. package/e2e-legacy/home/home-page-without-repositories.spec.js +87 -0
  83. package/e2e-legacy/home/home-page-without-selected-repository.spec.js +59 -0
  84. package/{integration → e2e-legacy}/home/language-change.spec.js +2 -2
  85. package/e2e-legacy/home/rdf-resource-search.spec.js +160 -0
  86. package/e2e-legacy/home/view-resource-autocomplete.spec.js +65 -0
  87. package/{integration → e2e-legacy}/import/import-server-files.spec.js +5 -3
  88. package/{integration → e2e-legacy}/import/import-user-data-file-upload.spec.js +19 -13
  89. package/{integration → e2e-legacy}/import/import-user-data-text-snippet.spec.js +0 -2
  90. package/{integration → e2e-legacy}/import/import-user-data-url.spec.js +0 -23
  91. package/{integration → e2e-legacy}/import/import-user-data.spec.js +11 -4
  92. package/e2e-legacy/import/initial-state/import-page-with-selected-repositor.js +51 -0
  93. package/e2e-legacy/import/initial-state/import-page-with-selected-repository-without-imported-files.js +45 -0
  94. package/e2e-legacy/import/initial-state/import-page-without-selected-repository.spec.js +28 -0
  95. package/e2e-legacy/license/license-with-repository.spec.js +113 -0
  96. package/e2e-legacy/license/license-without-repository.spec.js +103 -0
  97. package/{integration → e2e-legacy}/license/license.spec.js +4 -4
  98. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-with-repository.spec.js +36 -0
  99. package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-without-repository.spec.js +25 -0
  100. package/{integration/monitor/monitor.backup-and-restore.spec.js → e2e-legacy/monitor/backup-and-restore/backup-and-restore.spec.js} +2 -2
  101. package/{integration → e2e-legacy}/monitor/global-operation-statuses-component.spec.js +12 -5
  102. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-with-repository.spec.js +39 -0
  103. package/e2e-legacy/monitor/query-and-updates/queries-and-updates-without-repository.spec.js +21 -0
  104. package/{integration/monitor → e2e-legacy/monitor/system}/monitor.resources.spec.js +3 -2
  105. package/e2e-legacy/monitor/system/system-monitoring-with-repository.spec.js +32 -0
  106. package/e2e-legacy/monitor/system/system-monitoring-without-repository.spec.js +20 -0
  107. package/e2e-legacy/not-found/not-found.spec.js +23 -0
  108. package/{integration → e2e-legacy}/repository/ontop-repository.spec.js +1 -1
  109. package/{integration → e2e-legacy}/repository/repositories.spec.js +37 -45
  110. package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +181 -0
  111. package/{integration → e2e-legacy}/resource/resource.spec.js +50 -20
  112. package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +84 -0
  113. package/e2e-legacy/setup/aclmanagement/acl-management-without-repositories.spec.js +21 -0
  114. package/{integration → e2e-legacy}/setup/aclmanagement/create-rule.spec.js +4 -0
  115. package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
  116. package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
  117. package/{integration/setup → e2e-legacy/setup/autocomplete}/autocomplete.spec.js +6 -7
  118. package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
  119. package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
  120. package/e2e-legacy/setup/connectors/connectors-initial-state-with-selected-repository.spec.js +41 -0
  121. package/e2e-legacy/setup/connectors/connectors-initial-state-without-repositories.spec.js +21 -0
  122. package/{integration → e2e-legacy}/setup/connectors-lucene.spec.js +26 -10
  123. package/{integration → e2e-legacy}/setup/jdbc/jdbc-create.spec.js +4 -4
  124. package/e2e-legacy/setup/jdbc/jdbc-with-repository.spec.js +39 -0
  125. package/e2e-legacy/setup/jdbc/jdbc-without-repository.spec.js +27 -0
  126. package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
  127. package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
  128. package/{integration/setup → e2e-legacy/setup/namespaces}/namespaces.spec.js +6 -5
  129. package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
  130. package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
  131. package/{integration/setup → e2e-legacy/setup/plugins}/plugins.spec.js +3 -3
  132. package/e2e-legacy/setup/rdf-rank/rdf-rank-with-repository.spec.js +40 -0
  133. package/e2e-legacy/setup/rdf-rank/rdf-rank-without-repository.spec.js +30 -0
  134. package/{integration/setup → e2e-legacy/setup/rdf-rank}/rdf-rank.spec.js +3 -5
  135. package/e2e-legacy/setup/repositories/repositories-view-with-repositories.spec.js +40 -0
  136. package/e2e-legacy/setup/repositories/repositories-view-without-repositories.spec.js +28 -0
  137. package/e2e-legacy/setup/settings/my-settings-initial-state.spec.js +86 -0
  138. package/e2e-legacy/setup/settings/my-settings.spec.js +207 -0
  139. package/{integration/setup/sparql-template-create.js → e2e-legacy/setup/sparql-template/sparql-template-create.spec.js} +16 -8
  140. package/e2e-legacy/setup/sparql-template/sparql-template-with-repository.spec.js +39 -0
  141. package/e2e-legacy/setup/sparql-template/sparql-template-without-repository.spec.js +29 -0
  142. package/{integration/setup → e2e-legacy/setup/sparql-template}/sparql-templates.spec.js +4 -4
  143. package/{integration/setup → e2e-legacy/setup/users-and-access}/user-and-access.spec.js +184 -87
  144. package/e2e-legacy/setup/users-and-access/users-and-access-initial-state.spec.js +25 -0
  145. package/{integration → e2e-legacy}/sparql-editor/actions/expand-results-over-sameas.spec.js +12 -12
  146. package/{integration → e2e-legacy}/sparql-editor/actions/include-inferred-statements.spec.js +6 -6
  147. package/{integration → e2e-legacy}/sparql-editor/actions/inferred-sameas.spec.js +10 -8
  148. package/{integration → e2e-legacy}/sparql-editor/actions/show-saved-queries.spec.js +1 -6
  149. package/{integration → e2e-legacy}/sparql-editor/saved-query/abort-query.spec.js +1 -1
  150. package/{integration → e2e-legacy}/sparql-editor/saved-query/edit-query.spec.js +3 -3
  151. package/{integration → e2e-legacy}/sparql-editor/saved-query/readonly-query.spec.js +15 -24
  152. package/{integration → e2e-legacy}/sparql-editor/saved-query/share-query.spec.js +32 -1
  153. package/e2e-legacy/sparql-editor/sparql-page-with-selected-repository.spec.js +33 -0
  154. package/e2e-legacy/sparql-editor/sparql-page-without-selected-repository.spec.js +26 -0
  155. package/{integration → e2e-legacy}/sparql-editor/yasgui-tabs.spec.js +2 -12
  156. package/e2e-legacy/sparql-editor/yasqe-themes.spec.js +54 -0
  157. package/{integration → e2e-legacy}/sparql-editor/yasr/pagination.spec.js +5 -18
  158. package/{integration → e2e-legacy}/sparql-editor/yasr/table-plugin.spec.js +1 -6
  159. package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +106 -0
  160. package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +80 -0
  161. package/{integration → e2e-legacy}/ttyg/agent-list.spec.js +53 -2
  162. package/{integration → e2e-legacy}/ttyg/agent-select-menu.spec.js +25 -2
  163. package/{integration → e2e-legacy}/ttyg/chat-list.spec.js +3 -14
  164. package/{integration → e2e-legacy}/ttyg/chat-panel.spec.js +74 -6
  165. package/{integration → e2e-legacy}/ttyg/clone-agent.spec.js +24 -2
  166. package/{integration → e2e-legacy}/ttyg/create-agent.spec.js +37 -66
  167. package/{integration → e2e-legacy}/ttyg/create-chat.spec.js +6 -4
  168. package/{integration → e2e-legacy}/ttyg/delete-agent.spec.js +1 -2
  169. package/e2e-legacy/ttyg/edit-agent.spec.js +178 -0
  170. package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
  171. package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
  172. package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
  173. package/{integration-flaky → e2e-legacy}/ttyg/ttyg-permission.spec.js +23 -17
  174. package/{integration → e2e-legacy}/ttyg/ttyg-view.spec.js +2 -2
  175. package/e2e-security/repository/url-with-repository-id-parameter.spec.js +57 -0
  176. package/e2e-security/setup/home/cookie-policy.spec.js +290 -0
  177. package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +193 -0
  178. package/e2e-security/setup/users-and-access/graphql-user.spec.js +126 -0
  179. package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +70 -0
  180. package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +99 -0
  181. package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
  182. package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
  183. package/eslint.config.js +39 -0
  184. package/fixtures/graph/graph-configurations.json +59 -0
  185. package/fixtures/guides/autocomplete/enable-autocomplete-guide.json +12 -0
  186. package/fixtures/guides/class-hierarchy/class-hierarchy-guide.json +35 -0
  187. package/fixtures/guides/class-relations/class-relations-guide.json +33 -0
  188. package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +15 -0
  189. package/fixtures/guides/connectors/connectors-guide.json +66 -0
  190. package/fixtures/guides/connectors/lucene-connector-guide.json +120 -0
  191. package/fixtures/guides/create-repository/create-repository-guide.json +25 -0
  192. package/fixtures/guides/create-similarity-index/create-similarity-index-guide.json +36 -0
  193. package/fixtures/guides/download-guide-resource/download-guide-resource-guide.json +25 -0
  194. package/fixtures/guides/download-resource.ttl +629 -0
  195. package/fixtures/guides/execute-sparql-query/execute-sparql-query-guide.json +54 -0
  196. package/fixtures/guides/import-rdf-file/confirm-duplicate-rdf-file-guide.json +30 -0
  197. package/fixtures/guides/import-rdf-file/import-rdf-file-guide.json +21 -0
  198. package/fixtures/guides/main-menu/main-menu-guide.json +98 -0
  199. package/fixtures/guides/navigation/navigation-guide.json +60 -0
  200. package/fixtures/guides/rdf-rank/rdf-rank-guide.json +18 -0
  201. package/fixtures/guides/table-graph-explore/table-graph-explore-guide.json +51 -0
  202. package/fixtures/guides/table-graph-explore/table-graph-explore-without-substeps-guide.json +25 -0
  203. package/fixtures/guides/ttyg/configure-agent/configure-ttyg-agent-guide.json +74 -0
  204. package/fixtures/guides/ttyg/conversation/ttyg-conversation-guide.json +26 -0
  205. package/fixtures/guides/ttyg/edit-ttyg-agent/edit-ttyg-agent-guide.json +22 -0
  206. package/fixtures/guides/visual-graph/visual-graph-config-guide.json +39 -0
  207. package/fixtures/guides/visual-graph/visual-graph-guide.json +85 -0
  208. package/fixtures/guides/welcome/welcome-guide.json +18 -0
  209. package/fixtures/repositories/free-access.json +13 -0
  210. package/fixtures/similarity/get-ttyg-similarity-instances.json +10 -0
  211. package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
  212. package/fixtures/ttyg/agent/get-agent-defaults.json +9 -2
  213. package/fixtures/ttyg/agent/get-agent-list-with-incompatible-agents.json +79 -0
  214. package/fixtures/ttyg/agent/get-similarity-indexes-for-another-repo.json +8 -0
  215. package/fixtures/ttyg/agent/get-similarity-indexes.json +22 -0
  216. package/fixtures/ttyg/chats/ask-question-cancel.json +12 -0
  217. package/fixtures/ttyg/chats/ask-question.json +12 -2
  218. package/fixtures/ttyg/chats/cancel-question-response.json +1 -0
  219. package/fixtures/ttyg/chats/create/create-chat-response.json +10 -14
  220. package/fixtures/ttyg/chats/create/question-response-after-chat-creation.json +29 -0
  221. package/fixtures/ttyg/chats/explain-response-1.json +2 -48
  222. package/fixtures/ttyg/chats/explain-response-3.json +12 -0
  223. package/fixtures/ttyg/chats/get-chat.json +6 -1
  224. package/npm-shrinkwrap.json +11004 -3815
  225. package/package.json +58 -42
  226. package/plugins/index.js +10 -5
  227. package/steps/application-steps.js +8 -6
  228. package/steps/base-steps.js +29 -0
  229. package/steps/class-views-steps.js +35 -7
  230. package/steps/cluster/cluster-page-steps.js +12 -2
  231. package/steps/cookie-policy/cookie-consent-banner-steps.js +21 -0
  232. package/steps/cookie-policy/cookie-policy-modal.steps.js +56 -0
  233. package/steps/error-page-steps.js +9 -0
  234. package/steps/error-steps.js +15 -3
  235. package/steps/explore/class-relationships-steps.js +64 -0
  236. package/steps/explore/graphs-overview-steps.js +21 -1
  237. package/steps/explore/similarity-index-create-steps.js +5 -3
  238. package/steps/explore/similarity-indexes-steps.js +16 -2
  239. package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
  240. package/steps/graphql/playground-editor-steps.js +46 -0
  241. package/steps/guides/guide-dialog-steps.js +81 -2
  242. package/steps/guides/guide-steps.js +54 -2
  243. package/steps/guides/movies-guide-steps.js +2 -1
  244. package/steps/header-steps.js +22 -0
  245. package/steps/home-steps.js +184 -77
  246. package/steps/import/import-resource-message-dialog.js +1 -1
  247. package/steps/import/import-steps.js +12 -16
  248. package/steps/import/import-user-data-steps.js +5 -1
  249. package/steps/language-selector-steps.js +2 -2
  250. package/steps/license-steps.js +91 -9
  251. package/steps/login-steps.js +31 -6
  252. package/steps/main-menu-steps.js +244 -19
  253. package/steps/modal-dialog-steps.js +32 -1
  254. package/steps/monitoring/backup-and-restore-steps.js +9 -3
  255. package/steps/monitoring/queries-and-updates-steps.js +20 -0
  256. package/steps/monitoring/system-monitoring-steps.js +40 -0
  257. package/steps/not-found/not-found-steps.js +23 -0
  258. package/steps/operations-statuses-component-steps.js +5 -10
  259. package/steps/rdf-resource-search-steps.js +55 -0
  260. package/steps/repository-selector-steps.js +3 -3
  261. package/steps/repository-steps.js +88 -18
  262. package/steps/resource/resource-steps.js +6 -10
  263. package/steps/rest-api-documentation-steps.js +15 -0
  264. package/steps/setup/acl-management-steps.js +18 -2
  265. package/steps/setup/autocomplete-steps.js +23 -8
  266. package/steps/setup/connectors-steps.js +32 -0
  267. package/steps/setup/jdbc-steps.js +18 -4
  268. package/steps/setup/namespace-steps.js +10 -7
  269. package/steps/setup/plugins-steps.js +12 -5
  270. package/steps/setup/rdf-rank-steps.js +23 -9
  271. package/steps/setup/settings-steps.js +101 -2
  272. package/steps/setup/sparql-templates-steps.js +19 -1
  273. package/steps/setup/user-and-access-steps.js +50 -16
  274. package/steps/shared-modal-dialog-steps.js +45 -0
  275. package/steps/sparql-editor-steps.js +21 -2
  276. package/steps/sparql-steps.js +13 -1
  277. package/steps/system-information-steps.js +70 -0
  278. package/steps/toaster-steps.js +18 -6
  279. package/steps/ttyg/chat-panel-steps.js +40 -2
  280. package/steps/ttyg/ttyg-agent-settings-modal.steps.js +136 -31
  281. package/steps/ttyg/ttyg-view-steps.js +80 -10
  282. package/steps/visual-graph-split-button-steps.js +45 -0
  283. package/steps/visual-graph-steps.js +106 -10
  284. package/steps/widgets/active-repository-widget-steps.js +29 -0
  285. package/steps/widgets/license-widget-steps.js +9 -0
  286. package/steps/widgets/repository-errors-widget-steps.js +21 -0
  287. package/steps/widgets/saved-sparql-queries-widget-steps.js +9 -0
  288. package/steps/yasgui/yasgui-loader.js +3 -3
  289. package/steps/yasgui/yasgui-steps.js +1 -1
  290. package/steps/yasgui/yasqe-steps.js +35 -4
  291. package/steps/yasgui/yasr-steps.js +35 -5
  292. package/stubs/autocomplete/autocomplete-stubs.js +7 -0
  293. package/stubs/browser-stubs.js +21 -0
  294. package/stubs/environment-stubs.js +9 -1
  295. package/stubs/graph-config-stubs.js +17 -0
  296. package/stubs/guides/guides-stubs.js +103 -0
  297. package/stubs/license-stubs.js +51 -0
  298. package/stubs/repositories/repositories-stubs.js +180 -75
  299. package/stubs/saved-queries-stubs.js +5 -0
  300. package/stubs/security-stubs.js +12 -0
  301. package/stubs/similarity-index-stubs.js +4 -0
  302. package/stubs/sparql-stubs.js +10 -0
  303. package/stubs/ttyg/ttyg-stubs.js +64 -15
  304. package/stubs/yasgui/query-stubs.js +5 -1
  305. package/support/commands.js +22 -1
  306. package/support/connector-commands.js +13 -0
  307. package/support/e2e-security.js +9 -0
  308. package/support/{index.js → e2e.js} +9 -3
  309. package/support/repository-commands.js +29 -4
  310. package/support/settings-commands.js +33 -1
  311. package/support/url-commands.js +13 -0
  312. package/support/user-commands.js +9 -4
  313. package/utils/html-util.js +24 -4
  314. package/Dockerfile +0 -11
  315. package/fixtures/locale-en.json +0 -3342
  316. package/integration/explore/similarity-index/similarity-index-create.spec.js +0 -333
  317. package/integration/explore/similarity-index/similarity-index.spec.js +0 -88
  318. package/integration/explore/similarity-index/similarity.spec.js +0 -628
  319. package/integration/guides/movies-interactive-guide.spec.js +0 -73
  320. package/integration/home/cookie-policy.spec.js +0 -90
  321. package/integration/home/documentation-link.spec.js +0 -60
  322. package/integration/home/language-selector.spec.js +0 -19
  323. package/integration/home/rdf-resource-search.spec.js +0 -177
  324. package/integration/home/view-resource-autocomplete.spec.js +0 -52
  325. package/integration/home/workbench.home.spec.js +0 -30
  326. package/integration/monitor/monitor.queries.spec.js +0 -31
  327. package/integration/setup/my-settings.spec.js +0 -289
  328. package/integration/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -57
  329. package/integration/ttyg/edit-agent.spec.js +0 -99
  330. package/integration-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -54
  331. package/stubs/repositories-stub.js +0 -73
  332. package/{integration-flaky → e2e-flaky}/import/import.server.files.spec.js +0 -0
  333. package/{integration-flaky → e2e-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
  334. package/{integration-flaky → e2e-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
  335. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +0 -0
  336. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +0 -0
  337. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
  338. package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration.spec.js +0 -0
  339. package/{integration → e2e-legacy}/cluster/cluster-legend.spec.js +0 -0
  340. package/{integration → e2e-legacy}/cluster/edit-cluster-nodes-modal.spec.js +0 -0
  341. package/{integration → e2e-legacy}/graphql/activate-deactivate-graphql-endpoint.spec.js +0 -0
  342. package/{integration → e2e-legacy}/graphql/delete-graphql-endpoint.spec.js +0 -0
  343. package/{integration → e2e-legacy}/graphql/export-graphql-endpoint-definition.spec.js +0 -0
  344. package/{integration → e2e-legacy}/graphql/set-default-graphql-endpoint.spec.js +0 -0
  345. package/{integration/help → e2e-legacy/help/system-information}/system-information.spec.js +0 -0
  346. package/{integration → e2e-legacy}/home/create-repository.spec.js +0 -0
  347. package/{integration → e2e-legacy}/import/import-server-files-batch-operations.spec.js +0 -0
  348. package/{integration → e2e-legacy}/import/import-user-data-settings-dialog.spec.js +0 -0
  349. package/{integration → e2e-legacy}/import/import-view.spec.js +0 -0
  350. package/{integration → e2e-legacy}/repository/attach-remote-location.spec.js +1 -1
  351. /package/{integration → e2e-legacy}/repository/repository-commands.spec.js +0 -0
  352. /package/{integration → e2e-legacy}/setup/aclmanagement/delete-rule.spec.js +0 -0
  353. /package/{integration → e2e-legacy}/setup/aclmanagement/edit-rule.spec.js +0 -0
  354. /package/{integration → e2e-legacy}/setup/aclmanagement/render-rules.spec.js +0 -0
  355. /package/{integration → e2e-legacy}/setup/aclmanagement/reorder-rules.spec.js +0 -0
  356. /package/{integration → e2e-legacy}/setup/aclmanagement/revert-rules.spec.js +0 -0
  357. /package/{integration → e2e-legacy}/setup/aclmanagement/scopes.spec.js +0 -0
  358. /package/{integration → e2e-legacy}/setup/aclmanagement/update-rules.spec.js +0 -0
  359. /package/{integration → e2e-legacy}/setup/jdbc/jdbc.spec.js +0 -0
  360. /package/{integration → e2e-legacy}/sparql-editor/actions/execute-query.spec.js +0 -0
  361. /package/{integration → e2e-legacy}/sparql-editor/actions/save-query.spec.js +0 -0
  362. /package/{integration → e2e-legacy}/sparql-editor/internationalization.spec.js +0 -0
  363. /package/{integration → e2e-legacy}/sparql-editor/saved-query/delete-query.spec.js +0 -0
  364. /package/{integration → e2e-legacy}/sparql-editor/sparql-editor.spec.js +0 -0
  365. /package/{integration → e2e-legacy}/sparql-editor/yasr/download-as.spec.js +0 -0
@@ -1,34 +1,37 @@
1
- import {UserAndAccessSteps} from "../../steps/setup/user-and-access-steps";
2
- import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
3
- import {RepositorySelectorSteps} from "../../steps/repository-selector-steps";
4
- import {ModalDialogSteps} from "../../steps/modal-dialog-steps";
5
- import {ToasterSteps} from "../../steps/toaster-steps";
6
- import HomeSteps from "../../steps/home-steps";
7
- import {LoginSteps} from "../../steps/login-steps";
8
-
1
+ import {UserAndAccessSteps} from '../../../steps/setup/user-and-access-steps';
2
+ import {RepositoriesStubs} from '../../../stubs/repositories/repositories-stubs';
3
+ import {RepositorySelectorSteps} from '../../../steps/repository-selector-steps';
4
+ import {ModalDialogSteps} from '../../../steps/modal-dialog-steps';
5
+ import {ToasterSteps} from '../../../steps/toaster-steps';
6
+ import HomeSteps from '../../../steps/home-steps';
7
+ import {LoginSteps} from '../../../steps/login-steps';
8
+ import {MainMenuSteps} from '../../../steps/main-menu-steps';
9
+ import {SecurityStubs} from '../../../stubs/security-stubs.js';
9
10
 
10
11
  describe('User and Access', () => {
11
12
 
12
- const PASSWORD = "password";
13
- const ROLE_USER = "#roleUser";
14
- const ROLE_REPO_MANAGER = "#roleRepoAdmin";
15
- const ROLE_CUSTOM_ADMIN = "#roleAdmin";
16
- const DEFAULT_ADMIN_PASSWORD = "root";
13
+ const PASSWORD = 'password';
14
+ const ROLE_USER = '#roleUser';
15
+ const ROLE_REPO_MANAGER = '#roleRepoAdmin';
16
+ const ROLE_CUSTOM_ADMIN = '#roleAdmin';
17
+ const DEFAULT_ADMIN_PASSWORD = 'root';
17
18
 
19
+ // eslint-disable-next-line no-undef
18
20
  context('', () => {
19
- const user = "user";
21
+ const user = 'user';
20
22
 
21
23
  beforeEach(() => {
22
24
  UserAndAccessSteps.visit();
23
- cy.window();
24
25
  // Users table should be visible
25
26
  UserAndAccessSteps.getUsersTable().should('be.visible');
27
+ cy.switchOffSecurity(true);
26
28
  });
27
29
 
28
30
  afterEach(() => {
29
- cy.loginAsAdmin().then(()=> {
31
+ cy.loginAsAdmin().then(() => {
30
32
  cy.deleteUser(user, true);
31
33
  cy.switchOffSecurity(true);
34
+ cy.switchOffFreeAccess(false);
32
35
  });
33
36
  });
34
37
 
@@ -84,22 +87,57 @@ describe('User and Access', () => {
84
87
  // Then the 'create' button should be disabled
85
88
  UserAndAccessSteps.getConfirmUserCreateButton().should('be.disabled');
86
89
  // And the field should show an error
87
- UserAndAccessSteps.getFieldError().should('contain.text', 'Must be at least 2 symbols long');
90
+ UserAndAccessSteps.getCustomRoleFieldError().should('contain.text', 'Must be at least 2 symbols long');
88
91
  // When I add more text to the custom role tag
89
92
  UserAndAccessSteps.addTextToCustomRoleField('A{enter}');
90
93
  // Then the 'create' button should be enabled
91
94
  UserAndAccessSteps.getConfirmUserCreateButton().should('be.enabled');
92
95
  // And the field error should not exist
93
- UserAndAccessSteps.getFieldError().should('not.be.visible');
96
+ UserAndAccessSteps.getCustomRoleFieldError().should('not.be.visible');
94
97
 
95
98
  // When I type an invalid tag
96
99
  UserAndAccessSteps.addTextToCustomRoleField('B{enter}');
97
100
  // And the field shows an error
98
- UserAndAccessSteps.getFieldError().should('contain.text', 'Must be at least 2 symbols long');
101
+ UserAndAccessSteps.getCustomRoleFieldError().should('contain.text', 'Must be at least 2 symbols long');
99
102
  // When I delete the invalid text
100
103
  UserAndAccessSteps.addTextToCustomRoleField('{backspace}');
101
104
  // Then the error should not be visible
102
- UserAndAccessSteps.getFieldError().should('not.be.visible');
105
+ UserAndAccessSteps.getCustomRoleFieldError().should('not.be.visible');
106
+
107
+ // When I create the user with a valid custom role
108
+ UserAndAccessSteps.clickWriteAccessAny();
109
+ SecurityStubs.spyOnUserCreate()
110
+ UserAndAccessSteps.confirmUserCreate();
111
+ // Then the user should be created with that custom role
112
+ cy.wait('@create-user').its('request.body').then((body) => {
113
+ expect(body).to.deep.eq({
114
+ "password": "password",
115
+ "grantedAuthorities": [
116
+ "ROLE_USER",
117
+ "CUSTOM_AA",
118
+ "WRITE_REPO_*",
119
+ "READ_REPO_*"
120
+ ],
121
+ "appSettings": {
122
+ "DEFAULT_VIS_GRAPH_SCHEMA": true,
123
+ "DEFAULT_INFERENCE": true,
124
+ "DEFAULT_SAMEAS": true,
125
+ "IGNORE_SHARED_QUERIES": false,
126
+ "EXECUTE_COUNT": true
127
+ }
128
+ })
129
+ });
130
+
131
+ cy.url().should('include', '/users');
132
+ UserAndAccessSteps.findUserInTable(user).should('be.visible');
133
+ UserAndAccessSteps.getUserCustomRoles('@user')
134
+ .should('have.length', 1)
135
+ .eq(0).and('have.text', 'AA');
136
+ // And when I open the edit page for that user, the custom role should be visible in the field without the prefix
137
+ UserAndAccessSteps.openEditUserPage(user);
138
+ UserAndAccessSteps.getCustomRoleField().find('.tag-item span')
139
+ .should('have.length', 1)
140
+ .eq(0).and('have.text', 'AA');
103
141
  });
104
142
 
105
143
  it('Adding a role with a CUSTOM_ prefix shows a warning message', () => {
@@ -117,8 +155,63 @@ describe('User and Access', () => {
117
155
  UserAndAccessSteps.getUsersTable().should('be.visible');
118
156
  UserAndAccessSteps.getSplashLoader().should('not.be.visible');
119
157
  });
120
- })
121
158
 
159
+ it('should toggle free access after Admin has logged in', () => {
160
+ // Given I have available repositories to allow Free Access for
161
+ RepositoriesStubs.stubRepositories();
162
+ RepositoriesStubs.stubFreeAccess();
163
+ // When I enable security
164
+ UserAndAccessSteps.toggleSecurity();
165
+ // When I log in as an Admin
166
+ LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
167
+ // Then the page should load
168
+ UserAndAccessSteps.getSplashLoader().should('not.be.visible');
169
+ UserAndAccessSteps.getUsersTable().should('be.visible');
170
+ // The Free Access toggle should be OFF
171
+ UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
172
+ // When I toggle Free Access ON
173
+ UserAndAccessSteps.toggleFreeAccess();
174
+ // And I allow free access to a repository
175
+ ModalDialogSteps.getDialog().should('be.visible');
176
+ // Then I click OK in the modal
177
+ ModalDialogSteps.clickOKButton();
178
+ // Then the toggle button should be ON
179
+ UserAndAccessSteps.getFreeAccessSwitchInput().should('be.checked');
180
+ // And I should see a success message
181
+ ToasterSteps.verifySuccess('Free access has been enabled.');
182
+ ToasterSteps.getToast().should('not.exist');
183
+ UserAndAccessSteps.getUsersTable().should('be.visible');
184
+ // When I toggle Free Access OFF
185
+ UserAndAccessSteps.toggleFreeAccess();
186
+ // Then I should see a success message
187
+ ToasterSteps.getToast().should('exist');
188
+ ToasterSteps.getToasterMessage().should('contain', 'Free access has been disabled.');
189
+ });
190
+
191
+ it('should redirect to previous page after logout and then login', () => {
192
+ UserAndAccessSteps.toggleSecurity();
193
+ LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
194
+ MainMenuSteps.clickOnSparqlMenu();
195
+ cy.url().should('include', '/sparql');
196
+
197
+ LoginSteps.logout();
198
+ cy.url().should('include', '/login');
199
+ LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
200
+ cy.url().should('include', '/sparql');
201
+ });
202
+
203
+ it('should redirect to correct return url when user is authenticated and on login page', () => {
204
+ UserAndAccessSteps.visit();
205
+ UserAndAccessSteps.toggleSecurity();
206
+ LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
207
+ UserAndAccessSteps.getUsersTable().should('be.visible');
208
+
209
+ cy.visit('/login?r=%252Fsparql');
210
+ cy.reload();
211
+ UserAndAccessSteps.getUrl().should('include', '/sparql');
212
+ });
213
+ });
214
+ // eslint-disable-next-line no-undef
122
215
  context('GraphQL only', () => {
123
216
  let repositoryId1;
124
217
  let repositoryId2;
@@ -146,6 +239,7 @@ describe('User and Access', () => {
146
239
  cy.deleteRepository(repositoryId2, true);
147
240
  cy.deleteRepository(repositoryId3, true);
148
241
  cy.deleteUser(graphqlUser, true);
242
+ cy.switchOffFreeAccess(true);
149
243
  cy.switchOffSecurity(true);
150
244
  });
151
245
 
@@ -156,7 +250,8 @@ describe('User and Access', () => {
156
250
  createUser(graphqlUser, PASSWORD, ROLE_USER, {read: true, graphql: true, repoName: repositoryId2});
157
251
  });
158
252
 
159
- it('Can create user with different auth combinations', () => {
253
+ // Fails for unknown reason only in CI
254
+ it.skip('Can create user with different auth combinations', () => {
160
255
  cy.wait('@getRepositories');
161
256
  // WHEN I create a user with read + GraphQL for repository #2
162
257
  createUser(graphqlUser, PASSWORD, ROLE_USER, {read: true, graphql: true, repoName: repositoryId2});
@@ -197,7 +292,8 @@ describe('User and Access', () => {
197
292
  assertUserAuths(graphqlUser, {repo: repositoryId3, read: false, write: true, graphql: true});
198
293
  });
199
294
 
200
- it('Should have access to 5 pages when have graphql only rights', () => {
295
+ // TODO remove skipped flag from all tests after merge of https://github.com/Ontotext-AD/graphdb-workbench/pull/2042
296
+ it.skip('Should have access to 5 pages when have graphql only rights', () => {
201
297
  cy.wait('@getRepositories');
202
298
  // WHEN I create a user with read + GraphQL for repository #2
203
299
  createUser(graphqlUser, PASSWORD, ROLE_USER, {readWrite: true, graphql: true, repoName: repositoryId1});
@@ -215,7 +311,7 @@ describe('User and Access', () => {
215
311
  });
216
312
  });
217
313
 
218
- it('Should not have access endpoints management when have read graphql only rights', () => {
314
+ it.skip('Should not have access endpoints management when have read graphql only rights', () => {
219
315
  cy.wait('@getRepositories');
220
316
  // WHEN I create a user with read + GraphQL for repository #2
221
317
  createUser(graphqlUser, PASSWORD, ROLE_USER, {read: true, graphql: true, repoName: repositoryId1});
@@ -233,7 +329,7 @@ describe('User and Access', () => {
233
329
  });
234
330
  });
235
331
 
236
- it('Should have all access to endpoints management when have REPO_MANAGER role', () => {
332
+ it.skip('Should have all access to endpoints management when have REPO_MANAGER role', () => {
237
333
  cy.wait('@getRepositories');
238
334
  createUser(graphqlUser, PASSWORD, ROLE_REPO_MANAGER);
239
335
  //enable security
@@ -249,12 +345,12 @@ describe('User and Access', () => {
249
345
  });
250
346
  });
251
347
 
252
- it('Can have Free Access and GraphQL working together', () => {
348
+ it.skip('Can have Free Access and GraphQL working together', () => {
253
349
  cy.wait('@getRepositories');
254
350
  //enable security
255
351
  UserAndAccessSteps.toggleSecurity();
256
352
  //login with the admin
257
- LoginSteps.loginWithUser("admin", DEFAULT_ADMIN_PASSWORD);
353
+ LoginSteps.loginWithUser('admin', DEFAULT_ADMIN_PASSWORD);
258
354
  // The Free Access toggle should be OFF
259
355
  UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
260
356
  // When I toggle Free Access ON
@@ -278,14 +374,14 @@ describe('User and Access', () => {
278
374
  // I change the repository to this with GraphQL only rights
279
375
  RepositorySelectorSteps.selectRepository(repositoryId3);
280
376
  // Then I should have GraphQL only rights
281
- FREE_ACCESS_MENU_ITEMS_WITHOUT_GRAPHQL.forEach(({path, expectedUrl, checks, expectedTitle}) => {
377
+ FREE_ACCESS_MENU_ITEMS_WITHOUT_GRAPHQL.forEach(({path, expectedUrl, checks, expectedTitle}) => {
282
378
  navigateMenuPath(path, expectedUrl, expectedTitle);
283
379
  if (checks) {
284
380
  runChecks(checks);
285
381
  }
286
382
  });
287
383
  // Turn free access off
288
- cy.loginAsAdmin().then(()=> {
384
+ cy.loginAsAdmin().then(() => {
289
385
  cy.switchOffFreeAccess(true);
290
386
  });
291
387
  });
@@ -295,7 +391,7 @@ describe('User and Access', () => {
295
391
  if (repoName === '*') {
296
392
  UserAndAccessSteps.clickGraphqlAccessAny();
297
393
  } else {
298
- UserAndAccessSteps.clickGraphqlAccessRepo(repoName);
394
+ UserAndAccessSteps.clickGraphqlAccessRepo(repoName);
299
395
  }
300
396
  }
301
397
 
@@ -323,7 +419,7 @@ describe('User and Access', () => {
323
419
  UserAndAccessSteps.selectRoleRadioButton(role);
324
420
  UserAndAccessSteps.getRoleRadioButton(role).should('be.checked');
325
421
 
326
- if (role === "#roleUser") {
422
+ if (role === '#roleUser') {
327
423
  setRoles(opts);
328
424
  UserAndAccessSteps.confirmUserCreate();
329
425
  } else if (role === ROLE_CUSTOM_ADMIN && opts.noPassword) {
@@ -361,6 +457,7 @@ describe('User and Access', () => {
361
457
  function testForUser(name, isAdmin) {
362
458
  //enable security
363
459
  UserAndAccessSteps.toggleSecurity();
460
+ LoginSteps.visitLoginPageWithReturnUrl('/users');
364
461
  //login new user
365
462
  LoginSteps.loginWithUser(name, PASSWORD);
366
463
  //verify permissions
@@ -368,7 +465,7 @@ describe('User and Access', () => {
368
465
  if (isAdmin) {
369
466
  UserAndAccessSteps.getUsersTable().should('be.visible');
370
467
  } else {
371
- UserAndAccessSteps.getError().should('contain',
468
+ UserAndAccessSteps.getPermissionError().should('contain',
372
469
  'You have no permission to access this functionality with your current credentials.');
373
470
  }
374
471
  }
@@ -376,7 +473,7 @@ describe('User and Access', () => {
376
473
  function assertUserAuths(username, {repo, read = false, write = false, graphql = false} = {}) {
377
474
  UserAndAccessSteps.findUserRowAlias(username, 'userRow');
378
475
 
379
- if(!read && !write) {
476
+ if (!read && !write) {
380
477
  return UserAndAccessSteps.getRepoLine('@userRow', repo).should('not.exist');
381
478
  }
382
479
 
@@ -419,9 +516,9 @@ describe('User and Access', () => {
419
516
  function navigateMenuPath(pathArray, expectedUrl, expectedTitle) {
420
517
  pathArray.forEach((label, index) => {
421
518
  if (index === 0) {
422
- UserAndAccessSteps.clickMenuItem(label);
519
+ MainMenuSteps.clickOnMenu(label);
423
520
  } else {
424
- UserAndAccessSteps.clickSubmenuItem(label);
521
+ MainMenuSteps.clickOnSubMenu(label);
425
522
  const title = expectedTitle ? expectedTitle : label;
426
523
  cy.get('h1').should('contain', title);
427
524
  }
@@ -434,6 +531,7 @@ describe('User and Access', () => {
434
531
 
435
532
  function runChecks(checks = {}) {
436
533
  Object.entries(checks).forEach(([selector, assertions]) => {
534
+ // eslint-disable-next-line cypress/no-assigning-return-values
437
535
  let chain = cy.get(selector);
438
536
 
439
537
  // assertions is an array, e.g. ["exist", ["contain.text", "Hello"], "be.visible"]
@@ -461,59 +559,59 @@ describe('User and Access', () => {
461
559
 
462
560
  const noAuthChecks = {
463
561
  'div[role="main]': [
464
- 'not.exist'
562
+ 'not.exist',
465
563
  ],
466
564
  '.no-authority-panel .alert-warning': [
467
565
  'be.visible',
468
566
  ['contains.text', 'Some functionalities are not available because'],
469
- ['contains.text', 'you do not have the required repository permissions.']
470
- ]
471
- }
567
+ ['contains.text', 'you do not have the required repository permissions.'],
568
+ ],
569
+ };
472
570
 
473
571
  const hasAuthChecks = {
474
572
  'div[role="main"]': [
475
573
  'exist',
476
- 'be.visible'
574
+ 'be.visible',
477
575
  ],
478
576
  '.no-authority-panel .alert-warning': [
479
- 'not.exist'
480
- ]
481
- }
577
+ 'not.exist',
578
+ ],
579
+ };
482
580
 
483
581
  const MENU_ITEMS_WITHOUT_GRAPHQL = [
484
582
  // 1) Import
485
583
  {
486
584
  path: ['Import'],
487
585
  expectedUrl: '/import',
488
- checks: noAuthChecks
586
+ checks: noAuthChecks,
489
587
  },
490
588
 
491
589
  // 2) Explore
492
590
  {
493
591
  path: ['Explore', 'Graphs overview'],
494
592
  expectedUrl: '/graphs',
495
- checks: noAuthChecks
593
+ checks: noAuthChecks,
496
594
  },
497
595
  {
498
596
  path: ['Explore', 'Class hierarchy'],
499
597
  expectedUrl: '/hierarchy',
500
- checks: noAuthChecks
598
+ checks: noAuthChecks,
501
599
  },
502
600
  {
503
601
  path: ['Explore', 'Class relationships'],
504
602
  expectedUrl: '/relationships',
505
- checks: noAuthChecks
603
+ checks: noAuthChecks,
506
604
  },
507
605
  {
508
606
  path: ['Explore', 'Visual graph'],
509
607
  expectedUrl: '/graphs-visualizations',
510
- checks: noAuthChecks
608
+ checks: noAuthChecks,
511
609
  },
512
610
  {
513
611
  path: ['Explore', 'Similarity'],
514
612
  expectedTitle: 'Similarity indexes',
515
613
  expectedUrl: '/similarity',
516
- checks: noAuthChecks
614
+ checks: noAuthChecks,
517
615
  },
518
616
 
519
617
  // 3) SPARQL
@@ -521,7 +619,7 @@ describe('User and Access', () => {
521
619
  path: ['SPARQL'],
522
620
  expectedTitle: 'SPARQL Query & Update',
523
621
  expectedUrl: '/sparql',
524
- checks: noAuthChecks
622
+ checks: noAuthChecks,
525
623
  },
526
624
 
527
625
  // 4) GraphQL
@@ -531,7 +629,7 @@ describe('User and Access', () => {
531
629
  path: ['Monitor', 'Queries and Updates'],
532
630
  expectedUrl: '/monitor/queries',
533
631
  expectedTitle: 'Query and Update monitoring',
534
- checks: noAuthChecks
632
+ checks: noAuthChecks,
535
633
  },
536
634
 
537
635
  // 6) Setup
@@ -539,58 +637,58 @@ describe('User and Access', () => {
539
637
  path: ['Setup', 'My Settings'],
540
638
  expectedUrl: '/settings',
541
639
  expectedTitle: 'Settings',
542
- checks: hasAuthChecks
640
+ checks: hasAuthChecks,
543
641
  },
544
642
  {
545
643
  path: ['Setup', 'Connectors'],
546
644
  expectedUrl: '/connectors',
547
645
  expectedTitle: 'Connector management',
548
- checks: noAuthChecks
646
+ checks: noAuthChecks,
549
647
  },
550
648
  {
551
649
  path: ['Setup', 'Cluster'],
552
650
  expectedUrl: '/cluster',
553
651
  expectedTitle: 'Cluster management',
554
- checks: hasAuthChecks
652
+ checks: hasAuthChecks,
555
653
  },
556
654
  {
557
655
  path: ['Setup', 'Plugins'],
558
656
  expectedUrl: '/plugins',
559
- checks: noAuthChecks
657
+ checks: noAuthChecks,
560
658
  },
561
659
  {
562
660
  path: ['Setup', 'Namespaces'],
563
661
  expectedUrl: '/namespaces',
564
- checks: noAuthChecks
662
+ checks: noAuthChecks,
565
663
  },
566
664
  {
567
665
  path: ['Setup', 'Autocomplete'],
568
666
  expectedUrl: '/autocomplete',
569
667
  expectedTitle: 'Autocomplete index',
570
- checks: noAuthChecks
668
+ checks: noAuthChecks,
571
669
  },
572
670
  {
573
671
  path: ['Setup', 'RDF Rank'],
574
672
  expectedUrl: '/rdfrank',
575
- checks: noAuthChecks
673
+ checks: noAuthChecks,
576
674
  },
577
675
  {
578
676
  path: ['Setup', 'JDBC'],
579
677
  expectedUrl: '/jdbc',
580
678
  expectedTitle: 'JDBC configuration',
581
- checks: noAuthChecks
679
+ checks: noAuthChecks,
582
680
  },
583
681
  {
584
682
  path: ['Setup', 'SPARQL Templates'],
585
683
  expectedUrl: '/sparql-templates',
586
- checks: noAuthChecks
684
+ checks: noAuthChecks,
587
685
  },
588
686
 
589
687
  // 7) Lab
590
688
  {
591
689
  path: ['Lab', 'Talk to Your Graph'],
592
690
  expectedUrl: '/ttyg',
593
- checks: noAuthChecks
691
+ checks: noAuthChecks,
594
692
  },
595
693
 
596
694
  // 8) Help
@@ -598,38 +696,38 @@ describe('User and Access', () => {
598
696
  path: ['Help', 'REST API'],
599
697
  expectedUrl: '/webapi',
600
698
  expectedTitle: 'REST API documentation',
601
- checks: hasAuthChecks
602
- }
699
+ checks: hasAuthChecks,
700
+ },
603
701
  ];
604
702
 
605
703
  const GRAPHQL_READ_MENU_ITEMS = [
606
704
  {
607
705
  path: ['GraphQL', 'GraphQL Playground'],
608
706
  expectedUrl: '/graphql/playground',
609
- checks: hasAuthChecks
610
- }
707
+ checks: hasAuthChecks,
708
+ },
611
709
  ];
612
710
  const GRAPHQL_REPO_MANAGER_MENU_ITEMS = [
613
711
  {
614
712
  path: ['GraphQL', 'Endpoint Management'],
615
713
  expectedUrl: '/graphql/endpoints',
616
- checks: hasAuthChecks
714
+ checks: hasAuthChecks,
617
715
  },
618
716
  {
619
717
  path: ['GraphQL', 'GraphQL Playground'],
620
718
  expectedUrl: '/graphql/playground',
621
- checks: hasAuthChecks
719
+ checks: hasAuthChecks,
622
720
  },
623
721
  {
624
722
  path: ['Monitor', 'Backup and Restore'],
625
723
  expectedUrl: '/monitor/backup-and-restore',
626
- checks: hasAuthChecks
724
+ checks: hasAuthChecks,
627
725
  },
628
726
  {
629
727
  path: ['Help', 'Interactive guides'],
630
728
  expectedUrl: '/guides',
631
- checks: hasAuthChecks
632
- }
729
+ checks: hasAuthChecks,
730
+ },
633
731
  ];
634
732
 
635
733
  const FREE_ACCESS_MENU_ITEMS_WITHOUT_GRAPHQL = [
@@ -637,35 +735,35 @@ describe('User and Access', () => {
637
735
  {
638
736
  path: ['Import'],
639
737
  expectedUrl: '/import',
640
- checks: noAuthChecks
738
+ checks: noAuthChecks,
641
739
  },
642
740
 
643
741
  // 2) Explore
644
742
  {
645
743
  path: ['Explore', 'Graphs overview'],
646
744
  expectedUrl: '/graphs',
647
- checks: noAuthChecks
745
+ checks: noAuthChecks,
648
746
  },
649
747
  {
650
748
  path: ['Explore', 'Class hierarchy'],
651
749
  expectedUrl: '/hierarchy',
652
- checks: noAuthChecks
750
+ checks: noAuthChecks,
653
751
  },
654
752
  {
655
753
  path: ['Explore', 'Class relationships'],
656
754
  expectedUrl: '/relationships',
657
- checks: noAuthChecks
755
+ checks: noAuthChecks,
658
756
  },
659
757
  {
660
758
  path: ['Explore', 'Visual graph'],
661
759
  expectedUrl: '/graphs-visualizations',
662
- checks: noAuthChecks
760
+ checks: noAuthChecks,
663
761
  },
664
762
  {
665
763
  path: ['Explore', 'Similarity'],
666
764
  expectedTitle: 'Similarity indexes',
667
765
  expectedUrl: '/similarity',
668
- checks: noAuthChecks
766
+ checks: noAuthChecks,
669
767
  },
670
768
 
671
769
  // 3) SPARQL
@@ -673,48 +771,47 @@ describe('User and Access', () => {
673
771
  path: ['SPARQL'],
674
772
  expectedTitle: 'SPARQL Query & Update',
675
773
  expectedUrl: '/sparql',
676
- checks: noAuthChecks
774
+ checks: noAuthChecks,
677
775
  },
678
776
 
679
-
680
777
  // 6) Setup
681
778
  {
682
779
  path: ['Setup', 'Connectors'],
683
780
  expectedUrl: '/connectors',
684
781
  expectedTitle: 'Connector management',
685
- checks: noAuthChecks
782
+ checks: noAuthChecks,
686
783
  },
687
784
  {
688
785
  path: ['Setup', 'Plugins'],
689
786
  expectedUrl: '/plugins',
690
- checks: noAuthChecks
787
+ checks: noAuthChecks,
691
788
  },
692
789
  {
693
790
  path: ['Setup', 'Namespaces'],
694
791
  expectedUrl: '/namespaces',
695
- checks: noAuthChecks
792
+ checks: noAuthChecks,
696
793
  },
697
794
  {
698
795
  path: ['Setup', 'Autocomplete'],
699
796
  expectedUrl: '/autocomplete',
700
797
  expectedTitle: 'Autocomplete index',
701
- checks: noAuthChecks
798
+ checks: noAuthChecks,
702
799
  },
703
800
  {
704
801
  path: ['Setup', 'RDF Rank'],
705
802
  expectedUrl: '/rdfrank',
706
- checks: noAuthChecks
803
+ checks: noAuthChecks,
707
804
  },
708
805
  {
709
806
  path: ['Setup', 'JDBC'],
710
807
  expectedUrl: '/jdbc',
711
808
  expectedTitle: 'JDBC configuration',
712
- checks: noAuthChecks
809
+ checks: noAuthChecks,
713
810
  },
714
811
  {
715
812
  path: ['Setup', 'SPARQL Templates'],
716
813
  expectedUrl: '/sparql-templates',
717
- checks: noAuthChecks
814
+ checks: noAuthChecks,
718
815
  },
719
816
 
720
817
  // 7) Help
@@ -722,7 +819,7 @@ describe('User and Access', () => {
722
819
  path: ['Help', 'REST API'],
723
820
  expectedUrl: '/webapi',
724
821
  expectedTitle: 'REST API documentation',
725
- checks: hasAuthChecks
726
- }
822
+ checks: hasAuthChecks,
823
+ },
727
824
  ];
728
825
  });
@@ -0,0 +1,25 @@
1
+ import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
2
+ import {MainMenuSteps} from "../../../steps/main-menu-steps";
3
+
4
+ function validateInitialState() {
5
+ UserAndAccessSteps.getCreateNewUserButton().should('be.visible');
6
+ UserAndAccessSteps.getToggleSecuritySwitch().should('be.visible');
7
+ UserAndAccessSteps.getUsersTable().should('be.visible');
8
+ }
9
+
10
+ describe('Users and Access initial state', () => {
11
+ it('Should display the correct initial state when navigating via URL', () => {
12
+ // Given, I visit the Users and Access page via URL
13
+ UserAndAccessSteps.visit();
14
+ // Then,
15
+ validateInitialState();
16
+ });
17
+
18
+ it('Should display the correct initial state when navigating via the navigation menu', () => {
19
+ // Given, I visit the Users and Access page via the navigation menu
20
+ UserAndAccessSteps.visit();
21
+ MainMenuSteps.clickOnUsersAndAccess();
22
+ // Then,
23
+ validateInitialState();
24
+ });
25
+ })