graphdb-workbench-tests 3.4.0-dynamic-guides-test → 3.5.0-reactodia-poc

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 (71) hide show
  1. package/e2e-legacy/cluster/cluster-states.spec.js +3 -3
  2. package/e2e-legacy/explore/visual-graph/node-info-panel.spec.js +58 -0
  3. package/e2e-legacy/explore/visual-graph/visual-graph-links-limit.spec.js +167 -0
  4. package/e2e-legacy/explore/visual-graph/visual.graph.spec.js +55 -78
  5. package/e2e-legacy/graphql/graphql-in-remote-location.spec.js +49 -0
  6. package/e2e-legacy/guides/navigation/navigation-guide.spec.js +64 -0
  7. package/e2e-legacy/guides/table-graph-explore/table-graph-explore-guide.spec.js +2 -1
  8. package/e2e-legacy/guides/ttyg/configure-agent/configure-agent-guide.spec.js +34 -26
  9. package/e2e-legacy/guides/ttyg/edit-agent/edit-ttyg-agent-guide.spec.js +1 -0
  10. package/e2e-legacy/guides/visual-graph/visual-graph-guide.spec.js +330 -124
  11. package/e2e-legacy/help/guides/guides-autostart.spec.js +36 -3
  12. package/e2e-legacy/help/guides/guides-confirm-cancel-dialog.js +83 -0
  13. package/e2e-legacy/home/cookie-policy/cookie-policy.spec.js +182 -0
  14. package/e2e-legacy/home/create-repository.spec.js +6 -0
  15. package/e2e-legacy/repository/attach-remote-location.spec.js +47 -12
  16. package/e2e-legacy/repository/url-with-repository-id-parameter.spec.js +1 -1
  17. package/e2e-legacy/resource/resource.spec.js +33 -13
  18. package/e2e-legacy/setup/aclmanagement/acl-management-with-selected repository.spec.js +44 -0
  19. package/e2e-legacy/sparql-editor/actions/execute-query.spec.js +2 -0
  20. package/e2e-legacy/sparql-editor/actions/expand-results-over-sameas.spec.js +8 -8
  21. package/e2e-legacy/sparql-editor/actions/include-inferred-statements.spec.js +4 -4
  22. package/e2e-legacy/sparql-editor/actions/inferred-sameas.spec.js +3 -3
  23. package/e2e-legacy/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +90 -36
  24. package/e2e-legacy/sparql-editor/yasr/yasr.spec.js +80 -0
  25. package/e2e-legacy/ttyg/chat-panel.spec.js +9 -0
  26. package/e2e-legacy/ttyg/clone-agent.spec.js +22 -0
  27. package/e2e-legacy/ttyg/edit-agent.spec.js +17 -0
  28. package/e2e-security/setup/home/cookie-policy.spec.js +232 -6
  29. package/e2e-security/setup/users-and-access/turn-on-security-and-password-change.spec.js +72 -59
  30. package/fixtures/graph/graph-configurations.json +59 -0
  31. package/fixtures/guides/confirm-cancel-dialog/confirm-cancel-dialog-guide.json +15 -0
  32. package/fixtures/guides/navigation/navigation-guide.json +60 -0
  33. package/fixtures/guides/ttyg/configure-agent/configure-ttyg-agent-guide.json +6 -1
  34. package/fixtures/guides/visual-graph/visual-graph-config-guide.json +39 -0
  35. package/fixtures/ttyg/chats/explain-response-1.json +2 -48
  36. package/npm-shrinkwrap.json +32 -33
  37. package/package.json +1 -1
  38. package/steps/cookie-policy/cookie-consent-banner-steps.js +21 -0
  39. package/steps/cookie-policy/cookie-policy-modal.steps.js +56 -0
  40. package/steps/graphql/create-graphql-endpoint-steps.js +8 -0
  41. package/steps/graphql/graphql-endpoint-management-steps.js +8 -0
  42. package/steps/graphql/graphql-playground-steps.js +8 -0
  43. package/steps/guides/guide-dialog-steps.js +56 -2
  44. package/steps/guides/movies-guide-steps.js +2 -1
  45. package/steps/header-steps.js +13 -0
  46. package/steps/home-steps.js +4 -27
  47. package/steps/login-steps.js +1 -0
  48. package/steps/main-menu-steps.js +1 -0
  49. package/steps/repositories/attach-repository-steps.js +16 -0
  50. package/steps/repository-steps.js +24 -0
  51. package/steps/resource/resource-steps.js +0 -8
  52. package/steps/setup/acl-management-steps.js +12 -0
  53. package/steps/setup/settings-steps.js +1 -1
  54. package/steps/shared-modal-dialog-steps.js +45 -0
  55. package/steps/sparql-editor-steps.js +18 -4
  56. package/steps/ttyg/ttyg-agent-settings-modal.steps.js +1 -1
  57. package/steps/visual-graph-split-button-steps.js +45 -0
  58. package/steps/visual-graph-steps.js +69 -3
  59. package/steps/yasgui/yasr-steps.js +30 -6
  60. package/stubs/cluster/remote-location-stubs.js +4 -0
  61. package/stubs/graph-config-stubs.js +17 -0
  62. package/stubs/guides/guides-stubs.js +8 -0
  63. package/stubs/repositories/repositories-stubs.js +22 -0
  64. package/stubs/security-stubs.js +4 -0
  65. package/stubs/sparql-stubs.js +10 -0
  66. package/support/commands.js +1 -0
  67. package/support/e2e-security.js +1 -1
  68. package/support/repository-commands.js +22 -3
  69. package/support/settings-commands.js +18 -2
  70. package/support/url-commands.js +13 -0
  71. package/e2e-legacy/home/cookie-policy.spec.js +0 -108
