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
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import {RepositorySelectorSteps} from '../../steps/repository-selector-steps.js';
|
|
2
|
-
import {LoginSteps} from '../../steps/login-steps.js';
|
|
3
|
-
import {UserAndAccessSteps} from '../../steps/setup/user-and-access-steps.js';
|
|
4
|
-
import HomeSteps from '../../steps/home-steps.js';
|
|
5
|
-
|
|
6
|
-
describe('URL with Repository ID parameter', () => {
|
|
7
|
-
let repositoryId;
|
|
8
|
-
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
repositoryId = 'repository-in-url-' + Date.now();
|
|
11
|
-
cy.createRepository({id: repositoryId});
|
|
12
|
-
cy.presetRepository(repositoryId);
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
afterEach(() => {
|
|
16
|
-
cy.loginAsAdmin();
|
|
17
|
-
cy.switchOffSecurity(true);
|
|
18
|
-
cy.deleteRepository(repositoryId);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should set repositoryId in url after enable security->login', () => {
|
|
22
|
-
enableSecurity(repositoryId);
|
|
23
|
-
// When user logs in again
|
|
24
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
25
|
-
// Then repositoryId parameter should be present in the URL and repository should be selected in the selector
|
|
26
|
-
UserAndAccessSteps.getUsersCatalogContainer().should('be.visible');
|
|
27
|
-
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
28
|
-
RepositorySelectorSteps.getSelectedRepository().should('contain', repositoryId);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('should set repositoryId in ur after first login', () => {
|
|
32
|
-
// Given security is on
|
|
33
|
-
cy.switchOnSecurity();
|
|
34
|
-
// And I log in with user admin
|
|
35
|
-
LoginSteps.visitLoginPage();
|
|
36
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
37
|
-
// Then repositoryId parameter should be present in the URL and repository should be selected in the selector
|
|
38
|
-
HomeSteps.getView().should('be.visible');
|
|
39
|
-
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
40
|
-
RepositorySelectorSteps.getSelectedRepository().should('contain', repositoryId);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
function enableSecurity(repositoryId) {
|
|
45
|
-
// Given security is off
|
|
46
|
-
// When user visits user and access page
|
|
47
|
-
UserAndAccessSteps.visit();
|
|
48
|
-
// Then url should contain repositoryId parameter and repository should be selected in the selector
|
|
49
|
-
cy.url().should('include', 'repositoryId=' + repositoryId);
|
|
50
|
-
RepositorySelectorSteps.getSelectedRepository().should('contain', repositoryId);
|
|
51
|
-
// When user toggles security on
|
|
52
|
-
UserAndAccessSteps.toggleSecurity();
|
|
53
|
-
// Then user should be logged out and login page should be shown
|
|
54
|
-
LoginSteps.getLoginPage().should('be.visible');
|
|
55
|
-
// And repositoryId parameter should not be present in the URL
|
|
56
|
-
cy.url().should('not.include', 'repositoryId=');
|
|
57
|
-
}
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
|
|
2
|
-
import {LicenseStubs} from "../../../stubs/license-stubs";
|
|
3
|
-
import {LoginSteps} from "../../../steps/login-steps";
|
|
4
|
-
import {ModalDialogSteps} from "../../../steps/modal-dialog-steps";
|
|
5
|
-
import {MainMenuSteps} from '../../../steps/main-menu-steps.js';
|
|
6
|
-
import {CookieConsentBannerSteps} from '../../../steps/cookie-policy/cookie-consent-banner-steps.js';
|
|
7
|
-
import ImportSteps from '../../../steps/import/import-steps.js';
|
|
8
|
-
import {CookiePolicyModalSteps} from '../../../steps/cookie-policy/cookie-policy-modal.steps.js';
|
|
9
|
-
import {SettingsSteps} from '../../../steps/setup/settings-steps.js';
|
|
10
|
-
import {HeaderSteps} from '../../../steps/header-steps.js';
|
|
11
|
-
|
|
12
|
-
Cypress.env('set_default_user_data', false);
|
|
13
|
-
|
|
14
|
-
describe('Cookie policy', () => {
|
|
15
|
-
|
|
16
|
-
let repository;
|
|
17
|
-
|
|
18
|
-
beforeEach(() => {
|
|
19
|
-
cy.loginAsAdmin().then(() => {
|
|
20
|
-
cy.switchOffFreeAccess(true);
|
|
21
|
-
cy.switchOffSecurity(true);
|
|
22
|
-
});
|
|
23
|
-
cy.setDefaultUserData(undefined);
|
|
24
|
-
LicenseStubs.stubFreeLicense();
|
|
25
|
-
repository = 'cypress-test-cookie-policy-security-' + Date.now();
|
|
26
|
-
cy.createRepository({id: repository});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
afterEach(() => {
|
|
30
|
-
cy.deleteRepository(repository, true);
|
|
31
|
-
cy.loginAsAdmin().then(() => {
|
|
32
|
-
cy.switchOffFreeAccess(true);
|
|
33
|
-
cy.switchOffSecurity(true);
|
|
34
|
-
cy.setDefaultUserData(undefined);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
// Scenario 5
|
|
39
|
-
it('should hide cookie consent banner when security is ON and user is logged out', () => {
|
|
40
|
-
// Given I open user and access page in prod mode
|
|
41
|
-
UserAndAccessSteps.visitInProdMode();
|
|
42
|
-
// Then the cookie policy banner should be visible
|
|
43
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('exist').and('be.visible');
|
|
44
|
-
// When I enable security
|
|
45
|
-
UserAndAccessSteps.toggleSecurity();
|
|
46
|
-
// Then I should be logged out
|
|
47
|
-
LoginSteps.getLoginPage().should('be.visible');
|
|
48
|
-
// And the cookie policy banner should be hidden
|
|
49
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
50
|
-
// When I login with admin
|
|
51
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
52
|
-
// Then the cookie policy banner should be visible
|
|
53
|
-
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
54
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('exist').and('be.visible');
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
// Scenario 6
|
|
58
|
-
it('should give cookie consent when security is ON', () => {
|
|
59
|
-
// Given I open user and access page in prod mode
|
|
60
|
-
UserAndAccessSteps.visitInProdMode();
|
|
61
|
-
// When I enable security
|
|
62
|
-
UserAndAccessSteps.toggleSecurity();
|
|
63
|
-
// Then I should be logged out
|
|
64
|
-
LoginSteps.getLoginPage().should('be.visible');
|
|
65
|
-
// When I login with admin
|
|
66
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
67
|
-
// Then I should see the users and access page
|
|
68
|
-
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
69
|
-
// Then the cookie policy banner should be visible
|
|
70
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('be.visible');
|
|
71
|
-
// When I click OK in the cookie consent banner
|
|
72
|
-
CookieConsentBannerSteps.giveCookieConsent();
|
|
73
|
-
// Then the cookie policy banner should be hidden
|
|
74
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
75
|
-
// When I open another page
|
|
76
|
-
MainMenuSteps.clickOnMenuImport();
|
|
77
|
-
ImportSteps.getView().should('be.visible');
|
|
78
|
-
// Then the cookie policy banner should be hidden
|
|
79
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
80
|
-
// When I reload the page
|
|
81
|
-
cy.reload();
|
|
82
|
-
// Then the cookie policy banner should be hidden
|
|
83
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
// Scenario 7
|
|
87
|
-
it('should update cookie policy and give cookie consent when security is ON', () => {
|
|
88
|
-
// Given I open user and access page in prod mode
|
|
89
|
-
UserAndAccessSteps.visitInProdMode();
|
|
90
|
-
// And I enable security
|
|
91
|
-
UserAndAccessSteps.toggleSecurity();
|
|
92
|
-
// And I login with admin
|
|
93
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
94
|
-
// When I click on the cookie policy link in the banner
|
|
95
|
-
CookieConsentBannerSteps.clickCookiePolicyLink();
|
|
96
|
-
// Then I see the cookie policy
|
|
97
|
-
CookiePolicyModalSteps.getDialogComponent().should('be.visible');
|
|
98
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(true, true);
|
|
99
|
-
// When I toggle off the analytics cookie checkbox
|
|
100
|
-
CookiePolicyModalSteps.toggleStatisticCookies();
|
|
101
|
-
// And I close the dialog
|
|
102
|
-
CookiePolicyModalSteps.closeDialog();
|
|
103
|
-
CookiePolicyModalSteps.getDialog().should('not.exist');
|
|
104
|
-
// When I reload the page
|
|
105
|
-
cy.reload();
|
|
106
|
-
// Then I expect to see that analytic cookies are not allowed and third party cookies are allowed
|
|
107
|
-
CookieConsentBannerSteps.clickCookiePolicyLink();
|
|
108
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(false, true);
|
|
109
|
-
// And I close the cookie policy dialog
|
|
110
|
-
CookiePolicyModalSteps.closeDialog();
|
|
111
|
-
// When I open my settings page
|
|
112
|
-
MainMenuSteps.clickOnMySettings();
|
|
113
|
-
// And I open cookie policy modal using the button in the my settings widget
|
|
114
|
-
SettingsSteps.clickCookiePolicyLink();
|
|
115
|
-
// Then I should see the cookie policy
|
|
116
|
-
CookiePolicyModalSteps.getDialogComponent().should('be.visible');
|
|
117
|
-
// And I expect to see that analytic cookies are not allowed and third party cookies are allowed
|
|
118
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(false, true);
|
|
119
|
-
// When I toggle off third party cookies checkbox
|
|
120
|
-
CookiePolicyModalSteps.toggleThirdPartyCookies();
|
|
121
|
-
// And I close the modal
|
|
122
|
-
CookiePolicyModalSteps.closeDialog();
|
|
123
|
-
// When I reopen modal from the widget
|
|
124
|
-
SettingsSteps.clickCookiePolicyLink();
|
|
125
|
-
// Then I expect to see that analytic cookies are not allowed and third party cookies are not allowed
|
|
126
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(false, false);
|
|
127
|
-
CookiePolicyModalSteps.closeDialog();
|
|
128
|
-
// When I click OK in the banner
|
|
129
|
-
CookieConsentBannerSteps.giveCookieConsent();
|
|
130
|
-
// Then I expect the banner to be hidden
|
|
131
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
132
|
-
// When I reload the page
|
|
133
|
-
cy.reload();
|
|
134
|
-
// Then I expect the banner to be hidden
|
|
135
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
136
|
-
// When I logout
|
|
137
|
-
LoginSteps.logout();
|
|
138
|
-
// Then I should see the login page
|
|
139
|
-
LoginSteps.getLoginPage().should('be.visible');
|
|
140
|
-
// And the cookie policy banner should be hidden
|
|
141
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
142
|
-
// When I login with admin
|
|
143
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
144
|
-
// Then the cookie policy banner should be hidden
|
|
145
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
146
|
-
// When I open cookie policy modal from the widget
|
|
147
|
-
SettingsSteps.clickCookiePolicyLink();
|
|
148
|
-
// Then I expect to see that analytic cookies are not allowed and third party cookies are not allowed
|
|
149
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(false, false);
|
|
150
|
-
// When I toggle on third party cookies checkbox
|
|
151
|
-
CookiePolicyModalSteps.toggleThirdPartyCookies();
|
|
152
|
-
// And I close the modal
|
|
153
|
-
CookiePolicyModalSteps.closeDialog();
|
|
154
|
-
// When I reload the page
|
|
155
|
-
cy.reload();
|
|
156
|
-
// Then I expect to see that analytic cookies are not allowed and third party cookies are allowed
|
|
157
|
-
SettingsSteps.clickCookiePolicyLink();
|
|
158
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(false, true);
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
// Scenario 8
|
|
162
|
-
it('should update cookie policy and give cookie consent when security is ON and free access is ON', () => {
|
|
163
|
-
// Given I open user and access page in prod mode
|
|
164
|
-
UserAndAccessSteps.visitInProdMode();
|
|
165
|
-
// And I enable security
|
|
166
|
-
UserAndAccessSteps.toggleSecurity();
|
|
167
|
-
// And I login with admin
|
|
168
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
169
|
-
// And I enable free access
|
|
170
|
-
UserAndAccessSteps.toggleFreeAccess();
|
|
171
|
-
UserAndAccessSteps.clickFreeWriteAccessRepo(repository);
|
|
172
|
-
ModalDialogSteps.clickOKButton();
|
|
173
|
-
// Then the cookie policy banner should be visible
|
|
174
|
-
CookieConsentBannerSteps.getCookieConsentBanner().and('be.visible');
|
|
175
|
-
// When I click on the cookie policy link in the banner
|
|
176
|
-
CookieConsentBannerSteps.clickCookiePolicyLink();
|
|
177
|
-
// Then I see the cookie policy
|
|
178
|
-
CookiePolicyModalSteps.getDialogComponent().should('be.visible');
|
|
179
|
-
// And I expect to see that analytic and third party cookies are allowed
|
|
180
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(true, true);
|
|
181
|
-
// When I toggle off the analytics cookie checkbox
|
|
182
|
-
// The policy is saved on the server
|
|
183
|
-
CookiePolicyModalSteps.toggleStatisticCookies();
|
|
184
|
-
// And I close the dialog
|
|
185
|
-
CookiePolicyModalSteps.closeDialog();
|
|
186
|
-
CookiePolicyModalSteps.getDialog().should('not.exist');
|
|
187
|
-
// When I logout
|
|
188
|
-
HeaderSteps.logout();
|
|
189
|
-
// Then I should still see the user and access page but I have no access to it which is unimportant for this test
|
|
190
|
-
cy.url().should('include', '/users');
|
|
191
|
-
// And the cookie policy banner should be visible
|
|
192
|
-
CookieConsentBannerSteps.getCookieConsentBanner().and('be.visible');
|
|
193
|
-
// When I click on the cookie policy link in the banner
|
|
194
|
-
CookieConsentBannerSteps.clickCookiePolicyLink();
|
|
195
|
-
// Then I see the cookie policy
|
|
196
|
-
CookiePolicyModalSteps.getDialogComponent().should('be.visible');
|
|
197
|
-
// And I expect to see that analytic cookies are allowed and third party cookies are allowed
|
|
198
|
-
// (using browser data, because user is logged out)
|
|
199
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(true, true);
|
|
200
|
-
// And I close the cookie policy modal
|
|
201
|
-
CookiePolicyModalSteps.closeDialog();
|
|
202
|
-
// When I open another page
|
|
203
|
-
MainMenuSteps.clickOnMenuImport();
|
|
204
|
-
// Then the cookie policy banner should be visible
|
|
205
|
-
CookieConsentBannerSteps.getCookieConsentBanner().and('be.visible');
|
|
206
|
-
// When I give cookie consent
|
|
207
|
-
CookieConsentBannerSteps.giveCookieConsent();
|
|
208
|
-
// Then the cookie policy banner should be hidden
|
|
209
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
210
|
-
// When I open another page
|
|
211
|
-
MainMenuSteps.clickOnSparqlMenu();
|
|
212
|
-
cy.url().should('include', '/sparql');
|
|
213
|
-
// Then the cookie policy banner should be hidden
|
|
214
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
215
|
-
// When I reload the page
|
|
216
|
-
cy.reload();
|
|
217
|
-
// Then the cookie policy banner should be hidden
|
|
218
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
219
|
-
// When I login with admin
|
|
220
|
-
HeaderSteps.login();
|
|
221
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
222
|
-
cy.url().should('include', '/sparql');
|
|
223
|
-
// Then the cookie policy banner should be visible (because consent is saved on the server, but user has no changes persisted on server, so defaults are considered)
|
|
224
|
-
CookieConsentBannerSteps.getCookieConsentBanner().and('be.visible');
|
|
225
|
-
// When I click on the cookie policy link in the banner
|
|
226
|
-
CookieConsentBannerSteps.clickCookiePolicyLink();
|
|
227
|
-
// Then I see the cookie policy
|
|
228
|
-
CookiePolicyModalSteps.getDialogComponent().should('be.visible');
|
|
229
|
-
// And I expect to see that analytic cookies are allowed and third party cookies are allowed
|
|
230
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(false, true);
|
|
231
|
-
// When I toggle off third party cookies checkbox
|
|
232
|
-
CookiePolicyModalSteps.toggleThirdPartyCookies();
|
|
233
|
-
// And I close the modal
|
|
234
|
-
CookiePolicyModalSteps.closeDialog();
|
|
235
|
-
// When I reopen modal from the banner button
|
|
236
|
-
CookieConsentBannerSteps.clickCookiePolicyLink();
|
|
237
|
-
// Then I expect to see that analytic cookies are allowed and third party cookies are not allowed
|
|
238
|
-
CookiePolicyModalSteps.validateCookiePolicyDialog(false, false);
|
|
239
|
-
CookiePolicyModalSteps.closeDialog();
|
|
240
|
-
// When I logout
|
|
241
|
-
HeaderSteps.logout();
|
|
242
|
-
// And the cookie policy banner should be hidden (using browser data)
|
|
243
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
244
|
-
// When I login with admin
|
|
245
|
-
HeaderSteps.login();
|
|
246
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
247
|
-
// Then the cookie policy banner should be visible (consent is persisted with the user on server)
|
|
248
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('be.visible');
|
|
249
|
-
// When I give cookie consent
|
|
250
|
-
CookieConsentBannerSteps.giveCookieConsent();
|
|
251
|
-
// Then the cookie policy banner should be hidden
|
|
252
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
253
|
-
// When I reload the page
|
|
254
|
-
cy.reload();
|
|
255
|
-
// Then the cookie policy banner should be hidden
|
|
256
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
it('should show the consent popup if free access is on and the user is on the login page', () => {
|
|
260
|
-
// Given: Security is enabled and free access is on
|
|
261
|
-
UserAndAccessSteps.visitInProdMode();
|
|
262
|
-
UserAndAccessSteps.toggleSecurity();
|
|
263
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
264
|
-
// And: Free access is enabled
|
|
265
|
-
UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
|
|
266
|
-
UserAndAccessSteps.toggleFreeAccess();
|
|
267
|
-
UserAndAccessSteps.clickFreeWriteAccessRepo(repository);
|
|
268
|
-
ModalDialogSteps.clickOKButton();
|
|
269
|
-
|
|
270
|
-
// When: The user visits the login page
|
|
271
|
-
LoginSteps.visitInProdMode();
|
|
272
|
-
// Then: The cookie policy popup should be shown
|
|
273
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('exist').and('be.visible');
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
it('should not show the consent popup if free access is off and the user is on the login page', () => {
|
|
277
|
-
// Given: Security is enabled and free access is off
|
|
278
|
-
UserAndAccessSteps.visitInProdMode();
|
|
279
|
-
UserAndAccessSteps.toggleSecurity();
|
|
280
|
-
LoginSteps.loginWithUser('admin', 'root');
|
|
281
|
-
UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
|
|
282
|
-
|
|
283
|
-
// When: The user logs out and visits the login page
|
|
284
|
-
LoginSteps.logout();
|
|
285
|
-
// Then: The cookie policy popup should not be shown
|
|
286
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
287
|
-
LoginSteps.visitInProdMode();
|
|
288
|
-
CookieConsentBannerSteps.getCookieConsentBanner().should('not.exist');
|
|
289
|
-
});
|
|
290
|
-
});
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import {MainMenuSteps} from '../../../steps/main-menu-steps';
|
|
2
|
-
import {UserAndAccessSteps} from '../../../steps/setup/user-and-access-steps';
|
|
3
|
-
import {LoginSteps} from '../../../steps/login-steps';
|
|
4
|
-
import {ToasterSteps} from '../../../steps/toaster-steps';
|
|
5
|
-
import {YasqeSteps} from '../../../steps/yasgui/yasqe-steps';
|
|
6
|
-
import {YasrSteps} from '../../../steps/yasgui/yasr-steps';
|
|
7
|
-
|
|
8
|
-
describe('User Management – Creation, Validation, Permissions & Deletion', () => {
|
|
9
|
-
let repositoryId;
|
|
10
|
-
const testPassword = 'P@ssw0rd123!';
|
|
11
|
-
const testUsername = `testuser-${Date.now()}`;
|
|
12
|
-
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
cy.loginAsAdmin();
|
|
15
|
-
cy.switchOffSecurity(true);
|
|
16
|
-
// Create and initialize a fresh repository for isolation
|
|
17
|
-
repositoryId = `repo-${Date.now()}`;
|
|
18
|
-
cy.createRepository({ id: repositoryId });
|
|
19
|
-
cy.presetRepository(repositoryId);
|
|
20
|
-
cy.initializeRepository(repositoryId);
|
|
21
|
-
|
|
22
|
-
// Navigate to Users & Access
|
|
23
|
-
UserAndAccessSteps.visit();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
afterEach(() => {
|
|
27
|
-
// Clean up repository
|
|
28
|
-
cy.deleteRepository(repositoryId);
|
|
29
|
-
cy.deleteUser('user');
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
describe('Create a new user – validation', () => {
|
|
33
|
-
beforeEach(() => {
|
|
34
|
-
UserAndAccessSteps.clickCreateNewUserButton();
|
|
35
|
-
cy.deleteUser('user');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('should show error when username is empty', () => {
|
|
39
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
40
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
41
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
42
|
-
UserAndAccessSteps.clickWriteAccessRepo(repositoryId);
|
|
43
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
44
|
-
UserAndAccessSteps.getUserFieldError('username').should('be.visible').and('contain.text', 'Enter username!');
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('should show error when passwords are empty', () => {
|
|
48
|
-
UserAndAccessSteps.typeUsername(testUsername);
|
|
49
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
50
|
-
UserAndAccessSteps.getUserFieldError('password').should('be.visible').and('contain.text', 'Enter password!');
|
|
51
|
-
UserAndAccessSteps.getUserFieldError('confirmPassword').should('be.visible').and('contain.text', 'Confirm password!');
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('should show error when passwords do not match', () => {
|
|
55
|
-
UserAndAccessSteps.typeUsername(testUsername);
|
|
56
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
57
|
-
UserAndAccessSteps.typeConfirmPasswordField('Different123!');
|
|
58
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
59
|
-
UserAndAccessSteps.clickWriteAccessRepo(repositoryId);
|
|
60
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
61
|
-
UserAndAccessSteps.getUserFieldError('confirmPassword').should('be.visible').and('contain.text', 'Confirm password!');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('should show error when username duplicates existing one', () => {
|
|
65
|
-
UserAndAccessSteps.typeUsername('user');
|
|
66
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
67
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
68
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
69
|
-
UserAndAccessSteps.clickWriteAccessRepo(repositoryId);
|
|
70
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
71
|
-
|
|
72
|
-
cy.url().should('include', '/users');
|
|
73
|
-
UserAndAccessSteps.clickCreateNewUserButton();
|
|
74
|
-
UserAndAccessSteps.typeUsername('user');
|
|
75
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
76
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
77
|
-
UserAndAccessSteps.clickWriteAccessRepo(repositoryId);
|
|
78
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
79
|
-
|
|
80
|
-
// Using the toaster from the shared components which has different class names
|
|
81
|
-
|
|
82
|
-
ToasterSteps.verifyError('An account with the given username already exists.');
|
|
83
|
-
cy.deleteUser('user');
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it('should show error when no repository read access is given', () => {
|
|
87
|
-
UserAndAccessSteps.typeUsername(testUsername);
|
|
88
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
89
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
90
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
91
|
-
UserAndAccessSteps.getRepositoryRightsError().should('be.visible').and('contain.text', 'Users should have rights to at least one repository!');
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it('should show error when custom role is too short', () => {
|
|
95
|
-
UserAndAccessSteps.typeUsername(testUsername);
|
|
96
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
97
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
98
|
-
UserAndAccessSteps.addTextToCustomRoleField('a');
|
|
99
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
100
|
-
UserAndAccessSteps.clickWriteAccessRepo(repositoryId);
|
|
101
|
-
UserAndAccessSteps.getCustomRoleFieldError().should('be.visible').and('contain.text', 'Must be at least 2 symbols long');
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
describe('Create a new user – read/write access', () => {
|
|
106
|
-
const rwUsername = `rwuser-${Date.now()}`;
|
|
107
|
-
|
|
108
|
-
afterEach(() =>{
|
|
109
|
-
cy.loginAsAdmin();
|
|
110
|
-
cy.switchOffSecurity(true);
|
|
111
|
-
cy.deleteUser(rwUsername);
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
it('should create, login, and verify permissions', () => {
|
|
115
|
-
UserAndAccessSteps.clickCreateNewUserButton();
|
|
116
|
-
UserAndAccessSteps.typeUsername(rwUsername);
|
|
117
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
118
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
119
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
120
|
-
UserAndAccessSteps.clickWriteAccessRepo(repositoryId);
|
|
121
|
-
UserAndAccessSteps.getWriteAccessForRepo(repositoryId).should('be.checked');
|
|
122
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
123
|
-
UserAndAccessSteps.toggleSecurity();
|
|
124
|
-
|
|
125
|
-
LoginSteps.visitLoginPage();
|
|
126
|
-
|
|
127
|
-
LoginSteps.loginWithUser(rwUsername, testPassword);
|
|
128
|
-
MainMenuSteps.clickOnSparqlMenu();
|
|
129
|
-
|
|
130
|
-
YasqeSteps.clearEditor();
|
|
131
|
-
const prefix = 'PREFIX ex: <http://example.org/>\n';
|
|
132
|
-
const query = 'INSERT DATA {\n' +
|
|
133
|
-
'ex:greeting ex:text "Hello, world!" .\n' +
|
|
134
|
-
'}';
|
|
135
|
-
cy.pasteIntoCodeMirror('.CodeMirror', prefix + query);
|
|
136
|
-
YasqeSteps.executeQueryWithoutWaiteResult();
|
|
137
|
-
// Verify read access
|
|
138
|
-
YasrSteps.getResponseInfo()
|
|
139
|
-
.should('not.have.class', 'hidden')
|
|
140
|
-
.should('not.have.class', 'empty')
|
|
141
|
-
.should('be.visible')
|
|
142
|
-
.should('contain.text', 'Added 1 statements.');
|
|
143
|
-
|
|
144
|
-
LoginSteps.logout();
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
describe('Create a new user – read only access', () => {
|
|
149
|
-
const roUsername = `rouser-${Date.now()}`;
|
|
150
|
-
|
|
151
|
-
afterEach(() =>{
|
|
152
|
-
cy.loginAsAdmin();
|
|
153
|
-
cy.switchOffSecurity(true);
|
|
154
|
-
cy.deleteUser(roUsername);
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
it('should create, login, and verify read-only', () => {
|
|
158
|
-
UserAndAccessSteps.clickCreateNewUserButton();
|
|
159
|
-
UserAndAccessSteps.typeUsername(roUsername);
|
|
160
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
161
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
162
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
163
|
-
UserAndAccessSteps.getReadAccessForRepo(repositoryId).should('be.checked');
|
|
164
|
-
UserAndAccessSteps.getWriteAccessForRepo(repositoryId).should('not.be.checked');
|
|
165
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
166
|
-
UserAndAccessSteps.toggleSecurity();
|
|
167
|
-
|
|
168
|
-
LoginSteps.visitLoginPage();
|
|
169
|
-
|
|
170
|
-
LoginSteps.loginWithUser(roUsername, testPassword);
|
|
171
|
-
MainMenuSteps.clickOnSparqlMenu();
|
|
172
|
-
|
|
173
|
-
YasqeSteps.clearEditor();
|
|
174
|
-
const prefix = 'PREFIX ex: <http://example.org/>\n';
|
|
175
|
-
const query = 'INSERT DATA {\n' +
|
|
176
|
-
'ex:greeting ex:text "Hello, world!" .\n' +
|
|
177
|
-
'}';
|
|
178
|
-
cy.pasteIntoCodeMirror('.CodeMirror', prefix + query);
|
|
179
|
-
// Verify no write access
|
|
180
|
-
YasqeSteps.executeErrorQuery();
|
|
181
|
-
|
|
182
|
-
YasqeSteps.clearEditor();
|
|
183
|
-
const readQuery = 'select * where {\n' +
|
|
184
|
-
'?s ?p ?o .\n' +
|
|
185
|
-
'} limit 100';
|
|
186
|
-
cy.pasteIntoCodeMirror('.CodeMirror', readQuery);
|
|
187
|
-
// Verify read accessorQuery();
|
|
188
|
-
YasqeSteps.executeQuery();
|
|
189
|
-
|
|
190
|
-
LoginSteps.logout();
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
});
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
|
|
2
|
-
import {LoginSteps} from "../../../steps/login-steps";
|
|
3
|
-
import {GraphqlPlaygroundSteps} from "../../../steps/graphql/graphql-playground-steps";
|
|
4
|
-
import {RepositorySteps} from "../../../steps/repository-steps";
|
|
5
|
-
|
|
6
|
-
describe('GraphQL-only User – Playground Access & Mutation Restriction', () => {
|
|
7
|
-
let repositoryId;
|
|
8
|
-
const gqlUsername = `gqluser-${Date.now()}`;
|
|
9
|
-
const testPassword = 'P@ssw0rd123!';
|
|
10
|
-
const readQuery = `
|
|
11
|
-
query StarshipById {
|
|
12
|
-
starship(ID: "https://swapi.co/resource/starship/9") {
|
|
13
|
-
name
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
`;
|
|
17
|
-
const mutation = `
|
|
18
|
-
mutation CreateHuman {
|
|
19
|
-
create_Human(
|
|
20
|
-
objects: [
|
|
21
|
-
{
|
|
22
|
-
id: "file:/test/onto/vocabulary/Human1",
|
|
23
|
-
rdfs_label: "New human with specific iri id"
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
) {
|
|
27
|
-
human { id }
|
|
28
|
-
affected_objects { ids }
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
`;
|
|
32
|
-
|
|
33
|
-
beforeEach(() => {
|
|
34
|
-
repositoryId = `repo-${Date.now()}`;
|
|
35
|
-
cy.createRepository({ id: repositoryId });
|
|
36
|
-
cy.presetRepository(repositoryId);
|
|
37
|
-
cy.importServerFile(repositoryId, 'swapi-dataset.ttl');
|
|
38
|
-
cy.uploadGraphqlSchema(repositoryId, 'graphql/soml/swapi-schema.yaml', 'swapi');
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
afterEach(() => {
|
|
42
|
-
cy.loginAsAdmin();
|
|
43
|
-
cy.switchOffSecurity(true);
|
|
44
|
-
cy.deleteUser(gqlUsername);
|
|
45
|
-
cy.deleteRepository(repositoryId);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('should see only the assigned repo, block SPARQL, allow GraphQL read and forbid writes, and hide create-repo everywhere', () => {
|
|
49
|
-
UserAndAccessSteps.visit();
|
|
50
|
-
UserAndAccessSteps.clickCreateNewUserButton();
|
|
51
|
-
UserAndAccessSteps.typeUsername(gqlUsername);
|
|
52
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
53
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
54
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
55
|
-
UserAndAccessSteps.clickGraphqlAccessRepo(repositoryId);
|
|
56
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
57
|
-
|
|
58
|
-
UserAndAccessSteps.toggleSecurity();
|
|
59
|
-
|
|
60
|
-
// Log in as GraphQL-only user
|
|
61
|
-
LoginSteps.loginWithUser(gqlUsername, testPassword);
|
|
62
|
-
|
|
63
|
-
// The repository is set
|
|
64
|
-
RepositorySteps.verifyRepositoryIsSelected(repositoryId);
|
|
65
|
-
|
|
66
|
-
// Verify only the assigned repository appears in endpoints
|
|
67
|
-
GraphqlPlaygroundSteps.visit();
|
|
68
|
-
GraphqlPlaygroundSteps.getView().should('be.visible');
|
|
69
|
-
GraphqlPlaygroundSteps.getQueryEditor().should('be.visible');
|
|
70
|
-
GraphqlPlaygroundSteps.getSelectedEndpoint().should('have.text', 'swapi');
|
|
71
|
-
// And I can execute a query on the countries endpoint
|
|
72
|
-
GraphqlPlaygroundSteps.setInEditor(readQuery);
|
|
73
|
-
// And I execute the query
|
|
74
|
-
GraphqlPlaygroundSteps.executeQuery();
|
|
75
|
-
// Then I get expected result
|
|
76
|
-
GraphqlPlaygroundSteps.getResponse().should('contain', '"name": "Death Star"');
|
|
77
|
-
|
|
78
|
-
// Execute the create_Human mutation → expect errors
|
|
79
|
-
GraphqlPlaygroundSteps.setInEditor(mutation);
|
|
80
|
-
GraphqlPlaygroundSteps.executeQuery();
|
|
81
|
-
GraphqlPlaygroundSteps.getResponse().should('contain.text', 'errors');
|
|
82
|
-
LoginSteps.logout();
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('should allow GraphQL mutation and hide SPARQL/Import/Create-repo menus', () => {
|
|
86
|
-
UserAndAccessSteps.visit();
|
|
87
|
-
UserAndAccessSteps.clickCreateNewUserButton();
|
|
88
|
-
UserAndAccessSteps.typeUsername(gqlUsername);
|
|
89
|
-
UserAndAccessSteps.typePassword(testPassword);
|
|
90
|
-
UserAndAccessSteps.typeConfirmPasswordField(testPassword);
|
|
91
|
-
UserAndAccessSteps.clickReadAccessRepo(repositoryId);
|
|
92
|
-
UserAndAccessSteps.clickWriteAccessRepo(repositoryId);
|
|
93
|
-
UserAndAccessSteps.clickGraphqlAccessRepo(repositoryId);
|
|
94
|
-
UserAndAccessSteps.confirmUserCreate();
|
|
95
|
-
|
|
96
|
-
UserAndAccessSteps.toggleSecurity();
|
|
97
|
-
|
|
98
|
-
// Log in as the new user
|
|
99
|
-
LoginSteps.loginWithUser(gqlUsername, testPassword);
|
|
100
|
-
|
|
101
|
-
// The repository is set
|
|
102
|
-
RepositorySteps.verifyRepositoryIsSelected(repositoryId);
|
|
103
|
-
|
|
104
|
-
// Visit GraphQL Playground
|
|
105
|
-
GraphqlPlaygroundSteps.visit();
|
|
106
|
-
GraphqlPlaygroundSteps.getView().should('be.visible');
|
|
107
|
-
GraphqlPlaygroundSteps.getQueryEditor().should('be.visible');
|
|
108
|
-
GraphqlPlaygroundSteps.getSelectedEndpoint().should('have.text', 'swapi');
|
|
109
|
-
|
|
110
|
-
// Execute a read query to verify read access
|
|
111
|
-
GraphqlPlaygroundSteps.setInEditor(readQuery);
|
|
112
|
-
GraphqlPlaygroundSteps.executeQuery();
|
|
113
|
-
GraphqlPlaygroundSteps.getResponse()
|
|
114
|
-
.should('contain.text', '"name": "Death Star"');
|
|
115
|
-
|
|
116
|
-
// Execute the mutation and expect success
|
|
117
|
-
GraphqlPlaygroundSteps.setInEditor(mutation);
|
|
118
|
-
GraphqlPlaygroundSteps.executeQuery();
|
|
119
|
-
GraphqlPlaygroundSteps.getResponse()
|
|
120
|
-
.should('contain.text', 'data')
|
|
121
|
-
.and('contain.text', 'create_Human')
|
|
122
|
-
.and('contain.text', 'affected_objects');
|
|
123
|
-
|
|
124
|
-
LoginSteps.logout();
|
|
125
|
-
});
|
|
126
|
-
});
|