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.
Files changed (124) hide show
  1. package/.nycrc +10 -0
  2. package/cypress-legacy.config.js +9 -1
  3. package/cypress-security.config.js +40 -0
  4. package/cypress.config.js +3 -1
  5. package/e2e-flaky/import/import-user-data-url.spec.js +63 -0
  6. package/e2e-legacy/cluster/edit-cluster-nodes-modal.spec.js +44 -0
  7. package/e2e-legacy/explore/class-hierarchy/class.hierarchy.spec.js +1 -2
  8. package/e2e-legacy/explore/graphs-overview/graphs.overview.spec.js +2 -3
  9. package/e2e-legacy/explore/visual-graph/graphs-config.spec.js +5 -18
  10. package/e2e-legacy/explore/visual-graph/visual.graph.spec.js +1 -2
  11. package/e2e-legacy/graphql/activate-deactivate-graphql-endpoint.spec.js +1 -1
  12. package/e2e-legacy/graphql/create-graphql-endpoint.spec.js +1 -3
  13. package/e2e-legacy/graphql/delete-graphql-endpoint.spec.js +1 -1
  14. package/e2e-legacy/graphql/edit-graphql-enpoint.spec.js +1 -1
  15. package/e2e-legacy/graphql/export-graphql-endpoint-definition.spec.js +1 -1
  16. package/e2e-legacy/graphql/filter-graphql-endpoints-on-management-view.spec.js +2 -2
  17. package/e2e-legacy/graphql/graphql-endpoint-management-view.spec.js +5 -5
  18. package/e2e-legacy/graphql/graphql-playground.spec.js +1 -1
  19. package/e2e-legacy/graphql/import-graphql-endpoint-definitions.spec.js +1 -7
  20. package/e2e-legacy/graphql/set-default-graphql-endpoint.spec.js +1 -1
  21. package/e2e-legacy/help/guides/guides-with-repository.spec.js +32 -0
  22. package/e2e-legacy/help/guides/guides-without-repository.spec.js +20 -0
  23. package/e2e-legacy/{guides → help/guides}/movies-interactive-guide.spec.js +2 -2
  24. package/e2e-legacy/{guides → help/guides}/star-wars-interactive-guide.js +2 -2
  25. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-with-repository.spec.js +32 -0
  26. package/e2e-legacy/help/rest-api-documentatio/rest-api-documentation-without-repository.spec.js +20 -0
  27. package/e2e-legacy/help/system-information/system-information-with-repository.spec.js +32 -0
  28. package/e2e-legacy/help/system-information/system-information-without-repository.spec.js +20 -0
  29. package/e2e-legacy/home/cookie-policy.spec.js +78 -59
  30. package/e2e-legacy/home/create-repository.spec.js +2 -6
  31. package/e2e-legacy/home/documentation-link.spec.js +31 -33
  32. package/e2e-legacy/home/google-analytics.spec.js +4 -6
  33. package/e2e-legacy/home/rdf-resource-search.spec.js +106 -138
  34. package/e2e-legacy/home/view-resource-autocomplete.spec.js +30 -21
  35. package/e2e-legacy/import/import-server-files-batch-operations.spec.js +1 -2
  36. package/e2e-legacy/import/import-server-files.spec.js +1 -2
  37. package/e2e-legacy/import/import-user-data-url.spec.js +1 -25
  38. package/e2e-legacy/import/import-user-data.spec.js +4 -2
  39. package/e2e-legacy/import/import-view.spec.js +1 -2
  40. package/e2e-legacy/monitor/global-operation-statuses-component.spec.js +13 -9
  41. package/e2e-legacy/repository/attach-remote-location.spec.js +2 -5
  42. package/e2e-legacy/repository/ontop-repository.spec.js +3 -12
  43. package/e2e-legacy/repository/repositories.spec.js +35 -46
  44. package/e2e-legacy/setup/aclmanagement/create-rule.spec.js +1 -2
  45. package/e2e-legacy/setup/aclmanagement/edit-rule.spec.js +1 -2
  46. package/e2e-legacy/setup/aclmanagement/reorder-rules.spec.js +1 -2
  47. package/e2e-legacy/setup/aclmanagement/scopes.spec.js +1 -2
  48. package/e2e-legacy/setup/autocomplete/autocomplete-with-repository.spec.js +40 -0
  49. package/e2e-legacy/setup/autocomplete/autocomplete-without-repository.spec.js +27 -0
  50. package/e2e-legacy/setup/{autocomplete.spec.js → autocomplete/autocomplete.spec.js} +5 -6
  51. package/e2e-legacy/setup/cluster/cluster-initial-state-with-cluster.spec.js +34 -0
  52. package/e2e-legacy/setup/cluster/cluster-initial-state-without-cluster.spec.js +25 -0
  53. package/e2e-legacy/setup/connectors-lucene.spec.js +1 -2
  54. package/e2e-legacy/setup/jdbc/jdbc-create.spec.js +2 -2
  55. package/e2e-legacy/setup/namespaces/namespaces-with-repository.spec.js +44 -0
  56. package/e2e-legacy/setup/namespaces/namespaces-without-repository.spec.js +27 -0
  57. package/e2e-legacy/setup/{namespaces.spec.js → namespaces/namespaces.spec.js} +4 -4
  58. package/e2e-legacy/setup/plugins/plugins-with-repository.spec.js +38 -0
  59. package/e2e-legacy/setup/plugins/plugins-without-repository.spec.js +28 -0
  60. package/e2e-legacy/setup/{plugins.spec.js → plugins/plugins.spec.js} +3 -3
  61. package/e2e-legacy/setup/sparql-template/sparql-template-create.js +10 -3
  62. package/e2e-legacy/setup/users-and-access/user-and-access.spec.js +38 -9
  63. package/e2e-legacy/sparql-editor/saved-query/edit-query.spec.js +3 -6
  64. package/e2e-legacy/sparql-editor/saved-query/readonly-query.spec.js +7 -13
  65. package/e2e-legacy/sparql-editor/saved-query/share-query.spec.js +2 -4
  66. package/e2e-legacy/sparql-editor/sparql-editor.spec.js +1 -4
  67. package/e2e-legacy/ttyg/agent-list.spec.js +38 -6
  68. package/e2e-legacy/ttyg/chat-list.spec.js +1 -2
  69. package/e2e-legacy/ttyg/clone-agent.spec.js +1 -0
  70. package/e2e-legacy/ttyg/create-agent.spec.js +10 -16
  71. package/e2e-legacy/ttyg/edit-agent.spec.js +69 -9
  72. package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +46 -0
  73. package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +45 -0
  74. package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +21 -0
  75. package/e2e-legacy/ttyg/ttyg-permission.spec.js +28 -20
  76. package/e2e-legacy/ttyg/ttyg-view.spec.js +1 -1
  77. package/e2e-security/setup/home/cookie-policy.spec.js +64 -0
  78. package/e2e-security/setup/users-and-access/create-user-permissions.spec.js +184 -0
  79. package/e2e-security/setup/users-and-access/graphql-user.spec.js +123 -0
  80. package/e2e-security/setup/users-and-access/repo-admin-role.spec.js +69 -0
  81. package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +87 -0
  82. package/e2e-security/setup/users-and-access/user-and-access.spec.js +87 -0
  83. package/e2e-security/setup/users-and-access/users-and-access-initial-state.spec.js +38 -0
  84. package/fixtures/repositories/free-access.json +13 -0
  85. package/fixtures/repositories/get-remote-and-local-repositories.json +34 -0
  86. package/fixtures/ttyg/agent/get-agent-defaults-assistant-api.json +44 -0
  87. package/fixtures/ttyg/agent/get-agent-defaults.json +2 -0
  88. package/npm-shrinkwrap.json +7633 -1817
  89. package/package.json +13 -7
  90. package/plugins/index.js +3 -2
  91. package/steps/base-steps.js +4 -0
  92. package/steps/cluster/cluster-page-steps.js +12 -2
  93. package/steps/error-steps.js +4 -7
  94. package/steps/graphql/graphql-endpoint-management-steps.js +2 -2
  95. package/steps/guides/guide-steps.js +20 -1
  96. package/steps/home-steps.js +59 -37
  97. package/steps/import/import-steps.js +8 -3
  98. package/steps/login-steps.js +14 -3
  99. package/steps/main-menu-steps.js +76 -6
  100. package/steps/operations-statuses-component-steps.js +5 -10
  101. package/steps/rdf-resource-search-steps.js +55 -0
  102. package/steps/repository-steps.js +17 -17
  103. package/steps/rest-api-documentation-steps.js +15 -0
  104. package/steps/setup/autocomplete-steps.js +17 -3
  105. package/steps/setup/namespace-steps.js +8 -2
  106. package/steps/setup/plugins-steps.js +11 -1
  107. package/steps/setup/settings-steps.js +18 -0
  108. package/steps/setup/user-and-access-steps.js +28 -2
  109. package/steps/system-information-steps.js +70 -0
  110. package/steps/ttyg/ttyg-agent-settings-modal.steps.js +74 -11
  111. package/steps/ttyg/ttyg-view-steps.js +39 -6
  112. package/steps/widgets/active-repository-widget-steps.js +4 -0
  113. package/steps/yasgui/yasr-steps.js +4 -0
  114. package/stubs/browser-stubs.js +21 -0
  115. package/stubs/environment-stubs.js +9 -1
  116. package/stubs/repositories/repositories-stubs.js +4 -0
  117. package/stubs/security-stubs.js +4 -0
  118. package/stubs/ttyg/ttyg-stubs.js +18 -2
  119. package/support/e2e.js +2 -1
  120. package/support/repository-commands.js +14 -1
  121. package/e2e-flaky/setup/users-and-access/security-and-free-access.spec.js +0 -57
  122. package/e2e-flaky/ttyg/ttyg-permission.spec.js +0 -67
  123. package/fixtures/locale-en.json +0 -3361
  124. /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