@@ -4,54 +4,8 @@
4
4
  "queryMethods": [
5
5
  {
6
6
  "name": "sparql_query",
7
- "rawQuery": "SELECT ?character ?name ?height WHERE {\n ?character a voc:Character;\n rdfs:label ?name;\n voc:height ?height.\n FILTER(?name = \"Luke Skywalker\" || ?name = \"Leia Organa\")\n}",
8
- "query": "SELECT ?character ?name ?height WHERE {\n ?character a voc:Character;\n rdfs:label ?name;\n voc:height ?height.\n FILTER(?name = \"Luke Skywalker\" || ?name = \"Leia Organa\")\n}",
9
- "queryType": "sparql",
10
- "errorOutput": "Error: org.eclipse.rdf4j.query.MalformedQueryException: org.eclipse.rdf4j.query.parser.sparql.ast.VisitorException: QName 'voc:Character' uses an undefined prefix"
11
- }, {
12
- "name": "retrieval_search",
13
- "rawQuery": "{\"queries\":[{\"query\":\"pilots that work with Luke Skywalker\",\"filter\":{\"document_id\":\"https://swapi.co/resource/human/1\"},\"top_k\":3}]}",
14
- "query": "{\n \"queries\" : [ {\n \"query\" : \"pilots that work with Luke Skywalker\",\n \"filter\" : {\n \"document_id\" : \"https://swapi.co/resource/human/1\"\n },\n \"top_k\" : 3\n } ]\n}",
15
- "queryType": "json",
16
- "errorOutput": null
17
- },
18
- {
19
- "name": "iri_discovery",
20
- "rawQuery": "Luke Skywalker",
21
- "query": "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\nPREFIX skos: <http://www.w3.org/2004/02/skos/core#>\nPREFIX onto: <http://www.ontotext.com/>\nSELECT ?label ?iri {\n ?label onto:fts ('''Luke~ Skywalker~''' '*') .\n ?iri rdfs:label|skos:prefLabel ?label .\n}",
22
- "queryType": "sparql",
23
- "errorOutput": null
24
- },
25
- {
26
- "name": "sparql_query",
27
- "rawQuery": "SELECT ?height WHERE {\n <https://swapi.co/resource/human/1> voc:height ?height.\n}",
28
- "query": "SELECT ?height WHERE {\n <https://swapi.co/resource/human/1> voc:height ?height.\n}",
29
- "queryType": "sparql",
30
- "errorOutput": "Error: org.eclipse.rdf4j.query.MalformedQueryException: org.eclipse.rdf4j.query.parser.sparql.ast.VisitorException: QName 'voc:height' uses an undefined prefix"
31
- },
32
- {
33
- "name": "sparql_query",
34
- "rawQuery": "PREFIX voc: <https://swapi.co/vocabulary/>\nSELECT ?name ?height WHERE {\n ?character voc:height ?height;\n rdfs:label ?name.\n FILTER(?name = \"Luke Skywalker\" || ?name = \"Leia Organa\")\n}",
35
- "query": "PREFIX voc: <https://swapi.co/vocabulary/>\nSELECT ?name ?height WHERE {\n ?character voc:height ?height;\n rdfs:label ?name.\n FILTER(?name = \"Luke Skywalker\" || ?name = \"Leia Organa\")\n}",
36
- "queryType": "sparql",
37
- "errorOutput": null
38
- },
39
- {
40
- "name": "fts_search",
41
- "rawQuery": "Second Luke",
42
- "query": "PREFIX onto: <http://www.ontotext.com/>\nDESCRIBE ?iri {\n\t?x onto:fts \\'\\'\\'Second Luke\\'\\'\\' .\n\t{\n\t\t?x ?p ?iri .\n\t} union {\n\t\t?iri ?p ?x .\n\t}\n}",
43
- "queryType": "sparql",
44
- "errorOutput": null
45
- }, {
46
- "name": "similarity_search",
47
- "rawQuery": "Second Luke",
48
- "query": "PREFIX onto: <http://www.ontotext.com/>\nDESCRIBE ?iri {\n\t?x onto:fts \\'\\'\\'Second Luke\\'\\'\\' .\n\t{\n\t\t?x ?p ?iri .\n\t} union {\n\t\t?iri ?p ?x .\n\t}\n}",
49
- "queryType": "sparql",
50
- "errorOutput": null
51
- }, {
52
- "name": "iri_discovery",
53
- "rawQuery": "Luke Skywalker",
54
- "query": "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\nPREFIX skos: <http://www.w3.org/2004/02/skos/core#>\nPREFIX onto: <http://www.ontotext.com/>\nSELECT ?label ?iri {\n ?label onto:fts ('''Luke~ Skywalker~''' '*') .\n ?iri rdfs:label|skos:prefLabel ?label .\n}",
7
+ "rawQuery": "SELECT ?name ?height WHERE {\n ?character voc:height ?height;\n rdfs:label ?name.\n FILTER(?name = \"Luke Skywalker\" || ?name = \"Leia Organa\")\n}",
8
+ "query": "SELECT ?name ?height WHERE {\n ?character voc:height ?height;\n rdfs:label ?name.\n FILTER(?name = \"Luke Skywalker\" || ?name = \"Leia Organa\")\n}",
55
9
  "queryType": "sparql",
56
10
  "errorOutput": null
57
11
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "graphdb-workbench-tests",
3
- "version": "3.4.0-dynamic-guides-test",
3
+ "version": "3.5.0-reactodia-poc",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "graphdb-workbench-tests",
9
- "version": "3.4.0-dynamic-guides-test",
9
+ "version": "3.5.0-reactodia-poc",
10
10
  "license": "Apache-2.0",
11
11
  "devDependencies": {
12
12
  "@bahmutov/cypress-code-coverage": "^2.7.2",
@@ -1071,9 +1071,9 @@
1071
1071
  }
1072
1072
  },
1073
1073
  "node_modules/@babel/plugin-transform-modules-systemjs": {
1074
- "version": "7.29.0",
1075
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz",
1076
- "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==",
1074
+ "version": "7.29.4",
1075
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz",
1076
+ "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==",
1077
1077
  "dev": true,
1078
1078
  "license": "MIT",
1079
1079
  "dependencies": {
@@ -3377,9 +3377,9 @@
3377
3377
  "license": "MIT"
3378
3378
  },
3379
3379
  "node_modules/brace-expansion": {
3380
- "version": "1.1.12",
3381
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
3382
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
3380
+ "version": "1.1.13",
3381
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",
3382
+ "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",
3383
3383
  "dev": true,
3384
3384
  "license": "MIT",
3385
3385
  "dependencies": {
@@ -5420,9 +5420,9 @@
5420
5420
  "license": "MIT"
5421
5421
  },
5422
5422
  "node_modules/fast-uri": {
5423
- "version": "3.1.0",
5424
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
5425
- "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
5423
+ "version": "3.1.2",
5424
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
5425
+ "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
5426
5426
  "dev": true,
5427
5427
  "funding": [
5428
5428
  {
@@ -5570,9 +5570,9 @@
5570
5570
  }
5571
5571
  },
5572
5572
  "node_modules/flatted": {
5573
- "version": "3.3.3",
5574
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
5575
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
5573
+ "version": "3.4.2",
5574
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
5575
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
5576
5576
  "dev": true,
5577
5577
  "license": "ISC"
5578
5578
  },
@@ -7111,9 +7111,9 @@
7111
7111
  }
7112
7112
  },
7113
7113
  "node_modules/lodash": {
7114
- "version": "4.17.23",
7115
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
7116
- "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
7114
+ "version": "4.18.1",
7115
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
7116
+ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
7117
7117
  "dev": true,
7118
7118
  "license": "MIT"
7119
7119
  },
@@ -7606,9 +7606,9 @@
7606
7606
  }
7607
7607
  },
