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.
- package/.editorconfig +17 -0
- package/.nycrc +10 -0
- package/cypress-flaky.config.js +20 -6
- package/cypress-legacy.config.js +47 -0
- package/cypress-security.config.js +36 -0
- package/cypress.config.js +45 -6
- package/{integration-flaky → e2e-flaky}/explore/visual.graph.spec.js +4 -1
- package/{integration-flaky → e2e-flaky}/import/import-server-files-operations.spec.js +2 -2
- package/{integration-flaky → e2e-flaky}/import/import-user-data-batch-operations.spec.js +3 -3
- package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
- package/{integration-flaky → e2e-flaky}/setup/sparql-template-create.js +10 -18
- package/{integration-flaky → e2e-flaky}/sparql-editor/actions/execute-update-query.spec.js +2 -12
- package/{integration-flaky → e2e-flaky}/sparql-editor/actions/share-query.spec.js +1 -7
- package/{integration-flaky → e2e-flaky}/sparql-editor/yasr/table-plugin.spec.js +3 -7
- package/{integration → e2e-legacy}/cluster/cluster-states.spec.js +3 -3
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository-without-class-hierarchy.spec.js +42 -0
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository.spec.js +43 -0
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-without-selected-repository.spec.js +30 -0
- package/{integration/explore → e2e-legacy/explore/class-hierarchy}/class.hierarchy.spec.js +1 -1
- package/e2e-legacy/explore/class-relationships/class-relationships-repository-with-data.spec.js +42 -0
- package/e2e-legacy/explore/class-relationships/class-relationships-with-selected-repository.spec.js +39 -0
- package/e2e-legacy/explore/class-relationships/class-relationships-without-selected-repository.spec.js +21 -0
- package/{integration/explore/class.relationships.spec.js → e2e-legacy/explore/class-relationships/class-relationships.spec.js} +20 -50
- package/{integration/explore → e2e-legacy/explore/graphs-overview}/graphs.overview.spec.js +4 -4
- package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-with-selected-repository.spec.js +44 -0
- package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-without-selected-repository.spec.js +32 -0
- package/e2e-legacy/explore/similarity-index/similarity-index-with-repository.spec.js +38 -0
- package/e2e-legacy/explore/similarity-index/similarity-index-without-repository.spec.js +21 -0
- package/{integration → e2e-legacy}/explore/visual-graph/graphs-config.spec.js +5 -10
- package/e2e-legacy/explore/visual-graph/node-info-panel.spec.js +58 -0
- package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +142 -0
- package/{integration → e2e-legacy}/explore/visual-graph/visual-graph-node-labels.spec.js +14 -2
- package/e2e-legacy/explore/visual-graph/visual-graph-with-selected-repository.js +38 -0
- package/e2e-legacy/explore/visual-graph/visual-graph-without-selected-repository.js +21 -0
- package/{integration → e2e-legacy}/explore/visual-graph/visual.graph.spec.js +75 -96
- package/{integration → e2e-legacy}/graphql/create-graphql-endpoint.spec.js +0 -2
- package/{integration → e2e-legacy}/graphql/edit-graphql-enpoint.spec.js +1 -1
- package/{integration → e2e-legacy}/graphql/filter-graphql-endpoints-on-management-view.spec.js +1 -1
- package/{integration → e2e-legacy}/graphql/graphql-endpoint-management-view.spec.js +4 -4
- package/e2e-legacy/graphql/graphql-endpoint-management-with-endpoints.spec.js +43 -0
- package/e2e-legacy/graphql/graphql-endpoint-management-with-selected-repository.spec.js +39 -0
- package/e2e-legacy/graphql/graphql-endpoint-management-without-selected-repository.spec.js +21 -0
- package/e2e-legacy/graphql/graphql-playground-with-endpoints.spec.js +40 -0
- package/e2e-legacy/graphql/graphql-playground-with-selected-repository.spec.js +38 -0
- package/e2e-legacy/graphql/graphql-playground-without-selected-repository.spec.js +22 -0
- package/{integration → e2e-legacy}/graphql/graphql-playground.spec.js +1 -1
- package/e2e-legacy/graphql/graphql-theme.spec.js +73 -0
- package/{integration → e2e-legacy}/graphql/import-graphql-endpoint-definitions.spec.js +0 -6
- package/e2e-legacy/guides/autocomplete/enable-autocomplete-guide.spec.js +49 -0
- package/e2e-legacy/guides/class-hierarcy/class-hierarchy-guide.spec.js +89 -0
- package/e2e-legacy/guides/class-relations/class-relations-guide.spec.js +76 -0
- package/e2e-legacy/guides/connectors/connectors-guide.spec.js +163 -0
- package/e2e-legacy/guides/create-similarity-index/create-similarity-index-guide.spec.js +74 -0
- package/e2e-legacy/guides/download-guide-resource/download-guide-resource-guide.js +55 -0
- package/e2e-legacy/guides/execute-sparql-query/execute-sparql-query-guide.spec.js +92 -0
- package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +63 -0
- package/e2e-legacy/guides/import-rdf-file/import-rdf-file.spec.js +105 -0
- package/e2e-legacy/guides/main-menu/main-menu-guide.spec.js +302 -0
- package/e2e-legacy/guides/navigation/navigation-guide.spec.js +64 -0
- package/e2e-legacy/guides/rdf-rank/rdf-rank-guide.spec.js +42 -0
- package/e2e-legacy/guides/repositories/create-repository-guide.spec.js +69 -0
- package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +168 -0
- package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +158 -0
- package/e2e-legacy/guides/ttyg/conversation/ttyg-conversation-guide.spec.js +92 -0
- package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +88 -0
- package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +372 -0
- package/e2e-legacy/guides/welcome/welcome-guide.spec.js +36 -0
- package/e2e-legacy/help/guides/guides-autostart.spec.js +126 -0
- package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +83 -0
- package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
- package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
- package/e2e-legacy/help/guides/movies-interactive-guide.spec.js +71 -0
- package/{integration/guides/star-wars-interactive-guide.js → e2e-legacy/help/guides/star-wars-interactive-guide.spec.js} +3 -2
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
- package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
- package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
- package/e2e-legacy/home/cookie-policy/cookie-policy.spec.js +182 -0
- package/e2e-legacy/home/documentation-link.spec.js +41 -0
- package/{integration → e2e-legacy}/home/google-analytics.spec.js +4 -6
- package/e2e-legacy/home/home-page-with-selected-repository.spec.js +69 -0
- package/e2e-legacy/home/home-page-without-repositories.spec.js +87 -0
- package/e2e-legacy/home/home-page-without-selected-repository.spec.js +59 -0
- package/{integration → e2e-legacy}/home/language-change.spec.js +2 -2
- package/e2e-legacy/home/rdf-resource-search.spec.js +160 -0
- package/e2e-legacy/home/view-resource-autocomplete.spec.js +65 -0
- package/{integration → e2e-legacy}/import/import-server-files.spec.js +5 -3
- package/{integration → e2e-legacy}/import/import-user-data-file-upload.spec.js +19 -13
- package/{integration → e2e-legacy}/import/import-user-data-text-snippet.spec.js +0 -2
- package/{integration → e2e-legacy}/import/import-user-data-url.spec.js +0 -23
- package/{integration → e2e-legacy}/import/import-user-data.spec.js +11 -4
- package/e2e-legacy/import/initial-state/import-page-with-selected-repositor.js +51 -0
- package/e2e-legacy/import/initial-state/import-page-with-selected-repository-without-imported-files.js +45 -0
- package/e2e-legacy/import/initial-state/import-page-without-selected-repository.spec.js +28 -0
- package/e2e-legacy/license/license-with-repository.spec.js +113 -0
- package/e2e-legacy/license/license-without-repository.spec.js +103 -0
- package/{integration → e2e-legacy}/license/license.spec.js +4 -4
- package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-with-repository.spec.js +36 -0
- package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-without-repository.spec.js +25 -0
- package/{integration/monitor/monitor.backup-and-restore.spec.js → e2e-legacy/monitor/backup-and-restore/backup-and-restore.spec.js} +2 -2
- package/{integration → e2e-legacy}/monitor/global-operation-statuses-component.spec.js +12 -5
- package/e2e-legacy/monitor/query-and-updates/queries-and-updates-with-repository.spec.js +39 -0
- package/e2e-legacy/monitor/query-and-updates/queries-and-updates-without-repository.spec.js +21 -0
- package/{integration/monitor → e2e-legacy/monitor/system}/monitor.resources.spec.js +3 -2
- package/e2e-legacy/monitor/system/system-monitoring-with-repository.spec.js +32 -0
- package/e2e-legacy/monitor/system/system-monitoring-without-repository.spec.js +20 -0
- package/e2e-legacy/not-found/not-found.spec.js +23 -0
- package/{integration → e2e-legacy}/repository/ontop-repository.spec.js +1 -1
- package/{integration → e2e-legacy}/repository/repositories.spec.js +37 -45
- package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +181 -0
- package/{integration → e2e-legacy}/resource/resource.spec.js +50 -20
- package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +84 -0
- package/e2e-legacy/setup/aclmanagement/acl-management-without-repositories.spec.js +21 -0
- package/{integration → e2e-legacy}/setup/aclmanagement/create-rule.spec.js +4 -0
- package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
- package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
- package/{integration/setup → e2e-legacy/setup/autocomplete}/autocomplete.spec.js +6 -7
- package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
- package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
- package/e2e-legacy/setup/connectors/connectors-initial-state-with-selected-repository.spec.js +41 -0
- package/e2e-legacy/setup/connectors/connectors-initial-state-without-repositories.spec.js +21 -0
- package/{integration → e2e-legacy}/setup/connectors-lucene.spec.js +26 -10
- package/{integration → e2e-legacy}/setup/jdbc/jdbc-create.spec.js +4 -4
- package/e2e-legacy/setup/jdbc/jdbc-with-repository.spec.js +39 -0
- package/e2e-legacy/setup/jdbc/jdbc-without-repository.spec.js +27 -0
- package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
- package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
- package/{integration/setup → e2e-legacy/setup/namespaces}/namespaces.spec.js +6 -5
- package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
- package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
- package/{integration/setup → e2e-legacy/setup/plugins}/plugins.spec.js +3 -3
- package/e2e-legacy/setup/rdf-rank/rdf-rank-with-repository.spec.js +40 -0
- package/e2e-legacy/setup/rdf-rank/rdf-rank-without-repository.spec.js +30 -0
- package/{integration/setup → e2e-legacy/setup/rdf-rank}/rdf-rank.spec.js +3 -5
- package/e2e-legacy/setup/repositories/repositories-view-with-repositories.spec.js +40 -0
- package/e2e-legacy/setup/repositories/repositories-view-without-repositories.spec.js +28 -0
- package/e2e-legacy/setup/settings/my-settings-initial-state.spec.js +86 -0
- package/e2e-legacy/setup/settings/my-settings.spec.js +207 -0
- package/{integration/setup/sparql-template-create.js → e2e-legacy/setup/sparql-template/sparql-template-create.spec.js} +16 -8
- package/e2e-legacy/setup/sparql-template/sparql-template-with-repository.spec.js +39 -0
- package/e2e-legacy/setup/sparql-template/sparql-template-without-repository.spec.js +29 -0
- package/{integration/setup → e2e-legacy/setup/sparql-template}/sparql-templates.spec.js +4 -4
- package/{integration/setup → e2e-legacy/setup/users-and-access}/user-and-access.spec.js +184 -87
- package/e2e-legacy/setup/users-and-access/users-and-access-initial-state.spec.js +25 -0
- package/{integration → e2e-legacy}/sparql-editor/actions/expand-results-over-sameas.spec.js +12 -12
- package/{integration → e2e-legacy}/sparql-editor/actions/include-inferred-statements.spec.js +6 -6
- package/{integration → e2e-legacy}/sparql-editor/actions/inferred-sameas.spec.js +10 -8
- package/{integration → e2e-legacy}/sparql-editor/actions/show-saved-queries.spec.js +1 -6
- package/{integration → e2e-legacy}/sparql-editor/saved-query/abort-query.spec.js +1 -1
- package/{integration → e2e-legacy}/sparql-editor/saved-query/edit-query.spec.js +3 -3
- package/{integration → e2e-legacy}/sparql-editor/saved-query/readonly-query.spec.js +15 -24
- package/{integration → e2e-legacy}/sparql-editor/saved-query/share-query.spec.js +32 -1
- package/e2e-legacy/sparql-editor/sparql-page-with-selected-repository.spec.js +33 -0
- package/e2e-legacy/sparql-editor/sparql-page-without-selected-repository.spec.js +26 -0
- package/{integration → e2e-legacy}/sparql-editor/yasgui-tabs.spec.js +2 -12
- package/e2e-legacy/sparql-editor/yasqe-themes.spec.js +54 -0
- package/{integration → e2e-legacy}/sparql-editor/yasr/pagination.spec.js +5 -18
- package/{integration → e2e-legacy}/sparql-editor/yasr/table-plugin.spec.js +1 -6
- package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +106 -0
- package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +80 -0
- package/{integration → e2e-legacy}/ttyg/agent-list.spec.js +53 -2
- package/{integration → e2e-legacy}/ttyg/agent-select-menu.spec.js +25 -2
- package/{integration → e2e-legacy}/ttyg/chat-list.spec.js +3 -14
- package/{integration → e2e-legacy}/ttyg/chat-panel.spec.js +74 -6
- package/{integration → e2e-legacy}/ttyg/clone-agent.spec.js +24 -2
- package/{integration → e2e-legacy}/ttyg/create-agent.spec.js +37 -66
- package/{integration → e2e-legacy}/ttyg/create-chat.spec.js +6 -4
- package/{integration → e2e-legacy}/ttyg/delete-agent.spec.js +1 -2
- package/e2e-legacy/ttyg/edit-agent.spec.js +178 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
- package/{integration-flaky → e2e-legacy}/ttyg/ttyg-permission.spec.js +23 -17
- package/{integration → e2e-legacy}/ttyg/ttyg-view.spec.js +2 -2
- package/e2e-security/repository/url-with-repository-id-parameter.spec.js +57 -0
- package/e2e-security/setup/home/cookie-policy.spec.js +290 -0
- package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +193 -0
- package/e2e-security/setup/users-and-access/graphql-user.spec.js +126 -0
- package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +70 -0
- package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +99 -0
- package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
- package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
- package/eslint.config.js +39 -0
- package/fixtures/graph/graph-configurations.json +59 -0
- package/fixtures/guides/autocomplete/enable-autocomplete-guide.json +12 -0
- package/fixtures/guides/class-hierarchy/class-hierarchy-guide.json +35 -0
- package/fixtures/guides/class-relations/class-relations-guide.json +33 -0
- package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +15 -0
- package/fixtures/guides/connectors/connectors-guide.json +66 -0
- package/fixtures/guides/connectors/lucene-connector-guide.json +120 -0
- package/fixtures/guides/create-repository/create-repository-guide.json +25 -0
- package/fixtures/guides/create-similarity-index/create-similarity-index-guide.json +36 -0
- package/fixtures/guides/download-guide-resource/download-guide-resource-guide.json +25 -0
- package/fixtures/guides/download-resource.ttl +629 -0
- package/fixtures/guides/execute-sparql-query/execute-sparql-query-guide.json +54 -0
- package/fixtures/guides/import-rdf-file/confirm-duplicate-rdf-file-guide.json +30 -0
- package/fixtures/guides/import-rdf-file/import-rdf-file-guide.json +21 -0
- package/fixtures/guides/main-menu/main-menu-guide.json +98 -0
- package/fixtures/guides/navigation/navigation-guide.json +60 -0
- package/fixtures/guides/rdf-rank/rdf-rank-guide.json +18 -0
- package/fixtures/guides/table-graph-explore/table-graph-explore-guide.json +51 -0
- package/fixtures/guides/table-graph-explore/table-graph-explore-without-substeps-guide.json +25 -0
- package/fixtures/guides/ttyg/configure-agent/configure-ttyg-agent-guide.json +74 -0
- package/fixtures/guides/ttyg/conversation/ttyg-conversation-guide.json +26 -0
- package/fixtures/guides/ttyg/edit-ttyg-agent/edit-ttyg-agent-guide.json +22 -0
- package/fixtures/guides/visual-graph/visual-graph-config-guide.json +39 -0
- package/fixtures/guides/visual-graph/visual-graph-guide.json +85 -0
- package/fixtures/guides/welcome/welcome-guide.json +18 -0
- package/fixtures/repositories/free-access.json +13 -0
- package/fixtures/similarity/get-ttyg-similarity-instances.json +10 -0
- package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
- package/fixtures/ttyg/agent/get-agent-defaults.json +9 -2
- package/fixtures/ttyg/agent/get-agent-list-with-incompatible-agents.json +79 -0
- package/fixtures/ttyg/agent/get-similarity-indexes-for-another-repo.json +8 -0
- package/fixtures/ttyg/agent/get-similarity-indexes.json +22 -0
- package/fixtures/ttyg/chats/ask-question-cancel.json +12 -0
- package/fixtures/ttyg/chats/ask-question.json +12 -2
- package/fixtures/ttyg/chats/cancel-question-response.json +1 -0
- package/fixtures/ttyg/chats/create/create-chat-response.json +10 -14
- package/fixtures/ttyg/chats/create/question-response-after-chat-creation.json +29 -0
- package/fixtures/ttyg/chats/explain-response-1.json +2 -48
- package/fixtures/ttyg/chats/explain-response-3.json +12 -0
- package/fixtures/ttyg/chats/get-chat.json +6 -1
- package/npm-shrinkwrap.json +11004 -3815
- package/package.json +58 -42
- package/plugins/index.js +10 -5
- package/steps/application-steps.js +8 -6
- package/steps/base-steps.js +29 -0
- package/steps/class-views-steps.js +35 -7
- package/steps/cluster/cluster-page-steps.js +12 -2
- package/steps/cookie-policy/cookie-consent-banner-steps.js +21 -0
- package/steps/cookie-policy/cookie-policy-modal.steps.js +56 -0
- package/steps/error-page-steps.js +9 -0
- package/steps/error-steps.js +15 -3
- package/steps/explore/class-relationships-steps.js +64 -0
- package/steps/explore/graphs-overview-steps.js +21 -1
- package/steps/explore/similarity-index-create-steps.js +5 -3
- package/steps/explore/similarity-indexes-steps.js +16 -2
- package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
- package/steps/graphql/playground-editor-steps.js +46 -0
- package/steps/guides/guide-dialog-steps.js +81 -2
- package/steps/guides/guide-steps.js +54 -2
- package/steps/guides/movies-guide-steps.js +2 -1
- package/steps/header-steps.js +22 -0
- package/steps/home-steps.js +184 -77
- package/steps/import/import-resource-message-dialog.js +1 -1
- package/steps/import/import-steps.js +12 -16
- package/steps/import/import-user-data-steps.js +5 -1
- package/steps/language-selector-steps.js +2 -2
- package/steps/license-steps.js +91 -9
- package/steps/login-steps.js +31 -6
- package/steps/main-menu-steps.js +244 -19
- package/steps/modal-dialog-steps.js +32 -1
- package/steps/monitoring/backup-and-restore-steps.js +9 -3
- package/steps/monitoring/queries-and-updates-steps.js +20 -0
- package/steps/monitoring/system-monitoring-steps.js +40 -0
- package/steps/not-found/not-found-steps.js +23 -0
- package/steps/operations-statuses-component-steps.js +5 -10
- package/steps/rdf-resource-search-steps.js +55 -0
- package/steps/repository-selector-steps.js +3 -3
- package/steps/repository-steps.js +88 -18
- package/steps/resource/resource-steps.js +6 -10
- package/steps/rest-api-documentation-steps.js +15 -0
- package/steps/setup/acl-management-steps.js +18 -2
- package/steps/setup/autocomplete-steps.js +23 -8
- package/steps/setup/connectors-steps.js +32 -0
- package/steps/setup/jdbc-steps.js +18 -4
- package/steps/setup/namespace-steps.js +10 -7
- package/steps/setup/plugins-steps.js +12 -5
- package/steps/setup/rdf-rank-steps.js +23 -9
- package/steps/setup/settings-steps.js +101 -2
- package/steps/setup/sparql-templates-steps.js +19 -1
- package/steps/setup/user-and-access-steps.js +50 -16
- package/steps/shared-modal-dialog-steps.js +45 -0
- package/steps/sparql-editor-steps.js +21 -2
- package/steps/sparql-steps.js +13 -1
- package/steps/system-information-steps.js +70 -0
- package/steps/toaster-steps.js +18 -6
- package/steps/ttyg/chat-panel-steps.js +40 -2
- package/steps/ttyg/ttyg-agent-settings-modal.steps.js +136 -31
- package/steps/ttyg/ttyg-view-steps.js +80 -10
- package/steps/visual-graph-split-button-steps.js +45 -0
- package/steps/visual-graph-steps.js +106 -10
- package/steps/widgets/active-repository-widget-steps.js +29 -0
- package/steps/widgets/license-widget-steps.js +9 -0
- package/steps/widgets/repository-errors-widget-steps.js +21 -0
- package/steps/widgets/saved-sparql-queries-widget-steps.js +9 -0
- package/steps/yasgui/yasgui-loader.js +3 -3
- package/steps/yasgui/yasgui-steps.js +1 -1
- package/steps/yasgui/yasqe-steps.js +35 -4
- package/steps/yasgui/yasr-steps.js +35 -5
- package/stubs/autocomplete/autocomplete-stubs.js +7 -0
- package/stubs/browser-stubs.js +21 -0
- package/stubs/environment-stubs.js +9 -1
- package/stubs/graph-config-stubs.js +17 -0
- package/stubs/guides/guides-stubs.js +103 -0
- package/stubs/license-stubs.js +51 -0
- package/stubs/repositories/repositories-stubs.js +180 -75
- package/stubs/saved-queries-stubs.js +5 -0
- package/stubs/security-stubs.js +12 -0
- package/stubs/similarity-index-stubs.js +4 -0
- package/stubs/sparql-stubs.js +10 -0
- package/stubs/ttyg/ttyg-stubs.js +64 -15
- package/stubs/yasgui/query-stubs.js +5 -1
- package/support/commands.js +22 -1
- package/support/connector-commands.js +13 -0
- package/support/e2e-security.js +9 -0
- package/support/{index.js → e2e.js} +9 -3
- package/support/repository-commands.js +29 -4
- package/support/settings-commands.js +33 -1
- package/support/url-commands.js +13 -0
- package/support/user-commands.js +9 -4
- package/utils/html-util.js +24 -4
- package/Dockerfile +0 -11
- package/fixtures/locale-en.json +0 -3342
- package/integration/explore/similarity-index/similarity-index-create.spec.js +0 -333
- package/integration/explore/similarity-index/similarity-index.spec.js +0 -88
- package/integration/explore/similarity-index/similarity.spec.js +0 -628
- package/integration/guides/movies-interactive-guide.spec.js +0 -73
- package/integration/home/cookie-policy.spec.js +0 -90
- package/integration/home/documentation-link.spec.js +0 -60
- package/integration/home/language-selector.spec.js +0 -19
- package/integration/home/rdf-resource-search.spec.js +0 -177
- package/integration/home/view-resource-autocomplete.spec.js +0 -52
- package/integration/home/workbench.home.spec.js +0 -30
- package/integration/monitor/monitor.queries.spec.js +0 -31
- package/integration/setup/my-settings.spec.js +0 -289
- package/integration/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -57
- package/integration/ttyg/edit-agent.spec.js +0 -99
- package/integration-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -54
- package/stubs/repositories-stub.js +0 -73
- package/{integration-flaky → e2e-flaky}/import/import.server.files.spec.js +0 -0
- package/{integration-flaky → e2e-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
- package/{integration-flaky → e2e-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/cluster-legend.spec.js +0 -0
- package/{integration → e2e-legacy}/cluster/edit-cluster-nodes-modal.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/activate-deactivate-graphql-endpoint.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/delete-graphql-endpoint.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/export-graphql-endpoint-definition.spec.js +0 -0
- package/{integration → e2e-legacy}/graphql/set-default-graphql-endpoint.spec.js +0 -0
- package/{integration/help → e2e-legacy/help/system-information}/system-information.spec.js +0 -0
- package/{integration → e2e-legacy}/home/create-repository.spec.js +0 -0
- package/{integration → e2e-legacy}/import/import-server-files-batch-operations.spec.js +0 -0
- package/{integration → e2e-legacy}/import/import-user-data-settings-dialog.spec.js +0 -0
- package/{integration → e2e-legacy}/import/import-view.spec.js +0 -0
- package/{integration → e2e-legacy}/repository/attach-remote-location.spec.js +1 -1
- /package/{integration → e2e-legacy}/repository/repository-commands.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/delete-rule.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/edit-rule.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/render-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/reorder-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/revert-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/scopes.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/update-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/jdbc/jdbc.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/execute-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/save-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/internationalization.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/saved-query/delete-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/sparql-editor.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/yasr/download-as.spec.js +0 -0
|
@@ -187,7 +187,7 @@ describe('Ontop repositories', () => {
|
|
|
187
187
|
// The Ontop repository should be created
|
|
188
188
|
RepositorySteps.visit();
|
|
189
189
|
// The repository list should contain the new repository, which can be activated
|
|
190
|
-
RepositorySteps.
|
|
190
|
+
RepositorySteps.activateRepository(repositoryId);
|
|
191
191
|
// When the repository is restarted
|
|
192
192
|
RepositorySteps.restartRepository(repositoryId);
|
|
193
193
|
ModalDialogSteps.getDialogBody().should('contain', repositoryId);
|
|
@@ -8,6 +8,7 @@ import {ImportSettingsDialogSteps} from "../../steps/import/import-settings-dial
|
|
|
8
8
|
import {ClusterStubs} from "../../stubs/cluster/cluster-stubs";
|
|
9
9
|
import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
|
|
10
10
|
|
|
11
|
+
// TODO: Refactor these tests to follow our step based approach for better decoupling from the page implementation
|
|
11
12
|
describe('Repositories', () => {
|
|
12
13
|
|
|
13
14
|
let repositoryId;
|
|
@@ -110,32 +111,28 @@ describe('Repositories', () => {
|
|
|
110
111
|
.should('be.visible')
|
|
111
112
|
.and('not.be.disabled');
|
|
112
113
|
|
|
114
|
+
// It should have not selected the new repo
|
|
115
|
+
RepositorySteps.getRepositorySelection().should('have.class', 'no-selected-repository')
|
|
116
|
+
|
|
113
117
|
// Connect to the repository via the menu
|
|
114
|
-
RepositorySteps.getRepositoriesDropdown().click()
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
.click();
|
|
118
|
+
RepositorySteps.getRepositoriesDropdown().click()
|
|
119
|
+
// The dropdown should contain the newly created repository
|
|
120
|
+
cy.get('.onto-dropdown-menu-item').should('exist');
|
|
121
|
+
cy.get('.onto-dropdown-menu-item')
|
|
122
|
+
.contains(repositoryId)
|
|
123
|
+
.first()
|
|
124
|
+
.scrollIntoView();
|
|
125
|
+
cy.get('.onto-dropdown-menu-item')
|
|
126
|
+
.contains(repositoryId)
|
|
127
|
+
.first()
|
|
128
|
+
.click();
|
|
129
|
+
|
|
130
|
+
// Should visualize the selected repo
|
|
131
|
+
cy.get('.no-selected-repository').should('not.exist');
|
|
132
|
+
cy.get('.active-repository')
|
|
133
|
+
.should('be.visible')
|
|
134
|
+
.and('contain', repositoryId);
|
|
132
135
|
|
|
133
|
-
// Should visualize the selected repo
|
|
134
|
-
cy.get('.no-selected-repository').should('not.exist');
|
|
135
|
-
cy.get('.active-repository')
|
|
136
|
-
.should('be.visible')
|
|
137
|
-
.and('contain', repositoryId);
|
|
138
|
-
});
|
|
139
136
|
|
|
140
137
|
// The repo should be connected after selecting it from the menu
|
|
141
138
|
RepositorySteps.getRepositoryConnectionOnBtn(repositoryId).should('be.visible');
|
|
@@ -144,7 +141,7 @@ describe('Repositories', () => {
|
|
|
144
141
|
RepositorySteps.getRepositoriesDropdown()
|
|
145
142
|
.click()
|
|
146
143
|
.then(() => {
|
|
147
|
-
cy.get('.dropdown-menu-
|
|
144
|
+
cy.get('.onto-dropdown-menu-item')
|
|
148
145
|
.should('not.contain', repositoryId);
|
|
149
146
|
});
|
|
150
147
|
});
|
|
@@ -289,7 +286,7 @@ describe('Repositories', () => {
|
|
|
289
286
|
// The first should return back to the dropdown items
|
|
290
287
|
RepositorySteps.getRepositoriesDropdown()
|
|
291
288
|
.click()
|
|
292
|
-
.find('.dropdown-menu-
|
|
289
|
+
.find('.onto-dropdown-menu-item')
|
|
293
290
|
.should('contain', repositoryId);
|
|
294
291
|
// Hide the menu
|
|
295
292
|
RepositorySteps.getRepositoriesDropdown().click();
|
|
@@ -380,9 +377,8 @@ describe('Repositories', () => {
|
|
|
380
377
|
RepositorySteps.confirmModal();
|
|
381
378
|
|
|
382
379
|
// Check the repo has been deselected and is not present in the repo dropdown menu
|
|
383
|
-
RepositorySteps.getRepositoriesDropdown().click()
|
|
384
|
-
|
|
385
|
-
});
|
|
380
|
+
RepositorySteps.getRepositoriesDropdown().click();
|
|
381
|
+
RepositorySteps.getRepositoriesInDropdown().should('not.contain', repositoryId);
|
|
386
382
|
});
|
|
387
383
|
|
|
388
384
|
it('should restart an existing repository', () => {
|
|
@@ -408,21 +404,17 @@ describe('Repositories', () => {
|
|
|
408
404
|
//Make sure that repository is in status INACTIVE
|
|
409
405
|
RepositorySteps.assertRepositoryStatus(repositoryId, "INACTIVE");
|
|
410
406
|
|
|
411
|
-
RepositorySteps.getRepositoriesDropdown().click()
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
.contains(repositoryId)
|
|
418
|
-
.closest('a')
|
|
419
|
-
.click();
|
|
407
|
+
RepositorySteps.getRepositoriesDropdown().click();
|
|
408
|
+
RepositorySteps.getRepositoriesInDropdown()
|
|
409
|
+
.should('be.visible')
|
|
410
|
+
.contains(repositoryId)
|
|
411
|
+
.eq(0)
|
|
412
|
+
.click();
|
|
420
413
|
// Should visualize the selected repo
|
|
421
414
|
cy.get('.no-selected-repository').should('not.exist');
|
|
422
415
|
cy.get('.active-repository')
|
|
423
416
|
.should('be.visible')
|
|
424
417
|
.and('contain', repositoryId);
|
|
425
|
-
});
|
|
426
418
|
|
|
427
419
|
HomeSteps.visitAndWaitLoader();
|
|
428
420
|
cy.visit('/repository');
|
|
@@ -510,19 +502,19 @@ describe('Repositories', () => {
|
|
|
510
502
|
ModalDialogSteps.verifyDialogBody('Changing the repository ID is a dangerous operation since it renames the repository folder and enforces repository shutdown.');
|
|
511
503
|
});
|
|
512
504
|
|
|
513
|
-
it('should
|
|
505
|
+
it('should allow restart of LOCAL repository from EDIT PAGE, if node is in cluster', () => {
|
|
514
506
|
// Given I create a repository
|
|
515
507
|
cy.createRepository({id: repositoryId});
|
|
516
508
|
// When I set the node in a cluster
|
|
517
509
|
GlobalOperationsStatusesStub.stubGlobalOperationsStatusesResponse(repositoryId);
|
|
518
510
|
// Then go to the local repository's edit page
|
|
519
511
|
RepositorySteps.visitEditPage(repositoryId);
|
|
520
|
-
// I expect the repository restart checkbox button to be
|
|
512
|
+
// I expect the repository restart checkbox button to be enabled
|
|
521
513
|
RepositorySteps.getEditViewRestartButton().should('be.visible');
|
|
522
|
-
RepositorySteps.getEditViewRestartButton().should('be.disabled');
|
|
514
|
+
RepositorySteps.getEditViewRestartButton().should('not.be.disabled');
|
|
523
515
|
});
|
|
524
516
|
|
|
525
|
-
it('should
|
|
517
|
+
it('should allow restart of LOCAL repositories from REPOSITORIES PAGE, if node is in cluster', () => {
|
|
526
518
|
// Given I create a repository
|
|
527
519
|
cy.createRepository({id: repositoryId});
|
|
528
520
|
// When I set the node in a cluster
|
|
@@ -530,9 +522,9 @@ describe('Repositories', () => {
|
|
|
530
522
|
ClusterStubs.stubClusterNodeStatus();
|
|
531
523
|
// Then go to the repositories page
|
|
532
524
|
RepositorySteps.visit();
|
|
533
|
-
// I expect the local repository's restart button to be
|
|
525
|
+
// I expect the local repository's restart button to be enabled
|
|
534
526
|
RepositorySteps.getRepositoryRestartButton(repositoryId).should('be.visible');
|
|
535
|
-
RepositorySteps.getRepositoryRestartButton(repositoryId).should('be.disabled');
|
|
527
|
+
RepositorySteps.getRepositoryRestartButton(repositoryId).should('not.be.disabled');
|
|
536
528
|
});
|
|
537
529
|
|
|
538
530
|
it('should ALLOW restart of REMOTE repositories from REPOSITORIES PAGE, if node is in cluster', () => {
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import {ModalDialogSteps} from "../../steps/modal-dialog-steps";
|
|
2
|
+
import HomeSteps from '../../steps/home-steps.js';
|
|
3
|
+
import {RepositoryErrorsWidgetSteps} from '../../steps/widgets/repository-errors-widget-steps.js';
|
|
4
|
+
import {RepositorySteps} from '../../steps/repository-steps.js';
|
|
5
|
+
import {RepositorySelectorSteps} from '../../steps/repository-selector-steps.js';
|
|
6
|
+
import {ErrorPageSteps} from '../../steps/error-page-steps.js';
|
|
7
|
+
import {MainMenuSteps} from '../../steps/main-menu-steps.js';
|
|
8
|
+
|
|
9
|
+
describe('URL with Repository ID parameter', () => {
|
|
10
|
+
let repositoryId;
|
|
11
|
+
let secondRepositoryId;
|
|
12
|
+
|
|
13
|
+
describe('When repository is changed', () => {
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
repositoryId = 'repository-in-url-' + Date.now();
|
|
16
|
+
cy.createRepository({id: repositoryId});
|
|
17
|
+
secondRepositoryId = 'second-repository-in-url-' + Date.now();
|
|
18
|
+
cy.createRepository({id: secondRepositoryId});
|
|
19
|
+
cy.presetRepository(repositoryId);
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
cy.deleteRepository(repositoryId);
|
|
24
|
+
cy.deleteRepository(secondRepositoryId);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should update URL', () => {
|
|
28
|
+
RepositorySteps.visit();
|
|
29
|
+
RepositorySteps.getActiveRepositoryRow().should('contain', repositoryId);
|
|
30
|
+
RepositorySelectorSteps.getSelectedRepository().should('contain', repositoryId);
|
|
31
|
+
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
32
|
+
|
|
33
|
+
RepositorySelectorSteps.selectRepository(secondRepositoryId);
|
|
34
|
+
|
|
35
|
+
RepositorySteps.getActiveRepositoryRow().should('contain', secondRepositoryId);
|
|
36
|
+
RepositorySelectorSteps.getSelectedRepository().should('contain', secondRepositoryId);
|
|
37
|
+
cy.url().should('include', 'repositoryId=' + secondRepositoryId);
|
|
38
|
+
|
|
39
|
+
RepositorySteps.activateRepository(repositoryId);
|
|
40
|
+
|
|
41
|
+
RepositorySteps.getActiveRepositoryRow().should('contain', repositoryId);
|
|
42
|
+
RepositorySelectorSteps.getSelectedRepository().should('contain', repositoryId);
|
|
43
|
+
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe('When there is no active repository and no repository in URL', () => {
|
|
48
|
+
// 1. active repo no, repo in url no -> no action - just show repo selector
|
|
49
|
+
it('should show repository selector with no repository selected', () => {
|
|
50
|
+
HomeSteps.visit();
|
|
51
|
+
RepositoryErrorsWidgetSteps.getWidget().should('be.visible');
|
|
52
|
+
cy.url().should('not.include', 'repositoryId=');
|
|
53
|
+
HomeSteps.getSelectedRepository().should('contain', 'No accessible repositories');
|
|
54
|
+
// no modal dialog should be shown
|
|
55
|
+
ModalDialogSteps.getDialog().should('not.exist');
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
describe('When there is no active repository and repository in URL is present', () => {
|
|
60
|
+
beforeEach(() => {
|
|
61
|
+
repositoryId = 'repository-in-url-' + Date.now();
|
|
62
|
+
cy.createRepository({id: repositoryId});
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
afterEach(() => {
|
|
66
|
+
cy.deleteRepository(repositoryId);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// 2. active repo no, repo in url yes, url repo exists -> set active repo same as the url
|
|
70
|
+
it('should set active repository to the one in URL if it exists', () => {
|
|
71
|
+
HomeSteps.visitWithRepositoryInUrl(repositoryId);
|
|
72
|
+
RepositoryErrorsWidgetSteps.getWidget().should('not.exist');
|
|
73
|
+
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
74
|
+
HomeSteps.getSelectedRepository().should('contain', repositoryId);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// 3. active repo no, repo in url yes, url repo missing -> show warning, keep url
|
|
78
|
+
it('should show warning if repository in URL does not exist', () => {
|
|
79
|
+
HomeSteps.visitWithRepositoryInUrl('mising-repo');
|
|
80
|
+
RepositoryErrorsWidgetSteps.getWidget().should('be.visible');
|
|
81
|
+
HomeSteps.getSelectedRepository().should('contain', 'Choose repository');
|
|
82
|
+
ModalDialogSteps.getModalAlert().should('be.visible');
|
|
83
|
+
ModalDialogSteps.getDialogBody().should('contain', 'The repository "mising-repo" specified in the URL does not exist. Please select an existing repository.');
|
|
84
|
+
ModalDialogSteps.close();
|
|
85
|
+
cy.url().should('include', 'repositoryId=mising-repo');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
describe('When there is an active repository and no repository in URL', () => {
|
|
90
|
+
beforeEach(() => {
|
|
91
|
+
repositoryId = 'repository-in-url-' + Date.now();
|
|
92
|
+
cy.createRepository({id: repositoryId});
|
|
93
|
+
cy.presetRepository(repositoryId);
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
afterEach(() => {
|
|
97
|
+
cy.deleteRepository(repositoryId);
|
|
98
|
+
cy.deleteRepository(secondRepositoryId);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// 4. active repo yes, repo in url no -> update url
|
|
102
|
+
it('should update URL to include active repository', () => {
|
|
103
|
+
HomeSteps.visit();
|
|
104
|
+
RepositoryErrorsWidgetSteps.getWidget().should('be.hidden');
|
|
105
|
+
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
106
|
+
HomeSteps.getSelectedRepository().should('contain', repositoryId);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
// 5. active repo yes, repo in url yes, url repo exists -> show confirmation, update active repo on confirmation
|
|
110
|
+
it('should show confirmation and update active repository if repository in URL exists', () => {
|
|
111
|
+
secondRepositoryId = 'second-repository-in-url-' + Date.now();
|
|
112
|
+
cy.createRepository({id: secondRepositoryId});
|
|
113
|
+
HomeSteps.visitWithRepositoryInUrl(secondRepositoryId);
|
|
114
|
+
cy.url().should('include', 'repositoryId=' + secondRepositoryId);
|
|
115
|
+
HomeSteps.getSelectedRepository().should('contain', repositoryId);
|
|
116
|
+
HomeSteps.getView().should('be.visible');
|
|
117
|
+
HomeSteps.getActiveRepositoryWidget().should('be.visible');
|
|
118
|
+
RepositoryErrorsWidgetSteps.getWidget().should('be.hidden');
|
|
119
|
+
ModalDialogSteps.getDialog().should('be.visible');
|
|
120
|
+
ModalDialogSteps.getDialogBody().should('contain', `Active repository will be changed to "${secondRepositoryId}". Do you want to proceed?`);
|
|
121
|
+
ModalDialogSteps.confirm();
|
|
122
|
+
ModalDialogSteps.getDialog().should('not.exist');
|
|
123
|
+
HomeSteps.getSelectedRepository().should('contain', secondRepositoryId);
|
|
124
|
+
cy.url().should('include', 'repositoryId=' + secondRepositoryId);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// 5. active repo yes, repo in url yes, url repo exists -> show confirmation, keep active repo on reject
|
|
128
|
+
it('should show confirmation and keep active repository if repository in URL exists but user rejects', () => {
|
|
129
|
+
// active repo yes, repo in url yes, url repo exists -> show confirmation, update active repo
|
|
130
|
+
secondRepositoryId = 'second-repository-in-url-' + Date.now();
|
|
131
|
+
cy.createRepository({id: secondRepositoryId});
|
|
132
|
+
HomeSteps.visitWithRepositoryInUrl(secondRepositoryId);
|
|
133
|
+
cy.url().should('include', 'repositoryId=' + secondRepositoryId);
|
|
134
|
+
HomeSteps.getSelectedRepository().should('contain', repositoryId);
|
|
135
|
+
HomeSteps.getView().should('be.visible');
|
|
136
|
+
HomeSteps.getActiveRepositoryWidget().should('be.visible');
|
|
137
|
+
RepositoryErrorsWidgetSteps.getWidget().should('be.hidden');
|
|
138
|
+
ModalDialogSteps.getDialog().should('be.visible');
|
|
139
|
+
ModalDialogSteps.getDialogBody().should('contain', `Active repository will be changed to "${secondRepositoryId}". Do you want to proceed?`);
|
|
140
|
+
ModalDialogSteps.cancel();
|
|
141
|
+
ModalDialogSteps.getDialog().should('not.exist');
|
|
142
|
+
HomeSteps.getSelectedRepository().should('contain', repositoryId);
|
|
143
|
+
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// 6. active repo yes, repo in url yes, url repo missing-> show warning, keep the active repo
|
|
147
|
+
it('should show warning if repository in URL does not exist and keep active repository', () => {
|
|
148
|
+
HomeSteps.visitWithRepositoryInUrl('mising-repo');
|
|
149
|
+
cy.url().should('include', 'repositoryId=mising-repo');
|
|
150
|
+
ModalDialogSteps.getModalAlert().should('be.visible');
|
|
151
|
+
ModalDialogSteps.clickOKButton();
|
|
152
|
+
ModalDialogSteps.getModalAlert().should('not.exist');
|
|
153
|
+
HomeSteps.getSelectedRepository().should('contain', repositoryId);
|
|
154
|
+
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
describe('When navigating between legacy and new workbench', () => {
|
|
159
|
+
beforeEach(() => {
|
|
160
|
+
repositoryId = 'repository-in-url-' + Date.now();
|
|
161
|
+
cy.createRepository({id: repositoryId});
|
|
162
|
+
cy.initializeRepository(repositoryId);
|
|
163
|
+
cy.presetRepository(repositoryId);
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
afterEach(() => {
|
|
167
|
+
cy.deleteRepository(repositoryId);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it('should preserve repositoryId parameter when navigating from 404 (new workbench) to legacy page', () => {
|
|
171
|
+
// Given I am on the 404 page which is in the new workbench
|
|
172
|
+
ErrorPageSteps.visit404();
|
|
173
|
+
ErrorPageSteps.get404Page().should('be.visible');
|
|
174
|
+
cy.url().should('not.include', 'repositoryId=');
|
|
175
|
+
// When I navigate to some legacy page
|
|
176
|
+
MainMenuSteps.clickOnSparqlMenu();
|
|
177
|
+
// Then repositoryId parameter should be preserved in the URL
|
|
178
|
+
cy.url().should('include', `repositoryId=${repositoryId}`);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
@@ -7,10 +7,12 @@ import {YasqeSteps} from "../../steps/yasgui/yasqe-steps";
|
|
|
7
7
|
import {YasrSteps} from "../../steps/yasgui/yasr-steps";
|
|
8
8
|
import {YasguiSteps} from "../../steps/yasgui/yasgui-steps";
|
|
9
9
|
import {JsonLdModalSteps} from "../../steps/json-ld-modal-steps";
|
|
10
|
+
import {GraphConfigStubs} from '../../stubs/graph-config-stubs.js';
|
|
11
|
+
import {VisualGraphSplitButtonSteps} from '../../steps/visual-graph-split-button-steps.js';
|
|
10
12
|
|
|
11
13
|
const FILE_TO_IMPORT = 'resource-test-data.ttl';
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
+
const SUBJECT_RESOURCE_ENCODED = 'http:%2F%2Fexample.com%2Fontology%23CustomerLoyalty';
|
|
15
|
+
const SUBJECT_RESOURCE = 'http://example.com/ontology#CustomerLoyalty';
|
|
14
16
|
const PREDICATE_SOURCE = 'http:%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23subClassOf';
|
|
15
17
|
const CONTEXT_EXPLICIT = 'http://www.ontotext.com/explicit';
|
|
16
18
|
const OBJECT_RESOURCE = 'http:%2F%2Fexample.com%2Fontology%23Metric';
|
|
@@ -33,13 +35,13 @@ describe('Resource view', () => {
|
|
|
33
35
|
|
|
34
36
|
it('should open resource view with active role tab depend on url role parameter', () => {
|
|
35
37
|
ResourceSteps.getAllRoles().forEach((role) => {
|
|
36
|
-
ResourceSteps.visit(`uri=${
|
|
38
|
+
ResourceSteps.visit(`uri=${SUBJECT_RESOURCE_ENCODED}&role=${role}`);
|
|
37
39
|
ResourceSteps.verifyActiveRoleTab(role);
|
|
38
40
|
});
|
|
39
41
|
});
|
|
40
42
|
|
|
41
43
|
it('should open subject tab if role parameter is miss', () => {
|
|
42
|
-
ResourceSteps.visit(`uri=${
|
|
44
|
+
ResourceSteps.visit(`uri=${SUBJECT_RESOURCE_ENCODED}&role=subject`);
|
|
43
45
|
ResourceSteps.verifyActiveRoleTab('subject');
|
|
44
46
|
});
|
|
45
47
|
|
|
@@ -62,17 +64,35 @@ describe('Resource view', () => {
|
|
|
62
64
|
YasrSteps.getResults().should('have.length', 5);
|
|
63
65
|
});
|
|
64
66
|
|
|
65
|
-
it('should
|
|
67
|
+
it('should open graphs-visualizations view when click on main button', () => {
|
|
66
68
|
// When I am on resource view and page loaded a resource.
|
|
67
|
-
ResourceSteps.visit(`uri=${
|
|
69
|
+
ResourceSteps.visit(`uri=${SUBJECT_RESOURCE_ENCODED}&role=subject`);
|
|
68
70
|
|
|
69
71
|
// When I click on "Visual graph" button.
|
|
70
|
-
|
|
72
|
+
VisualGraphSplitButtonSteps.clickOnVisualizeMainButton();
|
|
71
73
|
|
|
72
74
|
// Then I expect to be redirected to explore graph view.
|
|
73
75
|
VisualGraphSteps.verifyUrl();
|
|
74
76
|
});
|
|
75
77
|
|
|
78
|
+
it('should open graphs-visualizations view when select a graph configuration', () => {
|
|
79
|
+
// When I am on resource view and page loaded a resource.
|
|
80
|
+
ResourceSteps.visit(`uri=${SUBJECT_RESOURCE_ENCODED}&role=subject`);
|
|
81
|
+
GraphConfigStubs.stubGetGraphConfigs();
|
|
82
|
+
|
|
83
|
+
// WHEN: I open the dropdown.
|
|
84
|
+
VisualGraphSplitButtonSteps.toggleGraphConfigDropdown();
|
|
85
|
+
// THEN: I expect to see all graph configurations.
|
|
86
|
+
VisualGraphSplitButtonSteps.getGraphConfigs().should('have.length', 3);
|
|
87
|
+
|
|
88
|
+
// WHEN: I select a graph configuration
|
|
89
|
+
VisualGraphSplitButtonSteps.selectGraphConfig();
|
|
90
|
+
// THEN: I expect to be navigated to graphs-visualizations view.
|
|
91
|
+
cy.url().should('include', 'graphs-visualizations');
|
|
92
|
+
cy.getQueryParam('uri').should('include', SUBJECT_RESOURCE);
|
|
93
|
+
cy.getQueryParam('config').should('eq', 'de99fd5de7f94ef98f1875dff55fc1c9');
|
|
94
|
+
});
|
|
95
|
+
|
|
76
96
|
it('should displays results depends on explicit/implicit dropdown', () => {
|
|
77
97
|
// When I am on resource view and page loaded a resource that has triplets in explicit and implicit context,
|
|
78
98
|
ResourceSteps.visit(`uri=${IMPLICIT_EXPLICIT_RESOURCE}&role=all`);
|
|
@@ -175,11 +195,11 @@ describe('Resource view', () => {
|
|
|
175
195
|
it('should list the triples of a resource used as subject', () => {
|
|
176
196
|
// When I am on resource view,
|
|
177
197
|
// and page loaded a resource that is used as subject,
|
|
178
|
-
ResourceSteps.visit(`uri=${
|
|
198
|
+
ResourceSteps.visit(`uri=${SUBJECT_RESOURCE_ENCODED}&role=subject`);
|
|
179
199
|
|
|
180
200
|
// Then I expect to see only one result because the resource has only one triplet as subject.
|
|
181
201
|
YasrSteps.getResults().should('have.length', 1);
|
|
182
|
-
YasrSteps.getResultLink(0, 1).should('contain',
|
|
202
|
+
YasrSteps.getResultLink(0, 1).should('contain', SUBJECT_RESOURCE);
|
|
183
203
|
YasrSteps.getResultLink(0, 2).should('contain', 'rdfs:subClassOf');
|
|
184
204
|
YasrSteps.getResultLink(0, 3).should('contain', 'http://example.com/ontology#Metric');
|
|
185
205
|
YasrSteps.getResultLink(0, 4).should('contain', CONTEXT_EXPLICIT);
|
|
@@ -196,7 +216,7 @@ describe('Resource view', () => {
|
|
|
196
216
|
YasrSteps.getResults().should('have.length', 1);
|
|
197
217
|
YasrSteps.getResultLink(0, 1).should('contain', 'http://example.com/resource/person/W6J1827/customerLoyalty');
|
|
198
218
|
YasrSteps.getResultLink(0, 2).should('contain', 'rdf:type');
|
|
199
|
-
YasrSteps.getResultLink(0, 3).should('contain',
|
|
219
|
+
YasrSteps.getResultLink(0, 3).should('contain', SUBJECT_RESOURCE);
|
|
200
220
|
YasrSteps.getResultLink(0, 4).should('contain', CONTEXT_EXPLICIT);
|
|
201
221
|
|
|
202
222
|
// When I click on "context" tab.
|
|
@@ -211,14 +231,14 @@ describe('Resource view', () => {
|
|
|
211
231
|
// Then I expect to see all triples of subject without mater of its role.
|
|
212
232
|
YasrSteps.getResults().should('have.length', 2);
|
|
213
233
|
|
|
214
|
-
YasrSteps.getResultLink(0, 1).should('contain',
|
|
234
|
+
YasrSteps.getResultLink(0, 1).should('contain', SUBJECT_RESOURCE);
|
|
215
235
|
YasrSteps.getResultLink(0, 2).should('contain', 'rdfs:subClassOf');
|
|
216
236
|
YasrSteps.getResultLink(0, 3).should('contain', 'http://example.com/ontology#Metric');
|
|
217
237
|
YasrSteps.getResultLink(0, 4).should('contain', CONTEXT_EXPLICIT);
|
|
218
238
|
|
|
219
239
|
YasrSteps.getResultLink(1, 1).should('contain', 'http://example.com/resource/person/W6J1827/customerLoyalty');
|
|
220
240
|
YasrSteps.getResultLink(1, 2).should('contain', 'rdf:type');
|
|
221
|
-
YasrSteps.getResultLink(1, 3).should('contain',
|
|
241
|
+
YasrSteps.getResultLink(1, 3).should('contain', SUBJECT_RESOURCE);
|
|
222
242
|
YasrSteps.getResultLink(1, 4).should('contain', CONTEXT_EXPLICIT);
|
|
223
243
|
});
|
|
224
244
|
|
|
@@ -323,19 +343,15 @@ describe('Resource view', () => {
|
|
|
323
343
|
});
|
|
324
344
|
|
|
325
345
|
context('Triple resource', () => {
|
|
326
|
-
|
|
327
|
-
it('should show triple resource', {
|
|
328
|
-
retries: {
|
|
329
|
-
runMode: 1,
|
|
330
|
-
openMode: 0
|
|
331
|
-
}
|
|
332
|
-
}, () => {
|
|
346
|
+
it('should show triple resource', () => {
|
|
333
347
|
// When I visit resource view with triple resource.
|
|
334
348
|
ResourceSteps.visit(`triple=${TRIPLE_RESOURCE}&role=subject`);
|
|
335
349
|
|
|
336
350
|
// Then I expect resource link to exist.
|
|
337
351
|
ResourceSteps.getTripleResourceLink().should('contain.text', '<<<W6J1827> <hasAddress> <address>>>');
|
|
338
352
|
|
|
353
|
+
// And I expect to see data table
|
|
354
|
+
ResourceSteps.getDataTable().should('exist').and('be.visible');
|
|
339
355
|
// When I click on the link.
|
|
340
356
|
ResourceSteps.clickOnTripleResourceLink();
|
|
341
357
|
|
|
@@ -351,6 +367,8 @@ describe('Resource view', () => {
|
|
|
351
367
|
// Then I expect target link to exist.
|
|
352
368
|
ResourceSteps.getTargetLink().should('contain.text', '<<<http://example.com/resource/person/W6J1827> <http://example.com/ontology#hasAddress> <http://example.com/resource/person/W6J1827/address>>>');
|
|
353
369
|
|
|
370
|
+
// And I expect to see data table
|
|
371
|
+
ResourceSteps.getDataTable().should('exist').and('be.visible');
|
|
354
372
|
// When I click on the link.
|
|
355
373
|
ResourceSteps.clickOnTripleResourceLink();
|
|
356
374
|
|
|
@@ -366,7 +384,19 @@ describe('Resource view', () => {
|
|
|
366
384
|
context('Download as', () => {
|
|
367
385
|
it('should download as JSON-LD and then restore defaults', () => {
|
|
368
386
|
// Given I am in the Resource view
|
|
369
|
-
ResourceSteps.visit(`uri=${
|
|
387
|
+
ResourceSteps.visit(`uri=${SUBJECT_RESOURCE_ENCODED}&role=subject`);
|
|
388
|
+
cy.window().then((win) => {
|
|
389
|
+
expect(win.jsonld).to.exist;
|
|
390
|
+
cy.stub(win.jsonld, 'compact').resolves({
|
|
391
|
+
"@context": {
|
|
392
|
+
"dc11": "http://purl.org/dc/elements/1.1/",
|
|
393
|
+
"ex": "http://example.org/vocab#",
|
|
394
|
+
"ex:authored": {"@type": "@id"},
|
|
395
|
+
"ex:contains": {"@type": "@id"},
|
|
396
|
+
"foaf": "http://xmlns.com/foaf/0.1/"
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
});
|
|
370
400
|
ResourceSteps.verifyActiveRoleTab('subject');
|
|
371
401
|
|
|
372
402
|
// When I download as JSON-LD
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
2
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
3
|
+
import {AclManagementSteps} from "../../../steps/setup/acl-management-steps";
|
|
4
|
+
import {RepositorySteps} from '../../../steps/repository-steps.js';
|
|
5
|
+
import {RepositorySelectorSteps} from '../../../steps/repository-selector-steps.js';
|
|
6
|
+
|
|
7
|
+
function verifyStateWithSelectedRepository() {
|
|
8
|
+
AclManagementSteps.getPageHeading().should('be.visible');
|
|
9
|
+
AclManagementSteps.getAclTable().should('be.visible');
|
|
10
|
+
AclManagementSteps.getNoDataMessage().should('be.visible');
|
|
11
|
+
AclManagementSteps.getAddFirstRuleButton().should('be.visible');
|
|
12
|
+
AclManagementSteps.getAclTabs().should('be.visible').and('have.length', 4);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe('ACL Management initial state with repositories', () => {
|
|
16
|
+
let repositoryId;
|
|
17
|
+
let fedexRepositoryId;
|
|
18
|
+
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
repositoryId = 'acl-management-' + Date.now();
|
|
21
|
+
fedexRepositoryId = 'fedex-repo-' + Date.now();
|
|
22
|
+
cy.createRepository({id: repositoryId});
|
|
23
|
+
cy.presetRepository(repositoryId);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
cy.deleteRepository(repositoryId);
|
|
28
|
+
cy.deleteRepository(fedexRepositoryId);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
32
|
+
// Given, I visit the ACL Management page via URL with a repository selected
|
|
33
|
+
AclManagementSteps.visit();
|
|
34
|
+
// Then,
|
|
35
|
+
verifyStateWithSelectedRepository();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('Should display the correct initial state when navigating via the navigation menu', () => {
|
|
39
|
+
// Given, I visit the ACL Management page via the navigation menu with a repository selected
|
|
40
|
+
HomeSteps.visit();
|
|
41
|
+
MainMenuSteps.clickOnACLManagement();
|
|
42
|
+
// Then,
|
|
43
|
+
verifyStateWithSelectedRepository();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('should prevent ACL management with FedEx repository', () => {
|
|
47
|
+
// Given I have created a Fedex repository
|
|
48
|
+
createFedexRepository(repositoryId, fedexRepositoryId);
|
|
49
|
+
// When I select the fedex repository
|
|
50
|
+
RepositorySelectorSteps.selectRepository(fedexRepositoryId);
|
|
51
|
+
RepositorySelectorSteps.getSelectedRepository().should('contain', fedexRepositoryId);
|
|
52
|
+
RepositorySteps.getActiveRepositoryRow().should('contain', fedexRepositoryId);
|
|
53
|
+
// And I navigate to ACL management page
|
|
54
|
+
MainMenuSteps.clickOnACLManagement();
|
|
55
|
+
// Then I should see the warning message about Fedex repository
|
|
56
|
+
AclManagementSteps.getFedexWarningMessage().should('be.visible');
|
|
57
|
+
AclManagementSteps.getAclManagementContent().should('not.exist');
|
|
58
|
+
// When I switch to graphdb repository
|
|
59
|
+
RepositorySelectorSteps.selectRepository(repositoryId);
|
|
60
|
+
// Then the warning message should be hidden
|
|
61
|
+
AclManagementSteps.getFedexWarningMessage().should('not.exist');
|
|
62
|
+
AclManagementSteps.getAclManagementContent().should('be.visible');
|
|
63
|
+
// When I select a fedex repository
|
|
64
|
+
RepositorySelectorSteps.selectRepository(fedexRepositoryId);
|
|
65
|
+
// Then the fedex warning should become visible
|
|
66
|
+
AclManagementSteps.getFedexWarningMessage().should('be.visible');
|
|
67
|
+
AclManagementSteps.getAclManagementContent().should('not.exist');
|
|
68
|
+
// Go to home page before end to prevent error when delete the repository happens
|
|
69
|
+
HomeSteps.visit();
|
|
70
|
+
});
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
function createFedexRepository(repositoryId, fedexRepositoryId) {
|
|
74
|
+
RepositorySteps.visit();
|
|
75
|
+
RepositorySteps.getCreateRepositoryButton().click();
|
|
76
|
+
RepositorySteps.createFedexRepositoryType();
|
|
77
|
+
cy.url().should('include', '/repository/create/fedx');
|
|
78
|
+
RepositorySteps.typeRepositoryId(fedexRepositoryId);
|
|
79
|
+
RepositorySteps.selectFedexMember(repositoryId);
|
|
80
|
+
RepositorySteps.saveRepository();
|
|
81
|
+
RepositorySteps.getRepositoriesPage().should('be.visible');
|
|
82
|
+
RepositorySteps.getRepositoryFromList(fedexRepositoryId)
|
|
83
|
+
.should('be.visible');
|
|
84
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
2
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
3
|
+
import {ErrorSteps} from "../../../steps/error-steps";
|
|
4
|
+
import {AclManagementSteps} from "../../../steps/setup/acl-management-steps";
|
|
5
|
+
|
|
6
|
+
describe('ACL Management initial state without repositories', () => {
|
|
7
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
8
|
+
// Given, I visit the ACL Management page via URL without repositories selected
|
|
9
|
+
AclManagementSteps.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 ACL Management page via the navigation menu without repositories selected
|
|
16
|
+
HomeSteps.visit();
|
|
17
|
+
MainMenuSteps.clickOnACLManagement();
|
|
18
|
+
// Then,
|
|
19
|
+
ErrorSteps.verifyNoConnectedRepoMessage();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -2,6 +2,7 @@ import {AclManagementSteps} from "../../../steps/setup/acl-management-steps";
|
|
|
2
2
|
import {ACL_VIEW} from "../../../steps/setup/acl-management-steps";
|
|
3
3
|
import {ApplicationSteps} from "../../../steps/application-steps";
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
describe('ACL Management: create rule', () => {
|
|
6
7
|
|
|
7
8
|
let repositoryId;
|
|
@@ -259,6 +260,9 @@ describe('ACL Management: create rule', () => {
|
|
|
259
260
|
// Then I expect the prefix warning to appear
|
|
260
261
|
AclManagementSteps.getPrefixWarning(0).should('be.visible');
|
|
261
262
|
AclManagementSteps.getPrefixWarning(0).should('contain.text', 'Custom roles should be entered without the "CUSTOM_" prefix in Workbench');
|
|
263
|
+
// When I blur the field, the warning should not be visible
|
|
264
|
+
AclManagementSteps.blurRole(0);
|
|
265
|
+
AclManagementSteps.getPrefixWarning(0).should('not.exist');
|
|
262
266
|
// When I save the rule
|
|
263
267
|
AclManagementSteps.saveRule(0);
|
|
264
268
|
// Then the text should be how the user typed it
|