graphdb-workbench-tests 3.4.0-TR2 → 3.4.0-TR4
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/Dockerfile +11 -0
- package/cypress-flaky.config.js +6 -20
- package/cypress.config.js +6 -45
- package/fixtures/locale-en.json +3342 -0
- package/fixtures/ttyg/agent/get-agent-defaults.json +2 -9
- package/fixtures/ttyg/chats/ask-question.json +2 -12
- package/fixtures/ttyg/chats/create/create-chat-response.json +14 -10
- package/fixtures/ttyg/chats/explain-response-1.json +48 -2
- package/fixtures/ttyg/chats/get-chat.json +1 -6
- package/{e2e-legacy → integration}/cluster/cluster-states.spec.js +3 -3
- package/{e2e-legacy/explore/class-hierarchy → integration/explore}/class.hierarchy.spec.js +1 -1
- package/{e2e-legacy/explore/class-relationships/class-relationships.spec.js → integration/explore/class.relationships.spec.js} +50 -20
- package/{e2e-legacy/explore/graphs-overview → integration/explore}/graphs.overview.spec.js +4 -4
- package/integration/explore/similarity-index/similarity-index-create.spec.js +333 -0
- package/integration/explore/similarity-index/similarity-index.spec.js +88 -0
- package/integration/explore/similarity-index/similarity.spec.js +628 -0
- package/{e2e-legacy → integration}/explore/visual-graph/graphs-config.spec.js +10 -5
- package/{e2e-legacy → integration}/explore/visual-graph/visual-graph-node-labels.spec.js +2 -14
- package/{e2e-legacy → integration}/explore/visual-graph/visual.graph.spec.js +96 -75
- package/{e2e-legacy → integration}/graphql/create-graphql-endpoint.spec.js +2 -0
- package/{e2e-legacy → integration}/graphql/edit-graphql-enpoint.spec.js +1 -1
- package/{e2e-legacy → integration}/graphql/filter-graphql-endpoints-on-management-view.spec.js +1 -1
- package/{e2e-legacy → integration}/graphql/graphql-endpoint-management-view.spec.js +4 -4
- package/{e2e-legacy → integration}/graphql/graphql-playground.spec.js +1 -1
- package/{e2e-legacy → integration}/graphql/import-graphql-endpoint-definitions.spec.js +6 -0
- package/integration/guides/movies-interactive-guide.spec.js +73 -0
- package/{e2e-legacy/help/guides/star-wars-interactive-guide.spec.js → integration/guides/star-wars-interactive-guide.js} +2 -3
- package/integration/home/cookie-policy.spec.js +90 -0
- package/integration/home/documentation-link.spec.js +60 -0
- package/{e2e-legacy → integration}/home/google-analytics.spec.js +6 -4
- package/{e2e-legacy → integration}/home/language-change.spec.js +2 -2
- package/integration/home/language-selector.spec.js +19 -0
- package/integration/home/rdf-resource-search.spec.js +177 -0
- package/integration/home/view-resource-autocomplete.spec.js +52 -0
- package/integration/home/workbench.home.spec.js +30 -0
- package/{e2e-legacy → integration}/import/import-server-files.spec.js +3 -5
- package/{e2e-legacy → integration}/import/import-user-data-file-upload.spec.js +13 -19
- package/{e2e-legacy → integration}/import/import-user-data-text-snippet.spec.js +2 -0
- package/{e2e-legacy → integration}/import/import-user-data-url.spec.js +23 -0
- package/{e2e-legacy → integration}/import/import-user-data.spec.js +4 -11
- package/{e2e-legacy → integration}/license/license.spec.js +4 -4
- package/{e2e-legacy → integration}/monitor/global-operation-statuses-component.spec.js +5 -12
- package/{e2e-legacy/monitor/backup-and-restore/backup-and-restore.spec.js → integration/monitor/monitor.backup-and-restore.spec.js} +2 -2
- package/integration/monitor/monitor.queries.spec.js +31 -0
- package/{e2e-legacy/monitor/system → integration/monitor}/monitor.resources.spec.js +2 -3
- package/{e2e-legacy → integration}/repository/ontop-repository.spec.js +1 -1
- package/{e2e-legacy → integration}/repository/repositories.spec.js +45 -37
- package/{e2e-legacy → integration}/resource/resource.spec.js +7 -17
- package/{e2e-legacy → integration}/setup/aclmanagement/create-rule.spec.js +0 -4
- package/{e2e-legacy/setup/autocomplete → integration/setup}/autocomplete.spec.js +7 -6
- package/{e2e-legacy → integration}/setup/connectors-lucene.spec.js +10 -26
- package/{e2e-legacy → integration}/setup/jdbc/jdbc-create.spec.js +4 -4
- package/integration/setup/my-settings.spec.js +289 -0
- package/{e2e-legacy/setup/namespaces → integration/setup}/namespaces.spec.js +5 -6
- package/{e2e-legacy/setup/plugins → integration/setup}/plugins.spec.js +3 -3
- package/{e2e-legacy/setup/rdf-rank → integration/setup}/rdf-rank.spec.js +5 -3
- package/{e2e-legacy/setup/sparql-template/sparql-template-create.spec.js → integration/setup/sparql-template-create.js} +8 -16
- package/{e2e-legacy/setup/sparql-template → integration/setup}/sparql-templates.spec.js +4 -4
- package/{e2e-legacy/setup/users-and-access → integration/setup}/user-and-access.spec.js +87 -184
- package/{e2e-legacy → integration}/sparql-editor/actions/expand-results-over-sameas.spec.js +12 -12
- package/{e2e-legacy → integration}/sparql-editor/actions/include-inferred-statements.spec.js +6 -6
- package/{e2e-legacy → integration}/sparql-editor/actions/inferred-sameas.spec.js +8 -10
- package/{e2e-legacy → integration}/sparql-editor/actions/show-saved-queries.spec.js +6 -1
- package/{e2e-legacy → integration}/sparql-editor/saved-query/abort-query.spec.js +1 -1
- package/{e2e-legacy → integration}/sparql-editor/saved-query/edit-query.spec.js +3 -3
- package/{e2e-legacy → integration}/sparql-editor/saved-query/readonly-query.spec.js +24 -15
- package/{e2e-legacy → integration}/sparql-editor/saved-query/share-query.spec.js +1 -32
- package/{e2e-legacy → integration}/sparql-editor/yasgui-tabs.spec.js +12 -2
- package/{e2e-legacy → integration}/sparql-editor/yasr/pagination.spec.js +18 -5
- package/{e2e-legacy → integration}/sparql-editor/yasr/table-plugin.spec.js +6 -1
- package/integration/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +57 -0
- package/{e2e-legacy → integration}/ttyg/agent-list.spec.js +2 -53
- package/{e2e-legacy → integration}/ttyg/agent-select-menu.spec.js +2 -25
- package/{e2e-legacy → integration}/ttyg/chat-list.spec.js +14 -3
- package/{e2e-legacy → integration}/ttyg/chat-panel.spec.js +6 -74
- package/{e2e-legacy → integration}/ttyg/clone-agent.spec.js +2 -24
- package/{e2e-legacy → integration}/ttyg/create-agent.spec.js +66 -37
- package/{e2e-legacy → integration}/ttyg/create-chat.spec.js +4 -6
- package/{e2e-legacy → integration}/ttyg/delete-agent.spec.js +2 -1
- package/integration/ttyg/edit-agent.spec.js +99 -0
- package/{e2e-legacy → integration}/ttyg/ttyg-view.spec.js +2 -2
- package/{e2e-flaky → integration-flaky}/explore/visual.graph.spec.js +1 -4
- package/{e2e-flaky → integration-flaky}/import/import-server-files-operations.spec.js +2 -2
- package/{e2e-flaky → integration-flaky}/import/import-user-data-batch-operations.spec.js +3 -3
- package/{e2e-flaky → integration-flaky}/setup/sparql-template-create.js +18 -10
- package/integration-flaky/setup/users-and-access/security-and-free-access.spec.js +54 -0
- package/{e2e-flaky → integration-flaky}/sparql-editor/actions/execute-update-query.spec.js +12 -2
- package/{e2e-flaky → integration-flaky}/sparql-editor/actions/share-query.spec.js +7 -1
- package/{e2e-flaky → integration-flaky}/sparql-editor/yasr/table-plugin.spec.js +7 -3
- package/{e2e-legacy → integration-flaky}/ttyg/ttyg-permission.spec.js +17 -23
- package/npm-shrinkwrap.json +3815 -11004
- package/package.json +42 -58
- package/plugins/index.js +5 -10
- package/steps/application-steps.js +6 -8
- package/steps/class-views-steps.js +7 -35
- package/steps/cluster/cluster-page-steps.js +2 -12
- package/steps/error-steps.js +3 -15
- package/steps/explore/graphs-overview-steps.js +1 -21
- package/steps/explore/similarity-index-create-steps.js +3 -5
- package/steps/explore/similarity-indexes-steps.js +2 -16
- package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
- package/steps/guides/guide-dialog-steps.js +2 -81
- package/steps/guides/guide-steps.js +2 -54
- package/steps/home-steps.js +77 -184
- package/steps/import/import-resource-message-dialog.js +1 -1
- package/steps/import/import-steps.js +16 -12
- package/steps/import/import-user-data-steps.js +1 -5
- package/steps/language-selector-steps.js +2 -2
- package/steps/license-steps.js +9 -91
- package/steps/login-steps.js +6 -31
- package/steps/main-menu-steps.js +19 -244
- package/steps/modal-dialog-steps.js +1 -32
- package/steps/monitoring/backup-and-restore-steps.js +3 -9
- package/steps/operations-statuses-component-steps.js +10 -5
- package/steps/repository-selector-steps.js +3 -3
- package/steps/repository-steps.js +18 -64
- package/steps/resource/resource-steps.js +2 -6
- package/steps/setup/acl-management-steps.js +2 -6
- package/steps/setup/autocomplete-steps.js +8 -23
- package/steps/setup/jdbc-steps.js +4 -18
- package/steps/setup/namespace-steps.js +7 -10
- package/steps/setup/plugins-steps.js +5 -12
- package/steps/setup/rdf-rank-steps.js +9 -23
- package/steps/setup/settings-steps.js +2 -101
- package/steps/setup/sparql-templates-steps.js +1 -19
- package/steps/setup/user-and-access-steps.js +16 -50
- package/steps/sparql-editor-steps.js +2 -8
- package/steps/sparql-steps.js +1 -13
- package/steps/toaster-steps.js +6 -18
- package/steps/ttyg/chat-panel-steps.js +2 -40
- package/steps/ttyg/ttyg-agent-settings-modal.steps.js +31 -136
- package/steps/ttyg/ttyg-view-steps.js +10 -80
- package/steps/visual-graph-steps.js +10 -106
- package/steps/yasgui/yasgui-loader.js +3 -3
- package/steps/yasgui/yasgui-steps.js +1 -1
- package/steps/yasgui/yasqe-steps.js +4 -35
- package/steps/yasgui/yasr-steps.js +3 -73
- package/stubs/autocomplete/autocomplete-stubs.js +0 -7
- package/stubs/environment-stubs.js +1 -9
- package/stubs/license-stubs.js +0 -51
- package/stubs/repositories/repositories-stubs.js +75 -180
- package/stubs/repositories-stub.js +73 -0
- package/stubs/security-stubs.js +0 -12
- package/stubs/similarity-index-stubs.js +0 -4
- package/stubs/ttyg/ttyg-stubs.js +15 -64
- package/stubs/yasgui/query-stubs.js +1 -5
- package/support/commands.js +1 -22
- package/support/{e2e.js → index.js} +3 -9
- package/support/repository-commands.js +4 -29
- package/support/settings-commands.js +1 -33
- package/support/user-commands.js +4 -9
- package/utils/html-util.js +4 -24
- package/.editorconfig +0 -17
- package/.nycrc +0 -10
- package/cypress-legacy.config.js +0 -47
- package/cypress-security.config.js +0 -36
- package/e2e-flaky/import/import-user-data-url.spec.js +0 -63
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository-without-class-hierarchy.spec.js +0 -42
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-with-selected-repository.spec.js +0 -43
- package/e2e-legacy/explore/class-hierarchy/class-hierarchy-without-selected-repository.spec.js +0 -30
- package/e2e-legacy/explore/class-relationships/class-relationships-repository-with-data.spec.js +0 -42
- package/e2e-legacy/explore/class-relationships/class-relationships-with-selected-repository.spec.js +0 -39
- package/e2e-legacy/explore/class-relationships/class-relationships-without-selected-repository.spec.js +0 -21
- package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-with-selected-repository.spec.js +0 -44
- package/e2e-legacy/explore/graphs-overview/initial-state/graphs-overview-without-selected-repository.spec.js +0 -32
- package/e2e-legacy/explore/similarity-index/similarity-index-with-repository.spec.js +0 -38
- package/e2e-legacy/explore/similarity-index/similarity-index-without-repository.spec.js +0 -21
- package/e2e-legacy/explore/visual-graph/node-info-panel.spec.js +0 -58
- package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +0 -140
- package/e2e-legacy/explore/visual-graph/visual-graph-with-selected-repository.js +0 -38
- package/e2e-legacy/explore/visual-graph/visual-graph-without-selected-repository.js +0 -21
- package/e2e-legacy/graphql/graphql-endpoint-management-with-endpoints.spec.js +0 -43
- package/e2e-legacy/graphql/graphql-endpoint-management-with-selected-repository.spec.js +0 -39
- package/e2e-legacy/graphql/graphql-endpoint-management-without-selected-repository.spec.js +0 -21
- package/e2e-legacy/graphql/graphql-playground-with-endpoints.spec.js +0 -40
- package/e2e-legacy/graphql/graphql-playground-with-selected-repository.spec.js +0 -38
- package/e2e-legacy/graphql/graphql-playground-without-selected-repository.spec.js +0 -22
- package/e2e-legacy/graphql/graphql-theme.spec.js +0 -73
- package/e2e-legacy/guides/autocomplete/enable-autocomplete-guide.spec.js +0 -49
- package/e2e-legacy/guides/class-hierarcy/class-hierarchy-guide.spec.js +0 -89
- package/e2e-legacy/guides/class-relations/class-relations-guide.spec.js +0 -76
- package/e2e-legacy/guides/connectors/connectors-guide.spec.js +0 -163
- package/e2e-legacy/guides/create-similarity-index/create-similarity-index-guide.spec.js +0 -74
- package/e2e-legacy/guides/download-guide-resource/download-guide-resource-guide.js +0 -55
- package/e2e-legacy/guides/execute-sparql-query/execute-sparql-query-guide.spec.js +0 -92
- package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +0 -63
- package/e2e-legacy/guides/import-rdf-file/import-rdf-file.spec.js +0 -105
- package/e2e-legacy/guides/main-menu/main-menu-guide.spec.js +0 -302
- package/e2e-legacy/guides/navigation/navigation-guide.spec.js +0 -64
- package/e2e-legacy/guides/rdf-rank/rdf-rank-guide.spec.js +0 -42
- package/e2e-legacy/guides/repositories/create-repository-guide.spec.js +0 -69
- package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +0 -167
- package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +0 -157
- package/e2e-legacy/guides/ttyg/conversation/ttyg-conversation-guide.spec.js +0 -92
- package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +0 -88
- package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +0 -372
- package/e2e-legacy/guides/welcome/welcome-guide.spec.js +0 -36
- package/e2e-legacy/help/guides/guides-autostart.spec.js +0 -126
- package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +0 -83
- package/e2e-legacy/help/guides/guides-with-repository.spec.js +0 -32
- package/e2e-legacy/help/guides/guides-without-repository.spec.js +0 -20
- package/e2e-legacy/help/guides/movies-interactive-guide.spec.js +0 -71
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +0 -32
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +0 -20
- package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +0 -32
- package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +0 -20
- package/e2e-legacy/home/cookie-policy/cookie-policy.spec.js +0 -182
- package/e2e-legacy/home/documentation-link.spec.js +0 -41
- package/e2e-legacy/home/home-page-with-selected-repository.spec.js +0 -69
- package/e2e-legacy/home/home-page-without-repositories.spec.js +0 -87
- package/e2e-legacy/home/home-page-without-selected-repository.spec.js +0 -59
- package/e2e-legacy/home/rdf-resource-search.spec.js +0 -160
- package/e2e-legacy/home/view-resource-autocomplete.spec.js +0 -65
- package/e2e-legacy/import/initial-state/import-page-with-selected-repositor.js +0 -51
- package/e2e-legacy/import/initial-state/import-page-with-selected-repository-without-imported-files.js +0 -45
- package/e2e-legacy/import/initial-state/import-page-without-selected-repository.spec.js +0 -28
- package/e2e-legacy/license/license-with-repository.spec.js +0 -113
- package/e2e-legacy/license/license-without-repository.spec.js +0 -103
- package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-with-repository.spec.js +0 -36
- package/e2e-legacy/monitor/backup-and-restore/backup-and-restore-without-repository.spec.js +0 -25
- package/e2e-legacy/monitor/query-and-updates/queries-and-updates-with-repository.spec.js +0 -39
- package/e2e-legacy/monitor/query-and-updates/queries-and-updates-without-repository.spec.js +0 -21
- package/e2e-legacy/monitor/system/system-monitoring-with-repository.spec.js +0 -32
- package/e2e-legacy/monitor/system/system-monitoring-without-repository.spec.js +0 -20
- package/e2e-legacy/not-found/not-found.spec.js +0 -23
- package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +0 -181
- package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +0 -40
- package/e2e-legacy/setup/aclmanagement/acl-management-without-repositories.spec.js +0 -21
- package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +0 -40
- package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +0 -27
- package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +0 -34
- package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +0 -25
- package/e2e-legacy/setup/connectors/connectors-initial-state-with-selected-repository.spec.js +0 -41
- package/e2e-legacy/setup/connectors/connectors-initial-state-without-repositories.spec.js +0 -21
- package/e2e-legacy/setup/jdbc/jdbc-with-repository.spec.js +0 -39
- package/e2e-legacy/setup/jdbc/jdbc-without-repository.spec.js +0 -27
- package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +0 -44
- package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +0 -27
- package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +0 -38
- package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +0 -28
- package/e2e-legacy/setup/rdf-rank/rdf-rank-with-repository.spec.js +0 -40
- package/e2e-legacy/setup/rdf-rank/rdf-rank-without-repository.spec.js +0 -30
- package/e2e-legacy/setup/repositories/repositories-view-with-repositories.spec.js +0 -40
- package/e2e-legacy/setup/repositories/repositories-view-without-repositories.spec.js +0 -28
- package/e2e-legacy/setup/settings/my-settings-initial-state.spec.js +0 -86
- package/e2e-legacy/setup/settings/my-settings.spec.js +0 -207
- package/e2e-legacy/setup/sparql-template/sparql-template-with-repository.spec.js +0 -39
- package/e2e-legacy/setup/sparql-template/sparql-template-without-repository.spec.js +0 -29
- package/e2e-legacy/setup/users-and-access/users-and-access-initial-state.spec.js +0 -25
- package/e2e-legacy/sparql-editor/sparql-page-with-selected-repository.spec.js +0 -33
- package/e2e-legacy/sparql-editor/sparql-page-without-selected-repository.spec.js +0 -26
- package/e2e-legacy/sparql-editor/yasqe-themes.spec.js +0 -54
- package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -106
- package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +0 -80
- package/e2e-legacy/ttyg/edit-agent.spec.js +0 -178
- package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +0 -46
- package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +0 -45
- package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +0 -21
- package/e2e-security/repository/url-with-repository-id-parameter.spec.js +0 -57
- package/e2e-security/setup/home/cookie-policy.spec.js +0 -290
- package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +0 -193
- package/e2e-security/setup/users-and-access/graphql-user.spec.js +0 -126
- package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +0 -70
- package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +0 -99
- package/e2e-security/setup/users-and-access/user-and-access.spec.js +0 -87
- package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +0 -38
- package/eslint.config.js +0 -39
- package/fixtures/graph/graph-configurations.json +0 -59
- package/fixtures/guides/autocomplete/enable-autocomplete-guide.json +0 -12
- package/fixtures/guides/class-hierarchy/class-hierarchy-guide.json +0 -35
- package/fixtures/guides/class-relations/class-relations-guide.json +0 -33
- package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +0 -15
- package/fixtures/guides/connectors/connectors-guide.json +0 -66
- package/fixtures/guides/connectors/lucene-connector-guide.json +0 -120
- package/fixtures/guides/create-repository/create-repository-guide.json +0 -25
- package/fixtures/guides/create-similarity-index/create-similarity-index-guide.json +0 -36
- package/fixtures/guides/download-guide-resource/download-guide-resource-guide.json +0 -25
- package/fixtures/guides/download-resource.ttl +0 -629
- package/fixtures/guides/execute-sparql-query/execute-sparql-query-guide.json +0 -54
- package/fixtures/guides/import-rdf-file/confirm-duplicate-rdf-file-guide.json +0 -30
- package/fixtures/guides/import-rdf-file/import-rdf-file-guide.json +0 -21
- package/fixtures/guides/main-menu/main-menu-guide.json +0 -98
- package/fixtures/guides/navigation/navigation-guide.json +0 -60
- package/fixtures/guides/rdf-rank/rdf-rank-guide.json +0 -18
- package/fixtures/guides/table-graph-explore/table-graph-explore-guide.json +0 -51
- package/fixtures/guides/table-graph-explore/table-graph-explore-without-substeps-guide.json +0 -25
- package/fixtures/guides/ttyg/configure-agent/configure-ttyg-agent-guide.json +0 -74
- package/fixtures/guides/ttyg/conversation/ttyg-conversation-guide.json +0 -26
- package/fixtures/guides/ttyg/edit-ttyg-agent/edit-ttyg-agent-guide.json +0 -22
- package/fixtures/guides/visual-graph/visual-graph-config-guide.json +0 -39
- package/fixtures/guides/visual-graph/visual-graph-guide.json +0 -85
- package/fixtures/guides/welcome/welcome-guide.json +0 -18
- package/fixtures/repositories/free-access.json +0 -13
- package/fixtures/similarity/get-ttyg-similarity-instances.json +0 -10
- package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +0 -44
- package/fixtures/ttyg/agent/get-agent-list-with-incompatible-agents.json +0 -79
- package/fixtures/ttyg/agent/get-similarity-indexes-for-another-repo.json +0 -8
- package/fixtures/ttyg/agent/get-similarity-indexes.json +0 -22
- package/fixtures/ttyg/chats/ask-question-cancel.json +0 -12
- package/fixtures/ttyg/chats/cancel-question-response.json +0 -1
- package/fixtures/ttyg/chats/create/question-response-after-chat-creation.json +0 -29
- package/fixtures/ttyg/chats/explain-response-3.json +0 -12
- package/steps/base-steps.js +0 -29
- package/steps/cookie-policy/cookie-consent-banner-steps.js +0 -21
- package/steps/cookie-policy/cookie-policy-modal.steps.js +0 -56
- package/steps/error-page-steps.js +0 -9
- package/steps/explore/class-relationships-steps.js +0 -64
- package/steps/graphql/playground-editor-steps.js +0 -46
- package/steps/header-steps.js +0 -22
- package/steps/monitoring/queries-and-updates-steps.js +0 -20
- package/steps/monitoring/system-monitoring-steps.js +0 -40
- package/steps/not-found/not-found-steps.js +0 -23
- package/steps/rdf-resource-search-steps.js +0 -55
- package/steps/rest-api-documentation-steps.js +0 -15
- package/steps/setup/connectors-steps.js +0 -32
- package/steps/shared-modal-dialog-steps.js +0 -45
- package/steps/system-information-steps.js +0 -70
- package/steps/widgets/active-repository-widget-steps.js +0 -29
- package/steps/widgets/license-widget-steps.js +0 -9
- package/steps/widgets/repository-errors-widget-steps.js +0 -21
- package/steps/widgets/saved-sparql-queries-widget-steps.js +0 -9
- package/stubs/browser-stubs.js +0 -21
- package/stubs/graph-config-stubs.js +0 -17
- package/stubs/guides/guides-stubs.js +0 -103
- package/stubs/saved-queries-stubs.js +0 -5
- package/stubs/sparql-stubs.js +0 -10
- package/support/connector-commands.js +0 -13
- package/support/e2e-security.js +0 -9
- package/support/url-commands.js +0 -13
- package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +0 -0
- package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +0 -0
- package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
- package/{e2e-legacy → integration}/cluster/cluster-configuration/cluster-configuration.spec.js +0 -0
- package/{e2e-legacy → integration}/cluster/cluster-legend.spec.js +0 -0
- package/{e2e-legacy → integration}/cluster/edit-cluster-nodes-modal.spec.js +0 -0
- package/{e2e-legacy → integration}/graphql/activate-deactivate-graphql-endpoint.spec.js +0 -0
- package/{e2e-legacy → integration}/graphql/delete-graphql-endpoint.spec.js +0 -0
- package/{e2e-legacy → integration}/graphql/export-graphql-endpoint-definition.spec.js +0 -0
- package/{e2e-legacy → integration}/graphql/set-default-graphql-endpoint.spec.js +0 -0
- package/{e2e-legacy/help/system-information → integration/help}/system-information.spec.js +0 -0
- package/{e2e-legacy → integration}/home/create-repository.spec.js +0 -0
- package/{e2e-legacy → integration}/import/import-server-files-batch-operations.spec.js +0 -0
- package/{e2e-legacy → integration}/import/import-user-data-settings-dialog.spec.js +0 -0
- package/{e2e-legacy → integration}/import/import-view.spec.js +0 -0
- package/{e2e-legacy → integration}/repository/attach-remote-location.spec.js +1 -1
- /package/{e2e-legacy → integration}/repository/repository-commands.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/aclmanagement/delete-rule.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/aclmanagement/edit-rule.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/aclmanagement/render-rules.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/aclmanagement/reorder-rules.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/aclmanagement/revert-rules.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/aclmanagement/scopes.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/aclmanagement/update-rules.spec.js +0 -0
- /package/{e2e-legacy → integration}/setup/jdbc/jdbc.spec.js +0 -0
- /package/{e2e-legacy → integration}/sparql-editor/actions/execute-query.spec.js +0 -0
- /package/{e2e-legacy → integration}/sparql-editor/actions/save-query.spec.js +0 -0
- /package/{e2e-legacy → integration}/sparql-editor/internationalization.spec.js +0 -0
- /package/{e2e-legacy → integration}/sparql-editor/saved-query/delete-query.spec.js +0 -0
- /package/{e2e-legacy → integration}/sparql-editor/sparql-editor.spec.js +0 -0
- /package/{e2e-legacy → integration}/sparql-editor/yasr/download-as.spec.js +0 -0
- /package/{e2e-flaky → integration-flaky}/import/import.server.files.spec.js +0 -0
- /package/{e2e-flaky → integration-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
- /package/{e2e-flaky → integration-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
import {EnvironmentStubs} from "../../stubs/environment-stubs";
|
|
3
|
+
|
|
4
|
+
describe('Documentation links resolver', () => {
|
|
5
|
+
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
cy.viewport(1280, 1000);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('Should link to master version when in dev mode', () => {
|
|
11
|
+
HomeSteps.visit();
|
|
12
|
+
EnvironmentStubs.stubWbDevMode();
|
|
13
|
+
HomeSteps.clickHelpMenu();
|
|
14
|
+
// Assert that links point to the master version
|
|
15
|
+
assertDocumentationLinks('master');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('Should link to master version when in prod mode and unofficial version', () => {
|
|
19
|
+
EnvironmentStubs.stubProductInfo('10.8-TR1-test');
|
|
20
|
+
HomeSteps.visit();
|
|
21
|
+
EnvironmentStubs.stubWbProdMode();
|
|
22
|
+
HomeSteps.clickHelpMenu();
|
|
23
|
+
// Assert that links point to the master version
|
|
24
|
+
assertDocumentationLinks('master');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('Should link to GDB version when in prod mode and official version', () => {
|
|
28
|
+
EnvironmentStubs.stubProductInfo('10.8');
|
|
29
|
+
HomeSteps.visit();
|
|
30
|
+
EnvironmentStubs.stubWbProdMode();
|
|
31
|
+
HomeSteps.clickHelpMenu();
|
|
32
|
+
// Assert that links point to the specific GDB version
|
|
33
|
+
assertDocumentationLinks('10.8');
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
function assertDocumentationLinks(version) {
|
|
38
|
+
const baseUrl = `https://graphdb.ontotext.com/documentation/${version}`;
|
|
39
|
+
|
|
40
|
+
HomeSteps.getDocumentationLink()
|
|
41
|
+
.should('exist')
|
|
42
|
+
.and('be.visible')
|
|
43
|
+
.find('a')
|
|
44
|
+
.should('have.attr', 'href', `${baseUrl}/index.html`)
|
|
45
|
+
.and('contain.text', 'Documentation');
|
|
46
|
+
|
|
47
|
+
HomeSteps.getTutorialsLink()
|
|
48
|
+
.should('exist')
|
|
49
|
+
.and('be.visible')
|
|
50
|
+
.find('a')
|
|
51
|
+
.should('have.attr', 'href', `${baseUrl}/tutorials.html`)
|
|
52
|
+
.and('contain.text', 'Tutorials');
|
|
53
|
+
|
|
54
|
+
HomeSteps.getSupportLink()
|
|
55
|
+
.should('exist')
|
|
56
|
+
.and('be.visible')
|
|
57
|
+
.find('a')
|
|
58
|
+
.should('have.attr', 'href', `${baseUrl}/support.html`)
|
|
59
|
+
.and('contain.text', 'Support');
|
|
60
|
+
}
|
|
@@ -11,9 +11,9 @@ describe('Google analytics', () => {
|
|
|
11
11
|
// Note: Google API calls are stubbed for all specs in support/index.js
|
|
12
12
|
it('Should set GA tracking code in header and a cookie when free license and prodMode', () => {
|
|
13
13
|
LicenseStubs.stubFreeLicense();
|
|
14
|
-
HomeSteps.
|
|
14
|
+
HomeSteps.visit();
|
|
15
|
+
EnvironmentStubs.stubWbProdMode();
|
|
15
16
|
|
|
16
|
-
// Check if the GA tracking script is set correctly in the head
|
|
17
17
|
cy.document()
|
|
18
18
|
.get('head script')
|
|
19
19
|
.should("have.attr", "src")
|
|
@@ -28,7 +28,8 @@ describe('Google analytics', () => {
|
|
|
28
28
|
|
|
29
29
|
it('Should set GA tracking code in header and cookie when evaluation enterprise license and prodMode', () => {
|
|
30
30
|
LicenseStubs.stubEvaluationLicense();
|
|
31
|
-
HomeSteps.
|
|
31
|
+
HomeSteps.visit();
|
|
32
|
+
EnvironmentStubs.stubWbProdMode();
|
|
32
33
|
|
|
33
34
|
cy.document()
|
|
34
35
|
.get('head script')
|
|
@@ -44,7 +45,8 @@ describe('Google analytics', () => {
|
|
|
44
45
|
|
|
45
46
|
it('Should NOT set GA tracking code in header and cookie when enterprise license in prodMode', () => {
|
|
46
47
|
LicenseStubs.stubEnterpriseLicense();
|
|
47
|
-
HomeSteps.
|
|
48
|
+
HomeSteps.visit();
|
|
49
|
+
EnvironmentStubs.stubWbProdMode();
|
|
48
50
|
|
|
49
51
|
cy.document()
|
|
50
52
|
.get('head script')
|
|
@@ -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.declineTutorial();
|
|
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,19 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
|
|
3
|
+
describe('Language selector', () => {
|
|
4
|
+
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
cy.viewport(1280, 1000);
|
|
7
|
+
HomeSteps.visitAndWaitLoader();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('Should be able to change the language', () => {
|
|
11
|
+
cy.get('#languageGroupDrop')
|
|
12
|
+
.should('be.visible')
|
|
13
|
+
.click()
|
|
14
|
+
.then(() => {
|
|
15
|
+
cy.get('.dropdown-menu .dropdown-item')
|
|
16
|
+
.should('have.length.at.least', 1);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
|
|
3
|
+
const FILE_TO_IMPORT = 'wine.rdf';
|
|
4
|
+
|
|
5
|
+
describe('RDF resource search', () => {
|
|
6
|
+
let repositoryId;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
cy.viewport(1280, 1000);
|
|
9
|
+
repositoryId = '23repo' + Date.now();
|
|
10
|
+
cy.createRepository({id: repositoryId});
|
|
11
|
+
cy.initializeRepository(repositoryId);
|
|
12
|
+
cy.enableAutocomplete(repositoryId);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
cy.deleteRepository(repositoryId);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('Search button should not be present when no repo is selected', () => {
|
|
20
|
+
HomeSteps.visitAndWaitLoader();
|
|
21
|
+
// Given the page has loaded the license label (otherwise locally test passes after the loader disappears and before other elements are rendered)
|
|
22
|
+
HomeSteps.getLicenseAsLabel().should('be.visible');
|
|
23
|
+
cy.get('.search-rdf-btn').should('not.exist');
|
|
24
|
+
cy.get('.search-rdf-input').should('not.exist');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('Search should be made from home page search when repo is set and on home page', () => {
|
|
28
|
+
// When I visit home page with selected repository
|
|
29
|
+
cy.presetRepository(repositoryId);
|
|
30
|
+
HomeSteps.visitAndWaitLoader();
|
|
31
|
+
// Search rdf button should be visible
|
|
32
|
+
cy.get('.search-rdf-btn').should('be.visible');
|
|
33
|
+
// When I click the button
|
|
34
|
+
HomeSteps.doNotOpenRdfSearchBoxButFocusResourceSearch();
|
|
35
|
+
// I should be able to type some text in the input on home page
|
|
36
|
+
cy.get('#search-resource-input-home > #search-resource-box > input').type('hasPos');
|
|
37
|
+
// And the autocomplete dropdown should become visible
|
|
38
|
+
cy.get('#search-resource-input-home > #auto-complete-results-wrapper').should('be.visible');
|
|
39
|
+
// // When I click the close button
|
|
40
|
+
cy.get('#search-resource-input-home > #search-resource-box > .clear-icon').click();
|
|
41
|
+
// // The input should be cleared
|
|
42
|
+
cy.get('#search-resource-input-home > #search-resource-box > input').should('have.value', '');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('Search should be present when repo is set', () => {
|
|
46
|
+
// When I visit not home page with selected repository
|
|
47
|
+
cy.presetRepository(repositoryId);
|
|
48
|
+
cy.visit('/graphs');
|
|
49
|
+
cy.get('.ot-splash').should('not.be.visible');
|
|
50
|
+
cy.get('.ot-loader-new-content').should('not.exist');
|
|
51
|
+
// Search rdf button should be visible
|
|
52
|
+
cy.get('.search-rdf-btn').should('be.visible');
|
|
53
|
+
// When I click the button
|
|
54
|
+
HomeSteps.openRdfSearchBox();
|
|
55
|
+
// I should be able to type some text in the input
|
|
56
|
+
cy.get('.search-rdf-input search-resource-input .view-res-input').type('hasPos');
|
|
57
|
+
// And the autocomplete dropdown should become visible
|
|
58
|
+
cy.get('.search-rdf-input #auto-complete-results-wrapper').should('be.visible');
|
|
59
|
+
// When I click the close button
|
|
60
|
+
cy.get('.close-rdf-search-btn').click();
|
|
61
|
+
// The input should not be cleared
|
|
62
|
+
cy.get('.search-rdf-input search-resource-input .view-res-input').should('have.value', 'hasPos');
|
|
63
|
+
// And the search bar should hide and not be visible
|
|
64
|
+
cy.get('.search-rdf-input').should('not.be.visible');
|
|
65
|
+
// And the suggestions list should not be visible
|
|
66
|
+
cy.get('.search-rdf-input #auto-complete-results-wrapper').should('not.be.visible');
|
|
67
|
+
// And the search button should be visible
|
|
68
|
+
cy.get('.search-rdf-btn').should('be.visible');
|
|
69
|
+
// When I open again the search box
|
|
70
|
+
HomeSteps.openRdfSearchBox();
|
|
71
|
+
// The input should have value 'hasPos'
|
|
72
|
+
cy.get('.search-rdf-input search-resource-input .view-res-input').should('have.value', 'hasPos');
|
|
73
|
+
// And dropdown should be visible
|
|
74
|
+
cy.get('.search-rdf-input #auto-complete-results-wrapper').should('be.visible');
|
|
75
|
+
// When I press 'escape'
|
|
76
|
+
cy.get('.search-rdf-input search-resource-input .view-res-input').type('{esc}');
|
|
77
|
+
// Search box should not be visible
|
|
78
|
+
cy.get('.search-rdf-input').should('not.be.visible');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('Search should be persisted on page reload', () => {
|
|
82
|
+
// Given I've selected a repository and visit the page
|
|
83
|
+
cy.presetRepository(repositoryId);
|
|
84
|
+
cy.visit('/graphs', {
|
|
85
|
+
onBeforeLoad(win) {
|
|
86
|
+
cy.stub(win, 'open').as('window.open');
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
cy.get('.ot-splash').should('not.be.visible');
|
|
90
|
+
cy.get('.ot-loader-new-content').should('not.exist');
|
|
91
|
+
// Search rdf button should be visible
|
|
92
|
+
cy.get('.search-rdf-btn').should('be.visible');
|
|
93
|
+
// When I click the button
|
|
94
|
+
HomeSteps.openRdfSearchBox();
|
|
95
|
+
// I should be able to type some text in the input
|
|
96
|
+
cy.get('.search-rdf-input search-resource-input .view-res-input')
|
|
97
|
+
.type('hasPos').then(() => {
|
|
98
|
+
// When I select option from suggestions
|
|
99
|
+
cy.get(".search-rdf-input #auto-complete-results-wrapper p")
|
|
100
|
+
.contains('hasPos')
|
|
101
|
+
.click()
|
|
102
|
+
.then(() => {
|
|
103
|
+
// Search result should be opened in new window
|
|
104
|
+
cy.get('@window.open').should('be.calledWith', 'resource?uri=http%3A%2F%2Fwww.w3.org%2Fns%2Forg%23hasPost');
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// When I revisit the home page
|
|
109
|
+
cy.visit('/graphs');
|
|
110
|
+
// When I open again the search box
|
|
111
|
+
HomeSteps.openRdfSearchBox();
|
|
112
|
+
// The input should have value 'hasPos' from previous search
|
|
113
|
+
cy.get('.search-rdf-input search-resource-input .view-res-input').should('have.value', 'hasPos');
|
|
114
|
+
// And dropdown should be visible
|
|
115
|
+
cy.get('.search-rdf-input #auto-complete-results-wrapper').should('be.visible');
|
|
116
|
+
// When I press 'escape'
|
|
117
|
+
cy.get('.search-rdf-input search-resource-input .view-res-input')
|
|
118
|
+
.type('{esc}')
|
|
119
|
+
.then(() => {
|
|
120
|
+
// Search box should not be visible
|
|
121
|
+
cy.get('.search-rdf-input').should('not.be.visible');
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it('Should test RDF resource search box', () => {
|
|
126
|
+
//Prepare repository and import data.
|
|
127
|
+
cy.presetRepository(repositoryId);
|
|
128
|
+
cy.importServerFile(repositoryId, FILE_TO_IMPORT);
|
|
129
|
+
HomeSteps.visitAndWaitLoader();
|
|
130
|
+
|
|
131
|
+
//Verify that the main resource search box is focused
|
|
132
|
+
getRDFResourceSearchBox().click();
|
|
133
|
+
cy.focused().should('have.attr', 'placeholder', 'Search RDF resources...');
|
|
134
|
+
|
|
135
|
+
//Navigate away from the Homepage, to be able to test the new resource search box
|
|
136
|
+
cy.visit('/graphs', {
|
|
137
|
+
onBeforeLoad(win) {
|
|
138
|
+
cy.stub(win, 'open').as('window.open');
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
cy.get('.ot-splash').should('not.be.visible');
|
|
143
|
+
cy.get('.ot-loader-new-content').should('not.exist');
|
|
144
|
+
|
|
145
|
+
getRDFResourceSearchBox().click();
|
|
146
|
+
//Verify that the new resource search box is focused
|
|
147
|
+
cy.focused().should('have.attr', 'placeholder', 'Search RDF resources...');
|
|
148
|
+
|
|
149
|
+
//Verify autocomplete suggestions count
|
|
150
|
+
cy.focused().then(() => {
|
|
151
|
+
cy.get('#search-resource-box input')
|
|
152
|
+
.should('be.visible')
|
|
153
|
+
.type('Dry');
|
|
154
|
+
cy.get('#auto-complete-results-wrapper')
|
|
155
|
+
.should('be.visible')
|
|
156
|
+
.children()
|
|
157
|
+
.should('have.length', 7);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
//Test table and visual buttons.
|
|
161
|
+
cy.get("#auto_0").should('be.visible').click();
|
|
162
|
+
// Search result should be opened in new window
|
|
163
|
+
cy.get('@window.open').should('be.calledWith', 'resource?uri=http%3A%2F%2Fwww.w3.org%2FTR%2F2003%2FPR-owl-guide-20031209%2Fwine%23Dry');
|
|
164
|
+
|
|
165
|
+
getVisualButton().click();
|
|
166
|
+
cy.get("#auto_0").should('be.visible').click();
|
|
167
|
+
cy.get('@window.open').should('be.calledWith', 'graphs-visualizations?uri=http%3A%2F%2Fwww.w3.org%2FTR%2F2003%2FPR-owl-guide-20031209%2Fwine%23Dry');
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
function getRDFResourceSearchBox() {
|
|
172
|
+
return cy.get('rdf-resource-search').should('be.visible');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function getVisualButton() {
|
|
176
|
+
return cy.get('.display-type-visual-btn').should('be.visible');
|
|
177
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
|
|
3
|
+
describe('View resource autocomplete', () => {
|
|
4
|
+
|
|
5
|
+
const FOAT_SNIPPET = '@base <http://example.org/> .\n' +
|
|
6
|
+
'@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n' +
|
|
7
|
+
'<#green-goblin>\n' +
|
|
8
|
+
'a foaf:Person ; # in the context of the Marvel universe\n' +
|
|
9
|
+
'foaf:name "Green Goblin" .\n';
|
|
10
|
+
const GOBLIN_URI = 'http://example.org/#green-goblin';
|
|
11
|
+
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
cy.viewport(1280, 1000);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('Test homepage autocomplete when it is enabled', () => {
|
|
17
|
+
const repositoryId = HomeSteps.createRepo();
|
|
18
|
+
HomeSteps.selectRepo(repositoryId);
|
|
19
|
+
|
|
20
|
+
// Type an invalid resource
|
|
21
|
+
HomeSteps.getAutocompleteInput().type('hfsafa');
|
|
22
|
+
HomeSteps.noAutocompleteToast();
|
|
23
|
+
|
|
24
|
+
cy.importRDFTextSnippet(repositoryId, FOAT_SNIPPET);
|
|
25
|
+
cy.enableAutocomplete(repositoryId);
|
|
26
|
+
|
|
27
|
+
HomeSteps.visitAndWaitLoader(true).then((el) => el)
|
|
28
|
+
.then(() => HomeSteps.getAutocompleteDisplayTypeButton('table').click())
|
|
29
|
+
.then(() => HomeSteps.autocompleteText('Green', GOBLIN_URI))
|
|
30
|
+
.then(() => HomeSteps.getAutocompleteResultElement(GOBLIN_URI).click())
|
|
31
|
+
.then(() => // Search result should be opened in new window
|
|
32
|
+
cy.get('@window.open').should('be.calledWith', 'resource?uri=http%3A%2F%2Fexample.org%2F%23green-goblin'))
|
|
33
|
+
.then(() => HomeSteps.getAutocompleteDisplayTypeButton('visual').click())
|
|
34
|
+
.then(() => HomeSteps.getAutocompleteResultElement(GOBLIN_URI).click())
|
|
35
|
+
.then(() => // Search result should be opened in new window
|
|
36
|
+
cy.get('@window.open').should('be.calledWith', 'graphs-visualizations?uri=http%3A%2F%2Fexample.org%2F%23green-goblin'));
|
|
37
|
+
cy.deleteRepository(repositoryId);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should not suggest resources in "View resources" when autocomplete is not enabled', () => {
|
|
41
|
+
const repositoryId = HomeSteps.createRepo();
|
|
42
|
+
cy.importRDFTextSnippet(repositoryId, FOAT_SNIPPET);
|
|
43
|
+
|
|
44
|
+
HomeSteps.visitAndWaitLoader();
|
|
45
|
+
HomeSteps.selectRepo(repositoryId);
|
|
46
|
+
|
|
47
|
+
HomeSteps.getAutocompleteInput().type('Green');
|
|
48
|
+
HomeSteps.noAutocompleteToast();
|
|
49
|
+
|
|
50
|
+
cy.deleteRepository(repositoryId);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import HomeSteps from '../../steps/home-steps';
|
|
2
|
+
|
|
3
|
+
describe('Home screen validation', () => {
|
|
4
|
+
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
cy.viewport(1280, 1000);
|
|
7
|
+
HomeSteps.visitAndWaitLoader();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
context('First visit', () => {
|
|
11
|
+
it('Verify that tutorial panel exists', () => {
|
|
12
|
+
HomeSteps.verifyTutorialVisible(true);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('Test tutorial text', () => {
|
|
16
|
+
HomeSteps.verifyTutorialText(0, 'Welcome to GraphDB');
|
|
17
|
+
HomeSteps.verifyTutorialText(1, 'Create a repository');
|
|
18
|
+
HomeSteps.verifyTutorialText(2, 'Load a sample dataset');
|
|
19
|
+
HomeSteps.verifyTutorialText(3, 'Run a SPARQL query');
|
|
20
|
+
HomeSteps.verifyTutorialText(4, 'REST API');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('Verify that tutorial panel disappears if "No, thanks button" is clicked', () => {
|
|
24
|
+
// Verify that tutorial panel is still visible
|
|
25
|
+
HomeSteps.verifyTutorialVisible(true);
|
|
26
|
+
HomeSteps.declineTutorial();
|
|
27
|
+
HomeSteps.verifyTutorialVisible(false);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -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
|
|
31
|
+
cy.url().should('include', '/import#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
|
|
40
|
+
cy.url().should('include', '/import#server');
|
|
41
41
|
ImportServerFilesSteps.getActiveTab().should('have.text', 'Server files');
|
|
42
42
|
ImportServerFilesSteps.getResourcesTable().should('be.visible');
|
|
43
43
|
});
|
|
@@ -127,9 +127,7 @@ describe('Import server files', () => {
|
|
|
127
127
|
ImportResourceMessageDialog.getDialog().should('be.visible');
|
|
128
128
|
|
|
129
129
|
// with full error message
|
|
130
|
-
ImportResourceMessageDialog
|
|
131
|
-
.getMessage()
|
|
132
|
-
.should('contain.text', 'RDF Parse Error: The element type "ex:looooooooooooooooooooooooooooooooongTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame" must be terminated by the matching end-tag');
|
|
130
|
+
ImportResourceMessageDialog.getMessage().should('have.value', 'RDF Parse Error: The element type "ex:looooooooooooooooooooooooooooooooongTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame" must be terminated by the matching end-tag "</ex:looooooooooooooooooooooooooooooooongTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaame>". [line 9, column 6]');
|
|
133
131
|
|
|
134
132
|
// When I click on corner close button.
|
|
135
133
|
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";
|
|
2
3
|
import {ImportUserDataSteps} from "../../steps/import/import-user-data-steps";
|
|
3
4
|
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,6 +15,7 @@ const jsonld = JSON.stringify({
|
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
describe('Import user data: File upload', () => {
|
|
18
|
+
|
|
18
19
|
let repositoryId;
|
|
19
20
|
const testFiles = [
|
|
20
21
|
'bnodes.ttl',
|
|
@@ -38,8 +39,7 @@ describe('Import user data: File upload', () => {
|
|
|
38
39
|
// Given there are no files uploaded yet
|
|
39
40
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
40
41
|
// When I start to upload a file
|
|
41
|
-
|
|
42
|
-
ImportUserDataSteps.selectFile(file1);
|
|
42
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[0], bnodes));
|
|
43
43
|
// Then the import settings dialog should open automatically
|
|
44
44
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
45
45
|
ImportSettingsDialogSteps.import();
|
|
@@ -63,8 +63,7 @@ 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
|
-
|
|
67
|
-
ImportUserDataSteps.selectFile(file);
|
|
66
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[0], bnodes));
|
|
68
67
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
69
68
|
// When I cancel the file upload via the cancel button
|
|
70
69
|
ImportSettingsDialogSteps.cancelUpload();
|
|
@@ -73,7 +72,7 @@ describe('Import user data: File upload', () => {
|
|
|
73
72
|
// And there should be no files uploaded
|
|
74
73
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
75
74
|
// When I select to upload a file again
|
|
76
|
-
ImportUserDataSteps.selectFile(
|
|
75
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[0], bnodes));
|
|
77
76
|
// Then the import settings dialog should open
|
|
78
77
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
79
78
|
// And I close the file upload dialog via the close button
|
|
@@ -88,8 +87,7 @@ describe('Import user data: File upload', () => {
|
|
|
88
87
|
// Given there are no files uploaded yet
|
|
89
88
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
90
89
|
// When I start to upload a file
|
|
91
|
-
|
|
92
|
-
ImportUserDataSteps.selectFile(file);
|
|
90
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[0], bnodes));
|
|
93
91
|
// Then the import settings dialog should open automatically
|
|
94
92
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
95
93
|
// And the option for replace graph should be active
|
|
@@ -100,24 +98,21 @@ describe('Import user data: File upload', () => {
|
|
|
100
98
|
// Given there are no files uploaded yet
|
|
101
99
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
102
100
|
// When I upload a file
|
|
103
|
-
|
|
104
|
-
ImportUserDataSteps.selectFile(file);
|
|
101
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[0], bnodes));
|
|
105
102
|
// Then the import settings dialog should open automatically
|
|
106
103
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
107
104
|
ImportSettingsDialogSteps.import();
|
|
108
105
|
// Then I should see the uploaded file
|
|
109
106
|
ImportUserDataSteps.checkImportedResource(0, 'bnodes.ttl');
|
|
110
107
|
// When I upload another file
|
|
111
|
-
|
|
112
|
-
ImportUserDataSteps.selectFile(file2);
|
|
108
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[1], jsonld));
|
|
113
109
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
114
110
|
ImportSettingsDialogSteps.import();
|
|
115
111
|
// Then I should see the uploaded file - it becomes first in the list
|
|
116
112
|
ImportUserDataSteps.checkImportedResource(0, 'jsonld.jsonld');
|
|
117
113
|
ImportUserDataSteps.checkImportedResource(1, 'bnodes.ttl');
|
|
118
114
|
// When I override the first file
|
|
119
|
-
|
|
120
|
-
ImportUserDataSteps.selectFile(file3);
|
|
115
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[0], bnodes));
|
|
121
116
|
FileOverwriteDialogSteps.overwrite();
|
|
122
117
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
123
118
|
ImportSettingsDialogSteps.import();
|
|
@@ -126,7 +121,7 @@ describe('Import user data: File upload', () => {
|
|
|
126
121
|
ImportUserDataSteps.checkImportedResource(0, 'jsonld.jsonld');
|
|
127
122
|
ImportUserDataSteps.checkImportedResource(1, 'bnodes.ttl');
|
|
128
123
|
// When I override the second file
|
|
129
|
-
ImportUserDataSteps.selectFile(
|
|
124
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[1], jsonld));
|
|
130
125
|
FileOverwriteDialogSteps.overwrite();
|
|
131
126
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
132
127
|
ImportSettingsDialogSteps.import();
|
|
@@ -139,8 +134,7 @@ describe('Import user data: File upload', () => {
|
|
|
139
134
|
// Given there are no files uploaded yet
|
|
140
135
|
ImportUserDataSteps.getResourcesTable().should('be.hidden');
|
|
141
136
|
// When I start to upload a file
|
|
142
|
-
|
|
143
|
-
ImportUserDataSteps.selectFile(file);
|
|
137
|
+
ImportUserDataSteps.selectFile(ImportUserDataSteps.createFile(testFiles[0], bnodes));
|
|
144
138
|
// Then the import settings dialog should open automatically
|
|
145
139
|
ImportSettingsDialogSteps.getDialog().should('be.visible');
|
|
146
140
|
ImportSettingsDialogSteps.uploadOnly();
|
|
@@ -148,7 +142,7 @@ describe('Import user data: File upload', () => {
|
|
|
148
142
|
ImportUserDataSteps.getResources().should('have.length', 1);
|
|
149
143
|
ImportUserDataSteps.checkUserDataUploadedResource(0, 'bnodes.ttl');
|
|
150
144
|
// And the file should really be there
|
|
151
|
-
|
|
145
|
+
MainMenuSteps.openHomePage();
|
|
152
146
|
ImportUserDataSteps.visit();
|
|
153
147
|
ImportUserDataSteps.getResources().should('have.length', 1);
|
|
154
148
|
});
|
|
@@ -168,7 +162,7 @@ describe('Import user data: File upload', () => {
|
|
|
168
162
|
ImportUserDataSteps.checkImportedResource(0, 'jsonld.jsonld');
|
|
169
163
|
ImportUserDataSteps.checkImportedResource(1, 'bnodes.ttl');
|
|
170
164
|
// And the files should really be there
|
|
171
|
-
|
|
165
|
+
MainMenuSteps.openHomePage();
|
|
172
166
|
ImportUserDataSteps.visit();
|
|
173
167
|
ImportUserDataSteps.getResources().should('have.length', 2);
|
|
174
168
|
});
|
|
@@ -127,6 +127,7 @@ 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');
|
|
130
131
|
|
|
131
132
|
const graphName = CONTEXT.slice(0, CONTEXT.lastIndexOf('.'));
|
|
132
133
|
|
|
@@ -215,6 +216,7 @@ describe('Import user data: Text snippet', () => {
|
|
|
215
216
|
|
|
216
217
|
// Go to Graphs overview
|
|
217
218
|
cy.visit('/graphs');
|
|
219
|
+
cy.get('.ot-splash').should('not.be.visible');
|
|
218
220
|
|
|
219
221
|
const graphName = CONTEXT.slice(0, CONTEXT.lastIndexOf('.'));
|
|
220
222
|
|
|
@@ -77,4 +77,27 @@ 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
|
+
});
|
|
80
103
|
});
|
|
@@ -25,21 +25,14 @@ 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
|
|
28
|
+
cy.url().should('include', '/import#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');
|
|
34
31
|
ImportUserDataSteps.getPageInfoPopover()
|
|
35
32
|
.should('be.visible')
|
|
36
33
|
.find('a')
|
|
37
|
-
.should('
|
|
38
|
-
.
|
|
39
|
-
.then((href) => {
|
|
40
|
-
expect(href).to.match(/https:\/\/graphdb\.ontotext\.com\/documentation\/[^/]+\/loading-data-using-the-workbench\.html/);
|
|
41
|
-
});
|
|
42
|
-
|
|
34
|
+
.should('have.attr', 'href', 'https://graphdb.ontotext.com/documentation/master/loading-data-using-the-workbench.html')
|
|
35
|
+
.and('contain.text', 'Learn more in the GraphDB documentation');
|
|
43
36
|
ImportUserDataSteps.hidePageInfoPopover();
|
|
44
37
|
// And user data import tab should be selected by default
|
|
45
38
|
ImportUserDataSteps.getActiveTab().should('have.text', 'User data');
|
|
@@ -59,7 +52,7 @@ describe('Import user data', () => {
|
|
|
59
52
|
ImportUserDataSteps.openServerFilesTabFromWarning();
|
|
60
53
|
// Then I should see the server files tab
|
|
61
54
|
ImportUserDataSteps.getActiveTab().should('have.text', 'Server files');
|
|
62
|
-
cy.url().should('include', '/import
|
|
55
|
+
cy.url().should('include', '/import#server');
|
|
63
56
|
ImportUserDataSteps.getServerFilesTab().should('be.visible');
|
|
64
57
|
// When I click on the API link in the warning
|
|
65
58
|
ImportUserDataSteps.openUserDataTab();
|
|
@@ -9,8 +9,8 @@ describe('License', () => {
|
|
|
9
9
|
LicenseSteps.getLicenseHeader().should('have.text', "GraphDB Enterprise Edition");
|
|
10
10
|
|
|
11
11
|
LicenseSteps.getHardcodedAlertMessage().should('exist');
|
|
12
|
-
LicenseSteps.
|
|
13
|
-
LicenseSteps.
|
|
12
|
+
LicenseSteps.getRemoveLicenseLicenseButton().should('not.exist');
|
|
13
|
+
LicenseSteps.getSetNewLicenseElement().should('not.exist');
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
it('Should not displays an informational message if the license is not provided through a file (not hardcoded)', () => {
|
|
@@ -20,7 +20,7 @@ describe('License', () => {
|
|
|
20
20
|
LicenseSteps.getLicenseHeader().should('have.text', "GraphDB Enterprise Edition");
|
|
21
21
|
|
|
22
22
|
LicenseSteps.getHardcodedAlertMessage().should('not.exist');
|
|
23
|
-
LicenseSteps.
|
|
24
|
-
LicenseSteps.
|
|
23
|
+
LicenseSteps.getRemoveLicenseLicenseButton().should('exist');
|
|
24
|
+
LicenseSteps.getSetNewLicenseElement().should('exist');
|
|
25
25
|
});
|
|
26
26
|
});
|