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
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
import {RepositoryErrorsWidgetSteps} from "../../steps/widgets/repository-errors-widget-steps";
|
|
3
|
+
import {LicenseWidgetSteps} from "../../steps/widgets/license-widget-steps";
|
|
4
|
+
import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
|
|
5
|
+
import {LicenseStubs} from "../../stubs/license-stubs";
|
|
6
|
+
|
|
7
|
+
describe('Home page: without repositories', () => {
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
cy.viewport(1280, 1000);
|
|
11
|
+
RepositoriesStubs.spyGetRepositories();
|
|
12
|
+
LicenseStubs.spyGetLicense();
|
|
13
|
+
HomeSteps.visitAndWaitLoader();
|
|
14
|
+
cy.wait('@getRepositories');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('should render navigation menu', () => {
|
|
18
|
+
HomeSteps.getNavigationMenu().should('be.visible');
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should render page header with tools', () => {
|
|
22
|
+
// RDF search box should not be visible when there is no selected repository
|
|
23
|
+
HomeSteps.getRDFSearchButton().should('not.be.visible');
|
|
24
|
+
// Repository selector menu should be visible and empty
|
|
25
|
+
HomeSteps.getRepositorySelector().should('be.visible');
|
|
26
|
+
HomeSteps.getSelectedRepository().should('contain', 'No accessible repositories');
|
|
27
|
+
// Language selector menu should be visible and default to English
|
|
28
|
+
HomeSteps.getLanguageSelector().should('be.visible');
|
|
29
|
+
HomeSteps.getSelectedLanguage().should('contain', 'en');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should render repository errors widget', () => {
|
|
33
|
+
HomeSteps.getRepositoryErrorsWidget().should('be.visible');
|
|
34
|
+
RepositoryErrorsWidgetSteps.getInfoMessage().should('contain', 'Some functionalities are not available because you are not connected to any repository.');
|
|
35
|
+
RepositoryErrorsWidgetSteps.getCreateRepositoryBtn().should('be.visible');
|
|
36
|
+
RepositoryErrorsWidgetSteps.getShowRemoteLocationsBtn().should('be.visible');
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('should render license widget', () => {
|
|
40
|
+
HomeSteps.getLicenseWidget().should('be.visible');
|
|
41
|
+
LicenseWidgetSteps.getLicenseWidgetHeader().should('contain', 'License');
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should not render active repository widget', () => {
|
|
45
|
+
HomeSteps.getActiveRepositoryWidget().should('be.hidden');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('should not render saved SPARQL queries widget', () => {
|
|
49
|
+
HomeSteps.getSavedSparqlQueriesWidget().should('be.hidden');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('should render license widget', () => {
|
|
53
|
+
cy.wait('@get-license');
|
|
54
|
+
HomeSteps.getLicenseWidget().should('be.visible');
|
|
55
|
+
LicenseWidgetSteps.getLicenseWidgetHeader().should('contain', 'License');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('should render page footer', () => {
|
|
59
|
+
HomeSteps.getPageFooter().should('be.visible');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('should render the tutorial panel', () => {
|
|
63
|
+
// When I open the home page
|
|
64
|
+
// Then the tutorial panel should be visible by default
|
|
65
|
+
HomeSteps.getTutorialPanel().should('be.visible');
|
|
66
|
+
// And the tutorial panel should contain the following text:
|
|
67
|
+
HomeSteps.verifyTutorialText(0, 'Welcome to GraphDB');
|
|
68
|
+
HomeSteps.verifyTutorialText(1, 'Create a repository');
|
|
69
|
+
HomeSteps.verifyTutorialText(2, 'Load a sample dataset');
|
|
70
|
+
HomeSteps.verifyTutorialText(3, 'Run a SPARQL query');
|
|
71
|
+
HomeSteps.verifyTutorialText(4, 'REST API');
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('should be able to toggle the tutorial panel', () => {
|
|
75
|
+
// Given I open the home page
|
|
76
|
+
// And I see the tutorial panel
|
|
77
|
+
HomeSteps.getTutorialPanel().should('be.visible');
|
|
78
|
+
// When I decline the tutorial
|
|
79
|
+
HomeSteps.hideTutorial();
|
|
80
|
+
// Then the tutorial panel should be closed
|
|
81
|
+
HomeSteps.getTutorialPanel().should('be.not.exist');
|
|
82
|
+
// When I open the tutorial panel
|
|
83
|
+
HomeSteps.showTutorialPanel();
|
|
84
|
+
// Then the tutorial panel should be visible
|
|
85
|
+
HomeSteps.getTutorialPanel().should('be.visible');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
import {RepositoryErrorsWidgetSteps} from "../../steps/widgets/repository-errors-widget-steps";
|
|
3
|
+
import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
|
|
4
|
+
import {LicenseStubs} from "../../stubs/license-stubs";
|
|
5
|
+
import {SavedQueriesStubs} from "../../stubs/saved-queries-stubs";
|
|
6
|
+
|
|
7
|
+
describe('Home page: without selected repository', () => {
|
|
8
|
+
|
|
9
|
+
let repositoryId;
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
repositoryId = 'home-page-' + Date.now();
|
|
13
|
+
cy.createRepository({id: repositoryId});
|
|
14
|
+
cy.viewport(1280, 1000);
|
|
15
|
+
RepositoriesStubs.spyGetRepositories();
|
|
16
|
+
RepositoriesStubs.spyGetActiveLocations();
|
|
17
|
+
LicenseStubs.spyGetLicense();
|
|
18
|
+
SavedQueriesStubs.spyGetSavedQueries();
|
|
19
|
+
HomeSteps.visitAndWaitLoader();
|
|
20
|
+
cy.wait('@getRepositories');
|
|
21
|
+
cy.wait('@getActiveLocations');
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
afterEach(() => {
|
|
25
|
+
cy.deleteRepository(repositoryId);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('should render repository errors widget', () => {
|
|
29
|
+
HomeSteps.getRepositoryErrorsWidget().should('be.visible');
|
|
30
|
+
RepositoryErrorsWidgetSteps.getInfoMessage().should('contain', 'Some functionalities are not available because you are not connected to any repository.');
|
|
31
|
+
RepositoryErrorsWidgetSteps.getCreateRepositoryBtn().should('be.visible');
|
|
32
|
+
RepositoryErrorsWidgetSteps.getShowRemoteLocationsBtn().should('be.visible');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// This test is unreliable with the current implementation of the license widget.
|
|
36
|
+
it.skip('should not render active repository widget', () => {
|
|
37
|
+
HomeSteps.getActiveRepositoryWidget().should('be.hidden');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should not render saved SPARQL queries widget', () => {
|
|
41
|
+
cy.wait('@getSavedQueries');
|
|
42
|
+
HomeSteps.getSavedSparqlQueriesWidget().should('be.hidden');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('should render repository errors widget', () => {
|
|
46
|
+
RepositoryErrorsWidgetSteps.getRepositoryList().should('contain', repositoryId);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should render page header with tools', () => {
|
|
50
|
+
// RDF search box should not be visible when there is no selected repository
|
|
51
|
+
HomeSteps.getRDFSearchButton().should('not.be.visible');
|
|
52
|
+
// Repository selector menu should be visible and empty
|
|
53
|
+
HomeSteps.getRepositorySelector().should('be.visible');
|
|
54
|
+
HomeSteps.getSelectedRepository().should('contain', 'Choose repository');
|
|
55
|
+
// Language selector menu should be visible and default to English
|
|
56
|
+
HomeSteps.getLanguageSelector().should('be.visible');
|
|
57
|
+
HomeSteps.getSelectedLanguage().should('contain', 'en');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -23,7 +23,7 @@ describe('Home screen language validation', () => {
|
|
|
23
23
|
cy.enableAutocomplete(repositoryId);
|
|
24
24
|
cy.presetRepository(repositoryId);
|
|
25
25
|
|
|
26
|
-
HomeSteps.
|
|
26
|
+
HomeSteps.hideTutorial();
|
|
27
27
|
|
|
28
28
|
// When I visit home page with selected repository
|
|
29
29
|
HomeSteps.visitAndWaitLoader();
|
|
@@ -42,4 +42,4 @@ describe('Home screen language validation', () => {
|
|
|
42
42
|
HomeSteps.getLicenseAsLabel().should('have.text', 'Licence');
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
|
-
})
|
|
45
|
+
});
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
import {RdfResourceSearchSteps} from "../../steps/rdf-resource-search-steps";
|
|
3
|
+
import ImportSteps from "../../steps/import/import-steps";
|
|
4
|
+
import {BaseSteps} from "../../steps/base-steps";
|
|
5
|
+
import {BrowserStubs} from "../../stubs/browser-stubs";
|
|
6
|
+
|
|
7
|
+
const FILE_TO_IMPORT = 'wine.rdf';
|
|
8
|
+
|
|
9
|
+
describe('RDF resource search', () => {
|
|
10
|
+
let repositoryId;
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
cy.viewport(1280, 1000);
|
|
13
|
+
repositoryId = 'rdf-resource-search-' + Date.now();
|
|
14
|
+
cy.createRepository({id: repositoryId});
|
|
15
|
+
cy.initializeRepository(repositoryId);
|
|
16
|
+
cy.enableAutocomplete(repositoryId);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
cy.deleteRepository(repositoryId);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('Search button should not be present when no repo is selected', () => {
|
|
24
|
+
HomeSteps.visitAndWaitLoader();
|
|
25
|
+
RdfResourceSearchSteps.getComponent().should('not.exist');
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('Search should only be triggered from the home page when a repository is selected', () => {
|
|
29
|
+
// When: I visit home page with selected repository
|
|
30
|
+
cy.presetRepository(repositoryId);
|
|
31
|
+
HomeSteps.visitAndWaitLoader();
|
|
32
|
+
// And: I click the button
|
|
33
|
+
RdfResourceSearchSteps.clickOnShowViewResourceMessageButton();
|
|
34
|
+
// Then: I should be able to type some text in the input on home page
|
|
35
|
+
HomeSteps.getRdfResourceSearchInput().type('hasPos');
|
|
36
|
+
// And: the autocomplete dropdown should become visible
|
|
37
|
+
HomeSteps.getAutocompleteResultsContainer().should('be.visible');
|
|
38
|
+
// When: I click the close button
|
|
39
|
+
HomeSteps.closeRdfResourceSearchBox();
|
|
40
|
+
// The input should be cleared
|
|
41
|
+
HomeSteps.getRdfResourceSearchInput().should('have.value', '');
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should be visible when a repository is selected and the user is not on the Home page', () => {
|
|
45
|
+
// When: There is a repository selected and I visit a page other than home.
|
|
46
|
+
cy.presetRepository(repositoryId);
|
|
47
|
+
ImportSteps.visit();
|
|
48
|
+
// Then: Search rdf button should be visible
|
|
49
|
+
RdfResourceSearchSteps.getOpenButton().should('be.visible');
|
|
50
|
+
|
|
51
|
+
// When: I click the button
|
|
52
|
+
RdfResourceSearchSteps.openRdfSearchBox();
|
|
53
|
+
// Then: I should be able to type some text in the input
|
|
54
|
+
RdfResourceSearchSteps.getRDFResourceSearchInput().type('hasPos');
|
|
55
|
+
// And: the autocomplete dropdown should become visible
|
|
56
|
+
RdfResourceSearchSteps.getAutocompleteResults().should('be.visible');
|
|
57
|
+
|
|
58
|
+
// When: I close the RDF search box
|
|
59
|
+
RdfResourceSearchSteps.closeRDFSearchBox();
|
|
60
|
+
// And: open again the search box
|
|
61
|
+
RdfResourceSearchSteps.openRdfSearchBox();
|
|
62
|
+
// Then: The input should have value 'hasPos'
|
|
63
|
+
RdfResourceSearchSteps.getRDFResourceSearchInput().should('have.value', 'hasPos');
|
|
64
|
+
// And: the autocomplete dropdown should become visible
|
|
65
|
+
RdfResourceSearchSteps.getAutocompleteResults().should('be.visible');
|
|
66
|
+
|
|
67
|
+
// When: I press 'escape'
|
|
68
|
+
BaseSteps.typeEscapeKey();
|
|
69
|
+
// Then: Search box should not be visible
|
|
70
|
+
RdfResourceSearchSteps.getRDFResourceSearchInput().should('not.be.visible');
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('Search should be persisted on page reload', () => {
|
|
74
|
+
// Given: There is a repository selected and I visit a page other than home.
|
|
75
|
+
cy.presetRepository(repositoryId);
|
|
76
|
+
ImportSteps.visit();
|
|
77
|
+
ImportSteps.getView().should('be.visible');
|
|
78
|
+
BrowserStubs.stubWindowOpen();
|
|
79
|
+
// Then: Search rdf button should be visible
|
|
80
|
+
RdfResourceSearchSteps.getOpenButton().should('be.visible');
|
|
81
|
+
// When: I open the search resource component
|
|
82
|
+
RdfResourceSearchSteps.openRdfSearchBox();
|
|
83
|
+
//Then: I should be able to type some text in the input
|
|
84
|
+
RdfResourceSearchSteps.getRDFResourceSearchInput().type('hasPos')
|
|
85
|
+
.then(() => {
|
|
86
|
+
// When: I select option from suggestions
|
|
87
|
+
RdfResourceSearchSteps.clickOnAutocompleteSuggestionByPartialText('hasPos')
|
|
88
|
+
.then(() => {
|
|
89
|
+
// Then: Search result should be opened in new window
|
|
90
|
+
cy.get(BrowserStubs.WINDOW_OPEN_ALIAS()).should('have.been.calledWithMatch', `resource?uri=http%3A%2F%2Fwww.w3.org%2Fns%2Forg%23hasPost`, "_blank");
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// When: I revisit the home page
|
|
95
|
+
ImportSteps.visit();
|
|
96
|
+
// And: I open again the search box
|
|
97
|
+
RdfResourceSearchSteps.openRdfSearchBox();
|
|
98
|
+
// Then: The input should have value 'hasPos' from previous search
|
|
99
|
+
RdfResourceSearchSteps.getRDFResourceSearchInput().should('have.value', 'hasPos');
|
|
100
|
+
// And: the autocomplete dropdown should become visible
|
|
101
|
+
RdfResourceSearchSteps.getAutocompleteResults().should('be.visible');
|
|
102
|
+
|
|
103
|
+
// When: I press 'escape'
|
|
104
|
+
BaseSteps.typeEscapeKey();
|
|
105
|
+
// Then: Search box should not be visible
|
|
106
|
+
RdfResourceSearchSteps.getRDFResourceSearchInput().should('not.be.visible');
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('Should test RDF resource search box', () => {
|
|
110
|
+
// Given: I have a repository with RDF data
|
|
111
|
+
cy.presetRepository(repositoryId);
|
|
112
|
+
cy.importServerFile(repositoryId, FILE_TO_IMPORT);
|
|
113
|
+
// And: I visit the home page
|
|
114
|
+
HomeSteps.visitAndWaitLoader();
|
|
115
|
+
HomeSteps.getView().should('be.visible');
|
|
116
|
+
HomeSteps.getRdfResourceSearchInput().should('be.visible');
|
|
117
|
+
RdfResourceSearchSteps.getShowViewResourceMessageButton().should('be.visible');
|
|
118
|
+
|
|
119
|
+
// When: I click on the RDF resource search button
|
|
120
|
+
RdfResourceSearchSteps.clickOnShowViewResourceMessageButton();
|
|
121
|
+
// Then: The input for RDF resource search should be visible (This is the legacy component used prior to the migration)
|
|
122
|
+
HomeSteps.getRdfResourceSearchInput().should('have.attr', 'placeholder', 'Search RDF resources...')
|
|
123
|
+
.and('be.focused');
|
|
124
|
+
|
|
125
|
+
//Navigate away from the Homepage, to be able to test the new resource search box
|
|
126
|
+
HomeSteps.visitAndWaitLoader();
|
|
127
|
+
BrowserStubs.stubWindowOpen();
|
|
128
|
+
HomeSteps.getView().should('be.visible');
|
|
129
|
+
HomeSteps.getRdfResourceSearchInput().should('be.visible');
|
|
130
|
+
RdfResourceSearchSteps.getShowViewResourceMessageButton().should('be.visible');
|
|
131
|
+
|
|
132
|
+
// Then: The input for RDF resource search should not be visible (This is the legacy component used prior to the migration)
|
|
133
|
+
HomeSteps.getRdfResourceSearchInput().should('be.visible');
|
|
134
|
+
// When: I click on the RDF resource search button
|
|
135
|
+
RdfResourceSearchSteps.clickOnShowViewResourceMessageButton();
|
|
136
|
+
// Then: The input for RDF resource search should be visible (This is the legacy component used prior to the migration)
|
|
137
|
+
HomeSteps.getRdfResourceSearchInput().should('have.attr', 'placeholder', 'Search RDF resources...')
|
|
138
|
+
.and('be.focused');
|
|
139
|
+
|
|
140
|
+
// When: I type some text in the input
|
|
141
|
+
HomeSteps.getRdfResourceSearchInput().type('Dry');
|
|
142
|
+
// Then: The autocomplete results should be visible
|
|
143
|
+
HomeSteps.getAutocompleteSuggestion().should('be.visible')
|
|
144
|
+
.and('have.length', 7);
|
|
145
|
+
|
|
146
|
+
// When: The table display button is active
|
|
147
|
+
HomeSteps.getTableDisplayButton().click();
|
|
148
|
+
// And: click on some suggestion
|
|
149
|
+
HomeSteps.getAutocompleteSuggestionByPartialText('http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#').click();
|
|
150
|
+
// Then: The clicked suggestion should be opened in new window
|
|
151
|
+
cy.get(BrowserStubs.WINDOW_OPEN_ALIAS()).should('have.been.calledWithMatch', `resource?uri=http%3A%2F%2Fwww.w3.org%2FTR%2F2003%2FPR-owl-guide-20031209%2Fwine%23Dry`);
|
|
152
|
+
|
|
153
|
+
// When: The visual display button is active
|
|
154
|
+
HomeSteps.getVisualDisplayButton().click();
|
|
155
|
+
// And: click on some suggestion
|
|
156
|
+
HomeSteps.getAutocompleteSuggestionByPartialText('http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#').click();
|
|
157
|
+
// Then: The clicked suggestion should be opened in new window
|
|
158
|
+
cy.get(BrowserStubs.WINDOW_OPEN_ALIAS()).should('have.been.calledWithMatch', `graphs-visualizations?uri=http%3A%2F%2Fwww.w3.org%2FTR%2F2003%2FPR-owl-guide-20031209%2Fwine%23Dry`);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
import {BrowserStubs} from "../../stubs/browser-stubs";
|
|
3
|
+
|
|
4
|
+
describe('View resource autocomplete', () => {
|
|
5
|
+
|
|
6
|
+
const FOAT_SNIPPET = '@base <http://example.org/> .\n' +
|
|
7
|
+
'@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n' +
|
|
8
|
+
'<#green-goblin>\n' +
|
|
9
|
+
'a foaf:Person ; # in the context of the Marvel universe\n' +
|
|
10
|
+
'foaf:name "Green Goblin" .\n';
|
|
11
|
+
const GOBLIN_URI = 'http://example.org/#green-goblin';
|
|
12
|
+
|
|
13
|
+
let repositoryId;
|
|
14
|
+
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
cy.viewport(1280, 1000);
|
|
17
|
+
repositoryId = 'view-resource-autocomplete-' + Date.now();
|
|
18
|
+
cy.createRepository({id: repositoryId});
|
|
19
|
+
BrowserStubs.stubWindowOpen();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
cy.deleteRepository(repositoryId);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('Test homepage autocomplete when it is enabled', () => {
|
|
27
|
+
HomeSteps.selectRepo(repositoryId);
|
|
28
|
+
|
|
29
|
+
// Type an invalid resource
|
|
30
|
+
HomeSteps.getAutocompleteInput().type('hfsafa');
|
|
31
|
+
HomeSteps.noAutocompleteToast();
|
|
32
|
+
|
|
33
|
+
cy.importRDFTextSnippet(repositoryId, FOAT_SNIPPET);
|
|
34
|
+
cy.enableAutocomplete(repositoryId);
|
|
35
|
+
|
|
36
|
+
HomeSteps.visitAndWaitLoader();
|
|
37
|
+
BrowserStubs.stubWindowOpen();
|
|
38
|
+
|
|
39
|
+
// When: The table display button is active
|
|
40
|
+
HomeSteps.getAutocompleteDisplayTypeButton('table').click();
|
|
41
|
+
// And: select an autocomplete suggestion
|
|
42
|
+
HomeSteps.autocompleteText('Green', GOBLIN_URI)
|
|
43
|
+
HomeSteps.autocompleteText('Green', GOBLIN_URI)
|
|
44
|
+
HomeSteps.getAutocompleteResultElement(GOBLIN_URI).click()
|
|
45
|
+
// Then: The clicked suggestion should be opened in new window
|
|
46
|
+
cy.get(BrowserStubs.WINDOW_OPEN_ALIAS()).should('be.calledWith', 'resource?uri=http%3A%2F%2Fexample.org%2F%23green-goblin');
|
|
47
|
+
|
|
48
|
+
// When: The visual display button is active
|
|
49
|
+
HomeSteps.getAutocompleteDisplayTypeButton('visual').click();
|
|
50
|
+
// And: select an autocomplete suggestion
|
|
51
|
+
HomeSteps.getAutocompleteResultElement(GOBLIN_URI).click()
|
|
52
|
+
// Then: clicked suggestion should be opened in new window
|
|
53
|
+
cy.get(BrowserStubs.WINDOW_OPEN_ALIAS()).should('be.calledWith', 'graphs-visualizations?uri=http%3A%2F%2Fexample.org%2F%23green-goblin')
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('should not suggest resources in "View resources" when autocomplete is not enabled', () => {
|
|
57
|
+
cy.importRDFTextSnippet(repositoryId, FOAT_SNIPPET);
|
|
58
|
+
|
|
59
|
+
HomeSteps.visitAndWaitLoader();
|
|
60
|
+
HomeSteps.selectRepo(repositoryId);
|
|
61
|
+
|
|
62
|
+
HomeSteps.getAutocompleteInput().type('Green');
|
|
63
|
+
HomeSteps.noAutocompleteToast();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
@@ -28,7 +28,7 @@ describe('Import server files', () => {
|
|
|
28
28
|
// When I switch to the server files tab
|
|
29
29
|
ImportUserDataSteps.openServerFilesTab();
|
|
30
30
|
// Then Server files tab should be active
|
|
31
|
-
cy.url().should('include', '/import#server');
|
|
31
|
+
cy.url().should('include', '/import').and('include', '#server');
|
|
32
32
|
ImportServerFilesSteps.getActiveTab().should('have.text', 'Server files');
|
|
33
33
|
ImportServerFilesSteps.getResourcesTable().should('be.visible');
|
|
34
34
|
});
|
|
@@ -37,7 +37,7 @@ describe('Import server files', () => {
|
|
|
37
37
|
// When I visit the import page through a direct link to the server files tab
|
|
38
38
|
cy.visit('/import#server');
|
|
39
39
|
// Then Server files tab should be active
|
|
40
|
-
cy.url().should('include', '/import#server');
|
|
40
|
+
cy.url().should('include', '/import').and('include', '#server');
|
|
41
41
|
ImportServerFilesSteps.getActiveTab().should('have.text', 'Server files');
|
|
42
42
|
ImportServerFilesSteps.getResourcesTable().should('be.visible');
|
|
43
43
|
});
|
|
@@ -127,7 +127,9 @@ describe('Import server files', () => {
|
|
|
127
127
|
ImportResourceMessageDialog.getDialog().should('be.visible');
|
|
128
128
|
|
|
129
129
|
// with full error message
|
|
130
|
-
ImportResourceMessageDialog
|
|
130
|
+
ImportResourceMessageDialog
|
|
131
|
+
.getMessage()
|
|
132
|
+
.should('contain.text', 'RDF Parse Error: The element type "ex:looooooooooooooooooooooooooooooooongTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame" must be terminated by the matching end-tag');
|
|
131
133
|
|
|
132
134
|
// When I click on corner close button.
|
|
133
135
|
ImportResourceMessageDialog.close();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {ImportSettingsDialogSteps} from "../../steps/import/import-settings-dialog-steps";
|
|
2
|
-
import {MainMenuSteps} from "../../steps/main-menu-steps";
|
|
3
2
|
import {ImportUserDataSteps} from "../../steps/import/import-user-data-steps";
|
|
4
3
|
import {FileOverwriteDialogSteps} from "../../steps/import/file-overwrite-dialog-steps";
|
|
4
|
+
import {HeaderSteps} from '../../steps/header-steps.js';
|
|
5
5
|
|
|
6
6
|
const bnodes = `_:node0 <http://purl.org/dc/elements/1.1/title> "A new book" ;
|
|
7
7
|
\t<http://purl.org/dc/elements/1.1/creator> "A.N.Other" .`;
|
|
@@ -15,7 +15,6 @@ const jsonld = JSON.stringify({
|
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
describe('Import user data: File upload', () => {
|
|
18
|
-
|
|
19
18
|
let repositoryId;
|
|
20
19
|
const testFiles = [
|
|
21
20
|
'bnodes.ttl',
|
|
@@ -39,7 +38,8 @@ describe('Import user data: File upload', () => {
|
|
|
39
38
|
// Given there are no files uploaded yet
|
|
40
39
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
41
40
|
// When I start to upload a file
|
|
42
|
-
ImportUserDataSteps.
|
|
41
|
+
const file1 = ImportUserDataSteps.createFile(testFiles[0], bnodes);
|
|
42
|
+
ImportUserDataSteps.selectFile(file1);
|
|
43
43
|
// Then the import settings dialog should open automatically
|
|
44
44
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
45
45
|
ImportSettingsDialogSteps.import();
|
|
@@ -63,7 +63,8 @@ describe('Import user data: File upload', () => {
|
|
|
63
63
|
// Given there are no files uploaded yet
|
|
64
64
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
65
65
|
// And I have selected to upload a file
|
|
66
|
-
ImportUserDataSteps.
|
|
66
|
+
const file = ImportUserDataSteps.createFile(testFiles[0], bnodes);
|
|
67
|
+
ImportUserDataSteps.selectFile(file);
|
|
67
68
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
68
69
|
// When I cancel the file upload via the cancel button
|
|
69
70
|
ImportSettingsDialogSteps.cancelUpload();
|
|
@@ -72,7 +73,7 @@ describe('Import user data: File upload', () => {
|
|
|
72
73
|
// And there should be no files uploaded
|
|
73
74
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
74
75
|
// When I select to upload a file again
|
|
75
|
-
ImportUserDataSteps.selectFile(
|
|
76
|
+
ImportUserDataSteps.selectFile(file);
|
|
76
77
|
// Then the import settings dialog should open
|
|
77
78
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
78
79
|
// And I close the file upload dialog via the close button
|
|
@@ -87,7 +88,8 @@ describe('Import user data: File upload', () => {
|
|
|
87
88
|
// Given there are no files uploaded yet
|
|
88
89
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
89
90
|
// When I start to upload a file
|
|
90
|
-
ImportUserDataSteps.
|
|
91
|
+
const file = ImportUserDataSteps.createFile(testFiles[0], bnodes);
|
|
92
|
+
ImportUserDataSteps.selectFile(file);
|
|
91
93
|
// Then the import settings dialog should open automatically
|
|
92
94
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
93
95
|
// And the option for replace graph should be active
|
|
@@ -98,21 +100,24 @@ describe('Import user data: File upload', () => {
|
|
|
98
100
|
// Given there are no files uploaded yet
|
|
99
101
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
100
102
|
// When I upload a file
|
|
101
|
-
ImportUserDataSteps.
|
|
103
|
+
const file = ImportUserDataSteps.createFile(testFiles[0], bnodes);
|
|
104
|
+
ImportUserDataSteps.selectFile(file);
|
|
102
105
|
// Then the import settings dialog should open automatically
|
|
103
106
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
104
107
|
ImportSettingsDialogSteps.import();
|
|
105
108
|
// Then I should see the uploaded file
|
|
106
109
|
ImportUserDataSteps.checkImportedResource(0, 'bnodes.ttl');
|
|
107
110
|
// When I upload another file
|
|
108
|
-
ImportUserDataSteps.
|
|
111
|
+
const file2 = ImportUserDataSteps.createFile(testFiles[1], jsonld);
|
|
112
|
+
ImportUserDataSteps.selectFile(file2);
|
|
109
113
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
110
114
|
ImportSettingsDialogSteps.import();
|
|
111
115
|
// Then I should see the uploaded file - it becomes first in the list
|
|
112
116
|
ImportUserDataSteps.checkImportedResource(0, 'jsonld.jsonld');
|
|
113
117
|
ImportUserDataSteps.checkImportedResource(1, 'bnodes.ttl');
|
|
114
118
|
// When I override the first file
|
|
115
|
-
ImportUserDataSteps.
|
|
119
|
+
const file3 = ImportUserDataSteps.createFile(testFiles[0], bnodes);
|
|
120
|
+
ImportUserDataSteps.selectFile(file3);
|
|
116
121
|
FileOverwriteDialogSteps.overwrite();
|
|
117
122
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
118
123
|
ImportSettingsDialogSteps.import();
|
|
@@ -121,7 +126,7 @@ describe('Import user data: File upload', () => {
|
|
|
121
126
|
ImportUserDataSteps.checkImportedResource(0, 'jsonld.jsonld');
|
|
122
127
|
ImportUserDataSteps.checkImportedResource(1, 'bnodes.ttl');
|
|
123
128
|
// When I override the second file
|
|
124
|
-
ImportUserDataSteps.selectFile(
|
|
129
|
+
ImportUserDataSteps.selectFile(file2);
|
|
125
130
|
FileOverwriteDialogSteps.overwrite();
|
|
126
131
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
127
132
|
ImportSettingsDialogSteps.import();
|
|
@@ -134,7 +139,8 @@ describe('Import user data: File upload', () => {
|
|
|
134
139
|
// Given there are no files uploaded yet
|
|
135
140
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
136
141
|
// When I start to upload a file
|
|
137
|
-
ImportUserDataSteps.
|
|
142
|
+
const file = ImportUserDataSteps.createFile(testFiles[0], bnodes);
|
|
143
|
+
ImportUserDataSteps.selectFile(file);
|
|
138
144
|
// Then the import settings dialog should open automatically
|
|
139
145
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
140
146
|
ImportSettingsDialogSteps.uploadOnly();
|
|
@@ -142,7 +148,7 @@ describe('Import user data: File upload', () => {
|
|
|
142
148
|
ImportUserDataSteps.getResources().should('have.length', 1);
|
|
143
149
|
ImportUserDataSteps.checkUserDataUploadedResource(0, 'bnodes.ttl');
|
|
144
150
|
// And the file should really be there
|
|
145
|
-
|
|
151
|
+
HeaderSteps.openHomePage();
|
|
146
152
|
ImportUserDataSteps.visit();
|
|
147
153
|
ImportUserDataSteps.getResources().should('have.length', 1);
|
|
148
154
|
});
|
|
@@ -162,7 +168,7 @@ describe('Import user data: File upload', () => {
|
|
|
162
168
|
ImportUserDataSteps.checkImportedResource(0, 'jsonld.jsonld');
|
|
163
169
|
ImportUserDataSteps.checkImportedResource(1, 'bnodes.ttl');
|
|
164
170
|
// And the files should really be there
|
|
165
|
-
|
|
171
|
+
HeaderSteps.openHomePage();
|
|
166
172
|
ImportUserDataSteps.visit();
|
|
167
173
|
ImportUserDataSteps.getResources().should('have.length', 2);
|
|
168
174
|
});
|
|
@@ -127,7 +127,6 @@ describe('Import user data: Text snippet', () => {
|
|
|
127
127
|
|
|
128
128
|
// Go to Graphs overview
|
|
129
129
|
cy.visit('/graphs');
|
|
130
|
-
cy.get('.ot-splash').should('not.be.visible');
|
|
131
130
|
|
|
132
131
|
const graphName = CONTEXT.slice(0, CONTEXT.lastIndexOf('.'));
|
|
133
132
|
|
|
@@ -216,7 +215,6 @@ describe('Import user data: Text snippet', () => {
|
|
|
216
215
|
|
|
217
216
|
// Go to Graphs overview
|
|
218
217
|
cy.visit('/graphs');
|
|
219
|
-
cy.get('.ot-splash').should('not.be.visible');
|
|
220
218
|
|
|
221
219
|
const graphName = CONTEXT.slice(0, CONTEXT.lastIndexOf('.'));
|
|
222
220
|
|
|
@@ -77,27 +77,4 @@ describe('Import user data: URL import', () => {
|
|
|
77
77
|
ImportSettingsDialogSteps.import();
|
|
78
78
|
ImportUserDataSteps.checkImportedResource(0, IMPORT_URL);
|
|
79
79
|
});
|
|
80
|
-
|
|
81
|
-
it('should import JSON-LD file via URL with correct request body', () => {
|
|
82
|
-
ImportUserDataSteps.stubPostJSONLDFromURL(repositoryId);
|
|
83
|
-
ImportUserDataSteps.openImportURLDialog(IMPORT_JSONLD_URL);
|
|
84
|
-
ImportUserDataSteps.selectRDFFormat(JSONLD_FORMAT);
|
|
85
|
-
ImportUserDataSteps.clickImportUrlButton();
|
|
86
|
-
ImportSettingsDialogSteps.import();
|
|
87
|
-
cy.wait('@postJsonldUrl').then((xhr) => {
|
|
88
|
-
expect(xhr.request.body.name).to.eq('https://example.com/0007-context.jsonld');
|
|
89
|
-
expect(xhr.request.body.data).to.eq('https://example.com/0007-context.jsonld');
|
|
90
|
-
expect(xhr.request.body.type).to.eq('url');
|
|
91
|
-
expect(xhr.request.body.hasContextLink).to.be.true;
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it('should show error on invalid JSON-LD URL', () => {
|
|
96
|
-
ImportUserDataSteps.stubPostJSONLDFromURL();
|
|
97
|
-
ImportUserDataSteps.openImportURLDialog(IMPORT_JSONLD_URL);
|
|
98
|
-
ImportUserDataSteps.selectRDFFormat(JSONLD_FORMAT);
|
|
99
|
-
ImportUserDataSteps.clickImportUrlButton();
|
|
100
|
-
ImportSettingsDialogSteps.import();
|
|
101
|
-
ImportUserDataSteps.checkImportedResource(0, IMPORT_JSONLD_URL, 'https://example.com/0007-context.jsonld');
|
|
102
|
-
});
|
|
103
80
|
});
|
|
@@ -25,14 +25,21 @@ describe('Import user data', () => {
|
|
|
25
25
|
// Given I have visited the import page
|
|
26
26
|
ImportUserDataSteps.visit();
|
|
27
27
|
// When the page is loaded
|
|
28
|
-
cy.url().should('include', '/import#user');
|
|
28
|
+
cy.url().should('include', '/import').and('include', '#user');
|
|
29
29
|
// Then I should see the user help icons
|
|
30
30
|
ImportUserDataSteps.showPageInfoPopover();
|
|
31
|
+
ImportUserDataSteps.getPageInfoPopoverTitle()
|
|
32
|
+
.should('be.visible')
|
|
33
|
+
.and('not.be.empty');
|
|
31
34
|
ImportUserDataSteps.getPageInfoPopover()
|
|
32
35
|
.should('be.visible')
|
|
33
36
|
.find('a')
|
|
34
|
-
.should('
|
|
35
|
-
.
|
|
37
|
+
.should('contain.text', 'Learn more in the GraphDB documentation')
|
|
38
|
+
.invoke('attr', 'href')
|
|
39
|
+
.then((href) => {
|
|
40
|
+
expect(href).to.match(/https:\/\/graphdb\.ontotext\.com\/documentation\/[^/]+\/loading-data-using-the-workbench\.html/);
|
|
41
|
+
});
|
|
42
|
+
|
|
36
43
|
ImportUserDataSteps.hidePageInfoPopover();
|
|
37
44
|
// And user data import tab should be selected by default
|
|
38
45
|
ImportUserDataSteps.getActiveTab().should('have.text', 'User data');
|
|
@@ -52,7 +59,7 @@ describe('Import user data', () => {
|
|
|
52
59
|
ImportUserDataSteps.openServerFilesTabFromWarning();
|
|
53
60
|
// Then I should see the server files tab
|
|
54
61
|
ImportUserDataSteps.getActiveTab().should('have.text', 'Server files');
|
|
55
|
-
cy.url().should('include', '/import#server');
|
|
62
|
+
cy.url().should('include', '/import').and('include', '#server');
|
|
56
63
|
ImportUserDataSteps.getServerFilesTab().should('be.visible');
|
|
57
64
|
// When I click on the API link in the warning
|
|
58
65
|
ImportUserDataSteps.openUserDataTab();
|