7608
7608
  "node_modules/mocha/node_modules/brace-expansion": {
7609
- "version": "5.0.3",
7610
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz",
7611
- "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==",
7609
+ "version": "5.0.6",
7610
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
7611
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
7612
7612
  "dev": true,
7613
7613
  "license": "MIT",
7614
7614
  "peer": true,
@@ -8369,9 +8369,9 @@
8369
8369
  "license": "ISC"
8370
8370
  },
8371
8371
  "node_modules/picomatch": {
8372
- "version": "2.3.1",
8373
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
8374
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
8372
+ "version": "2.3.2",
8373
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
8374
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
8375
8375
  "dev": true,
8376
8376
  "license": "MIT",
8377
8377
  "engines": {
@@ -8921,9 +8921,9 @@
8921
8921
  }
8922
8922
  },
8923
8923
  "node_modules/rimraf/node_modules/brace-expansion": {
8924
- "version": "5.0.3",
8925
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz",
8926
- "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==",
8924
+ "version": "5.0.6",
8925
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
8926
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
8927
8927
  "dev": true,
8928
8928
  "license": "MIT",
8929
8929
  "dependencies": {
@@ -9794,9 +9794,9 @@
9794
9794
  }
9795
9795
  },
9796
9796
  "node_modules/systeminformation": {
9797
- "version": "5.31.1",
9798
- "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.1.tgz",
9799
- "integrity": "sha512-6pRwxoGeV/roJYpsfcP6tN9mep6pPeCtXbUOCdVa0nme05Brwcwdge/fVNhIZn2wuUitAKZm4IYa7QjnRIa9zA==",
9797
+ "version": "5.31.6",
9798
+ "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.6.tgz",
9799
+ "integrity": "sha512-Uv2b2uGGM6ns+26czgW2cYRabYdnswM0ddSOOlryHOaelzsmDSet1iM/NT7VOYxW8x/BW+HkY+b1Ve2pLTSGSA==",
9800
9800
  "dev": true,
9801
9801
  "license": "MIT",
9802
9802
  "os": [
@@ -9856,9 +9856,9 @@
9856
9856
  }
9857
9857
  },
