graphdb-workbench-tests 3.1.0-WBM-8 → 3.1.0-plugins1
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/.nycrc +10 -0
- package/cypress-legacy.config.js +9 -1
- package/cypress-security.config.js +40 -0
- package/cypress.config.js +3 -1
- package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
- package/e2e-legacy/cluster/edit-cluster-nodes-modal.spec.js +44 -0
- package/e2e-legacy/explore/class-hierarchy/class.hierarchy.spec.js +1 -2
- package/e2e-legacy/explore/graphs-overview/graphs.overview.spec.js +2 -3
- package/e2e-legacy/explore/visual-graph/graphs-config.spec.js +5 -18
- package/e2e-legacy/explore/visual-graph/visual.graph.spec.js +1 -2
- package/e2e-legacy/graphql/activate-deactivate-graphql-endpoint.spec.js +1 -1
- package/e2e-legacy/graphql/create-graphql-endpoint.spec.js +1 -3
- package/e2e-legacy/graphql/delete-graphql-endpoint.spec.js +1 -1
- package/e2e-legacy/graphql/edit-graphql-enpoint.spec.js +1 -1
- package/e2e-legacy/graphql/export-graphql-endpoint-definition.spec.js +1 -1
- package/e2e-legacy/graphql/filter-graphql-endpoints-on-management-view.spec.js +2 -2
- package/e2e-legacy/graphql/graphql-endpoint-management-view.spec.js +5 -5
- package/e2e-legacy/graphql/graphql-playground.spec.js +1 -1
- package/e2e-legacy/graphql/import-graphql-endpoint-definitions.spec.js +1 -7
- package/e2e-legacy/graphql/set-default-graphql-endpoint.spec.js +1 -1
- package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
- package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
- package/e2e-legacy/{guides → help/guides}/movies-interactive-guide.spec.js +2 -2
- package/e2e-legacy/{guides → help/guides}/star-wars-interactive-guide.js +2 -2
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
- package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
- package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
- package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
- package/e2e-legacy/home/cookie-policy.spec.js +78 -59
- package/e2e-legacy/home/create-repository.spec.js +2 -6
- package/e2e-legacy/home/documentation-link.spec.js +31 -33
- package/e2e-legacy/home/google-analytics.spec.js +4 -6
- package/e2e-legacy/home/rdf-resource-search.spec.js +106 -138
- package/e2e-legacy/home/view-resource-autocomplete.spec.js +30 -21
- package/e2e-legacy/import/import-server-files-batch-operations.spec.js +1 -2
- package/e2e-legacy/import/import-server-files.spec.js +1 -2
- package/e2e-legacy/import/import-user-data-url.spec.js +1 -25
- package/e2e-legacy/import/import-user-data.spec.js +4 -2
- package/e2e-legacy/import/import-view.spec.js +1 -2
- package/e2e-legacy/monitor/global-operation-statuses-component.spec.js +13 -9
- package/e2e-legacy/repository/attach-remote-location.spec.js +2 -5
- package/e2e-legacy/repository/ontop-repository.spec.js +3 -12
- package/e2e-legacy/repository/repositories.spec.js +35 -46
- package/e2e-legacy/setup/aclmanagement/create-rule.spec.js +1 -2
- package/e2e-legacy/setup/aclmanagement/edit-rule.spec.js +1 -2
- package/e2e-legacy/setup/aclmanagement/reorder-rules.spec.js +1 -2
- package/e2e-legacy/setup/aclmanagement/scopes.spec.js +1 -2
- package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
- package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
- package/e2e-legacy/setup/{autocomplete.spec.js → autocomplete/autocomplete.spec.js} +5 -6
- package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
- package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
- package/e2e-legacy/setup/connectors-lucene.spec.js +1 -2
- package/e2e-legacy/setup/jdbc/jdbc-create.spec.js +2 -2
- package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
- package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
- package/e2e-legacy/setup/{namespaces.spec.js → namespaces/namespaces.spec.js} +4 -4
- package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
- package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
- package/e2e-legacy/setup/{plugins.spec.js → plugins/plugins.spec.js} +3 -3
- package/e2e-legacy/setup/sparql-template/sparql-template-create.js +10 -3
- package/e2e-legacy/setup/users-and-access/user-and-access.spec.js +38 -9
- package/e2e-legacy/sparql-editor/saved-query/edit-query.spec.js +3 -6
- package/e2e-legacy/sparql-editor/saved-query/readonly-query.spec.js +7 -13
- package/e2e-legacy/sparql-editor/saved-query/share-query.spec.js +2 -4
- package/e2e-legacy/sparql-editor/sparql-editor.spec.js +1 -4
- package/e2e-legacy/ttyg/agent-list.spec.js +38 -6
- package/e2e-legacy/ttyg/chat-list.spec.js +1 -2
- package/e2e-legacy/ttyg/clone-agent.spec.js +1 -0
- package/e2e-legacy/ttyg/create-agent.spec.js +10 -16
- package/e2e-legacy/ttyg/edit-agent.spec.js +69 -9
- package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
- package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
- package/e2e-legacy/ttyg/ttyg-permission.spec.js +28 -20
- package/e2e-legacy/ttyg/ttyg-view.spec.js +1 -1
- package/e2e-security/setup/home/cookie-policy.spec.js +64 -0
- package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +184 -0
- package/e2e-security/setup/users-and-access/graphql-user.spec.js +123 -0
- package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +69 -0
- package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +87 -0
- package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
- package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
- package/fixtures/repositories/free-access.json +13 -0
- package/fixtures/repositories/get-remote-and-local-repositories.json +34 -0
- package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
- package/fixtures/ttyg/agent/get-agent-defaults.json +2 -0
- package/npm-shrinkwrap.json +7633 -1817
- package/package.json +13 -7
- package/plugins/index.js +3 -2
- package/steps/base-steps.js +4 -0
- package/steps/cluster/cluster-page-steps.js +12 -2
- package/steps/error-steps.js +4 -7
- package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
- package/steps/guides/guide-steps.js +20 -1
- package/steps/home-steps.js +59 -37
- package/steps/import/import-steps.js +8 -3
- package/steps/login-steps.js +14 -3
- package/steps/main-menu-steps.js +76 -6
- package/steps/operations-statuses-component-steps.js +5 -10
- package/steps/rdf-resource-search-steps.js +55 -0
- package/steps/repository-steps.js +17 -17
- package/steps/rest-api-documentation-steps.js +15 -0
- package/steps/setup/autocomplete-steps.js +17 -3
- package/steps/setup/namespace-steps.js +8 -2
- package/steps/setup/plugins-steps.js +11 -1
- package/steps/setup/settings-steps.js +18 -0
- package/steps/setup/user-and-access-steps.js +28 -2
- package/steps/system-information-steps.js +70 -0
- package/steps/ttyg/ttyg-agent-settings-modal.steps.js +74 -11
- package/steps/ttyg/ttyg-view-steps.js +39 -6
- package/steps/widgets/active-repository-widget-steps.js +4 -0
- package/steps/yasgui/yasr-steps.js +4 -0
- package/stubs/browser-stubs.js +21 -0
- package/stubs/environment-stubs.js +9 -1
- package/stubs/repositories/repositories-stubs.js +4 -0
- package/stubs/security-stubs.js +4 -0
- package/stubs/ttyg/ttyg-stubs.js +18 -2
- package/support/e2e.js +2 -1
- package/support/repository-commands.js +14 -1
- package/e2e-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -57
- package/e2e-flaky/ttyg/ttyg-permission.spec.js +0 -67
- package/fixtures/locale-en.json +0 -3361
- /package/e2e-legacy/help/{system-information.spec.js → system-information/system-information.spec.js} +0 -0
|
@@ -8,7 +8,8 @@ import {ImportSettingsDialogSteps} from "../../steps/import/import-settings-dial
|
|
|
8
8
|
import {ClusterStubs} from "../../stubs/cluster/cluster-stubs";
|
|
9
9
|
import {RepositoriesStubs} from "../../stubs/repositories/repositories-stubs";
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// TODO: Refactor these tests to follow our step based approach for better decoupling from the page implementation
|
|
12
|
+
describe('Repositories', () => {
|
|
12
13
|
|
|
13
14
|
let repositoryId;
|
|
14
15
|
const SHACL_SHAPE_DATA = "prefix ex: <http://example.com/ns#>\n" +
|
|
@@ -110,32 +111,25 @@ describe.skip('Repositories', () => {
|
|
|
110
111
|
.should('be.visible')
|
|
111
112
|
.and('not.be.disabled');
|
|
112
113
|
|
|
114
|
+
// It should have not selected the new repo
|
|
115
|
+
RepositorySteps.getRepositorySelection().should('have.class', 'no-selected-repository')
|
|
116
|
+
|
|
113
117
|
// Connect to the repository via the menu
|
|
114
|
-
RepositorySteps.getRepositoriesDropdown().click()
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
.contains(repositoryId)
|
|
129
|
-
.closest('a')
|
|
130
|
-
.scrollIntoView()
|
|
131
|
-
.click();
|
|
118
|
+
RepositorySteps.getRepositoriesDropdown().click()
|
|
119
|
+
// The dropdown should contain the newly created repository
|
|
120
|
+
cy.get('.onto-dropdown-menu-item').should('exist');
|
|
121
|
+
cy.get('.onto-dropdown-menu-item')
|
|
122
|
+
.contains(repositoryId)
|
|
123
|
+
.first()
|
|
124
|
+
.scrollIntoView()
|
|
125
|
+
.click();
|
|
126
|
+
|
|
127
|
+
// Should visualize the selected repo
|
|
128
|
+
cy.get('.no-selected-repository').should('not.exist');
|
|
129
|
+
cy.get('.active-repository')
|
|
130
|
+
.should('be.visible')
|
|
131
|
+
.and('contain', repositoryId);
|
|
132
132
|
|
|
133
|
-
// Should visualize the selected repo
|
|
134
|
-
cy.get('.no-selected-repository').should('not.exist');
|
|
135
|
-
cy.get('.active-repository')
|
|
136
|
-
.should('be.visible')
|
|
137
|
-
.and('contain', repositoryId);
|
|
138
|
-
});
|
|
139
133
|
|
|
140
134
|
// The repo should be connected after selecting it from the menu
|
|
141
135
|
RepositorySteps.getRepositoryConnectionOnBtn(repositoryId).should('be.visible');
|
|
@@ -144,7 +138,7 @@ describe.skip('Repositories', () => {
|
|
|
144
138
|
RepositorySteps.getRepositoriesDropdown()
|
|
145
139
|
.click()
|
|
146
140
|
.then(() => {
|
|
147
|
-
cy.get('.dropdown-menu-
|
|
141
|
+
cy.get('.onto-dropdown-menu-item')
|
|
148
142
|
.should('not.contain', repositoryId);
|
|
149
143
|
});
|
|
150
144
|
});
|
|
@@ -289,7 +283,7 @@ describe.skip('Repositories', () => {
|
|
|
289
283
|
// The first should return back to the dropdown items
|
|
290
284
|
RepositorySteps.getRepositoriesDropdown()
|
|
291
285
|
.click()
|
|
292
|
-
.find('.dropdown-menu-
|
|
286
|
+
.find('.onto-dropdown-menu-item')
|
|
293
287
|
.should('contain', repositoryId);
|
|
294
288
|
// Hide the menu
|
|
295
289
|
RepositorySteps.getRepositoriesDropdown().click();
|
|
@@ -380,9 +374,8 @@ describe.skip('Repositories', () => {
|
|
|
380
374
|
RepositorySteps.confirmModal();
|
|
381
375
|
|
|
382
376
|
// Check the repo has been deselected and is not present in the repo dropdown menu
|
|
383
|
-
RepositorySteps.getRepositoriesDropdown().click()
|
|
384
|
-
|
|
385
|
-
});
|
|
377
|
+
RepositorySteps.getRepositoriesDropdown().click();
|
|
378
|
+
RepositorySteps.getRepositoriesInDropdown().should('not.contain', repositoryId);
|
|
386
379
|
});
|
|
387
380
|
|
|
388
381
|
it('should restart an existing repository', () => {
|
|
@@ -408,21 +401,17 @@ describe.skip('Repositories', () => {
|
|
|
408
401
|
//Make sure that repository is in status INACTIVE
|
|
409
402
|
RepositorySteps.assertRepositoryStatus(repositoryId, "INACTIVE");
|
|
410
403
|
|
|
411
|
-
RepositorySteps.getRepositoriesDropdown().click()
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
.contains(repositoryId)
|
|
418
|
-
.closest('a')
|
|
419
|
-
.click();
|
|
404
|
+
RepositorySteps.getRepositoriesDropdown().click();
|
|
405
|
+
RepositorySteps.getRepositoriesInDropdown()
|
|
406
|
+
.should('be.visible')
|
|
407
|
+
.contains(repositoryId)
|
|
408
|
+
.eq(0)
|
|
409
|
+
.click();
|
|
420
410
|
// Should visualize the selected repo
|
|
421
411
|
cy.get('.no-selected-repository').should('not.exist');
|
|
422
412
|
cy.get('.active-repository')
|
|
423
413
|
.should('be.visible')
|
|
424
414
|
.and('contain', repositoryId);
|
|
425
|
-
});
|
|
426
415
|
|
|
427
416
|
HomeSteps.visitAndWaitLoader();
|
|
428
417
|
cy.visit('/repository');
|
|
@@ -510,19 +499,19 @@ describe.skip('Repositories', () => {
|
|
|
510
499
|
ModalDialogSteps.verifyDialogBody('Changing the repository ID is a dangerous operation since it renames the repository folder and enforces repository shutdown.');
|
|
511
500
|
});
|
|
512
501
|
|
|
513
|
-
it('should
|
|
502
|
+
it('should allow restart of LOCAL repository from EDIT PAGE, if node is in cluster', () => {
|
|
514
503
|
// Given I create a repository
|
|
515
504
|
cy.createRepository({id: repositoryId});
|
|
516
505
|
// When I set the node in a cluster
|
|
517
506
|
GlobalOperationsStatusesStub.stubGlobalOperationsStatusesResponse(repositoryId);
|
|
518
507
|
// Then go to the local repository's edit page
|
|
519
508
|
RepositorySteps.visitEditPage(repositoryId);
|
|
520
|
-
// I expect the repository restart checkbox button to be
|
|
509
|
+
// I expect the repository restart checkbox button to be enabled
|
|
521
510
|
RepositorySteps.getEditViewRestartButton().should('be.visible');
|
|
522
|
-
RepositorySteps.getEditViewRestartButton().should('be.disabled');
|
|
511
|
+
RepositorySteps.getEditViewRestartButton().should('not.be.disabled');
|
|
523
512
|
});
|
|
524
513
|
|
|
525
|
-
it('should
|
|
514
|
+
it('should allow restart of LOCAL repositories from REPOSITORIES PAGE, if node is in cluster', () => {
|
|
526
515
|
// Given I create a repository
|
|
527
516
|
cy.createRepository({id: repositoryId});
|
|
528
517
|
// When I set the node in a cluster
|
|
@@ -530,9 +519,9 @@ describe.skip('Repositories', () => {
|
|
|
530
519
|
ClusterStubs.stubClusterNodeStatus();
|
|
531
520
|
// Then go to the repositories page
|
|
532
521
|
RepositorySteps.visit();
|
|
533
|
-
// I expect the local repository's restart button to be
|
|
522
|
+
// I expect the local repository's restart button to be enabled
|
|
534
523
|
RepositorySteps.getRepositoryRestartButton(repositoryId).should('be.visible');
|
|
535
|
-
RepositorySteps.getRepositoryRestartButton(repositoryId).should('be.disabled');
|
|
524
|
+
RepositorySteps.getRepositoryRestartButton(repositoryId).should('not.be.disabled');
|
|
536
525
|
});
|
|
537
526
|
|
|
538
527
|
it('should ALLOW restart of REMOTE repositories from REPOSITORIES PAGE, if node is in cluster', () => {
|
|
@@ -3,8 +3,7 @@ import {ACL_VIEW} from "../../../steps/setup/acl-management-steps";
|
|
|
3
3
|
import {ApplicationSteps} from "../../../steps/application-steps";
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
describe.skip('ACL Management: create rule', () => {
|
|
6
|
+
describe('ACL Management: create rule', () => {
|
|
8
7
|
|
|
9
8
|
let repositoryId;
|
|
10
9
|
|
|
@@ -2,8 +2,7 @@ import {AclManagementSteps} from "../../../steps/setup/acl-management-steps";
|
|
|
2
2
|
import {ACL_VIEW} from "../../../steps/setup/acl-management-steps";
|
|
3
3
|
import {ApplicationSteps} from "../../../steps/application-steps";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
describe.skip('ACL Management: edit rule', () => {
|
|
5
|
+
describe('ACL Management: edit rule', () => {
|
|
7
6
|
|
|
8
7
|
let repositoryId;
|
|
9
8
|
|
|
@@ -2,8 +2,7 @@ import {AclManagementSteps} from "../../../steps/setup/acl-management-steps";
|
|
|
2
2
|
import {ACL_VIEW} from "../../../steps/setup/acl-management-steps";
|
|
3
3
|
import {ApplicationSteps} from "../../../steps/application-steps";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
describe.skip('ACL Management: reorder rules', () => {
|
|
5
|
+
describe('ACL Management: reorder rules', () => {
|
|
7
6
|
|
|
8
7
|
let repositoryId;
|
|
9
8
|
|
|
@@ -48,8 +48,7 @@ describe('ACL Management: rule scopes', () => {
|
|
|
48
48
|
AclManagementSteps.getActiveTab().should('have.text', 'System');
|
|
49
49
|
});
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
it.skip('Should create rules', () => {
|
|
51
|
+
it('Should create rules', () => {
|
|
53
52
|
// I select Clear graph tab
|
|
54
53
|
AclManagementSteps.selectTab(1);
|
|
55
54
|
AclManagementSteps.getActiveTab().should('have.text', 'Clear graph');
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
2
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
3
|
+
import {AutocompleteSteps} from "../../../steps/setup/autocomplete-steps";
|
|
4
|
+
|
|
5
|
+
describe('Autocomplete with selected repository', () => {
|
|
6
|
+
let repositoryId;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
repositoryId = 'autocomplete-init-' + Date.now();
|
|
10
|
+
cy.createRepository({id: repositoryId});
|
|
11
|
+
cy.presetRepository(repositoryId);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
cy.deleteRepository(repositoryId);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
19
|
+
// Given, I visit the Autocomplete page via URL with a repository selected
|
|
20
|
+
AutocompleteSteps.visit();
|
|
21
|
+
// Then,
|
|
22
|
+
verifyInitialStateWithSelectedRepository();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('Should display the correct initial state when navigating via the navigation bar', () => {
|
|
26
|
+
// Given, I visit the Autocomplete page via the navigation menu with a repository selected
|
|
27
|
+
HomeSteps.visit();
|
|
28
|
+
MainMenuSteps.clickOnAutocomplete();
|
|
29
|
+
// Then,
|
|
30
|
+
verifyInitialStateWithSelectedRepository();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const verifyInitialStateWithSelectedRepository = () => {
|
|
34
|
+
AutocompleteSteps.getAutocompletePage().should('exist');
|
|
35
|
+
AutocompleteSteps.getAutocompletePageContent().should('exist');
|
|
36
|
+
AutocompleteSteps.getAutocompletePage().should('exist');
|
|
37
|
+
AutocompleteSteps.getAutocompleteHeader().contains('Autocomplete for repository');
|
|
38
|
+
AutocompleteSteps.getAutocompleteLabelsContainer().should('exist');
|
|
39
|
+
};
|
|
40
|
+
})
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {ErrorSteps} from "../../../steps/error-steps";
|
|
2
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
3
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
4
|
+
import {AutocompleteSteps} from "../../../steps/setup/autocomplete-steps";
|
|
5
|
+
|
|
6
|
+
describe('Autocomplete without selected repository', () => {
|
|
7
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
8
|
+
// Given, I visit the Autocomplete page via URL without a repository selected
|
|
9
|
+
AutocompleteSteps.visit();
|
|
10
|
+
// Then,
|
|
11
|
+
verifyInitialStateWithoutSelectedRepository();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('Should display the correct initial state when navigating via the navigation menu', () => {
|
|
15
|
+
// Given, I visit the Autocomplete page via the navigation menu without a repository selected
|
|
16
|
+
HomeSteps.visit();
|
|
17
|
+
MainMenuSteps.clickOnAutocomplete();
|
|
18
|
+
// Then,
|
|
19
|
+
verifyInitialStateWithoutSelectedRepository()
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const verifyInitialStateWithoutSelectedRepository = () => {
|
|
23
|
+
ErrorSteps.verifyNoConnectedRepoMessage();
|
|
24
|
+
AutocompleteSteps.getAutocompletePage().should('exist');
|
|
25
|
+
AutocompleteSteps.getAutocompletePageContent().should('not.exist');
|
|
26
|
+
};
|
|
27
|
+
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {AutocompleteSteps} from "
|
|
2
|
-
import {LicenseStubs} from "
|
|
1
|
+
import {AutocompleteSteps} from "../../../steps/setup/autocomplete-steps";
|
|
2
|
+
import {LicenseStubs} from "../../../stubs/license-stubs";
|
|
3
3
|
|
|
4
4
|
describe('Autocomplete ', () => {
|
|
5
5
|
|
|
@@ -45,10 +45,9 @@ describe('Autocomplete ', () => {
|
|
|
45
45
|
.and('not.be.disabled');
|
|
46
46
|
|
|
47
47
|
// Should have default labels
|
|
48
|
-
AutocompleteSteps.getAutocompleteLabels()
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
.should('have.length', 1)
|
|
48
|
+
AutocompleteSteps.getAutocompleteLabels().should('be.visible')
|
|
49
|
+
|
|
50
|
+
AutocompleteSteps.getLabelRows().should('have.length', 1)
|
|
52
51
|
.and('contain', 'http://www.w3.org/2000/01/rdf-schema#label');
|
|
53
52
|
|
|
54
53
|
// Enable autocomplete and verify status is OK (possible slow operation)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {ClusterPageSteps} from "../../../steps/cluster/cluster-page-steps";
|
|
2
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
3
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
4
|
+
import {GlobalOperationsStatusesStub} from "../../../stubs/global-operations-statuses-stub";
|
|
5
|
+
import {ClusterStubs} from "../../../stubs/cluster/cluster-stubs";
|
|
6
|
+
|
|
7
|
+
function verifyInitialStateWithConfiguredCluster() {
|
|
8
|
+
ClusterPageSteps.getNoClusterImage().should('not.exist');
|
|
9
|
+
ClusterPageSteps.getUpdateClusterButton().should('be.visible');
|
|
10
|
+
ClusterPageSteps.getPreviewClusterConfigButton().should('be.visible');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
describe('Cluster initial state with configured cluster', () => {
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
ClusterStubs.stubClusterConfig();
|
|
16
|
+
ClusterStubs.stubClusterGroupStatus();
|
|
17
|
+
ClusterStubs.stubClusterNodeStatus();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
21
|
+
// Given, I visit the Cluster page via URL with a configured cluster
|
|
22
|
+
ClusterPageSteps.visit();
|
|
23
|
+
// Then,
|
|
24
|
+
verifyInitialStateWithConfiguredCluster();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('Should display the correct initial state when navigating via the navigation menu', () => {
|
|
28
|
+
// Given, I visit the Cluster page via the navigation menu with a configured cluster
|
|
29
|
+
HomeSteps.visit();
|
|
30
|
+
MainMenuSteps.clickOnCluster();
|
|
31
|
+
// Then,
|
|
32
|
+
verifyInitialStateWithConfiguredCluster();
|
|
33
|
+
});
|
|
34
|
+
})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
2
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
3
|
+
import {ClusterPageSteps} from "../../../steps/cluster/cluster-page-steps";
|
|
4
|
+
|
|
5
|
+
function verifyInitialStateWithoutConfiguredCluster() {
|
|
6
|
+
ClusterPageSteps.getNoClusterImage().should('be.visible');
|
|
7
|
+
ClusterPageSteps.getLegendButton().should('be.visible');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
describe('Cluster initial state without configured cluster', () => {
|
|
11
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
12
|
+
// Given, I visit the Cluster page via URL without a configured cluster
|
|
13
|
+
ClusterPageSteps.visit();
|
|
14
|
+
// Then,
|
|
15
|
+
verifyInitialStateWithoutConfiguredCluster();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('Should display the correct initial state when navigating via the navigation menu', () => {
|
|
19
|
+
// Given, I visit the Cluster page via the navigation menu without a configured cluster
|
|
20
|
+
HomeSteps.visit();
|
|
21
|
+
MainMenuSteps.clickOnCluster();
|
|
22
|
+
// Then,
|
|
23
|
+
verifyInitialStateWithoutConfiguredCluster();
|
|
24
|
+
});
|
|
25
|
+
})
|
|
@@ -20,8 +20,7 @@ describe('Setup / Connectors - Lucene', () => {
|
|
|
20
20
|
cy.deleteRepository(repositoryId);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
it.skip('Test that no indexes are available', () => {
|
|
23
|
+
it('Test that no indexes are available', () => {
|
|
25
24
|
getConnectorsPage()
|
|
26
25
|
.should('be.visible')
|
|
27
26
|
.and('contain', 'No connector instances.');
|
|
@@ -17,8 +17,8 @@ const DEFAULT_QUERY = 'PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n' +
|
|
|
17
17
|
' # The following placeholder must be present in the query\n' +
|
|
18
18
|
' #!filter\n' +
|
|
19
19
|
'}';
|
|
20
|
-
|
|
21
|
-
describe
|
|
20
|
+
|
|
21
|
+
describe('JDBC configuration', () => {
|
|
22
22
|
|
|
23
23
|
let repositoryId;
|
|
24
24
|
let secondRepositoryId;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
2
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
3
|
+
import {NamespaceSteps} from "../../../steps/setup/namespace-steps";
|
|
4
|
+
|
|
5
|
+
describe('Namespaces with selected repository', () => {
|
|
6
|
+
let repositoryId;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
repositoryId = 'namespaces-init-' + Date.now();
|
|
10
|
+
cy.createRepository({id: repositoryId});
|
|
11
|
+
cy.presetRepository(repositoryId);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
cy.deleteRepository(repositoryId);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
19
|
+
// Given, I visit the Namespaces page via URL with a repository selected
|
|
20
|
+
NamespaceSteps.visit();
|
|
21
|
+
// Then,
|
|
22
|
+
verifyInitialStateWithSelectedRepository();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('Should display the correct initial state when navigating via the navigation bar', () => {
|
|
26
|
+
// Given, I visit the Namespaces page via the navigation menu with a repository selected
|
|
27
|
+
HomeSteps.visit();
|
|
28
|
+
MainMenuSteps.clickOnNamespaces();
|
|
29
|
+
// Then,
|
|
30
|
+
verifyInitialStateWithSelectedRepository();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const verifyInitialStateWithSelectedRepository = () => {
|
|
34
|
+
NamespaceSteps.getNamespacesView().should('exist');
|
|
35
|
+
NamespaceSteps.getNamespacesContent().should('exist');
|
|
36
|
+
NamespaceSteps.getAddNamespaceForm().should('be.visible');
|
|
37
|
+
NamespaceSteps.getNamespacePrefixField().should('be.visible');
|
|
38
|
+
NamespaceSteps.getNamespaceValueField().should('be.visible');
|
|
39
|
+
NamespaceSteps.getAddNamespaceButton().should('be.visible');
|
|
40
|
+
NamespaceSteps.getNamespacesPerPageMenu().should('be.visible');
|
|
41
|
+
NamespaceSteps.getNamespacesFilterField().should('be.visible');
|
|
42
|
+
NamespaceSteps.getNamespacesTable().should('be.visible');
|
|
43
|
+
};
|
|
44
|
+
})
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {ErrorSteps} from "../../../steps/error-steps";
|
|
2
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
3
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
4
|
+
import {NamespaceSteps} from "../../../steps/setup/namespace-steps";
|
|
5
|
+
|
|
6
|
+
describe('Namespaces without selected repository', () => {
|
|
7
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
8
|
+
// Given, I visit the Namespaces page via URL without a repository selected
|
|
9
|
+
NamespaceSteps.visit();
|
|
10
|
+
// Then,
|
|
11
|
+
verifyInitialStateWithoutSelectedRepository();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('Should display the correct initial state when navigating via the navigation menu', () => {
|
|
15
|
+
// Given, I visit the Namespaces page via the navigation menu without a repository selected
|
|
16
|
+
HomeSteps.visit();
|
|
17
|
+
MainMenuSteps.clickOnNamespaces();
|
|
18
|
+
// Then,
|
|
19
|
+
verifyInitialStateWithoutSelectedRepository()
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const verifyInitialStateWithoutSelectedRepository = () => {
|
|
23
|
+
ErrorSteps.verifyNoConnectedRepoMessage();
|
|
24
|
+
NamespaceSteps.getNamespacesView().should('exist');
|
|
25
|
+
NamespaceSteps.getNamespacesContent().should('not.be.visible');
|
|
26
|
+
};
|
|
27
|
+
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {NamespaceSteps} from "
|
|
2
|
-
import {ApplicationSteps} from "
|
|
3
|
-
import {NamespaceStubs} from "
|
|
4
|
-
import {ModalDialogSteps} from "
|
|
1
|
+
import {NamespaceSteps} from "../../../steps/setup/namespace-steps";
|
|
2
|
+
import {ApplicationSteps} from "../../../steps/application-steps";
|
|
3
|
+
import {NamespaceStubs} from "../../../stubs/namespace-stubs";
|
|
4
|
+
import {ModalDialogSteps} from "../../../steps/modal-dialog-steps";
|
|
5
5
|
|
|
6
6
|
describe('Namespaces', () => {
|
|
7
7
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
2
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
3
|
+
import {PluginsSteps} from "../../../steps/setup/plugins-steps";
|
|
4
|
+
|
|
5
|
+
describe('Plugins with selected repository', () => {
|
|
6
|
+
let repositoryId;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
repositoryId = 'plugins-init-' + Date.now();
|
|
10
|
+
cy.createRepository({id: repositoryId});
|
|
11
|
+
cy.presetRepository(repositoryId);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
cy.deleteRepository(repositoryId);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
19
|
+
// Given, I visit the Plugins page via URL with a repository selected
|
|
20
|
+
PluginsSteps.visit();
|
|
21
|
+
// Then,
|
|
22
|
+
verifyInitialStateWithSelectedRepository();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('Should display the correct initial state when navigating via the navigation bar', () => {
|
|
26
|
+
// Given, I visit the Plugins page via the navigation menu with a repository selected
|
|
27
|
+
HomeSteps.visit();
|
|
28
|
+
MainMenuSteps.clickOnPlugins();
|
|
29
|
+
// Then,
|
|
30
|
+
verifyInitialStateWithSelectedRepository();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const verifyInitialStateWithSelectedRepository = () => {
|
|
34
|
+
PluginsSteps.getPluginsView().should('be.visible');
|
|
35
|
+
PluginsSteps.getSearchPluginBar().should('be.visible');
|
|
36
|
+
PluginsSteps.getPluginsList().should('exist');
|
|
37
|
+
};
|
|
38
|
+
})
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {ErrorSteps} from "../../../steps/error-steps";
|
|
2
|
+
import HomeSteps from "../../../steps/home-steps";
|
|
3
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps";
|
|
4
|
+
import {PluginsSteps} from "../../../steps/setup/plugins-steps";
|
|
5
|
+
|
|
6
|
+
describe('Plugins without selected repository', () => {
|
|
7
|
+
it('Should display the correct initial state when navigating via URL', () => {
|
|
8
|
+
// Given, I visit the Plugins page via URL without a repository selected
|
|
9
|
+
PluginsSteps.visit();
|
|
10
|
+
// Then,
|
|
11
|
+
verifyInitialStateWithoutSelectedRepository();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('Should display the correct initial state when navigating via the navigation menu', () => {
|
|
15
|
+
// Given, I visit the Plugins page via the navigation menu without a repository selected
|
|
16
|
+
HomeSteps.visit();
|
|
17
|
+
MainMenuSteps.clickOnPlugins();
|
|
18
|
+
// Then,
|
|
19
|
+
verifyInitialStateWithoutSelectedRepository()
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const verifyInitialStateWithoutSelectedRepository = () => {
|
|
23
|
+
ErrorSteps.verifyNoConnectedRepoMessage();
|
|
24
|
+
PluginsSteps.getPluginsView().should('be.visible');
|
|
25
|
+
PluginsSteps.getSearchPluginBar().should('not.be.visible');
|
|
26
|
+
PluginsSteps.getPluginsList().should('not.exist');
|
|
27
|
+
};
|
|
28
|
+
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {PluginsSteps} from "
|
|
2
|
-
import {PluginsStubs} from "
|
|
3
|
-
import {LicenseStubs} from "
|
|
1
|
+
import {PluginsSteps} from "../../../steps/setup/plugins-steps";
|
|
2
|
+
import {PluginsStubs} from "../../../stubs/setup/plugins-stubs";
|
|
3
|
+
import {LicenseStubs} from "../../../stubs/license-stubs";
|
|
4
4
|
|
|
5
5
|
describe('Plugins view', () => {
|
|
6
6
|
|
|
@@ -6,8 +6,7 @@ import {RepositorySelectorSteps} from "../../../steps/repository-selector-steps"
|
|
|
6
6
|
import {SparqlTemplatesSteps} from "../../../steps/setup/sparql-templates-steps";
|
|
7
7
|
import {ImportUserDataSteps} from "../../../steps/import/import-user-data-steps";
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
describe.skip('SPARQL create template', () => {
|
|
9
|
+
describe('SPARQL create template', () => {
|
|
11
10
|
|
|
12
11
|
let repositoryId;
|
|
13
12
|
let secondRepositoryId;
|
|
@@ -18,15 +17,16 @@ describe.skip('SPARQL create template', () => {
|
|
|
18
17
|
cy.presetRepository(repositoryId);
|
|
19
18
|
secondRepositoryId = 'sparql-templates-second-repo' + Date.now();
|
|
20
19
|
cy.createRepository({id: secondRepositoryId});
|
|
21
|
-
SparqlCreateUpdateSteps.visit();
|
|
22
20
|
});
|
|
23
21
|
|
|
24
22
|
afterEach(() => {
|
|
23
|
+
cy.unsetRepository();
|
|
25
24
|
cy.deleteRepository(repositoryId);
|
|
26
25
|
cy.deleteRepository(secondRepositoryId);
|
|
27
26
|
});
|
|
28
27
|
|
|
29
28
|
it('should has error message described that template id is required', () => {
|
|
29
|
+
SparqlCreateUpdateSteps.visit();
|
|
30
30
|
// When I visit 'Sparql create template' view,
|
|
31
31
|
// and click on "Save" button without to fill template id.
|
|
32
32
|
SparqlCreateUpdateSteps.clickOnSaveButton();
|
|
@@ -36,6 +36,7 @@ describe.skip('SPARQL create template', () => {
|
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
it('should has error message described that template id is invalid', () => {
|
|
39
|
+
SparqlCreateUpdateSteps.visit();
|
|
39
40
|
// When I visit 'Sparql create template' view,
|
|
40
41
|
// and fill an invalid template id,
|
|
41
42
|
const invalidTemplateName = 'invalid-template-id';
|
|
@@ -48,6 +49,7 @@ describe.skip('SPARQL create template', () => {
|
|
|
48
49
|
});
|
|
49
50
|
|
|
50
51
|
it('should has error message described that query mode is invalid', () => {
|
|
52
|
+
SparqlCreateUpdateSteps.visit();
|
|
51
53
|
// When I visit 'Sparql create template' view,
|
|
52
54
|
// and fill valid template id.
|
|
53
55
|
SparqlCreateUpdateSteps.typeTemplateId('http://test');
|
|
@@ -63,6 +65,7 @@ describe.skip('SPARQL create template', () => {
|
|
|
63
65
|
});
|
|
64
66
|
|
|
65
67
|
it('should navigate to other view if there are no changes', () => {
|
|
68
|
+
SparqlCreateUpdateSteps.visit();
|
|
66
69
|
// When I visit 'Sparql create template' view,
|
|
67
70
|
// and navigate to other view.
|
|
68
71
|
ImportUserDataSteps.visitUserImport(repositoryId);
|
|
@@ -72,6 +75,7 @@ describe.skip('SPARQL create template', () => {
|
|
|
72
75
|
});
|
|
73
76
|
|
|
74
77
|
it('should confirm me before navigate when template id is changed', () => {
|
|
78
|
+
SparqlCreateUpdateSteps.visit();
|
|
75
79
|
// When I visit 'Sparql create template' view,
|
|
76
80
|
// and set template id.
|
|
77
81
|
SparqlCreateUpdateSteps.typeTemplateId('http://test');
|
|
@@ -105,6 +109,7 @@ describe.skip('SPARQL create template', () => {
|
|
|
105
109
|
});
|
|
106
110
|
|
|
107
111
|
it('should not change the view if I am creating a new sparql template and change the repository', () => {
|
|
112
|
+
SparqlCreateUpdateSteps.visit();
|
|
108
113
|
// When I visit 'Sparql create template' view,
|
|
109
114
|
// make some changes.
|
|
110
115
|
SparqlCreateUpdateSteps.typeTemplateId('http://test');
|
|
@@ -117,6 +122,7 @@ describe.skip('SPARQL create template', () => {
|
|
|
117
122
|
});
|
|
118
123
|
|
|
119
124
|
it('Should redirect to templates catalog view when repository is changed', () => {
|
|
125
|
+
SparqlCreateUpdateSteps.visit();
|
|
120
126
|
// When I visit 'Sparql create template' view
|
|
121
127
|
// When I change the repository.
|
|
122
128
|
RepositorySelectorSteps.selectRepository(secondRepositoryId);
|
|
@@ -126,6 +132,7 @@ describe.skip('SPARQL create template', () => {
|
|
|
126
132
|
});
|
|
127
133
|
|
|
128
134
|
it('should ask for confirmation when try to save sparql template with already existing template id', () => {
|
|
135
|
+
SparqlCreateUpdateSteps.visit();
|
|
129
136
|
// When I visit 'Sparql create template' view,
|
|
130
137
|
// create a SPARQL template
|
|
131
138
|
const templateName = 'http://' + Date.now();
|