graphdb-workbench-tests 3.5.1-TR4 → 4.0.0-SPARQL12

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 (46) hide show
  1. package/cypress-guides.config.js +45 -0
  2. package/e2e-flaky/import/import-server-files-operations.spec.js +8 -30
  3. package/e2e-flaky/import/import-user-data-batch-operations.spec.js +7 -7
  4. package/e2e-flaky/import/import-user-data-url.spec.js +1 -1
  5. package/e2e-legacy/explore/visual-graph/visual.graph.spec.js +45 -9
  6. package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +1 -1
  7. package/e2e-legacy/guides/main-menu/main-menu-guide.spec.js +6 -14
  8. package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +27 -32
  9. package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +12 -20
  10. package/e2e-legacy/import/import-server-files-batch-operations.spec.js +5 -5
  11. package/e2e-legacy/import/import-server-files.spec.js +20 -22
  12. package/e2e-legacy/import/import-user-data-file-upload.spec.js +21 -22
  13. package/e2e-legacy/import/import-user-data-text-snippet.spec.js +6 -45
  14. package/e2e-legacy/import/import-user-data-url.spec.js +9 -6
  15. package/e2e-legacy/import/import-view.spec.js +2 -2
  16. package/e2e-legacy/repository/ontop-repository.spec.js +2 -1
  17. package/e2e-legacy/repository/rename-repository-restrictions.spec.js +129 -0
  18. package/e2e-legacy/repository/repositories.spec.js +3 -3
  19. package/e2e-legacy/resource/resource.spec.js +160 -35
  20. package/e2e-legacy/setup/aclmanagement/create-rule.spec.js +14 -25
  21. package/e2e-legacy/setup/aclmanagement/delete-rule.spec.js +6 -6
  22. package/e2e-legacy/setup/aclmanagement/edit-rule.spec.js +15 -15
  23. package/e2e-legacy/setup/aclmanagement/render-rules.spec.js +1 -1
  24. package/e2e-legacy/setup/aclmanagement/reorder-rules.spec.js +2 -2
  25. package/e2e-legacy/setup/aclmanagement/revert-rules.spec.js +2 -2
  26. package/e2e-legacy/setup/aclmanagement/update-rules.spec.js +3 -3
  27. package/e2e-legacy/setup/aclmanagement/validate-uri.spec.js +152 -0
  28. package/e2e-legacy/setup/users-and-access/user-and-access.spec.js +21 -20
  29. package/e2e-legacy/sparql-editor/yasr/download-as.spec.js +4 -7
  30. package/e2e-legacy/ttyg/edit-agent.spec.js +8 -0
  31. package/e2e-legacy/ttyg/ttyg-initial-state-with-configured-api-key.spec.js +1 -1
  32. package/e2e-legacy/ttyg/ttyg-initial-state-with-selected-repository.spec.js +1 -1
  33. package/e2e-legacy/ttyg/ttyg-initial-state-without-repositories.spec.js +1 -1
  34. package/eslint.config.js +5 -0
  35. package/fixtures/graphdb-import/wine.rdf +279 -285
  36. package/npm-shrinkwrap.json +11 -11
  37. package/package.json +3 -2
  38. package/steps/import/import-steps.js +26 -6
  39. package/steps/import/import-test-constants.js +1 -1
  40. package/steps/main-menu-steps.js +5 -14
  41. package/steps/resource/resource-steps.js +64 -5
  42. package/steps/setup/acl-management-steps.js +3 -23
  43. package/stubs/repositories/repositories-stubs.js +4 -0
  44. package/fixtures/graphdb-import/test-trigstar.trigs +0 -32
  45. package/fixtures/graphdb-import/test_turtlestar.ttls +0 -6
  46. package/fixtures/graphdb-import/turtlestar-data.ttls +0 -77
