graphdb-workbench-tests 3.3.3 → 3.4.0-TR1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cypress-flaky.config.js +2 -0
- package/cypress-legacy.config.js +2 -2
- package/cypress-security.config.js +3 -14
- package/e2e-flaky/import/import-server-files-operations.spec.js +1 -1
- package/e2e-flaky/import/import-user-data-batch-operations.spec.js +1 -1
- package/e2e-flaky/setup/sparql-template-create.js +3 -18
- package/e2e-flaky/sparql-editor/actions/execute-update-query.spec.js +2 -12
- package/e2e-flaky/sparql-editor/actions/share-query.spec.js +1 -7
- package/e2e-flaky/sparql-editor/yasr/table-plugin.spec.js +1 -6
- package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +140 -0
- package/e2e-legacy/explore/visual-graph/visual.graph.spec.js +57 -85
- package/e2e-legacy/guides/execute-sparql-query/execute-sparql-query-guide.spec.js +92 -0
- package/e2e-legacy/guides/import-rdf-file/confirm-duplicate-rdf-file.spec.js +63 -0
- package/e2e-legacy/guides/import-rdf-file/import-rdf-file.spec.js +105 -0
- package/e2e-legacy/guides/navigation/navigation-guide.spec.js +64 -0
- package/e2e-legacy/guides/rdf-rank/rdf-rank-guide.spec.js +42 -0
- package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +167 -0
- package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +2 -2
- package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +372 -0
- package/e2e-legacy/guides/welcome/welcome-guide.spec.js +36 -0
- package/e2e-legacy/help/guides/guides-autostart.spec.js +36 -3
- package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +83 -0
- package/e2e-legacy/help/guides/movies-interactive-guide.spec.js +47 -49
- package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +1 -0
- package/e2e-legacy/resource/resource.spec.js +1 -6
- package/e2e-legacy/setup/aclmanagement/create-rule.spec.js +3 -0
- package/e2e-legacy/setup/connectors-lucene.spec.js +24 -8
- package/e2e-legacy/sparql-editor/actions/expand-results-over-sameas.spec.js +1 -1
- package/e2e-legacy/sparql-editor/actions/show-saved-queries.spec.js +1 -6
- package/e2e-legacy/sparql-editor/yasgui-tabs.spec.js +2 -12
- package/e2e-legacy/sparql-editor/yasr/pagination.spec.js +5 -18
- package/e2e-legacy/sparql-editor/yasr/table-plugin.spec.js +1 -6
- package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +1 -6
- package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +80 -0
- package/e2e-legacy/ttyg/chat-list.spec.js +2 -12
- package/e2e-legacy/ttyg/create-agent.spec.js +8 -48
- package/e2e-legacy/ttyg/edit-agent.spec.js +2 -12
- package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +73 -61
- package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +15 -0
- package/fixtures/guides/execute-sparql-query/execute-sparql-query-guide.json +54 -0
- package/fixtures/guides/import-rdf-file/confirm-duplicate-rdf-file-guide.json +30 -0
- package/fixtures/guides/import-rdf-file/import-rdf-file-guide.json +21 -0
- package/fixtures/guides/navigation/navigation-guide.json +60 -0
- package/fixtures/guides/rdf-rank/rdf-rank-guide.json +18 -0
- package/fixtures/guides/table-graph-explore/table-graph-explore-guide.json +51 -0
- package/fixtures/guides/table-graph-explore/table-graph-explore-without-substeps-guide.json +25 -0
- package/fixtures/guides/visual-graph/visual-graph-config-guide.json +39 -0
- package/fixtures/guides/visual-graph/visual-graph-guide.json +85 -0
- package/fixtures/guides/welcome/welcome-guide.json +18 -0
- package/npm-shrinkwrap.json +329 -276
- package/package.json +1 -1
- package/steps/guides/guide-dialog-steps.js +60 -2
- package/steps/main-menu-steps.js +1 -0
- package/steps/setup/acl-management-steps.js +4 -0
- package/steps/sparql-editor-steps.js +5 -4
- package/steps/sparql-steps.js +13 -1
- package/steps/visual-graph-steps.js +76 -2
- package/steps/yasgui/yasqe-steps.js +29 -4
- package/steps/yasgui/yasr-steps.js +27 -1
- package/stubs/guides/guides-stubs.js +41 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import {GuideSteps} from '../../../steps/guides/guide-steps.js';
|
|
2
|
+
import {GuideDialogSteps} from '../../../steps/guides/guide-dialog-steps.js';
|
|
3
|
+
import {MainMenuSteps} from '../../../steps/main-menu-steps.js';
|
|
4
|
+
import {GuidesStubs} from '../../../stubs/guides/guides-stubs.js';
|
|
5
|
+
import SparqlSteps from '../../../steps/sparql-steps.js';
|
|
6
|
+
import {YasqeSteps} from '../../../steps/yasgui/yasqe-steps.js';
|
|
7
|
+
import {YasrSteps} from '../../../steps/yasgui/yasr-steps.js';
|
|
8
|
+
|
|
9
|
+
describe('Execute SPARQL query guide steps', () => {
|
|
10
|
+
let repositoryId;
|
|
11
|
+
const FILE_TO_IMPORT = 'swapi-dataset.ttl';
|
|
12
|
+
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
repositoryId = 'execute-sparql-query-guide-' + Date.now();
|
|
15
|
+
GuidesStubs.stubExecuteSparqlQueryGuide();
|
|
16
|
+
cy.createRepository({id: repositoryId});
|
|
17
|
+
cy.presetRepository(repositoryId);
|
|
18
|
+
cy.importServerFile(repositoryId, FILE_TO_IMPORT);
|
|
19
|
+
|
|
20
|
+
GuideSteps.visit();
|
|
21
|
+
GuideSteps.verifyGuidesListExists();
|
|
22
|
+
cy.wait('@getGuides');
|
|
23
|
+
GuideSteps.runFirstGuide();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
cy.deleteRepository(repositoryId);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('Should execute SPARQL query', () => {
|
|
31
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 1/5');
|
|
32
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the SPARQL Query & Update view to execute queries.');
|
|
33
|
+
GuideDialogSteps.clickOnNextButton();
|
|
34
|
+
|
|
35
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 2/5');
|
|
36
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the SPARQL menu.');
|
|
37
|
+
MainMenuSteps.clickOnSparqlMenu();
|
|
38
|
+
|
|
39
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 3/5');
|
|
40
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Enter the following SPARQL query: ');
|
|
41
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Extra content for query.');
|
|
42
|
+
GuideDialogSteps.copyQueryToEditor();
|
|
43
|
+
YasqeSteps.verifyQueryTyped("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n select * where { \n\t?s rdfs:label ?o .\n} limit 3 ")
|
|
44
|
+
GuideDialogSteps.clickOnNextButton();
|
|
45
|
+
|
|
46
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 4/5');
|
|
47
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Run button.');
|
|
48
|
+
YasqeSteps.forceExecuteQuery();
|
|
49
|
+
|
|
50
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 5/5');
|
|
51
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The table shows the results from executing the query.');
|
|
52
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Extra content for result.');
|
|
53
|
+
GuideDialogSteps.clickOnNextButton();
|
|
54
|
+
|
|
55
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL Query & Update');
|
|
56
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Some extra explain content');
|
|
57
|
+
GuideDialogSteps.clickOnNextButton();
|
|
58
|
+
|
|
59
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL Query & Update');
|
|
60
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the rdf:type IRI to explore it.');
|
|
61
|
+
YasrSteps.clickOnResource(0, 1);
|
|
62
|
+
cy.url().should('include', '/resource?uri=https:%2F%2Fswapi.co%2Fresource%2Fplanet%2F25');
|
|
63
|
+
YasrSteps.getResults().should('have.length', 10);
|
|
64
|
+
|
|
65
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 1/5');
|
|
66
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the SPARQL Query & Update view to execute queries.');
|
|
67
|
+
GuideDialogSteps.clickOnNextButton();
|
|
68
|
+
|
|
69
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 2/5');
|
|
70
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the SPARQL menu.');
|
|
71
|
+
MainMenuSteps.clickOnSparqlMenu();
|
|
72
|
+
|
|
73
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL Query & Update — 3/5');
|
|
74
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Enter the following SPARQL query:');
|
|
75
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The query constructs a graph of films and their characters from the Star Wars API.');
|
|
76
|
+
GuideDialogSteps.copyQueryToEditor();
|
|
77
|
+
YasqeSteps.verifyQueryTyped("PREFIX voc: <https://swapi.co/vocabulary/>\nPREFIX swapi: <https://swapi.co/resource/>\n\nCONSTRUCT {\n?film swapi:hasCharacter ?person .\n}\nWHERE {\n?film a voc:Film ;\nvoc:character ?person .\n}")
|
|
78
|
+
GuideDialogSteps.clickOnNextButton();
|
|
79
|
+
|
|
80
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL Query & Update — 4/5');
|
|
81
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Run button.');
|
|
82
|
+
YasqeSteps.forceExecuteQuery();
|
|
83
|
+
|
|
84
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('SPARQL Query & Update — 5/5');
|
|
85
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Visual button.');
|
|
86
|
+
SparqlSteps.visualizeConstructQuery();
|
|
87
|
+
cy.url().should('include', '/graphs-visualizations');
|
|
88
|
+
|
|
89
|
+
GuideDialogSteps.clickOnCloseButton();
|
|
90
|
+
GuideDialogSteps.assertDialogIsClosed();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import {GuidesStubs} from "../../../stubs/guides/guides-stubs.js";
|
|
2
|
+
import {GuideSteps} from "../../../steps/guides/guide-steps.js";
|
|
3
|
+
import {GuideDialogSteps} from "../../../steps/guides/guide-dialog-steps.js";
|
|
4
|
+
import ImportSteps from "../../../steps/import/import-steps.js";
|
|
5
|
+
import {ImportUserDataSteps} from "../../../steps/import/import-user-data-steps.js";
|
|
6
|
+
import {ImportSettingsDialogSteps} from "../../../steps/import/import-settings-dialog-steps.js";
|
|
7
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps.js";
|
|
8
|
+
import {FileOverwriteDialogSteps} from "../../../steps/import/file-overwrite-dialog-steps.js";
|
|
9
|
+
|
|
10
|
+
describe('Confirm duplicate RDF file', () => {
|
|
11
|
+
const GUIDE_RESOURCE_FILE = 'starwars.ttl';
|
|
12
|
+
let repositoryId;
|
|
13
|
+
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
repositoryId = 'confirm-duplicate-rdf-file-guide-step-' + Date.now();
|
|
16
|
+
GuidesStubs.stubConfirmDuplicatedRDFFileGuide();
|
|
17
|
+
cy.createRepository({id: repositoryId});
|
|
18
|
+
cy.presetRepository(repositoryId);
|
|
19
|
+
|
|
20
|
+
GuideSteps.visit();
|
|
21
|
+
GuideSteps.verifyGuidesListExists();
|
|
22
|
+
cy.wait('@getGuides');
|
|
23
|
+
GuideSteps.runFirstGuide()
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
cy.deleteRepository(repositoryId);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('Should display an additional step that prompts the user to override the already imported file', () => {
|
|
31
|
+
// GIVEN: I have already uploaded an RDF file with the same name as the guide's rdf file.
|
|
32
|
+
ImportSteps.selectFile(`fixtures/guides/${GUIDE_RESOURCE_FILE}`);
|
|
33
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file');
|
|
34
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import button.');
|
|
35
|
+
ImportSettingsDialogSteps.import();
|
|
36
|
+
ImportUserDataSteps.checkImportedResource(0, GUIDE_RESOURCE_FILE);
|
|
37
|
+
|
|
38
|
+
// WHEN: I run a guide that includes the Import RDF File step.
|
|
39
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 1/6');
|
|
40
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the Import view to import data from a file.');
|
|
41
|
+
GuideDialogSteps.clickOnNextButton();
|
|
42
|
+
|
|
43
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 2/6');
|
|
44
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import menu.');
|
|
45
|
+
MainMenuSteps.clickOnMenuImport();
|
|
46
|
+
|
|
47
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 3/6');
|
|
48
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Upload RDF files button and choose a file with the name starwars.ttl.');
|
|
49
|
+
ImportSteps.selectFile(`fixtures/guides/${GUIDE_RESOURCE_FILE}`);
|
|
50
|
+
|
|
51
|
+
// THEN: I should see an additional step that prompts me to override the already imported file.
|
|
52
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 4/6');
|
|
53
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Yes button to override the existing file.');
|
|
54
|
+
|
|
55
|
+
// WHEN: The user confirms the override.
|
|
56
|
+
FileOverwriteDialogSteps.overwrite();
|
|
57
|
+
|
|
58
|
+
// THEN: The guide should continue with the import step.
|
|
59
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 5/6');
|
|
60
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import button.');
|
|
61
|
+
GuideDialogSteps.clickOnNextButton();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import {GuidesStubs} from "../../../stubs/guides/guides-stubs.js";
|
|
2
|
+
import {GuideSteps} from "../../../steps/guides/guide-steps.js";
|
|
3
|
+
import {GuideDialogSteps} from "../../../steps/guides/guide-dialog-steps.js";
|
|
4
|
+
import ImportSteps from "../../../steps/import/import-steps.js";
|
|
5
|
+
import {ToasterSteps} from "../../../steps/toaster-steps.js";
|
|
6
|
+
import {MainMenuSteps} from "../../../steps/main-menu-steps.js";
|
|
7
|
+
import {ImportSettingsDialogSteps} from "../../../steps/import/import-settings-dialog-steps.js";
|
|
8
|
+
|
|
9
|
+
describe('Import RDF file', () => {
|
|
10
|
+
const GUIDE_RESOURCE_FILE = 'starwars.ttl';
|
|
11
|
+
const WRONG_GUIDE_RESOURCE_FILE = 'movies.ttl';
|
|
12
|
+
let repositoryId;
|
|
13
|
+
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
repositoryId = 'import-rdf-file-guide-step-' + Date.now();
|
|
16
|
+
GuidesStubs.stubImportRDFFileGuide();
|
|
17
|
+
cy.createRepository({id: repositoryId});
|
|
18
|
+
cy.presetRepository(repositoryId);
|
|
19
|
+
|
|
20
|
+
GuideSteps.visit();
|
|
21
|
+
GuideSteps.verifyGuidesListExists();
|
|
22
|
+
cy.wait('@getGuides');
|
|
23
|
+
GuideSteps.runFirstGuide()
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
cy.deleteRepository(repositoryId);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('Should import an RDF file (User interaction)', () => {
|
|
31
|
+
// GIVEN: I start a guide that includes the Import RDF File step.
|
|
32
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 1/6');
|
|
33
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the Import view to import data from a file.');
|
|
34
|
+
GuideDialogSteps.clickOnNextButton();
|
|
35
|
+
|
|
36
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 2/6');
|
|
37
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import menu.');
|
|
38
|
+
MainMenuSteps.clickOnMenuImport();
|
|
39
|
+
|
|
40
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 3/6');
|
|
41
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Upload RDF files button and choose a file with the name starwars.ttl.');
|
|
42
|
+
|
|
43
|
+
// WHEN: I try to upload a wrong RDF file.
|
|
44
|
+
ImportSteps.selectFile(`fixtures/guides/${WRONG_GUIDE_RESOURCE_FILE}`);
|
|
45
|
+
|
|
46
|
+
// THEN: An error message should be displayed.
|
|
47
|
+
ToasterSteps.verifyError(`The uploaded file does not match the expected resource. Please upload ${GUIDE_RESOURCE_FILE}.`)
|
|
48
|
+
// AND: The guide should still be on the same step.
|
|
49
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file');
|
|
50
|
+
GuideDialogSteps.assertDialogWithContentIsVisible(`Click on the Upload RDF files button and choose a file with the name ${GUIDE_RESOURCE_FILE}.`);
|
|
51
|
+
|
|
52
|
+
// WHEN: I upload the correct RDF file.
|
|
53
|
+
ImportSteps.selectFile(`fixtures/guides/${GUIDE_RESOURCE_FILE}`);
|
|
54
|
+
|
|
55
|
+
// THEN: I expect the guide to continue.
|
|
56
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 5/6');
|
|
57
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import button.');
|
|
58
|
+
ImportSettingsDialogSteps.import();
|
|
59
|
+
|
|
60
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 6/6');
|
|
61
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Wait until import finished.');
|
|
62
|
+
GuideDialogSteps.clickOnNextButton();
|
|
63
|
+
|
|
64
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
65
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended.');
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('Should import an RDF file (Next flow)', () => {
|
|
69
|
+
// GIVEN: I start a guide that includes the Import RDF File step.
|
|
70
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 1/6');
|
|
71
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to use the Import view to import data from a file.');
|
|
72
|
+
GuideDialogSteps.clickOnNextButton();
|
|
73
|
+
|
|
74
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 2/6');
|
|
75
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import menu.');
|
|
76
|
+
GuideDialogSteps.clickOnNextButton();
|
|
77
|
+
|
|
78
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 3/6');
|
|
79
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Upload RDF files button and choose a file with the name starwars.ttl.');
|
|
80
|
+
|
|
81
|
+
// WHEN: I try to continue with the guide without selecting an RDF file.
|
|
82
|
+
GuideDialogSteps.clickOnNextButton();
|
|
83
|
+
|
|
84
|
+
// THEN: An error message should be displayed.
|
|
85
|
+
ToasterSteps.verifyError(`Upload the file ${GUIDE_RESOURCE_FILE} first`);
|
|
86
|
+
// AND: The guide should still be on the same step.
|
|
87
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file');
|
|
88
|
+
GuideDialogSteps.assertDialogWithContentIsVisible(`Click on the Upload RDF files button and choose a file with the name ${GUIDE_RESOURCE_FILE}.`);
|
|
89
|
+
|
|
90
|
+
// WHEN: I upload the correct RDF file.
|
|
91
|
+
ImportSteps.selectFile(`fixtures/guides/${GUIDE_RESOURCE_FILE}`);
|
|
92
|
+
|
|
93
|
+
// THEN: I expect the guide to continue.
|
|
94
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 5/6');
|
|
95
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Import button.');
|
|
96
|
+
GuideDialogSteps.clickOnNextButton();
|
|
97
|
+
|
|
98
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Import file — 6/6');
|
|
99
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Wait until import finished.');
|
|
100
|
+
GuideDialogSteps.clickOnNextButton();
|
|
101
|
+
|
|
102
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
103
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended.');
|
|
104
|
+
});
|
|
105
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import {GuidesStubs} from "../../../stubs/guides/guides-stubs.js";
|
|
2
|
+
import {GuideSteps} from "../../../steps/guides/guide-steps.js";
|
|
3
|
+
import {GuideDialogSteps} from "../../../steps/guides/guide-dialog-steps.js";
|
|
4
|
+
import {NotFoundSteps} from "../../../steps/not-found/not-found-steps.js";
|
|
5
|
+
import {BaseSteps} from "../../../steps/base-steps.js";
|
|
6
|
+
import {RepositoriesStubs} from "../../../stubs/repositories/repositories-stubs.js";
|
|
7
|
+
|
|
8
|
+
describe('navigation guide', () => {
|
|
9
|
+
let repositoryId;
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
repositoryId = 'navigation-guide-' + Date.now();
|
|
13
|
+
RepositoriesStubs.stubBaseEndpoints(repositoryId);
|
|
14
|
+
cy.createRepository({id: repositoryId});
|
|
15
|
+
cy.presetRepository(repositoryId);
|
|
16
|
+
GuidesStubs.stubNavigationGuide();
|
|
17
|
+
GuideSteps.visit();
|
|
18
|
+
GuideSteps.verifyGuidesListExists();
|
|
19
|
+
cy.wait('@getGuides');
|
|
20
|
+
GuideSteps.runFirstGuide();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
cy.deleteRepository(repositoryId);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should navigate between microfrontends', () => {
|
|
28
|
+
// Given I am on the 404 page, which is an angular view
|
|
29
|
+
BaseSteps.getUrl().should('include', '404');
|
|
30
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Navigation');
|
|
31
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This is a 404 page');
|
|
32
|
+
GuideDialogSteps.clickOnNextButton();
|
|
33
|
+
|
|
34
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Navigation');
|
|
35
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This is the go back home button');
|
|
36
|
+
|
|
37
|
+
// When I navigate to the home page
|
|
38
|
+
NotFoundSteps.clickGoHomeButton();
|
|
39
|
+
|
|
40
|
+
// Then I should see the home page, which is an angularjs view
|
|
41
|
+
BaseSteps.getUrl().should('include', '/');
|
|
42
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Navigation');
|
|
43
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This is the home page');
|
|
44
|
+
// When, I navigate to an angular view again (/sparql-new)
|
|
45
|
+
GuideDialogSteps.clickOnNextButton();
|
|
46
|
+
|
|
47
|
+
// Then I should see the new sparql view, which is an angular view
|
|
48
|
+
BaseSteps.getUrl().should('include', 'sparql-new');
|
|
49
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Navigation');
|
|
50
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This is the new sparql view');
|
|
51
|
+
|
|
52
|
+
// When, I navigate to an angularjs view again (import)
|
|
53
|
+
GuideDialogSteps.clickOnNextButton();
|
|
54
|
+
|
|
55
|
+
// Then I should see the import page, which is an angularjs view
|
|
56
|
+
BaseSteps.getUrl().should('include', 'import');
|
|
57
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Navigation');
|
|
58
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This is the import view');
|
|
59
|
+
GuideDialogSteps.clickOnNextButton();
|
|
60
|
+
|
|
61
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
62
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {GuidesStubs} from "../../../stubs/guides/guides-stubs.js";
|
|
2
|
+
import {GuideSteps} from "../../../steps/guides/guide-steps.js";
|
|
3
|
+
import {GuideDialogSteps} from "../../../steps/guides/guide-dialog-steps.js";
|
|
4
|
+
import {RdfRankSteps} from "../../../steps/setup/rdf-rank-steps.js";
|
|
5
|
+
|
|
6
|
+
describe('RDF rank', () => {
|
|
7
|
+
let repositoryId;
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
repositoryId = 'rdf-rank-guide-step-' + Date.now();
|
|
11
|
+
GuidesStubs.stubRDFRankGuide();
|
|
12
|
+
cy.createRepository({id: repositoryId});
|
|
13
|
+
cy.presetRepository(repositoryId);
|
|
14
|
+
|
|
15
|
+
GuideSteps.visit();
|
|
16
|
+
GuideSteps.verifyGuidesListExists();
|
|
17
|
+
cy.wait('@getGuides');
|
|
18
|
+
GuideSteps.runFirstGuide()
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
cy.deleteRepository(repositoryId);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('Should compute RDF Rank (User interaction)', () => {
|
|
26
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('RDF Rank');
|
|
27
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on Compute Full to start the RDF Rank computation.');
|
|
28
|
+
RdfRankSteps.computeRdfRank();
|
|
29
|
+
|
|
30
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
31
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended.');
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('Should compute RDF Rank (Next flow)', () => {
|
|
35
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('RDF Rank');
|
|
36
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('Click on Compute Full to start the RDF Rank computation.');
|
|
37
|
+
GuideDialogSteps.clickOnNextButton();
|
|
38
|
+
|
|
39
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
40
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended.');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import {GuidesStubs} from "../../../stubs/guides/guides-stubs.js";
|
|
2
|
+
import {GuideSteps} from "../../../steps/guides/guide-steps.js";
|
|
3
|
+
import {GuideDialogSteps} from "../../../steps/guides/guide-dialog-steps.js";
|
|
4
|
+
import {YasrSteps} from "../../../steps/yasgui/yasr-steps.js";
|
|
5
|
+
import {ResourceSteps} from "../../../steps/resource/resource-steps.js";
|
|
6
|
+
|
|
7
|
+
describe('Table Graph explore', () => {
|
|
8
|
+
const FILE_TO_IMPORT = 'wine.rdf';
|
|
9
|
+
let repositoryId;
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
repositoryId = 'table-graph-explore-guide-step-' + Date.now();
|
|
13
|
+
cy.createRepository({id: repositoryId});
|
|
14
|
+
cy.presetRepository(repositoryId);
|
|
15
|
+
cy.importServerFile(repositoryId, FILE_TO_IMPORT);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
cy.deleteRepository(repositoryId);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('Table Graph explore without substeps', () => {
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
GuidesStubs.stubTableGraphExploreWithoutSubstepsGuide();
|
|
25
|
+
|
|
26
|
+
GuideSteps.visit();
|
|
27
|
+
GuideSteps.verifyGuidesListExists();
|
|
28
|
+
cy.wait('@getGuides');
|
|
29
|
+
GuideSteps.runFirstGuide();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('Should explore visual graph (User interaction)', () => {
|
|
33
|
+
// GIVEN: A guide is started, and there are results in the SPARQL editor.
|
|
34
|
+
GuideDialogSteps.clickOnNextButton();
|
|
35
|
+
|
|
36
|
+
// WHEN: I click on a resource link in the results table.
|
|
37
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 1/2');
|
|
38
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to explore RDF data in tabular form without writing SPARQL queries. Click on the wine#madeFromGrape IRI to explore it.');
|
|
39
|
+
YasrSteps.clickOnResource(48, 1);
|
|
40
|
+
|
|
41
|
+
// THEN: I expect to see a dialog in the resource view.
|
|
42
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 2/2');
|
|
43
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The table shows RDF statements where the subject is the selected IRI, wine#madeFromGrape. The view can be configured to show statements where the IRI is the subject, predicate, object, context or in any position.');
|
|
44
|
+
GuideDialogSteps.clickOnNextButton();
|
|
45
|
+
|
|
46
|
+
// AND: The guide should end.
|
|
47
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
48
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended.');
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('Should explore visual graph (Next flow)', () => {
|
|
52
|
+
// GIVEN: A guide is started, and there are results in the SPARQL editor.
|
|
53
|
+
GuideDialogSteps.clickOnNextButton();
|
|
54
|
+
|
|
55
|
+
// WHEN: I proceed using the Next button.
|
|
56
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 1/2');
|
|
57
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to explore RDF data in tabular form without writing SPARQL queries. Click on the wine#madeFromGrape IRI to explore it.');
|
|
58
|
+
GuideDialogSteps.clickOnNextButton();
|
|
59
|
+
|
|
60
|
+
// THEN: I expect to see a dialog in the resource view.
|
|
61
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 2/2');
|
|
62
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The table shows RDF statements where the subject is the selected IRI, wine#madeFromGrape. The view can be configured to show statements where the IRI is the subject, predicate, object, context or in any position.');
|
|
63
|
+
GuideDialogSteps.clickOnNextButton();
|
|
64
|
+
|
|
65
|
+
// AND: The guide should end.
|
|
66
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
67
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe('Table Graph explore', () => {
|
|
72
|
+
beforeEach(() => {
|
|
73
|
+
GuidesStubs.stubTableGraphExploreGuide();
|
|
74
|
+
|
|
75
|
+
GuideSteps.visit();
|
|
76
|
+
GuideSteps.verifyGuidesListExists();
|
|
77
|
+
cy.wait('@getGuides');
|
|
78
|
+
GuideSteps.runFirstGuide();
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('Should explore visual graph (User interaction)', () => {
|
|
82
|
+
// GIVEN: A guide is started, and there are results in the SPARQL editor.
|
|
83
|
+
GuideDialogSteps.clickOnNextButton();
|
|
84
|
+
|
|
85
|
+
// WHEN: I click on the resource link highlighted in the guide dialog.
|
|
86
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 1/8');
|
|
87
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to explore RDF data in tabular form without writing SPARQL queries. Click on the wine#madeFromGrape IRI to explore it.');
|
|
88
|
+
YasrSteps.clickOnResource(48, 1);
|
|
89
|
+
|
|
90
|
+
// THEN: I expect to see a dialog in the resource view.
|
|
91
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 2/8');
|
|
92
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The table shows RDF statements where the subject is the selected IRI, wine#madeFromGrape. The view can be configured to show statements where the IRI is the subject, predicate, object, context or in any position.');
|
|
93
|
+
GuideDialogSteps.clickOnNextButton();
|
|
94
|
+
|
|
95
|
+
// AND: The guide continues with substeps.
|
|
96
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 3/8');
|
|
97
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can click on any IRI in the table to navigate to it. Click on vin:WineGrape.');
|
|
98
|
+
YasrSteps.clickOnResource(2, 3);
|
|
99
|
+
|
|
100
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 4/8');
|
|
101
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The table provides an easy way to view triples in which a given IRI is the subject, predicate, or object.');
|
|
102
|
+
GuideDialogSteps.clickOnNextButton();
|
|
103
|
+
|
|
104
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 5/8');
|
|
105
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can configure the view to show RDF statements where the current IRI is the subject, predicate, object, context or in any position. Click on the all tab.This is an extra content');
|
|
106
|
+
ResourceSteps.selectRole('all');
|
|
107
|
+
|
|
108
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 6/8');
|
|
109
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can always explore the same data using the Visual graph view. Click on the Visual graph button to try it now.');
|
|
110
|
+
ResourceSteps.clickOnVisualGraphButton();
|
|
111
|
+
|
|
112
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 7/8');
|
|
113
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The graph shows connections between the start node, vin:WineGrape, and other nodes. Each arrow represents one or more connections (RDF statements).');
|
|
114
|
+
GuideDialogSteps.clickOnNextButton();
|
|
115
|
+
|
|
116
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 8/8');
|
|
117
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can click on any IRI in the table to navigate to it. Click on wine#madeFromGrape.');
|
|
118
|
+
GuideDialogSteps.clickOnNextButton();
|
|
119
|
+
|
|
120
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
121
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended.');
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('Should explore visual graph (Next flow)', () => {
|
|
125
|
+
// GIVEN: A guide is started, and there are results in the SPARQL editor.
|
|
126
|
+
GuideDialogSteps.clickOnNextButton();
|
|
127
|
+
|
|
128
|
+
// WHEN: I proceed using the Next button.
|
|
129
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 1/8');
|
|
130
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The following steps show how to explore RDF data in tabular form without writing SPARQL queries. Click on the wine#madeFromGrape IRI to explore it.');
|
|
131
|
+
GuideDialogSteps.clickOnNextButton();
|
|
132
|
+
|
|
133
|
+
// THEN: I expect to see a dialog in the resource view.
|
|
134
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 2/8');
|
|
135
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The table shows RDF statements where the subject is the selected IRI, wine#madeFromGrape. The view can be configured to show statements where the IRI is the subject, predicate, object, context or in any position.');
|
|
136
|
+
GuideDialogSteps.clickOnNextButton();
|
|
137
|
+
|
|
138
|
+
// AND: The guide continues with substeps.
|
|
139
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 3/8');
|
|
140
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can click on any IRI in the table to navigate to it. Click on vin:WineGrape.');
|
|
141
|
+
YasrSteps.clickOnResource(2, 3);
|
|
142
|
+
|
|
143
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 4/8');
|
|
144
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The table provides an easy way to view triples in which a given IRI is the subject, predicate, or object.');
|
|
145
|
+
GuideDialogSteps.clickOnNextButton();
|
|
146
|
+
|
|
147
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 5/8');
|
|
148
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can configure the view to show RDF statements where the current IRI is the subject, predicate, object, context or in any position. Click on the all tab.This is an extra content');
|
|
149
|
+
GuideDialogSteps.clickOnNextButton();
|
|
150
|
+
|
|
151
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 6/8');
|
|
152
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can always explore the same data using the Visual graph view. Click on the Visual graph button to try it now.');
|
|
153
|
+
GuideDialogSteps.clickOnNextButton();
|
|
154
|
+
|
|
155
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 7/8');
|
|
156
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('The graph shows connections between the start node, vin:WineGrape, and other nodes. Each arrow represents one or more connections (RDF statements).');
|
|
157
|
+
GuideDialogSteps.clickOnNextButton();
|
|
158
|
+
|
|
159
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 8/8');
|
|
160
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('You can click on any IRI in the table to navigate to it. Click on wine#madeFromGrape.');
|
|
161
|
+
GuideDialogSteps.clickOnNextButton();
|
|
162
|
+
|
|
163
|
+
GuideDialogSteps.assertDialogWithTitleIsVisible('End of guide');
|
|
164
|
+
GuideDialogSteps.assertDialogWithContentIsVisible('This guide has ended.');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
@@ -14,6 +14,8 @@ describe('Edit TTYG agent guide', () => {
|
|
|
14
14
|
beforeEach(() => {
|
|
15
15
|
RepositoriesStubs.stubRepositories(0, '/repositories/get-ttyg-repositories.json');
|
|
16
16
|
RepositoriesStubs.stubBaseEndpoints(repositoryId);
|
|
17
|
+
cy.presetRepository(repositoryId);
|
|
18
|
+
|
|
17
19
|
GuidesStubs.stubTTYGEditAgentGuide();
|
|
18
20
|
|
|
19
21
|
GuideSteps.visit();
|
|
@@ -25,7 +27,6 @@ describe('Edit TTYG agent guide', () => {
|
|
|
25
27
|
|
|
26
28
|
it('should end guide when no api key is present', () => {
|
|
27
29
|
TTYGStubs.stubAgentListGetError('Set the config property \'graphdb.llm.api-key\' to your LLM API key');
|
|
28
|
-
cy.presetRepository(repositoryId);
|
|
29
30
|
|
|
30
31
|
GuideDialogSteps.assertDialogWithTitleIsVisible('Edit an agent — 1/18');
|
|
31
32
|
GuideDialogSteps.assertDialogWithContentIsVisible('Click on the Lab menu.');
|
|
@@ -41,7 +42,6 @@ describe('Edit TTYG agent guide', () => {
|
|
|
41
42
|
});
|
|
42
43
|
|
|
43
44
|
it('should edit TTYG agent', () => {
|
|
44
|
-
cy.presetRepository(repositoryId);
|
|
45
45
|
TTYGStubs.stubAgentListGet();
|
|
46
46
|
TTYGStubs.stubAgentDefaultsGet();
|
|
47
47
|
TTYGStubs.stubChatGet();
|