9858
9858
  "node_modules/terser-webpack-plugin": {
9859
- "version": "5.3.16",
9860
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
9861
- "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
9859
+ "version": "5.4.0",
9860
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz",
9861
+ "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==",
9862
9862
  "dev": true,
9863
9863
  "license": "MIT",
9864
9864
  "peer": true,
@@ -9866,7 +9866,6 @@
9866
9866
  "@jridgewell/trace-mapping": "^0.3.25",
9867
9867
  "jest-worker": "^27.4.5",
9868
9868
  "schema-utils": "^4.3.0",
9869
- "serialize-javascript": "^6.0.2",
9870
9869
  "terser": "^5.31.1"
9871
9870
  },
9872
9871
  "engines": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphdb-workbench-tests",
3
- "version": "3.4.0-dynamic-guides-test",
3
+ "version": "3.5.0-reactodia-poc",
4
4
  "description": "Cypress tests for GraphDB workbench",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -0,0 +1,21 @@
1
+ export class CookieConsentBannerSteps {
2
+ static getCookieConsentBanner() {
3
+ return cy.get('.cookie-consent-banner');
4
+ }
5
+
6
+ static getCookieConsentButton() {
7
+ return this.getCookieConsentBanner().find('button');
8
+ }
9
+
10
+ static giveCookieConsent() {
11
+ return this.getCookieConsentButton().click();
12
+ }
13
+
14
+ static getCookiePolicyLink() {
15
+ return cy.get('.cookie-consent-content a');
16
+ }
17
+
18
+ static clickCookiePolicyLink() {
19
+ return this.getCookiePolicyLink().click();
20
+ }
21
+ }
@@ -0,0 +1,56 @@
1
+ import {SharedModalDialogSteps} from '../shared-modal-dialog-steps';
2
+
3
+ export class CookiePolicyModalSteps extends SharedModalDialogSteps {
4
+ static getDialogComponent(cssClass = '.cookie-policy-modal') {
5
+ return super.getDialogComponent(cssClass);
6
+ }
7
+
8
+ static getStatisticCookiesToggle() {
9
+ return this.getBody().find('.statistic-cookies-toggle .toggle-switch');
10
+ }
11
+
12
+ static getStatisticCookiesCheckbox() {
13
+ return this.getStatisticCookiesToggle().find('input');
14
+ }
15
+
16
+ static toggleStatisticCookies() {
17
+ this.getStatisticCookiesToggle().click();
18
+ // Wait here is intentional because there is a debounce before the checkbox state is updated
19
+ // eslint-disable-next-line cypress/no-unnecessary-waiting
20
+ cy.wait(500);
21
+ }
22
+
23
+ static getThirdPartyCookiesToggle() {
24
+ return this.getBody().find('.third-party-cookies-toggle .toggle-switch');
25
+ }
26
+
27
+ static getThirdPartyCookiesCheckbox() {
28
+ return this.getThirdPartyCookiesToggle().find('input');
29
+ }
30
+
31
+ static toggleThirdPartyCookies() {
32
+ this.getThirdPartyCookiesToggle().click();
33
+ // Wait here is intentional because there is a debounce before the checkbox state is updated
34
+ // eslint-disable-next-line cypress/no-unnecessary-waiting
35
+ cy.wait(500);
36
+ }
37
+
38
+ static closeDialog() {
39
+ this.getFooter().find('.close-btn').click();
40
+ }
41
+
42
+ /**
43
+ * Validates the cookie policy dialog by checking the visibility of the dialog and the state of the checkboxes for
44
+ * analytic and third party cookies.
45
+ * @param {boolean} expectedStatisticChecked
46
+ * @param {boolean} expectedThirdPartyChecked
47
+ */
48
+ static validateCookiePolicyDialog(expectedStatisticChecked, expectedThirdPartyChecked) {
49
+ // I should see the cookie policy
50
+ CookiePolicyModalSteps.getDialogComponent().should('be.visible');
51
+ CookiePolicyModalSteps.getBody().should('be.visible');
52
+ // And I expect to see that analytic and third party cookies are allowed
53
+ CookiePolicyModalSteps.getStatisticCookiesCheckbox().should(expectedStatisticChecked ? 'be.checked' : 'not.be.checked');
54
+ CookiePolicyModalSteps.getThirdPartyCookiesCheckbox().should(expectedThirdPartyChecked ? 'be.checked' : 'not.be.checked');
55
+ }
56
+ }
@@ -7,6 +7,14 @@ export class CreateGraphqlEndpointSteps {
7
7
  return cy.get('.create-graphql-endpoint-view');
8
8
  }
