graphdb-workbench-tests 2.8.5 → 3.0.0-MB-3
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/cypress-flaky.config.js +11 -4
- package/cypress-legacy.config.js +28 -0
- package/cypress.config.js +10 -4
- package/{integration-flaky → e2e-flaky}/explore/visual.graph.spec.js +4 -1
- package/{integration-flaky → e2e-flaky}/import/import-server-files-operations.spec.js +1 -1
- package/{integration-flaky → e2e-flaky}/setup/sparql-template-create.js +9 -2
- package/e2e-flaky/setup/users-and-access/security-and-free-access.spec.js +57 -0
- package/{integration-flaky → e2e-flaky}/sparql-editor/yasr/table-plugin.spec.js +2 -1
- package/e2e-flaky/ttyg/ttyg-permission.spec.js +67 -0
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-multi-region.spec.js +4 -1
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js +4 -1
- package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration.spec.js +4 -1
- package/e2e-legacy/explore/class.hierarchy.spec.js +214 -0
- package/{integration → e2e-legacy}/explore/class.relationships.spec.js +2 -1
- package/{integration → e2e-legacy}/explore/graphs.overview.spec.js +20 -11
- package/{integration → e2e-legacy}/explore/visual-graph/graphs-config.spec.js +35 -6
- package/e2e-legacy/explore/visual-graph/visual-graph-node-labels.spec.js +68 -0
- package/{integration → e2e-legacy}/explore/visual-graph/visual.graph.spec.js +9 -3
- package/e2e-legacy/graphql/activate-deactivate-graphql-endpoint.spec.js +40 -0
- package/e2e-legacy/graphql/create-graphql-endpoint.spec.js +281 -0
- package/e2e-legacy/graphql/delete-graphql-endpoint.spec.js +46 -0
- package/e2e-legacy/graphql/edit-graphql-enpoint.spec.js +162 -0
- package/e2e-legacy/graphql/export-graphql-endpoint-definition.spec.js +35 -0
- package/e2e-legacy/graphql/filter-graphql-endpoints-on-management-view.spec.js +67 -0
- package/e2e-legacy/graphql/graphql-endpoint-management-view.spec.js +142 -0
- package/e2e-legacy/graphql/graphql-playground.spec.js +111 -0
- package/e2e-legacy/graphql/import-graphql-endpoint-definitions.spec.js +270 -0
- package/e2e-legacy/graphql/set-default-graphql-endpoint.spec.js +42 -0
- package/{integration → e2e-legacy}/guides/movies-interactive-guide.spec.js +5 -1
- package/{integration → e2e-legacy}/guides/star-wars-interactive-guide.js +6 -1
- package/{integration → e2e-legacy}/home/cookie-policy.spec.js +7 -1
- package/{integration → e2e-legacy}/home/create-repository.spec.js +6 -2
- package/{integration → e2e-legacy}/home/documentation-link.spec.js +4 -1
- package/{integration → e2e-legacy}/home/language-change.spec.js +5 -2
- package/{integration → e2e-legacy}/home/language-selector.spec.js +4 -1
- package/{integration → e2e-legacy}/home/rdf-resource-search.spec.js +4 -1
- package/{integration → e2e-legacy}/home/view-resource-autocomplete.spec.js +6 -2
- package/{integration → e2e-legacy}/import/import-server-files-batch-operations.spec.js +6 -4
- package/{integration → e2e-legacy}/import/import-server-files.spec.js +31 -8
- package/{integration → e2e-legacy}/import/import-user-data-file-upload.spec.js +10 -3
- package/{integration → e2e-legacy}/import/import-user-data-text-snippet.spec.js +30 -8
- package/{integration → e2e-legacy}/import/import-user-data-url.spec.js +35 -1
- package/{integration → e2e-legacy}/import/import-user-data.spec.js +8 -3
- package/{integration → e2e-legacy}/import/import-view.spec.js +4 -2
- package/{integration → e2e-legacy}/license/license.spec.js +2 -2
- package/{integration → e2e-legacy}/monitor/global-operation-statuses-component.spec.js +4 -1
- package/{integration → e2e-legacy}/monitor/monitor.queries.spec.js +4 -1
- package/{integration → e2e-legacy}/monitor/monitor.resources.spec.js +2 -1
- package/{integration → e2e-legacy}/repository/attach-remote-location.spec.js +4 -1
- package/{integration → e2e-legacy}/repository/ontop-repository.spec.js +13 -3
- package/{integration → e2e-legacy}/repository/repositories.spec.js +10 -5
- package/{integration → e2e-legacy}/repository/repository-commands.spec.js +2 -2
- package/{integration → e2e-legacy}/resource/resource.spec.js +10 -3
- package/{integration → e2e-legacy}/setup/aclmanagement/create-rule.spec.js +3 -1
- package/{integration → e2e-legacy}/setup/aclmanagement/edit-rule.spec.js +2 -1
- package/{integration → e2e-legacy}/setup/aclmanagement/reorder-rules.spec.js +2 -1
- package/{integration → e2e-legacy}/setup/aclmanagement/revert-rules.spec.js +4 -1
- package/{integration → e2e-legacy}/setup/aclmanagement/scopes.spec.js +2 -1
- package/{integration → e2e-legacy}/setup/aclmanagement/update-rules.spec.js +16 -4
- package/{integration → e2e-legacy}/setup/autocomplete.spec.js +4 -1
- package/{integration → e2e-legacy}/setup/connectors-lucene.spec.js +2 -1
- package/{integration → e2e-legacy}/setup/my-settings.spec.js +4 -2
- package/{integration → e2e-legacy}/setup/namespaces.spec.js +5 -1
- package/{integration → e2e-legacy}/setup/plugins.spec.js +4 -1
- package/{integration → e2e-legacy}/setup/rdf-rank.spec.js +4 -1
- package/{integration → e2e-legacy}/setup/sparql-template-create.js +18 -5
- package/{integration → e2e-legacy}/setup/sparql-templates.spec.js +2 -1
- package/e2e-legacy/setup/user-and-access.spec.js +731 -0
- package/{integration → e2e-legacy}/sparql-editor/actions/inferred-sameas.spec.js +1 -1
- package/{integration → e2e-legacy}/sparql-editor/actions/show-saved-queries.spec.js +1 -1
- package/{integration → e2e-legacy}/sparql-editor/internationalization.spec.js +4 -1
- package/{integration → e2e-legacy}/sparql-editor/saved-query/edit-query.spec.js +3 -0
- package/e2e-legacy/sparql-editor/saved-query/readonly-query.spec.js +66 -0
- package/{integration → e2e-legacy}/sparql-editor/saved-query/share-query.spec.js +5 -1
- package/{integration → e2e-legacy}/sparql-editor/sparql-editor.spec.js +4 -1
- package/{integration → e2e-legacy}/sparql-editor/yasgui-tabs.spec.js +4 -1
- package/{integration → e2e-legacy}/ttyg/agent-list.spec.js +2 -1
- package/{integration → e2e-legacy}/ttyg/agent-select-menu.spec.js +2 -1
- package/{integration → e2e-legacy}/ttyg/chat-list.spec.js +2 -1
- package/{integration → e2e-legacy}/ttyg/chat-panel.spec.js +2 -1
- package/{integration → e2e-legacy}/ttyg/create-agent.spec.js +10 -3
- package/e2e-legacy/ttyg/edit-agent.spec.js +99 -0
- package/{integration → e2e-legacy}/ttyg/ttyg-permission.spec.js +4 -1
- package/{integration → e2e-legacy}/ttyg/ttyg-view.spec.js +2 -1
- package/fixtures/graph/rdf.txt +130 -0
- package/fixtures/graphdb-import/ontology-and-shapes.ttl +562 -0
- package/fixtures/graphdb-import/swapi-dataset.ttl +4393 -0
- package/fixtures/graphql/endpoints/graphql-endpoints-info.json +49 -0
- package/fixtures/graphql/endpoints/no-graphql-endpoints-info.json +3 -0
- package/fixtures/graphql/soml/big-swapi-schema-broken.yaml +83167 -0
- package/fixtures/graphql/soml/swapi-schema-broken.yaml +880 -0
- package/fixtures/graphql/soml/swapi-schema-broken.zip +0 -0
- package/fixtures/graphql/soml/swapi-schema-film-restricted.yaml +335 -0
- package/fixtures/graphql/soml/swapi-schema-planets.yaml +51 -0
- package/fixtures/graphql/soml/swapi-schema-species.yaml +66 -0
- package/fixtures/graphql/soml/swapi-schema.yaml +857 -0
- package/fixtures/graphql/soml/swapi-schemas.zip +0 -0
- package/fixtures/locale-en.json +668 -46
- package/fixtures/ttyg/agent/get-agent-list-autocomplete-query.json +23 -0
- package/fixtures/ttyg/autocomplete-response.json +154 -0
- package/npm-shrinkwrap.json +3540 -3189
- package/package.json +40 -42
- package/plugins/index.js +59 -6
- package/steps/application-steps.js +7 -0
- package/steps/class-views-steps.js +139 -0
- package/steps/cluster/custer-nodes-configuration-steps.js +1 -1
- package/steps/explore/graphs-overview-steps.js +12 -0
- package/steps/graphql/create-graphql-endpoint-steps.js +277 -0
- package/steps/graphql/edit-graphql-endpoint-steps.js +128 -0
- package/steps/graphql/generation-report-modal-steps.js +34 -0
- package/steps/graphql/graphiql-editor-tools-steps.js +10 -0
- package/steps/graphql/graphiql-playground-steps.js +6 -0
- package/steps/graphql/graphql-endpoint-management-steps.js +147 -0
- package/steps/graphql/graphql-playground-steps.js +90 -0
- package/steps/graphql/import-endpoint-definition-modal-steps.js +80 -0
- package/steps/home-steps.js +4 -3
- package/steps/import/import-settings-dialog-steps.js +12 -0
- package/steps/import/import-steps.js +9 -4
- package/steps/import/import-test-constants.js +1 -0
- package/steps/import/import-user-data-steps.js +8 -0
- package/steps/language-selector-steps.js +2 -2
- package/steps/license-steps.js +1 -1
- package/steps/login-steps.js +20 -0
- package/steps/modal-dialog-steps.js +8 -0
- package/steps/repository-steps.js +12 -2
- package/steps/setup/namespace-steps.js +1 -1
- package/steps/setup/user-and-access-steps.js +165 -11
- package/steps/ttyg/ttyg-agent-settings-modal.steps.js +44 -0
- package/steps/visual-graph-steps.js +14 -0
- package/steps/yasgui/saved-queries-dialog.js +19 -3
- package/stubs/global-operations-statuses-stub.js +2 -2
- package/stubs/graphql/graphql-stubs.js +146 -0
- package/stubs/jdbc/jdbc-stubs.js +1 -1
- package/stubs/license-stubs.js +9 -4
- package/stubs/repositories/repositories-stubs.js +8 -4
- package/stubs/ttyg/ttyg-stubs.js +7 -0
- package/stubs/yasgui/query-stubs.js +2 -2
- package/support/import-commands.js +30 -2
- package/support/repository-commands.js +15 -8
- package/support/security-command.js +49 -8
- package/support/user-commands.js +10 -2
- package/utils/html-util.js +21 -0
- package/Dockerfile +0 -11
- package/fixtures/repositories/get-remote-and-local-repositories.json +0 -34
- package/integration/explore/class.hierarchy.spec.js +0 -266
- package/integration/explore/similarity-index/similarity-index-create.spec.js +0 -333
- package/integration/explore/similarity-index/similarity-index.spec.js +0 -88
- package/integration/explore/similarity-index/similarity.spec.js +0 -628
- package/integration/setup/jdbc/jdbc-create.spec.js +0 -329
- package/integration/setup/jdbc/jdbc.spec.js +0 -161
- package/integration/setup/user-and-access.spec.js +0 -180
- package/integration/ttyg/edit-agent.spec.js +0 -54
- /package/{integration-flaky → e2e-flaky}/import/import-user-data-batch-operations.spec.js +0 -0
- /package/{integration-flaky → e2e-flaky}/import/import.server.files.spec.js +0 -0
- /package/{integration-flaky → e2e-flaky}/sparql-editor/actions/execute-update-query.spec.js +0 -0
- /package/{integration-flaky → e2e-flaky}/sparql-editor/actions/share-query.spec.js +0 -0
- /package/{integration-flaky → e2e-flaky}/sparql-editor/lucene-connector.spec.js +0 -0
- /package/{integration-flaky → e2e-flaky}/sparql-editor/plugins/error-plugin.spec.js +0 -0
- /package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-properties.spec.js +0 -0
- /package/{integration → e2e-legacy}/cluster/cluster-legend.spec.js +0 -0
- /package/{integration → e2e-legacy}/cluster/cluster-states.spec.js +0 -0
- /package/{integration → e2e-legacy}/cluster/edit-cluster-nodes-modal.spec.js +0 -0
- /package/{integration → e2e-legacy}/help/system-information.spec.js +0 -0
- /package/{integration → e2e-legacy}/home/google-analytics.spec.js +0 -0
- /package/{integration → e2e-legacy}/home/workbench.home.spec.js +0 -0
- /package/{integration → e2e-legacy}/import/import-user-data-settings-dialog.spec.js +0 -0
- /package/{integration → e2e-legacy}/monitor/monitor.backup-and-restore.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/delete-rule.spec.js +0 -0
- /package/{integration → e2e-legacy}/setup/aclmanagement/render-rules.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/execute-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/expand-results-over-sameas.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/include-inferred-statements.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/actions/save-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/saved-query/abort-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/saved-query/delete-query.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/yasr/download-as.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/yasr/pagination.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/yasr/table-plugin.spec.js +0 -0
- /package/{integration → e2e-legacy}/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +0 -0
- /package/{integration → e2e-legacy}/ttyg/clone-agent.spec.js +0 -0
- /package/{integration → e2e-legacy}/ttyg/create-chat.spec.js +0 -0
- /package/{integration → e2e-legacy}/ttyg/delete-agent.spec.js +0 -0
- /package/fixtures/{graphql-editor → queries}/default-query-response.json +0 -0
- /package/support/{index.js → e2e.js} +0 -0
package/cypress-flaky.config.js
CHANGED
|
@@ -6,16 +6,23 @@ module.exports = defineConfig({
|
|
|
6
6
|
screenshotsFolder: 'report/screenshots',
|
|
7
7
|
videosFolder: 'report/videos',
|
|
8
8
|
video: true,
|
|
9
|
-
defaultCommandTimeout:
|
|
9
|
+
defaultCommandTimeout: 25000,
|
|
10
10
|
numTestsKeptInMemory: 10,
|
|
11
11
|
e2e: {
|
|
12
12
|
// We've imported your old cypress plugins here.
|
|
13
13
|
// You may want to clean this up later by importing these.
|
|
14
14
|
setupNodeEvents(on, config) {
|
|
15
|
-
return require('./plugins
|
|
15
|
+
return require('./plugins')(on, config);
|
|
16
16
|
},
|
|
17
17
|
baseUrl: 'http://localhost:9000',
|
|
18
|
-
specPattern: '
|
|
19
|
-
supportFile: 'support/
|
|
18
|
+
specPattern: 'e2e-flaky/**/*.{js,jsx,ts,tsx}',
|
|
19
|
+
supportFile: 'support/e2e.js',
|
|
20
|
+
reporter: "cypress-multi-reporters",
|
|
21
|
+
reporterOptions: {
|
|
22
|
+
configFile: 'cypress-reporter-config.json'
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
env: {
|
|
26
|
+
set_default_user_data: true
|
|
20
27
|
}
|
|
21
28
|
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const {defineConfig} = require('cypress');
|
|
2
|
+
|
|
3
|
+
module.exports = defineConfig({
|
|
4
|
+
projectId: 'v35btb',
|
|
5
|
+
fixturesFolder: 'fixtures',
|
|
6
|
+
screenshotsFolder: 'report/screenshots',
|
|
7
|
+
videosFolder: 'report/videos',
|
|
8
|
+
video: true,
|
|
9
|
+
defaultCommandTimeout: 25000,
|
|
10
|
+
numTestsKeptInMemory: 10,
|
|
11
|
+
e2e: {
|
|
12
|
+
// We've imported your old cypress plugins here.
|
|
13
|
+
// You may want to clean this up later by importing these.
|
|
14
|
+
setupNodeEvents(on, config) {
|
|
15
|
+
return require('./plugins')(on, config);
|
|
16
|
+
},
|
|
17
|
+
baseUrl: 'http://localhost:9000',
|
|
18
|
+
specPattern: 'e2e-legacy/**/*.{js,jsx,ts,tsx}',
|
|
19
|
+
supportFile: 'support/e2e.js',
|
|
20
|
+
reporter: "cypress-multi-reporters",
|
|
21
|
+
reporterOptions: {
|
|
22
|
+
configFile: 'cypress-reporter-config.json'
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
env: {
|
|
26
|
+
set_default_user_data: true
|
|
27
|
+
}
|
|
28
|
+
});
|
package/cypress.config.js
CHANGED
|
@@ -6,17 +6,23 @@ module.exports = defineConfig({
|
|
|
6
6
|
screenshotsFolder: 'report/screenshots',
|
|
7
7
|
videosFolder: 'report/videos',
|
|
8
8
|
video: true,
|
|
9
|
-
|
|
9
|
+
screenshotOnRunFailure: true,
|
|
10
|
+
trashAssetsBeforeRuns: true,
|
|
11
|
+
defaultCommandTimeout: 40000,
|
|
10
12
|
numTestsKeptInMemory: 10,
|
|
11
13
|
e2e: {
|
|
14
|
+
retries: {
|
|
15
|
+
runMode: 2,
|
|
16
|
+
openMode: 0
|
|
17
|
+
},
|
|
12
18
|
// We've imported your old cypress plugins here.
|
|
13
19
|
// You may want to clean this up later by importing these.
|
|
14
20
|
setupNodeEvents(on, config) {
|
|
15
|
-
return require('./plugins
|
|
21
|
+
return require('./plugins')(on, config);
|
|
16
22
|
},
|
|
17
23
|
baseUrl: 'http://localhost:9000',
|
|
18
|
-
specPattern: '
|
|
19
|
-
supportFile: 'support/
|
|
24
|
+
specPattern: 'e2e/**/*.{js,jsx,ts,tsx}',
|
|
25
|
+
supportFile: 'support/e2e.js',
|
|
20
26
|
reporter: "cypress-multi-reporters",
|
|
21
27
|
reporterOptions: {
|
|
22
28
|
configFile: 'cypress-reporter-config.json'
|
|
@@ -25,7 +25,10 @@ describe('Visual graph screen validation', () => {
|
|
|
25
25
|
cy.presetRepository(repositoryId);
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* TODO: Fix me. Broken due to migration (Error: unknown)
|
|
30
|
+
*/
|
|
31
|
+
it.skip('CRUD on saved graph', () => {
|
|
29
32
|
const graphConfigName = 'MyGraphConfig_' + Date.now();
|
|
30
33
|
const namedGraph = 'myGraph_' + Date.now();
|
|
31
34
|
const renamedGraph = 'myRenamedGraph_' + Date.now();
|
|
@@ -18,7 +18,7 @@ describe('Import server files - Operations', {retries: {runMode: 2}}, () => {
|
|
|
18
18
|
repositoryId = 'server-import-' + Date.now();
|
|
19
19
|
cy.createRepository({id: repositoryId});
|
|
20
20
|
ImportServerFilesSteps.visitServerImport(repositoryId);
|
|
21
|
-
ImportServerFilesSteps.getResources().should('have.length',
|
|
21
|
+
ImportServerFilesSteps.getResources().should('have.length', 18);
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
afterEach(() => {
|
|
@@ -6,6 +6,7 @@ import {MainMenuSteps} from "../../steps/main-menu-steps";
|
|
|
6
6
|
import {RepositorySelectorSteps} from "../../steps/repository-selector-steps";
|
|
7
7
|
import {SparqlTemplatesSteps} from "../../steps/setup/sparql-templates-steps";
|
|
8
8
|
|
|
9
|
+
// TODO: Fix me. Broken due to migration (Error: beforeEach)
|
|
9
10
|
describe('SPARQL create template', () => {
|
|
10
11
|
|
|
11
12
|
let repositoryId;
|
|
@@ -44,7 +45,10 @@ describe('SPARQL create template', () => {
|
|
|
44
45
|
SparqlCreateUpdateSteps.getInvalidQueryElement().contains('Invalid query');
|
|
45
46
|
});
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
/**
|
|
49
|
+
* TODO: Fix me. Broken due to migration (Repository selector changed)
|
|
50
|
+
*/
|
|
51
|
+
it.skip('should display confirm dialog I am updating a sparql template and change the repository', {
|
|
48
52
|
retries: {
|
|
49
53
|
runMode: 1,
|
|
50
54
|
openMode: 0
|
|
@@ -112,7 +116,10 @@ describe('SPARQL create template', () => {
|
|
|
112
116
|
RepositorySelectorSteps.getSelectedRepository().contains(repositoryId);
|
|
113
117
|
});
|
|
114
118
|
|
|
115
|
-
|
|
119
|
+
/**
|
|
120
|
+
* TODO: Fix me. Broken due to migration (Changes in main menu)
|
|
121
|
+
*/
|
|
122
|
+
it.skip('should confirm me before navigate when query is changed', {
|
|
116
123
|
retries: {
|
|
117
124
|
runMode: 1,
|
|
118
125
|
openMode: 0
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {UserAndAccessSteps} from "../../../steps/setup/user-and-access-steps";
|
|
2
|
+
import {RepositoriesStubs} from "../../../stubs/repositories/repositories-stubs";
|
|
3
|
+
import {ModalDialogSteps} from "../../../steps/modal-dialog-steps";
|
|
4
|
+
import {ToasterSteps} from "../../../steps/toaster-steps";
|
|
5
|
+
import {LoginSteps} from "../../../steps/login-steps";
|
|
6
|
+
|
|
7
|
+
const DEFAULT_ADMIN_PASSWORD = "root";
|
|
8
|
+
// Moved out of the standard test suite, because Cypress can't verify Free Access is ON in CI
|
|
9
|
+
/**
|
|
10
|
+
* TODO: Fix me. Broken due to migration (loader is not implemented)
|
|
11
|
+
*/
|
|
12
|
+
describe.skip('Security and Free Access', () => {
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
UserAndAccessSteps.visit();
|
|
15
|
+
cy.window();
|
|
16
|
+
// Users table should be visible
|
|
17
|
+
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
UserAndAccessSteps.visit();
|
|
22
|
+
UserAndAccessSteps.getToggleSecurityCheckbox()
|
|
23
|
+
.then(($toggle) => {
|
|
24
|
+
if ($toggle.prop('checked')) {
|
|
25
|
+
// Uncheck the security toggle button at the end of each test, if it is checked
|
|
26
|
+
UserAndAccessSteps.toggleSecurity();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('should toggle free access after Admin has logged in', () => {
|
|
32
|
+
// Given I have available repositories to allow Free Access for
|
|
33
|
+
RepositoriesStubs.stubRepositories();
|
|
34
|
+
// When I enable security
|
|
35
|
+
UserAndAccessSteps.toggleSecurity();
|
|
36
|
+
// When I log in as an Admin
|
|
37
|
+
LoginSteps.loginWithUser("admin", DEFAULT_ADMIN_PASSWORD);
|
|
38
|
+
// Then the page should load
|
|
39
|
+
UserAndAccessSteps.getSplashLoader().should('not.be.visible');
|
|
40
|
+
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
41
|
+
// The Free Access toggle should be OFF
|
|
42
|
+
UserAndAccessSteps.getFreeAccessSwitchInput().should('not.be.checked');
|
|
43
|
+
// When I toggle Free Access ON
|
|
44
|
+
UserAndAccessSteps.toggleFreeAccess();
|
|
45
|
+
// Then I click OK in the modal
|
|
46
|
+
ModalDialogSteps.clickOKButton();
|
|
47
|
+
// Then the toggle button should be ON
|
|
48
|
+
UserAndAccessSteps.getFreeAccessSwitchInput().should('be.checked');
|
|
49
|
+
// And I should see a success message
|
|
50
|
+
ToasterSteps.verifySuccess('Free access has been enabled.');
|
|
51
|
+
UserAndAccessSteps.getUsersTable().should('be.visible');
|
|
52
|
+
// When I toggle Free Access OFF
|
|
53
|
+
UserAndAccessSteps.toggleFreeAccess();
|
|
54
|
+
// Then I should see a success message
|
|
55
|
+
ToasterSteps.verifySuccess('Free access has been disabled.');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
@@ -5,7 +5,8 @@ import {YasrSteps} from "../../../steps/yasgui/yasr-steps";
|
|
|
5
5
|
import {ApplicationSteps} from "../../../steps/application-steps";
|
|
6
6
|
import {TablePluginSteps} from "../../../steps/yasgui/table-plugin-steps";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
//TODO: Fix me. Broken due to migration (Error: beforeEach)
|
|
9
|
+
describe.skip('Yasr Table plugin', () => {
|
|
9
10
|
let repositoryId;
|
|
10
11
|
beforeEach(() => {
|
|
11
12
|
repositoryId = 'sparql-editor-' + Date.now();
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
|
|
2
|
+
import {RepositoriesStub} from "../../stubs/repositories-stub";
|
|
3
|
+
import {UserAndAccessSteps} from "../../steps/setup/user-and-access-steps";
|
|
4
|
+
import {TTYGStubs} from "../../stubs/ttyg/ttyg-stubs";
|
|
5
|
+
import {TTYGViewSteps} from "../../steps/ttyg/ttyg-view-steps";
|
|
6
|
+
import {LoginSteps} from "../../steps/login-steps";
|
|
7
|
+
|
|
8
|
+
const USER_WITH_ROLE_USER = 'ttyg_user';
|
|
9
|
+
const USER_WITH_ROLE_REPO_MANAGER = 'ttyg_repo_manager';
|
|
10
|
+
const USER_ADMINISTRATOR = 'admin';
|
|
11
|
+
const PASSWORD = 'root';
|
|
12
|
+
const ENABLED = true;
|
|
13
|
+
const DISABLED = false;
|
|
14
|
+
|
|
15
|
+
describe('TTYG permissions', () => {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
before(() => {
|
|
19
|
+
RepositoriesStubs.stubRepositories(0, '/repositories/get-ttyg-repositories.json');
|
|
20
|
+
RepositoriesStub.stubBaseEndpoints('starwars');
|
|
21
|
+
cy.presetRepository('starwars');
|
|
22
|
+
cy.createUser({username: USER_WITH_ROLE_USER, password: PASSWORD});
|
|
23
|
+
cy.createUser({
|
|
24
|
+
username: USER_WITH_ROLE_REPO_MANAGER,
|
|
25
|
+
password: PASSWORD,
|
|
26
|
+
grantedAuthorities: ["ROLE_REPO_MANAGER", "WRITE_REPO_*", "READ_REPO_*"]
|
|
27
|
+
});
|
|
28
|
+
UserAndAccessSteps.visit();
|
|
29
|
+
UserAndAccessSteps.toggleSecurity();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
after(() => {
|
|
33
|
+
UserAndAccessSteps.visit();
|
|
34
|
+
LoginSteps.loginWithUser(USER_ADMINISTRATOR, PASSWORD);
|
|
35
|
+
UserAndAccessSteps.toggleSecurity();
|
|
36
|
+
cy.deleteUser(USER_WITH_ROLE_USER);
|
|
37
|
+
cy.deleteUser(USER_WITH_ROLE_REPO_MANAGER);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should disable all buttons that can modify the agent', () => {
|
|
41
|
+
|
|
42
|
+
// When I log in with a user who has the ROLE_USER role, I expect all buttons modifying the agent to be disabled.
|
|
43
|
+
verifyCanCreateAgentForFirstTime(USER_WITH_ROLE_USER, PASSWORD, DISABLED);
|
|
44
|
+
|
|
45
|
+
// When I log in with a user who has the ROLE_REPO_MANAGER role, I expect all buttons modifying the agent to be enabled.
|
|
46
|
+
verifyCanCreateAgentForFirstTime(USER_WITH_ROLE_REPO_MANAGER, PASSWORD, ENABLED);
|
|
47
|
+
|
|
48
|
+
// When I log in with a user who is administrator, I expect all buttons modifying the agent to be enabled.
|
|
49
|
+
verifyCanCreateAgentForFirstTime(USER_ADMINISTRATOR, PASSWORD, ENABLED);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
function verifyCanCreateAgentForFirstTime(user, password, enable) {
|
|
53
|
+
const shouldBe = enable ? 'be.enabled' : 'be.disabled';
|
|
54
|
+
TTYGStubs.stubAgentListGet('/ttyg/agent/get-agent-list-0.json');
|
|
55
|
+
TTYGViewSteps.visit();
|
|
56
|
+
LoginSteps.loginWithUser(user, password);
|
|
57
|
+
TTYGViewSteps.getCreateFirstAgentButton().should(shouldBe);
|
|
58
|
+
TTYGStubs.stubChatsListGet();
|
|
59
|
+
TTYGStubs.stubAgentListGet();
|
|
60
|
+
TTYGStubs.stubChatGet();
|
|
61
|
+
TTYGViewSteps.visit();
|
|
62
|
+
TTYGViewSteps.getCreateAgentButton().should(shouldBe);
|
|
63
|
+
TTYGViewSteps.getEditCurrentAgentButton().should(shouldBe);
|
|
64
|
+
TTYGViewSteps.getToggleAgentsSidebarButton().should(shouldBe);
|
|
65
|
+
LoginSteps.logout();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
@@ -6,7 +6,10 @@ import {ClusterConfigurationSteps} from "../../../steps/cluster/cluster-configur
|
|
|
6
6
|
import {ModalDialogSteps} from "../../../steps/modal-dialog-steps";
|
|
7
7
|
import {ApplicationSteps} from "../../../steps/application-steps";
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* TODO: Fix me. Broken due to migration (Error: unknown)
|
|
11
|
+
*/
|
|
12
|
+
describe.skip('Cluster configuration', () => {
|
|
10
13
|
let repositoryId;
|
|
11
14
|
|
|
12
15
|
beforeEach(() => {
|
package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration-nodes.spec.js
RENAMED
|
@@ -18,7 +18,10 @@ describe('Cluster configuration', () => {
|
|
|
18
18
|
RemoteLocationStubs.stubRemoteLocationStatusInCluster();
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* TODO: Fix me. Broken due to migration (Error: unknown)
|
|
23
|
+
*/
|
|
24
|
+
it.skip('should display the nodes list with correct node information in the modal', () => {
|
|
22
25
|
// Given I have opened the cluster management page
|
|
23
26
|
ClusterPageSteps.visit();
|
|
24
27
|
// When I click on edit properties and open Nodes tab
|
package/{integration → e2e-legacy}/cluster/cluster-configuration/cluster-configuration.spec.js
RENAMED
|
@@ -12,7 +12,10 @@ describe('Cluster configuration', () => {
|
|
|
12
12
|
GlobalOperationsStatusesStub.stubNoOperationsResponse(repositoryId);
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* TODO: Broken due to migration (Error: unknown)
|
|
17
|
+
*/
|
|
18
|
+
it.skip('Should display cluster configuration', () => {
|
|
16
19
|
// Given there is an existing cluster created
|
|
17
20
|
ClusterStubs.stubClusterConfig();
|
|
18
21
|
ClusterStubs.stubClusterGroupStatus();
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import ClassViewsSteps, {ALL_GRAPHS, GRAPH_FILE, NEWS_GRAPH} from "../../steps/class-views-steps";
|
|
2
|
+
|
|
3
|
+
const INITIAL_CLASS_COUNT = 50;
|
|
4
|
+
const CLASS_COUNT_OF_NEWS_GRAPH = 35;
|
|
5
|
+
const FILE_TO_IMPORT = 'wine.rdf';
|
|
6
|
+
const CLASS_HIERARCHY = 'class hierarchy';
|
|
7
|
+
|
|
8
|
+
// TODO: Fix me. Broken due to migration (Error: beforeEach)
|
|
9
|
+
describe.skip('Class hierarchy screen validation', () => {
|
|
10
|
+
let repositoryId;
|
|
11
|
+
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
repositoryId = 'repo' + Date.now();
|
|
14
|
+
cy.createRepository({id: repositoryId});
|
|
15
|
+
cy.presetRepository(repositoryId);
|
|
16
|
+
cy.importServerFile(repositoryId, FILE_TO_IMPORT);
|
|
17
|
+
ClassViewsSteps.visit();
|
|
18
|
+
ClassViewsSteps.waitForPageLoad();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
cy.deleteRepository(repositoryId);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should have an initial state of the diagram with a class count of 50', () => {
|
|
26
|
+
verifyCounterValue(INITIAL_CLASS_COUNT);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('should show/hide prefixes', () => {
|
|
30
|
+
// Given I verify that switching on/off Show/hide prefixes is reflected on the diagram - prefixes are displayed/hidden
|
|
31
|
+
verifyPrefixes(($element) => cy.wrap($element.text()).should('contain', ':'));
|
|
32
|
+
|
|
33
|
+
// Because some of the labels are truncated and is not guaranteed,
|
|
34
|
+
// that after calling cy.get labels will be in the same order,
|
|
35
|
+
// get the initial value of 'Chardonnay' label's text
|
|
36
|
+
// When I get the initial value of 'Chardonnay' label's text
|
|
37
|
+
ClassViewsSteps.getMainGroupTextLabel()
|
|
38
|
+
.contains('Chardonnay')
|
|
39
|
+
.invoke('text')
|
|
40
|
+
.then((initialVal) => {
|
|
41
|
+
// When I switch "show prefixes" to off
|
|
42
|
+
ClassViewsSteps.getToolbarPrefixToggleButton()
|
|
43
|
+
.scrollIntoView()
|
|
44
|
+
.should('be.visible');
|
|
45
|
+
// Then I toggle the prefixes
|
|
46
|
+
ClassViewsSteps.clickPrefixToggleButton();
|
|
47
|
+
// Then I wait until the value of the 'Chardonnay' label has changed
|
|
48
|
+
ClassViewsSteps.getMainGroupTextLabel()
|
|
49
|
+
.contains('Chardonnay')
|
|
50
|
+
.invoke('text')
|
|
51
|
+
.should((newVal) => {
|
|
52
|
+
expect(newVal).not.to.equal(initialVal);
|
|
53
|
+
});
|
|
54
|
+
// Then I verify that prefixes are removed from diagram
|
|
55
|
+
verifyPrefixes(($element) => {
|
|
56
|
+
cy.wrap($element.text()).should('not.contain', ':');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('should focus on diagram', () => {
|
|
62
|
+
// This must not be a top-level class, and it must have no children, otherwise asserting the zooming becomes tricky
|
|
63
|
+
const className = ':SweetRiesling';
|
|
64
|
+
// Given the class is not expanded
|
|
65
|
+
verifyClassFocus(className, false);
|
|
66
|
+
// When I search for a class
|
|
67
|
+
searchForClass(className);
|
|
68
|
+
// Then I expect the class to become expanded
|
|
69
|
+
verifyClassFocus(className, true);
|
|
70
|
+
// When a class is focused in diagram a side panel is opened on the right and covers the buttons toolbar
|
|
71
|
+
ClassViewsSteps.closeInfoSidePanel();
|
|
72
|
+
// Then I close the side panel
|
|
73
|
+
ClassViewsSteps.getInfoSidePanelCloseButton().should('not.be.visible');
|
|
74
|
+
// Then I focus the diagram
|
|
75
|
+
ClassViewsSteps.focusDiagram();
|
|
76
|
+
// Then I verify that the diagram zooms out, without resetting the class count
|
|
77
|
+
ClassViewsSteps.findClassByName(className);
|
|
78
|
+
ClassViewsSteps.getClassInHierarchy().then(verifyClassIsNotExpanded);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('should reload diagram', () => {
|
|
82
|
+
// Given I change the initial class count (50) to a custom value
|
|
83
|
+
ClassViewsSteps.positionSlider('center');
|
|
84
|
+
// Then I confirm the diagram has reloaded
|
|
85
|
+
reloadDiagramAndVerify(INITIAL_CLASS_COUNT);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('should export diagram', () => {
|
|
89
|
+
// Given I verify that the diagram converted to svg. It should be present as a base64 encoded string in the href attribute.
|
|
90
|
+
// Note: This is done in the 'mouseover' callback for the link
|
|
91
|
+
// (https://github.com/Ontotext-AD/graphdb-workbench/blob/master/src/js/angular/graphexplore/directives/rdf-class-hierarchy.directive.js#L123)
|
|
92
|
+
ClassViewsSteps.mouseOverSVGButton()
|
|
93
|
+
.should('have.attr', 'download', `class-hierarchy-${repositoryId}.svg`)
|
|
94
|
+
.should('have.attr', 'href')
|
|
95
|
+
.and('not.be.empty')
|
|
96
|
+
.and('include', 'data:image/svg+xml;charset=utf-8;base64,');
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('should search for a class', () => {
|
|
100
|
+
const className = 'wine';
|
|
101
|
+
ClassViewsSteps.getSearchInputDropdown()
|
|
102
|
+
.should('not.be.visible');
|
|
103
|
+
// When I search for a class
|
|
104
|
+
searchForClass(className);
|
|
105
|
+
// Then a list of suggestions is displayed
|
|
106
|
+
ClassViewsSteps.getSearchInputDropdown()
|
|
107
|
+
.should('be.visible')
|
|
108
|
+
.and('length.be.gt', 0);
|
|
109
|
+
// When I click on a specific element that isn't a top-level one and has children,
|
|
110
|
+
// otherwise it gets tricky to assert whether it was zoomed
|
|
111
|
+
ClassViewsSteps.getSearchInputDropdown()
|
|
112
|
+
.contains('WineColor')
|
|
113
|
+
.then(($el) => {
|
|
114
|
+
const selectedClassName = $el.text().trim();
|
|
115
|
+
|
|
116
|
+
// Then I find the selected class from the drop-down menu and verify that it isn't expanded
|
|
117
|
+
ClassViewsSteps.findClassByName(selectedClassName);
|
|
118
|
+
ClassViewsSteps.getClassInHierarchy().then(verifyClassIsNotExpanded);
|
|
119
|
+
// And I click the class name element
|
|
120
|
+
ClassViewsSteps.clickJQueryElement(cy.wrap($el));
|
|
121
|
+
|
|
122
|
+
// Then I find the selected class from the drop-down menu and verify that it is expanded
|
|
123
|
+
ClassViewsSteps.findClassByName(selectedClassName);
|
|
124
|
+
ClassViewsSteps.getClassInHierarchy().then(verifyClassIsExpanded);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('should load domain range graph', () => {
|
|
129
|
+
const className = ':Region';
|
|
130
|
+
// When I search for a class
|
|
131
|
+
searchForClass(className);
|
|
132
|
+
// And I open a domain range graph
|
|
133
|
+
ClassViewsSteps.openDomainRangeGraph();
|
|
134
|
+
// Then the graph should contain all necessary data
|
|
135
|
+
ClassViewsSteps.getDomainRangeGraphHeader()
|
|
136
|
+
.should('contain', 'Domain-Range graph');
|
|
137
|
+
ClassViewsSteps.getLegendContainer()
|
|
138
|
+
.should('be.visible');
|
|
139
|
+
ClassViewsSteps.getLegendContainer()
|
|
140
|
+
.should('contain', 'main class node')
|
|
141
|
+
.and('contain', 'class node')
|
|
142
|
+
.and('contain', 'collapsed property');
|
|
143
|
+
ClassViewsSteps.getMainDomainRangeDiagram()
|
|
144
|
+
.should('be.visible');
|
|
145
|
+
ClassViewsSteps.getMainDomainRangeDiagram()
|
|
146
|
+
.should('contain', className)
|
|
147
|
+
.and('contain', 'locatedIn')
|
|
148
|
+
.and('contain', ':adjacentRegion')
|
|
149
|
+
.and('contain', 'owl:Thing');
|
|
150
|
+
ClassViewsSteps.getReturnButton()
|
|
151
|
+
.should('be.visible');
|
|
152
|
+
ClassViewsSteps.goBack();
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
it('should load class-hierarchy for given graph', () => {
|
|
156
|
+
cy.importServerFile(repositoryId, GRAPH_FILE, {"context": NEWS_GRAPH});
|
|
157
|
+
// Given I re-enter the page to display Graph dropdown
|
|
158
|
+
ClassViewsSteps.visit();
|
|
159
|
+
ClassViewsSteps.verifyDataChangedWarning();
|
|
160
|
+
verifyCounterValue(INITIAL_CLASS_COUNT);
|
|
161
|
+
ClassViewsSteps.verifyGraphIsDisplayed(ALL_GRAPHS);
|
|
162
|
+
// When I reload the diagram
|
|
163
|
+
reloadDiagramAndVerify(INITIAL_CLASS_COUNT + CLASS_COUNT_OF_NEWS_GRAPH);
|
|
164
|
+
ClassViewsSteps.clickGraphBtn();
|
|
165
|
+
// Then I can see the correct graph is displayed
|
|
166
|
+
ClassViewsSteps.selectGraphFromDropDown(NEWS_GRAPH);
|
|
167
|
+
ClassViewsSteps.verifyGraphIsDisplayed(NEWS_GRAPH);
|
|
168
|
+
verifyCounterValue(CLASS_COUNT_OF_NEWS_GRAPH);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
function searchForClass(name) {
|
|
172
|
+
ClassViewsSteps.searchForClass();
|
|
173
|
+
ClassViewsSteps.searchForClassName(name);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function verifyPrefixes(expectation) {
|
|
177
|
+
ClassViewsSteps.getMainGroupTextLabel()
|
|
178
|
+
.filter(':visible')
|
|
179
|
+
.each(expectation);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function verifyClassIsNotExpanded($element) {
|
|
183
|
+
// This works well only for classes that aren't top level and have no children
|
|
184
|
+
return cy.wrap($element)
|
|
185
|
+
.should('have.css', 'display')
|
|
186
|
+
.and('eq', 'none');
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function verifyClassIsExpanded($element) {
|
|
190
|
+
// This works well only for classes that aren't top level and have no children
|
|
191
|
+
return cy.wrap($element)
|
|
192
|
+
.should('have.css', 'display')
|
|
193
|
+
.and('not.eq', 'none');
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function verifyCounterValue(classCount) {
|
|
197
|
+
ClassViewsSteps.getCurrentSliderValue()
|
|
198
|
+
.should('be.visible')
|
|
199
|
+
.and('have.attr', 'aria-valuenow', classCount);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
function reloadDiagramAndVerify(expectedClassCount) {
|
|
203
|
+
ClassViewsSteps.reloadDiagram();
|
|
204
|
+
ClassViewsSteps.waitForPageLoad();
|
|
205
|
+
ClassViewsSteps.confirmReloadWarningAppear(CLASS_HIERARCHY);
|
|
206
|
+
ClassViewsSteps.confirmReload();
|
|
207
|
+
verifyCounterValue(expectedClassCount);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
function verifyClassFocus(className, expanded) {
|
|
211
|
+
ClassViewsSteps.findClassByName(className);
|
|
212
|
+
ClassViewsSteps.getClassInHierarchy().then(expanded ? verifyClassIsExpanded : verifyClassIsNotExpanded);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
@@ -2,7 +2,8 @@ import ClassViewsSteps, {ALL_GRAPHS, GRAPH_FILE, NEWS_GRAPH} from "../../steps/c
|
|
|
2
2
|
|
|
3
3
|
const FILE_TO_IMPORT = 'wine.rdf';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// TODO: Fix me. Broken due to migration (Error: beforeEach)
|
|
6
|
+
describe.skip('Class relations screen validation', () => {
|
|
6
7
|
|
|
7
8
|
let repositoryId;
|
|
8
9
|
|
|
@@ -4,9 +4,10 @@ import {JsonLdModalSteps} from "../../steps/json-ld-modal-steps";
|
|
|
4
4
|
|
|
5
5
|
const EXPORT_GRAPHS_TABLE_ID = '#export-graphs';
|
|
6
6
|
const ROWS_PER_PAGE_20 = '1';
|
|
7
|
-
const
|
|
7
|
+
const ROWS_PER_PAGE_50 = '2';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
// TODO: Fix me. Broken due to migration (Error: beforeEach)
|
|
10
|
+
describe.skip('Graphs overview screen validation', () => {
|
|
10
11
|
|
|
11
12
|
let repositoryId;
|
|
12
13
|
|
|
@@ -27,7 +28,7 @@ describe('Graphs overview screen validation', () => {
|
|
|
27
28
|
cy.visit('/graphs');
|
|
28
29
|
cy.window();
|
|
29
30
|
// Assume that page is loaded once the table has rendered all expected elements.
|
|
30
|
-
verifyVisibleGraphsCount(
|
|
31
|
+
verifyVisibleGraphsCount(50);
|
|
31
32
|
});
|
|
32
33
|
|
|
33
34
|
afterEach(() => {
|
|
@@ -69,7 +70,7 @@ describe('Graphs overview screen validation', () => {
|
|
|
69
70
|
GraphsOverviewSteps.getPaginations()
|
|
70
71
|
.should('be.visible')
|
|
71
72
|
.and('contain', '3');
|
|
72
|
-
GraphsOverviewSteps.getTopPaginationLinks().should('have.length',
|
|
73
|
+
GraphsOverviewSteps.getTopPaginationLinks().should('have.length', 6);
|
|
73
74
|
verifyGraphExistence('The default graph');
|
|
74
75
|
});
|
|
75
76
|
|
|
@@ -81,11 +82,11 @@ describe('Graphs overview screen validation', () => {
|
|
|
81
82
|
// Switch through pages and verify that the respective pager button is active.
|
|
82
83
|
selectPage(2).should('contain', '2')
|
|
83
84
|
.closest('li').should('have.class', 'active');
|
|
84
|
-
verifyGraphExistence('urn:
|
|
85
|
+
verifyGraphExistence('urn:50');
|
|
85
86
|
|
|
86
87
|
selectPage(3).should('contain', '3')
|
|
87
88
|
.closest('li').should('have.class', 'active');
|
|
88
|
-
verifyGraphExistence('urn:
|
|
89
|
+
verifyGraphExistence('urn:100');
|
|
89
90
|
});
|
|
90
91
|
});
|
|
91
92
|
|
|
@@ -95,18 +96,18 @@ describe('Graphs overview screen validation', () => {
|
|
|
95
96
|
selectItemFromMenu(ROWS_PER_PAGE_20);
|
|
96
97
|
verifyGraphExistence('urn:19');
|
|
97
98
|
|
|
98
|
-
selectItemFromMenu(
|
|
99
|
+
selectItemFromMenu(ROWS_PER_PAGE_50);
|
|
99
100
|
verifyGraphExistence('urn:1');
|
|
100
|
-
verifyGraphExistence('urn:
|
|
101
|
+
verifyGraphExistence('urn:49');
|
|
101
102
|
});
|
|
102
103
|
|
|
103
104
|
it('Test graphs overview search', () => {
|
|
104
|
-
// Default items/rows per page is
|
|
105
|
-
verifyVisibleGraphsCount(
|
|
105
|
+
// Default items/rows per page is 50.
|
|
106
|
+
verifyVisibleGraphsCount(50);
|
|
106
107
|
// Type graph name in the filter field and verify that proper graphs remain visible in the
|
|
107
108
|
// table.
|
|
108
109
|
cy.get('.search-graphs').type('urn:2');
|
|
109
|
-
verifyVisibleGraphsCount(
|
|
110
|
+
verifyVisibleGraphsCount(11);
|
|
110
111
|
verifyGraphExistence('urn:2');
|
|
111
112
|
verifyGraphExistence('urn:11', false);
|
|
112
113
|
});
|
|
@@ -190,4 +191,12 @@ describe('Graphs overview screen validation', () => {
|
|
|
190
191
|
// And the file should have downloaded
|
|
191
192
|
JsonLdModalSteps.verifyFileExists('statements.jsonld');
|
|
192
193
|
});
|
|
194
|
+
|
|
195
|
+
it('Should be able to download all graphs using the "Download all graphs" button', () => {
|
|
196
|
+
// When I load the graphs overview page and click on "Download all graphs".
|
|
197
|
+
GraphsOverviewSteps.clickOnDownloadAllButton();
|
|
198
|
+
|
|
199
|
+
// Then I expect all graphs to be downloaded.
|
|
200
|
+
GraphsOverviewSteps.verifyFileExists('contexts.srj');
|
|
201
|
+
});
|
|
193
202
|
});
|