@@ -0,0 +1,45 @@
1
+ import { defineConfig } from 'cypress';
2
+ import setupPlugins from './plugins/index.js';
3
+
4
+ const isCoverage = process.env.COVERAGE === 'true';
5
+
6
+ const loadCodeCoverage = async (on, config) => {
7
+ const mod = await import('@bahmutov/cypress-code-coverage/plugin');
8
+ const plugin = ('default' in mod) ? mod.default : mod;
9
+ plugin(on, config);
10
+ };
11
+
12
+ export default defineConfig({
13
+ projectId: 'v35btb',
14
+ fixturesFolder: 'fixtures',
15
+ screenshotsFolder: 'report/screenshots',
16
+ videosFolder: 'report/videos',
17
+ video: true,
18
+ defaultCommandTimeout: 25000,
19
+ numTestsKeptInMemory: 10,
20
+ viewportWidth: 1600,
21
+ viewportHeight: 1200,
22
+ e2e: {
23
+ retries: {
24
+ runMode: 2,
25
+ openMode: 0
26
+ },
27
+ async setupNodeEvents(on, config) {
28
+ setupPlugins(on, config);
29
+ if (isCoverage) {
30
+ await loadCodeCoverage(on, config);
31
+ }
32
+ return config;
33
+ },
34
+ baseUrl: 'http://localhost:9000',
35
+ specPattern: 'e2e-legacy/guides/**/*.{js,jsx,ts,tsx}',
36
+ supportFile: 'support/e2e.js',
37
+ reporter: "cypress-multi-reporters",
38
+ reporterOptions: {
39
+ configFile: 'cypress-reporter-config.json'
40
+ }
41
+ },
42
+ env: {
43
+ set_default_user_data: true
44
+ }
45
+ });
@@ -9,8 +9,6 @@ describe('Import server files - Operations', () => {
9
9
  const CONTEXT = 'http://example.org/context';
10
10
  const FILE_FOR_IMPORT = 'italian_public_schools_links.nt.gz';
11
11
  const FILE_FROM_DIRECTORY_FOR_IMPORT = 'rdfxml.rdf';
12
- const TTLS_FOR_IMPORT = 'test_turtlestar.ttls';
13
- const TRIGS_FOR_IMPORT = 'test-trigstar.trigs';
14
12
  const JSONLD_FILE_FOR_IMPORT = '0007-import-file.jsonld';
15
13
  const JSONLD_CONTEXT = 'https://w3c.github.io/json-ld-api/tests/compact/0007-context.jsonld';
16
14
 
@@ -18,7 +16,7 @@ describe('Import server files - Operations', () => {
18
16
  repositoryId = 'server-import-' + Date.now();
19
17
  cy.createRepository({id: repositoryId});
20
18
  ImportServerFilesSteps.visitServerImport(repositoryId);
21
- ImportServerFilesSteps.getResources().should('have.length', 18);
19
+ ImportServerFilesSteps.getResources().should('have.length', 17);
22
20
  });
23
21
 
24
22
  afterEach(() => {
@@ -31,7 +29,7 @@ describe('Import server files - Operations', () => {
31
29
  ImportServerFilesSteps.importResourceByName(FILE_FOR_IMPORT);
32
30
  ImportSettingsDialogSteps.import();
33
31
  // Then I should see the file imported successfully
34
- ImportServerFilesSteps.checkImportedResource(0, FILE_FOR_IMPORT);
32
+ ImportServerFilesSteps.checkImportedResourceByIndex(0, FILE_FOR_IMPORT);
35
33
  // TODO: this and all similar check in the tests below are a checking for the default import settings which we probably should not verify here.
36
34
  // ImportServerFilesSteps.verifyImportStatusDetails(FILE_FOR_IMPORT, '"preserveBNodeIds": false,');
37
35
  });
@@ -42,7 +40,7 @@ describe('Import server files - Operations', () => {
42
40
  ImportServerFilesSteps.importResourceByName(FILE_FROM_DIRECTORY_FOR_IMPORT);
43
41
  ImportSettingsDialogSteps.import();
44
42
  // Then I should see the file imported successfully
45
- ImportServerFilesSteps.checkImportedResource(0, FILE_FROM_DIRECTORY_FOR_IMPORT);
43
+ ImportServerFilesSteps.checkImportedResourceByIndex(0, FILE_FROM_DIRECTORY_FOR_IMPORT);
46
44
  });
47
45
 
48
46
  it('Should import Server files successfully with changing settings', () => {
@@ -57,7 +55,7 @@ describe('Import server files - Operations', () => {
57
55
  ImportSettingsDialogSteps.enablePreserveBNodes();
58
56
  ImportSettingsDialogSteps.import();
59
57
  // Then I should see the file imported successfully
60
- ImportServerFilesSteps.checkImportedResource(0, FILE_FOR_IMPORT);
58
+ ImportServerFilesSteps.checkImportedResourceByIndex(0, FILE_FOR_IMPORT);
61
59
  // ImportSteps.verifyImportStatusDetails(FILE_FOR_IMPORT, [CONTEXT, BASE_URI, '"preserveBNodeIds": true,']);
62
60
  });
63
61
 
@@ -75,7 +73,7 @@ describe('Import server files - Operations', () => {
75
73
  ImportSettingsDialogSteps.enablePreserveBNodes();
76
74
  ImportSettingsDialogSteps.import();
77
75
  // Then I should see the file imported successfully
78
- ImportServerFilesSteps.checkImportedResource(0, JSONLD_FILE_FOR_IMPORT);
76
+ ImportServerFilesSteps.checkImportedResourceByIndex(0, JSONLD_FILE_FOR_IMPORT);
79
77
  // ImportSteps.verifyImportStatusDetails(JSONLD_FILE_FOR_IMPORT, [CONTEXT, BASE_URI, '"preserveBNodeIds": true,', JSONLD_CONTEXT]);
80
78
  });
81
79
 
@@ -92,7 +90,7 @@ describe('Import server files - Operations', () => {
92
90
  ImportSettingsDialogSteps.enablePreserveBNodes();
93
91
  ImportSettingsDialogSteps.import();
94
92
  // Then I should see the file imported successfully
95
- ImportServerFilesSteps.checkImportedResource(0, JSONLD_FILE_FOR_IMPORT);
93
+ ImportServerFilesSteps.checkImportedResourceByIndex(0, JSONLD_FILE_FOR_IMPORT);
96
94
  // ImportSteps.verifyImportStatusDetails(JSONLD_FILE_FOR_IMPORT, [CONTEXT, BASE_URI, '"preserveBNodeIds": true,']);
97
95
  });
98
96
 
@@ -101,7 +99,7 @@ describe('Import server files - Operations', () => {
101
99
  // And I have imported a file
102
100
  ImportServerFilesSteps.importResourceByName(FILE_FOR_IMPORT);
103
101
  ImportSettingsDialogSteps.import();
104
- ImportServerFilesSteps.checkImportedResource(0, FILE_FOR_IMPORT);
102
+ ImportServerFilesSteps.checkImportedResourceByIndex(0, FILE_FOR_IMPORT);
105
103
  // When I reset the status of the imported file
106
104
  ImportServerFilesSteps.resetResourceStatusByName(FILE_FOR_IMPORT);
107
105
  // Then Import status of the file should not be visible
@@ -113,30 +111,10 @@ describe('Import server files - Operations', () => {
113
111
  // And I have imported a file
114
112
  ImportServerFilesSteps.importResourceByName(FILE_FROM_DIRECTORY_FOR_IMPORT);
115
113
  ImportSettingsDialogSteps.import();
116
- ImportServerFilesSteps.checkImportedResource(0, FILE_FROM_DIRECTORY_FOR_IMPORT);
114
+ ImportServerFilesSteps.checkImportedResourceByIndex(0, FILE_FROM_DIRECTORY_FOR_IMPORT);
117
115
  // When I reset the status of the imported file
118
116
  ImportServerFilesSteps.resetResourceStatusByName(FILE_FROM_DIRECTORY_FOR_IMPORT);
119
117
  // Then Import status of the file should not be visible
120
118
  ImportServerFilesSteps.getResourceStatus(FILE_FROM_DIRECTORY_FOR_IMPORT).should('be.hidden');
121
119
  });
122
-
123
- it('Should import turtlestar from Server files successfully without changing settings', () => {
124
- // Given I have opened the server files tab
125
- ImportServerFilesSteps.importResourceByName(TTLS_FOR_IMPORT);
126
- // When I select to import a ttl file without changing settings
127
- ImportSettingsDialogSteps.import();
128
- // Then I should see the file imported successfully
129
- ImportServerFilesSteps.checkImportedResource(0, TTLS_FOR_IMPORT);
130
- // ImportSteps.verifyImportStatusDetails(TTLS_FOR_IMPORT, '"preserveBNodeIds": false,');
131
- });
132
-
133
- it('Should import trigstar from Server files successfully without changing settings', () => {
134
- // Given I have opened the server files tab
135
- ImportServerFilesSteps.importResourceByName(TRIGS_FOR_IMPORT);
136
- // When I select to import a trigstar file without changing settings
137
- ImportSettingsDialogSteps.import();
138
- // Then I should see the file imported successfully
139
- ImportServerFilesSteps.checkImportedResource(0, TRIGS_FOR_IMPORT);
140
- // ImportSteps.verifyImportStatusDetails(TRIGS_FOR_IMPORT, '"preserveBNodeIds": false,');
141
- });
142
120
  });
@@ -56,7 +56,7 @@ describe('Import user data: Batch operations', () => {
56
56
  ImportSettingsDialogSteps.getDialog().should('be.visible');
57
57
  ImportSettingsDialogSteps.import();
58
58
  ImportUserDataSteps.getResources().should('have.length', 3);
59
- ImportUserDataSteps.checkImportedResource(0, 'jsonld-2.jsonld');
59
+ ImportUserDataSteps.checkImportedResourceByIndex(0, 'jsonld-2.jsonld');
60
60
  // When I select Imported from the menu
61
61
  ImportUserDataSteps.selectImportedResources();
62
62
  // Then I should see only imported files selected
@@ -83,7 +83,7 @@ describe('Import user data: Batch operations', () => {
83
83
  ImportUserDataSteps.batchImport();
84
84
  ImportSettingsDialogSteps.import();
85
85
  // Then the file should be imported
86
- ImportUserDataSteps.checkImportedResource(0, 'jsonld-2.jsonld');
86
+ ImportUserDataSteps.checkImportedResourceByIndex(0, 'jsonld-2.jsonld');
87
87
  ImportUserDataSteps.selectImportedResources();
88
88
  ImportUserDataSteps.getSelectedResources().should('have.length', 1);
89
89
  ImportUserDataSteps.deselectAllResources();
@@ -94,8 +94,8 @@ describe('Import user data: Batch operations', () => {
94
94
  ImportUserDataSteps.batchImport();
95
95
  ImportSettingsDialogSteps.import();
96
96
  // Then the files should be imported
97
- ImportUserDataSteps.checkImportedResource(1, 'jsonld.jsonld');
98
- ImportUserDataSteps.checkImportedResource(2, 'bnodes.ttl');
97
+ ImportUserDataSteps.checkImportedResourceByIndex(1, 'jsonld.jsonld');
98
+ ImportUserDataSteps.checkImportedResourceByIndex(2, 'bnodes.ttl');
99
99
  ImportUserDataSteps.selectImportedResources();
100
100
  ImportUserDataSteps.getSelectedResources().should('have.length', 3);
101
101
  });
@@ -162,9 +162,9 @@ function uploadWithImportFiles(files) {
162
162
  ImportUserDataSteps.selectFile([file1, file2, file3]);
163
163
  ImportSettingsDialogSteps.import();
164
164
  ImportUserDataSteps.getResources().should('have.length', 3);
165
- ImportUserDataSteps.checkImportedResource(0, 'jsonld-2.jsonld');
166
- ImportUserDataSteps.checkImportedResource(1, 'jsonld.jsonld');
167
- ImportUserDataSteps.checkImportedResource(2, 'bnodes.ttl');
165
+ ImportUserDataSteps.checkImportedResourceByIndex(0, 'jsonld-2.jsonld');
166
+ ImportUserDataSteps.checkImportedResourceByIndex(1, 'jsonld.jsonld');
167
+ ImportUserDataSteps.checkImportedResourceByIndex(2, 'bnodes.ttl');
168
168
  }
169
169
 
170
170
  function uploadFiles(data) {
@@ -58,6 +58,6 @@ describe('Import user data: URL import', () => {
58
58
  return xhr.response.body[0]?.status === 'ERROR'
59
59
  }), {timeout: 10000, interval: 1000}
60
60
  )
61
- ImportUserDataSteps.checkImportedResource(0, IMPORT_JSONLD_URL, 'https://example.com/0007-context.jsonld');
61
+ ImportUserDataSteps.checkImportedResourceByIndex(0, IMPORT_JSONLD_URL, 'https://example.com/0007-context.jsonld');
62
62
  });
63
63
  });
@@ -8,6 +8,19 @@ import HomeSteps from '../../../steps/home-steps.js';
8
8
  const FILE_TO_IMPORT = 'wine.rdf';
9
9
  const VALID_RESOURCE = 'USRegion';
10
10
 
11
+ /**
12
+ * Updates the links limit and waits for the graph reload it triggers to complete.
13
+ *
14
+ * @param {string} value the new links limit
15
+ */
16
+ function updateLinksLimit(value) {
17
+ VisualGraphSteps.updateLinksLimitField(value);
18
+ VisualGraphSteps.getLinksNumberField().should('have.value', value);
19
+ VisualGraphSteps.getUrl().should('match', new RegExp(`[?&]linksLimit=${value}(&|$)`));
20
+ VisualGraphSteps.getGraphVisualizationPane().should('be.visible');
21
+ VisualGraphSteps.getNodes();
22
+ }
23
+
11
24
  describe('Visual graph screen validation', () => {
12
25
 
13
26
  let repositoryId;
@@ -139,7 +152,8 @@ describe('Visual graph screen validation', () => {
139
152
  });
140
153
  });
141
154
 
142
- it('Test search for a valid resource with links', () => {
155
+ // FIXME: GDB-15041 Blank node should not be visible. This is problem from refactoring of the endpoints regarding reification triples visualization
156
+ it.skip('Test search for a valid resource with links', () => {
143
157
  VisualGraphSteps.openUSRegionUri();
144
158
  // Check include inferred
145
159
  VisualGraphSteps.toggleInferredStatements(true);
@@ -153,7 +167,8 @@ describe('Visual graph screen validation', () => {
153
167
  VisualGraphSteps.getNodes().and('have.length', 37);
154
168
  });
155
169
 
156
- it('Test collapse and expand a node', () => {
170
+ // FIXME: GDB-15041 Blank node should not be visible. This is problem from refactoring of the endpoints regarding reification triples visualization
171
+ it.skip('Test collapse and expand a node', () => {
157
172
  VisualGraphSteps.openUSRegionUri();
158
173
  VisualGraphSteps.toggleInferredStatements(false);
159
174
 
@@ -192,7 +207,8 @@ describe('Visual graph screen validation', () => {
192
207
  VisualGraphSteps.getNodeInfoPanel().should('not.exist');
193
208
  });
194
209
 
195
- it('Test remove child node', () => {
210
+ // FIXME: GDB-15041 Blank node should not be visible. This is problem from refactoring of the endpoints regarding reification triples visualization
211
+ it.skip('Test remove child node', () => {
196
212
  VisualGraphSteps.openUSRegionUri();
197
213
  VisualGraphSteps.toggleInferredStatements(false);
198
214
  // Verify that before given node is removed there are 4 of them
@@ -226,7 +242,8 @@ describe('Visual graph screen validation', () => {
226
242
  cy.get('.incontext-search-rdf-resource input').should('be.visible');
227
243
  });
228
244
 
229
- it('Test expand collapsed node which has connections with double click', () => {
245
+ // FIXME: GDB-15041 Blank node should not be visible. This is problem from refactoring of the endpoints regarding reification triples visualization
246
+ it.skip('Test expand collapsed node which has connections with double click', () => {
230
247
  VisualGraphSteps.openUSRegionUri();
231
248
  VisualGraphSteps.toggleInferredStatements(false);
232
249
 
@@ -294,7 +311,8 @@ describe('Visual graph screen validation', () => {
294
311
  });
295
312
  });
296
313
 
297
- it('Test maximum links to show', () => {
314
+ // FIXME: GDB-15041 Blank node should not be visible. This is problem from refactoring of the endpoints regarding reification triples visualization
315
+ it.skip('Test maximum links to show', () => {
298
316
  VisualGraphSteps.openUSRegionUri();
299
317
 
300
318
  // Verify that 36 links (nodes) are displayed
@@ -311,6 +329,20 @@ describe('Visual graph screen validation', () => {
311
329
  VisualGraphSteps.getPredicates().should('have.length', 36);
312
330
  });
313
331
 
332
+ it('Should close the settings panel when navigating away from the graph', () => {
333
+ // Given I have opened a graph
334
+ VisualGraphSteps.openUSRegionUri();
335
+ // And I have opened the visual graph settings
336
+ VisualGraphSteps.openVisualGraphSettings();
337
+ VisualGraphSteps.getSettingsPanel().should('be.visible');
338
+
339
+ // When I click the visual graph submenu
340
+ MainMenuSteps.clickOnSubmenuVisualGraph();
341
+
342
+ // Then I expect the settings panel to be closed
343
+ VisualGraphSteps.getSettingsPanel().should('not.exist');
344
+ });
345
+
314
346
  it('Test include inferred Statements', () => {
315
347
  VisualGraphSteps.openUSRegionUri();
316
348
  // Check include inferred
@@ -361,9 +393,11 @@ describe('Visual graph screen validation', () => {
361
393
  // Pick a type that is displayed in the diagram for example "vin:Zinfandel"
362
394
  VisualGraphSteps.getNodes().and('contain', 'Zinfandel');
363
395
 
396
+ // Set the connections limit to 10 and wait for the graph reload it triggers,
397
+ // so that the settings are opened after the navigation has completed
398
+ updateLinksLimit('10');
399
+
364
400
  VisualGraphSteps.openVisualGraphSettings();
365
- // Set the connections limit to 10
366
- VisualGraphSteps.updateLinksLimitField('10');
367
401
  // Go to Settings and set "vin:Zinfandel" as an ignored type
368
402
  VisualGraphSteps.getIgnoredTypesField().clear().type('vin:Zinfandel').type('{enter}');
369
403
 
@@ -395,12 +429,14 @@ describe('Visual graph screen validation', () => {
395
429
  // Pick a type that is displayed in the diagram for example "vin:Zinfandel"
396
430
  VisualGraphSteps.getPredicates().should('contain', 'hasSugar');
397
431
 
432
+ // Set the connections limit to 10 and wait for the graph reload it triggers,
433
+ // so that the settings are opened after the navigation has completed
434
+ updateLinksLimit('10');
435
+
398
436
  VisualGraphSteps.openVisualGraphSettings();
399
437
  // Go to predicates tab
400
438
  VisualGraphSteps.openPredicatesTab();
401
439
 
402
- // Set the connections limit to 10
403
- VisualGraphSteps.updateLinksLimitField('10');
404
440
  // Set "vin:hasSugar" as an ignored predicate
405
441
  VisualGraphSteps.getIgnoredPredicatesField().clear().type('vin:hasSugar').type('{enter}');
406
442
 
@@ -33,7 +33,7 @@ describe('Confirm duplicate RDF file', () => {
33
33
  GuideDialogSteps.assertDialogWithTitleIsVisible('Import file');
34
34
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import button.');
35
35
  ImportSettingsDialogSteps.import();
36
- ImportUserDataSteps.checkImportedResource(0, GUIDE_RESOURCE_FILE);
36
+ ImportUserDataSteps.checkImportedResourceByIndex(0, GUIDE_RESOURCE_FILE);
37
37
 
38
38
  // WHEN: I run a guide that includes the Import RDF File step.
39
39
  GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 1/6');
@@ -106,17 +106,13 @@ describe('Main Menu Guide steps', () => {
106
106
  BaseSteps.validateUrl('/sparql');
107
107
 
108
108
  // TTYG
109
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 1/3');
110
- GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the Talk to Your Graph view to create an agen');
109
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 1/2');
110
+ GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the Talk to Your Graph view to create an agent.');
111
111
  GuideDialogSteps.clickOnNextButton();
112
112
 
113
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 2/3');
114
- GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Lab menu.');
115
- MainMenuSteps.clickOnMenuLab();
116
-
117
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 3/3');
113
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 2/2');
118
114
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Talk to Your Graph menu.');
119
- MainMenuSteps.clickOnTTYGSubmenu();
115
+ MainMenuSteps.clickOnMenuTTYG();
120
116
  BaseSteps.validateUrl('/ttyg');
121
117
 
122
118
  // Autocomplete
@@ -249,15 +245,11 @@ describe('Main Menu Guide steps', () => {
249
245
  BaseSteps.validateUrl('/sparql');
250
246
 
251
247
  // TTYG
252
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 1/3');
248
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 1/2');
253
249
  GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the Talk to Your Graph view to create an agen');
254
250
  GuideDialogSteps.clickOnNextButton();
255
251
 
256
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 2/3');
257
- GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Lab menu.');
258
- GuideDialogSteps.clickOnNextButton();
259
-
260
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 3/3');
252
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 2/2');
261
253
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Talk to Your Graph menu.');
262
254
  GuideDialogSteps.clickOnNextButton();
263
255
  BaseSteps.validateUrl('/ttyg');
@@ -9,8 +9,7 @@ import {GuidesStubs} from "../../../../stubs/guides/guides-stubs.js";
9
9
  import {TTYGStubs} from "../../../../stubs/ttyg/ttyg-stubs.js";
10
10
  import {RepositoriesStubs} from "../../../../stubs/repositories/repositories-stubs.js";
11
11
 
12
- // TODO: there is some issue with the context side field focus that breaks the test. Should be fixed soon
13
- describe.skip('ttyg configure agent guide', () => {
12
+ describe('ttyg configure agent guide', () => {
14
13
  let repositoryId;
15
14
 
16
15
  beforeEach(() => {
@@ -34,116 +33,112 @@ describe.skip('ttyg configure agent guide', () => {
34
33
  })
35
34
 
36
35
  it('should create and configure TTYG agent with actions', () => {
37
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 1/30');
36
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 1/29');
38
37
  GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the Talk to Your Graph view to create an agent.');
39
38
  GuideDialogSteps.clickOnNextButton();
40
39
 
41
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 2/30');
42
- GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Lab menu.');
43
- MainMenuSteps.clickOnMenuLab();
44
-
45
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 3/30');
40
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 2/29');
46
41
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Talk to Your Graph menu.');
47
- MainMenuSteps.clickOnTTYGSubmenu();
42
+ MainMenuSteps.clickOnMenuTTYG();
48
43
 
49
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 5/30');
44
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 4/29');
50
45
  GuideDialogSteps.assertDialogWithContentIsVisible('An agent is a helpful assistant that can answer your queries. You need to configure an agent in order to ask anything of Talk to Your Graph.');
51
46
  GuideDialogSteps.clickOnNextButton();
52
47
 
53
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 7/30');
48
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 6/29');
54
49
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the create agent button to create a new agent.');
55
50
  TTYGViewSteps.clickCreateAgentButton();
56
51
 
57
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 9/30');
52
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 8/29');
58
53
  GuideDialogSteps.assertDialogWithContentIsVisible('Type a name for the agent. You will refer to it later.');
59
54
  TtygAgentSettingsModalSteps.typeAgentName('MyAgent');
60
55
  GuideDialogSteps.clickOnNextButton();
61
56
 
62
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 10/30');
57
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 9/29');
63
58
  GuideDialogSteps.assertDialogWithContentIsVisible('Here you can type the name of the OpenAI model to be used.');
64
59
  TtygAgentSettingsModalSteps.clearLLMModel();
65
60
  TtygAgentSettingsModalSteps.typeLLMModel('gpt-3.5-turbo');
66
61
  GuideDialogSteps.clickOnNextButton();
67
62
 
68
- GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 11/30');
63
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 10/29');
69
64
  GuideDialogSteps.assertDialogWithContentIsVisible('Sets the sampling temperature of the agent. Lower values result in more consistent, repetitive responses generated by the agent and higher values result in a wider variety of responses');
70
65
  TtygAgentSettingsModalSteps.setTemperature(0.8);
71
66
  GuideDialogSteps.clickOnNextButton();
72
67
 
73
- GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 12/30');
68
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 11/29');
74
69
  GuideDialogSteps.assertDialogWithContentIsVisible('Sets the nucleus sampling of the agent');
75
70
  TtygAgentSettingsModalSteps.setTopP(0.9);
76
71
  GuideDialogSteps.clickOnNextButton();
77
72
 
78
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 13/30');
73
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 12/29');
79
74
  GuideDialogSteps.assertDialogWithContentIsVisible('Enabling SPARQL search allows the agent to answers questions by performing a SPARQL query.');
80
75
  GuideDialogSteps.clickOnNextButton();
81
76
 
82
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 14/30');
77
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 13/29');
83
78
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable SPARQL search query method.');
84
79
  TtygAgentSettingsModalSteps.enableSparqlExtractionMethod();
85
80
 
86
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 15/30');
81
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 14/29');
87
82
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable providing an ontology in a named graph.');
88
83
  TtygAgentSettingsModalSteps.selectSparqlMethodOntologyGraph();
89
84
 
90
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 16/30');
85
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 15/29');
91
86
  GuideDialogSteps.assertDialogWithContentIsVisible('Type http://example.org/some/test/ontology as the named graph which contains the ontology.');
92
87
  TtygAgentSettingsModalSteps.clearSparqlMethodOntologyGraphField();
93
88
  TtygAgentSettingsModalSteps.typeSparqlMethodOntologyGraphField('http://example.org/some/test/ontology');
94
89
  GuideDialogSteps.clickOnNextButton();
95
90
 
96
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 17/30');
91
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 16/29');
97
92
  GuideDialogSteps.assertDialogWithContentIsVisible('Check to automatically add missing namespaces.');
98
93
  TtygAgentSettingsModalSteps.toggleAddMissingNamespacesCheckbox();
99
94
 
100
- GuideDialogSteps.assertDialogWithTitleIsVisible('FTS search query method — 18/30');
95
+ GuideDialogSteps.assertDialogWithTitleIsVisible('FTS search query method — 17/29');
101
96
  GuideDialogSteps.assertDialogWithContentIsVisible('Enabling FTS search allows the agent to answer questions by using full-text search in literals and IRIs.');
102
97
  GuideDialogSteps.clickOnNextButton();
103
98
 
104
- GuideDialogSteps.assertDialogWithTitleIsVisible('FTS search query method — 19/30');
99
+ GuideDialogSteps.assertDialogWithTitleIsVisible('FTS search query method — 18/29');
105
100
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable FTS search query method.');
106
101
  TtygAgentSettingsModalSteps.enableFtsExtractionMethod();
107
102
 
108
- GuideDialogSteps.assertDialogWithTitleIsVisible('FTS search query method — 20/30');
103
+ GuideDialogSteps.assertDialogWithTitleIsVisible('FTS search query method — 19/29');
109
104
  GuideDialogSteps.assertDialogWithContentIsVisible('Type 100 as the maximum number of triples to retrieve per call.');
110
105
  TtygAgentSettingsModalSteps.setFtsSearchMaxTriples(100);
111
106
  GuideDialogSteps.clickOnNextButton();
112
107
 
113
- GuideDialogSteps.assertDialogWithTitleIsVisible('Similarity search query method — 21/30');
108
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Similarity search query method — 20/29');
114
109
  GuideDialogSteps.assertDialogWithContentIsVisible('Enabling Similarity search allows the agent to answer questions by using Similarity search.');
115
110
  GuideDialogSteps.clickOnNextButton();
116
111
 
117
- GuideDialogSteps.assertDialogWithTitleIsVisible('Similarity search query method — 22/30');
112
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Similarity search query method — 21/29');
118
113
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable Similarity search query method.');
119
114
  TtygAgentSettingsModalSteps.enableSimilaritySearchMethodPanel();
120
115
 
121
- GuideDialogSteps.assertDialogWithTitleIsVisible('Similarity search query method — 23/30');
116
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Similarity search query method — 22/29');
122
117
  GuideDialogSteps.assertDialogWithContentIsVisible('Select the index to use for Similarity search.');
123
118
  TtygAgentSettingsModalSteps.selectSimilarityIndex(0);
124
119
  GuideDialogSteps.clickOnNextButton();
125
120
 
126
- GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 24/30');
121
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 23/29');
127
122
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable Full-text search in labels for IRI discovery');
128
123
  TtygAgentSettingsModalSteps.checkIriDiscoverySearchCheckbox();
129
124
 
130
- GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 25/30');
125
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 24/29');
131
126
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable Autocomplete for IRI discovery.');
132
127
  TtygAgentSettingsModalSteps.checkAutocompleteSearchCheckbox();
133
128
 
134
- GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 26/30');
129
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 25/29');
135
130
  GuideDialogSteps.assertDialogWithContentIsVisible('Set the Max number of results (IRIs) per call to 15');
136
131
  TtygAgentSettingsModalSteps.setAutocompleteMaxResults(15);
137
132
  GuideDialogSteps.clickOnNextButton();
138
133
 
139
- GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 27/30');
134
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Talk to Your Graph — 26/29');
140
135
  GuideDialogSteps.assertDialogWithContentIsVisible('Set Context Size to 4096 so the model can use the ontology and conversation history to answer correctly');
141
136
  TtygAgentSettingsModalSteps.getContextSizeField().focus();
142
137
  TtygAgentSettingsModalSteps.clearContextSize();
143
138
  TtygAgentSettingsModalSteps.enterContextSize(4096);
144
139
  GuideDialogSteps.clickOnNextButton();
145
140
 
146
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 28/30');
141
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 27/29');
147
142
  GuideDialogSteps.assertDialogWithContentIsVisible('Enter the following in the input:');
148
143
  TtygAgentSettingsModalSteps.clearUserInstructions();
149
144
  TtygAgentSettingsModalSteps.getCodeToCopy().then(code => {
@@ -151,7 +146,7 @@ describe.skip('ttyg configure agent guide', () => {
151
146
  GuideDialogSteps.clickOnNextButton();
152
147
  });
153
148
 
154
- GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 29/30');
149
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Create an agent — 28/29');
155
150
  GuideDialogSteps.assertDialogWithContentIsVisible('Click to save the agent settings');
156
151
  TtygAgentSettingsModalSteps.saveAgent();
157
152
  });
@@ -28,15 +28,11 @@ describe('Edit TTYG agent guide', () => {
28
28
  it('should end guide when no api key is present', () => {
29
29
  TTYGStubs.stubAgentListGetError('Set the config property \'graphdb.llm.api-key\' to your LLM API key');
30
30
 
31
- GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 1/18');
32
- GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Lab menu.');
33
- MainMenuSteps.clickOnMenuLab();
34
-
35
- GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 2/18');
31
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 1/17');
36
32
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Talk to Your Graph menu.');
37
- MainMenuSteps.clickOnTTYGSubmenu();
33
+ MainMenuSteps.clickOnMenuTTYG();
38
34
 
39
- GuideDialogSteps.assertDialogWithTitleIsVisible('Missing OpenAI key — 3/18');
35
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Missing OpenAI key — 2/17');
40
36
  GuideDialogSteps.assertDialogWithContentIsVisible('To use Talk to Your Graph, GraphDB must first be configured to work with LLM API.');
41
37
  GuideDialogSteps.clickOnCloseButton();
42
38
  });
@@ -48,39 +44,35 @@ describe('Edit TTYG agent guide', () => {
48
44
  TTYGStubs.stubAgentEdit();
49
45
  RepositoriesStubs.stubRepositoryModel(repositoryId);
50
46
 
51
- GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 1/18');
52
- GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Lab menu.');
53
- MainMenuSteps.clickOnMenuLab();
54
-
55
- GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 2/18');
47
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 1/17');
56
48
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Talk to Your Graph menu.');
57
- MainMenuSteps.clickOnTTYGSubmenu();
49
+ MainMenuSteps.clickOnMenuTTYG();
58
50
 
59
- GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 4/18');
51
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 3/17');
60
52
  GuideDialogSteps.assertDialogWithContentIsVisible('An agent\'s configuration such as the extraction methods can be reconfigured at any time');
61
53
  GuideDialogSteps.clickOnNextButton();
62
54
 
63
- GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 11/18');
55
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 10/17');
64
56
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the edit agent button to edit the configuration of the selected agent.');
65
57
  TTYGViewSteps.editCurrentAgent();
66
58
 
67
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 13/18');
59
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 12/17');
68
60
  GuideDialogSteps.assertDialogWithContentIsVisible('Enabling SPARQL search allows the agent to answers questions by performing a SPARQL query');
69
61
  GuideDialogSteps.clickOnNextButton();
70
62
 
71
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 14/18');
63
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 13/17');
72
64
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable SPARQL search query method.');
73
65
  TtygAgentSettingsModalSteps.enableSparqlExtractionMethod();
74
66
 
75
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 15/18');
67
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 14/17');
76
68
  GuideDialogSteps.assertDialogWithContentIsVisible('Click on the toggle to enable providing an ontology in a named graph.');
77
69
  TtygAgentSettingsModalSteps.selectSparqlMethodOntologyGraph();
78
70
 
79
- GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 16/18');
71
+ GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL search query method — 15/17');
80
72
  GuideDialogSteps.assertDialogWithContentIsVisible('Type http://example.com as the named graph which contains the ontology.');
81
73
  GuideDialogSteps.clickOnNextButton();
82
74
 
83
- GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 17/18');
75
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 16/17');
84
76
  GuideDialogSteps.assertDialogWithContentIsVisible('Click to save the agent settings.');
85
77
  TtygAgentSettingsModalSteps.saveAgent();
86
78
  ModalDialogSteps.getDialog().should('not.exist');
@@ -57,7 +57,7 @@ describe('Import server files - Batch operations', () => {
57
57
  // precondition for the next step
58
58
  ImportServerFilesSteps.importResourceByName(FILE_FOR_IMPORT);
59
59
  ImportSettingsDialogSteps.import();
60
- ImportServerFilesSteps.checkImportedResource(0, FILE_FOR_IMPORT);
60
+ ImportServerFilesSteps.checkImportedResourceByName(FILE_FOR_IMPORT);
61
61
  // When I select Imported from the menu
62
62
  ImportServerFilesSteps.selectImportedResources();
63
63
  // Then I should see only imported files selected
@@ -97,8 +97,8 @@ describe('Import server files - Batch operations', () => {
97
97
  // Then the files should be imported
98
98
  // We send only the files in the folder for import
99
99
  // ImportServerFilesSteps.checkImportedResource(0, 'more-files');
100
- ImportServerFilesSteps.checkImportedResource(0, 'jsonld-file.jsonld');
101
- ImportServerFilesSteps.checkImportedResource(0, 'rdfxml.rdf');
100
+ ImportServerFilesSteps.checkImportedResourceByName('jsonld-file.jsonld');
101
+ ImportServerFilesSteps.checkImportedResourceByName('rdfxml.rdf');
102
102
  ImportServerFilesSteps.deselectFileByName('more-files');
103
103
  // When I select the folder and click on the batch reset button
104
104
  ImportServerFilesSteps.selectFileByName('more-files');
@@ -116,7 +116,7 @@ describe('Import server files - Batch operations', () => {
116
116
  // Then the files should be imported
117
117
  // We send only the files in the folder for import
118
118
  // ImportServerFilesSteps.checkImportedResource(0, 'more-files');
119
- ImportServerFilesSteps.checkImportedResource(0, 'jsonld-file.jsonld');
120
- ImportServerFilesSteps.checkImportedResource(0, 'rdfxml.rdf');
119
+ ImportServerFilesSteps.checkImportedResourceByName('jsonld-file.jsonld');
120
+ ImportServerFilesSteps.checkImportedResourceByName('rdfxml.rdf');
121
121
  });
122
122
  });