9
9
 
10
+ static getPageContainer() {
11
+ return CreateGraphqlEndpointSteps.getView().find('.content');
12
+ }
13
+
14
+ static getRepositoryInRemoteLocation() {
15
+ return CreateGraphqlEndpointSteps.getView().find('.unexpected-remote-repository-warning');
16
+ }
17
+
10
18
  static getSourceRepositorySelector() {
11
19
  return this.getView().find('.source-repository-selector');
12
20
  }
@@ -10,6 +10,14 @@ export class GraphqlEndpointManagementSteps {
10
10
  return cy.get('.graphql-endpoint-management-view');
11
11
  }
12
12
 
13
+ static getPageContainer() {
14
+ return GraphqlEndpointManagementSteps.getView().find('.endpoint-management-container');
15
+ }
16
+
17
+ static getRepositoryInRemoteLocation() {
18
+ return GraphqlEndpointManagementSteps.getView().find('.unexpected-remote-repository-warning');
19
+ }
20
+
13
21
  static getEndpointFilterField() {
14
22
  return this.getView().find('.endpoints-filter-field');
15
23
  }
@@ -10,6 +10,14 @@ export class GraphqlPlaygroundSteps {
10
10
  return cy.get('.graphql-playground-view');
11
11
  }
12
12
 