- describe.skip('Repositories', () => {
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().within(() => {
115
- // It should have not selected the new repo
116
-
117
- // Note: The better test here should verify for .no-selected-repository presence but in Travis it seems there is a selected
118
- // repository although Cypress clears cookies before each test OR the dropdown is not yet fully loaded which is strange
119
- // because the test has been running for several seconds before this check
120
- cy.get('#btnReposGroup').should('not.contain', repositoryId);
121
-
122
- // The dropdown should contain the newly created repository
123
- cy.get('#btnReposGroup').should('have.attr', 'aria-expanded', 'true');
124
- // Wait about the menu to become visible due to a strange behavior of elements having size 0x0px thus treated as invisible.
125
- // Alternative is to have the click forced, which might lead to false positive result.
126
- cy.get('.dropdown-menu-right').should('be.visible').wait(500);
127
- cy.get('.dropdown-menu-right .dropdown-item')
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-right')
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-right .dropdown-item')
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().within(() => {
384
- cy.get('#btnReposGroup').should('not.contain', repositoryId);
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().within(() => {
412
-
413
- // Wait about the menu to become visible due to a strange behavior of elements having size 0x0px thus treated as invisible.
414
- // Alternative is to have the click forced, which might lead to false positive result.
415
- cy.get('.dropdown-menu-right').should('be.visible').wait(500);
416
- cy.get('.dropdown-menu-right .dropdown-item')
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 NOT allow restart of LOCAL repository from EDIT PAGE, if node is in cluster', () => {
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 disabled
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 NOT allow restart of LOCAL repositories from REPOSITORIES PAGE, if node is in cluster', () => {
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 disabled
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
- // TODO: Fix me. Broken due to migration (Error: beforeEach)
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
- //TODO: Fix me. Broken due to migration (Error: beforeEach)
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
- // TODO: Fix me. Broken due to migration (Error: beforeEach)
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
- // TODO: Fix me. Broken due to migration (Error: unknown)
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 "../../steps/setup/autocomplete-steps";
2
- import {LicenseStubs} from "../../stubs/license-stubs";
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
- .should('be.visible')
50
- .find('.wb-autocomplete-labels-row')
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
- // TODO: Fix me. Broken due to migration (Error: unknown)
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
- // TODO: Fix me. Broken due to migration (Error: unknown)
21
- describe.skip('JDBC configuration', () => {
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 "../../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";
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 "../../steps/setup/plugins-steps";
2
- import {PluginsStubs} from "../../stubs/setup/plugins-stubs";
3
- import {LicenseStubs} from "../../stubs/license-stubs";
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
- // TODO: Fix me. Broken due to migration (Error: unknown)
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();