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