13
+ static getPageContainer() {
14
+ return GraphqlPlaygroundSteps.getView().find('.content');
15
+ }
16
+
17
+ static getRepositoryInRemoteLocation() {
18
+ return GraphqlPlaygroundSteps.getView().find('.unexpected-remote-repository-warning');
19
+ }
20
+
13
21
  static getNoSchemasAlert() {
14
22
  return this.getView().find('.no-endpoints-view');
15
23
  }
@@ -1,4 +1,6 @@
1
- export class GuideDialogSteps {
1
+ import {BaseSteps} from "../base-steps.js";
2
+
3
+ export class GuideDialogSteps extends BaseSteps {
2
4
 
3
5
  static getModalDialog() {
4
6
  return cy.get('.shepherd-content:visible');
@@ -8,6 +10,50 @@ export class GuideDialogSteps {
8
10
  return GuideDialogSteps.getModalDialog().find('.shepherd-header');
9
11
  }
10
12
 
13
+ static getCancelButton() {
14
+ return this.getHeader().find('.shepherd-cancel-icon');
15
+ }
16
+
17
+ static clickOnCancelButton() {
18
+ return this.getCancelButton().click();
19
+ }
20
+
21
+ static getConfirmCancelDialog() {
22
+ return this.getByTestId('confirm-cancel-dialog');
23
+ }
24
+
25
+ static getConfirmCancelDialogCloseButton() {
26
+ return this.getByTestId('close-dialog-btn');
27
+ }
28
+
29
+ static clickOnConfirmCancelDialogCloseButton() {
30
+ return this.getConfirmCancelDialogCloseButton().click();
31
+ }
32
+
33
+ static getConfirmCancelDialogCancelButton() {
34
+ return this.getByTestId('cancel-btn');
35
+ }
36
+
37
+ static clickConfirmCancelDialogCancelButton() {
38
+ return this.getConfirmCancelDialogCancelButton().click();
39
+ }
40
+
41
+ static getConfirmCancelDialogDontShowAgainButton() {
42
+ return this.getByTestId('dont-show-again-btn');
43
+ }
44
+
45
+ static clickConfirmCancelDialogDontShowAgainButton() {
46
+ return this.getConfirmCancelDialogDontShowAgainButton().click();
47
+ }
48
+
49
+ static getConfirmCancelDialogExitButton() {
50
+ return this.getByTestId('exit-btn');
51
+ }
52
+
53
+ static clickConfirmCancelDialogExitButton() {
54
+ return this.getConfirmCancelDialogExitButton().click();
55
+ }
56
+
11
57
  static getContent() {
12
58
  return GuideDialogSteps.getModalDialog().find('.shepherd-text');
13
59
  }
@@ -28,8 +74,12 @@ export class GuideDialogSteps {
28
74
  return GuideDialogSteps.getFooter().find('.shepherd-button').contains('Close');
29
75
  }
30
76
 
77
+ static getSkipButton() {
78
+ return GuideDialogSteps.getFooter().find('.shepherd-button').contains('Skip');
79
+ }
80
+
31
81
  static clickOnNextButton(forceVisible = false) {
32
- GuideDialogSteps.getNextButton().scrollIntoView().click({force: forceVisible});
82
+ return GuideDialogSteps.getNextButton().scrollIntoView().click({force: forceVisible});
33
83
  }
34
84
 
35
85
  static clickOnPreviousButton(forceVisible = false) {
@@ -40,6 +90,10 @@ export class GuideDialogSteps {
40
90
  GuideDialogSteps.getCloseButton().scrollIntoView().click();
41
91
  }
42
92
 
93
+ static clickOnSkipButton() {
94
+ GuideDialogSteps.getSkipButton().scrollIntoView().click();
95
+ }
96
+
43
97
  static getContentLink() {
44
98
  return GuideDialogSteps.getContent().find('a');
45
99
  }
@@ -5,6 +5,7 @@ import {VisualGraphSteps} from "../visual-graph-steps";
5
5
  import {YasrSteps} from "../yasgui/yasr-steps";
6
6
  import {YasqeSteps} from "../yasgui/yasqe-steps";
7
7
  import {ResourceSteps} from "../resource/resource-steps";
8
+ import {VisualGraphSplitButtonSteps} from '../visual-graph-split-button-steps.js';
8
9
 
9
10
  export class MoviesGuideSteps {
10
11
 
@@ -181,7 +182,7 @@ export class MoviesGuideSteps {
181
182
  static assertExploreRDFStep7() {
182
183
  GuideSteps.assertPageNotInteractive();
183
184
  GuideDialogSteps.assertDialogWithTitleIsVisible('Explore RDF as a table — 7/10');
184
- ResourceSteps.getVisualGraphButton().should('be.visible');
185
+ VisualGraphSplitButtonSteps.getVisualizeMainButton().should('be.visible');
185
186
  }
186
187
 
187
188
  static assertExploreRDFStep8() {
@@ -6,4 +6,17 @@ export class HeaderSteps {
6
6
  static openHomePage() {
7
7
  HeaderSteps.getHeader().find('.home-page').click();
8
8
  }
9
+
10
+ static logout() {
11
+ this.getHeader().find('onto-user-menu').click();
12
+ cy.get('.onto-user-menu-dropdown')
13
+ .contains('Logout')
14
+ .first()
15
+ // Force the click because Cypress sometimes determines that the item has 0x0 dimensions
16
+ .click({force: true});
17
+ }
18
+
19
+ static login() {
20
+ this.getHeader().find('.onto-user-login').click();
21
+ }
9
22
  }
@@ -200,13 +200,10 @@ class HomeSteps extends BaseSteps {
200
200
  }
201
201
 
202
202
  static verifyCreateRepositoryLink() {
203
- cy.get('.card.repository-errors').should('be.visible')
204
- .within(() => {
205
- HomeSteps.getCreateRepositoryLink()
206
- .click()
207
- .url()
208
- .should('eq', Cypress.config('baseUrl') + '/repository/create?previous=%2F');
209
- });
203
+ HomeSteps.getCreateRepositoryLink()
204
+ .click()
205
+ .url()
206
+ .should('eq', Cypress.config('baseUrl') + '/repository/create?previous=%2F');
210
207
  cy.get('.big-logo').click();
211
208
  }
212
209
 
@@ -313,26 +310,6 @@ class HomeSteps extends BaseSteps {
313
310
  return cy.get('#license-label-home');
314
311
  }
315
312
 
316
- static getCookieConsentPopup() {
317
- return cy.get('.cookie-consent-modal');
318
- }
319
-
320
- static getAgreeButton() {
321
- return HomeSteps.getCookieConsentPopup().find('button');
322
- }
323
-
324
- static clickAgreeButton() {
325
- return HomeSteps.getAgreeButton().click();
326
- }
327
-
328
- static getCookiePolicyLink() {
329
- return cy.get('.cookie-consent-content a');
330
- }
331
-
332
- static clickCookiePolicyLink() {
333
- return HomeSteps.getCookiePolicyLink().click();
334
- }
335
-
336
313
  static getCookiePolicyModal() {
337
314
  return cy.get('.cookie-policy-modal');
338
315
  }
@@ -33,6 +33,7 @@ export class LoginSteps {
33
33
  cy.getByTestId('submit-btn').click();
34
34
  }
35
35
 
36
+ // TODO: Use the HeaderSteps.logout()
36
37
  static logout() {
37
38
  cy.get('onto-user-menu').click();
38
39
  cy.get('.onto-user-menu-dropdown')
@@ -16,6 +16,7 @@ export class MainMenuSteps {
16
16
  return MainMenuSteps.getMenuButton('Import');
17
17
  }
18
18
 
19
+ // TODO: temporary using more complex implementation until we have two SPARQL menu elements in the navbar
19
20
  static getMenuSparql() {
20
21
  return MainMenuSteps.getMenuButton('SPARQL');
21
22
  }
@@ -1,5 +1,9 @@
1
1
  export class AttachRepositorySteps {
2
2
 
3
+ static getRemoteLocationSettingsForm() {
4
+ return cy.get('#remoteLocationForm');
5
+ }
6
+
3
7
  static getAttachRemoteLocationBtn() {
4
8
  return cy.get('#addAttachRemoteLocation');
5
9
  }
@@ -115,4 +119,16 @@ export class AttachRepositorySteps {
115
119
  static clearPassword() {
116
120
  AttachRepositorySteps.getPasswordInput().clear();
117
121
  }
122
+
123
+ static getUnencryptedPasswordWarning() {
124
+ return this.getRemoteLocationSettingsForm().find('.unencrypted-password-warning');
125
+ }
126
+
127
+ static getBackwardCompatibilityWarning() {
128
+ return this.getRemoteLocationSettingsForm().find('.backward-compatibility-warning');
129
+ }
130
+
131
+ static encryptPassword() {
132
+ this.getRemoteLocationSettingsForm().find('#encryptPassword').check();
133
+ }
118
134
  }
@@ -16,6 +16,14 @@ export class RepositorySteps extends BaseSteps {
16
16
  cy.visit(`repository/edit/${repositoryId}?location=`);
17
17
  }
18
18
 
19
+ static getRepositoryPage() {
20
+ return cy.get('#wb-repository');
21
+ }
22
+
23
+ static getRepositoriesPage() {
24
+ return cy.get('#wb-repositories');
25
+ }
26
+
19
27
  static getCreateRepositoryButton() {
20
28
  return cy.get('#wb-repositories-addRepositoryLink');
21
29
  }
@@ -135,6 +143,10 @@ export class RepositorySteps extends BaseSteps {
135
143
  RepositorySteps.getRepositoryTypeButton(type).click();
136
144
  }
137
145
 
146
+ static createFedexRepositoryType() {
147
+ RepositorySteps.chooseRepositoryType('fedx');
148
+ }
149
+
138
150
  static getGDBRepositoryTypeButton() {
139
151
  return RepositorySteps.getRepositoryTypeButton('gdb');
140
152
  }
@@ -354,4 +366,16 @@ export class RepositorySteps extends BaseSteps {
354
366
  static getEntityIndexSize() {
355
367
  return RepositorySteps.getRepositoryCreateForm().find('#entityIndexSize');
356
368
  }
369
+
370
+ static getFedexMembersPanel() {
371
+ return this.getRepositoryPage().find('#fedx-members');
372
+ }
373
+
374
+ static selectFedexMember(repositoryId) {
375
+ this.getFedexMembersPanel()
376
+ .find('.form-local-repos')
377
+ .find('.location-item')
378
+ .contains(repositoryId)
379
+ .click();
380
+ }
357
381
  }
@@ -61,14 +61,6 @@ export class ResourceSteps {
61
61
  cy.get('.download-options li').eq(option).click();
62
62
  }
63
63
 
64
- static getVisualGraphButton() {
65
- return cy.get('.visual-graph-btn');
66
- }
67
-
68
- static clickOnVisualGraphButton() {
69
- ResourceSteps.getVisualGraphButton().click();
70
- }
71
-
72
64
  static getEditResourceLink() {
73
65
  return cy.get('.edit-resource-link');
74
66
  }
@@ -11,6 +11,18 @@ export class AclManagementSteps {
11
11
  return this.getPage().find('#acl-management-view-title');
12
12
  }
13
13
 
14
+ static getFedexWarningMessage() {
15
+ return this.getPage().find('.unexpected-fedex-repository-warning');
16
+ }
17
+
18
+ static getAclManagementContainer() {
19
+ return this.getPage().find('.acl-management-container');
20
+ }
21
+
22
+ static getAclManagementContent() {
23
+ return this.getPage().find('.acl-management-content');
24
+ }
25
+
14
26
  static getAclTable() {
15
27
  return this.getPage().find('.acl-rules');
16
28
  }
@@ -107,7 +107,7 @@ export class SettingsSteps {
107
107
  }
108
108
 
109
109
  static clickCookiePolicyLink() {
110
- return SettingsSteps.getCookiePolicyButton().click();
110
+ return this.getCookiePolicyButton().click();
111
111
  }
112
112
 
113
113
  static getCookiePolicyModal() {