Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
8455b0d
feat: tests for the unescapeHTML utils function
andreishket Jul 14, 2025
5139298
feat: tests for the createTransition function
andreishket Jul 16, 2025
9016f96
refactor: formatting problems in the transition.ts file
andreishket Jul 16, 2025
a435399
refactor: transfer the file from .js to .ts
andreishket Jul 16, 2025
ce854eb
refactor: transfer the file from .js to .ts
andreishket Jul 16, 2025
0865167
feat: tests for the CommUtils class
andreishket Jul 17, 2025
19a891a
feat: tests for the Toolkit class
andreishket Jul 18, 2025
ede936e
feat: phpunit tests cache in the gitignore
andreishket Jul 18, 2025
aac66e1
refactor: remove tests for not used methods and add for loadIni
andreishket Jul 21, 2025
8dcb3dd
refactor: remove tests cache
andreishket Jul 21, 2025
e6767f1
feat: .phpunit.result.cache in the git ignore
andreishket Jul 21, 2025
b8c1ce4
feat: tests for the scale.ts functions
andreishket Aug 13, 2025
ddfe220
Merge branch 'master' into feat/test-framework
andreishket Sep 17, 2025
6e8c20c
feat: tests for the OrcidMetrics component
andreishket Sep 19, 2025
4ce7f4b
feat: tests for the Link component
andreishket Sep 19, 2025
3173a66
feat: tests for the Abstract component
andreishket Sep 24, 2025
20678a4
Merge branch 'master' into feat/test-framework
andreishket Sep 24, 2025
3949931
feat: tests for the Citations component
andreishket Sep 24, 2025
502c6af
feat: test for the Keywords component
andreishket Sep 24, 2025
4b20cff
feat: prototype configuration
andreishket Mar 16, 2026
7a2d10a
Merge branch 'dev' into feat/test-framework
andreishket Apr 23, 2026
917bbf6
Merge branch 'feat/E2E-prototype-configuration' into feat/test-framework
andreishket Apr 23, 2026
64fb033
update of contentprovider.json cache
chreman Apr 23, 2026
dd5d82e
feat: documentation in the configuration file
andreishket Apr 24, 2026
01dec6e
bugfix: remove usage of e2e test with vitest
andreishket Apr 24, 2026
e2fa568
bugfix: types
andreishket Apr 24, 2026
6026a5b
feat: e2e tests for BASE integration
andreishket Apr 24, 2026
9db112b
feat: e2e tests for PubMed and OpenAIRE integrations
andreishket Apr 24, 2026
a821663
feat: e2e tests for ORCID integration
andreishket Apr 24, 2026
31f7d7f
feat: e2e tests for AQUANAVI integration
andreishket Apr 24, 2026
4dd23db
refactor: update descriptions of test cases
andreishket Apr 27, 2026
ffa1c0e
refactor: grouped test cases
andreishket Apr 27, 2026
55fb7a0
feat: basic visualisations creation from embedded search box for BASE
andreishket Apr 27, 2026
42992c0
feat: basic visualisation creation from embedded search box for PubMed
andreishket Apr 27, 2026
2cdb6d5
feat: basic visualisation creation from embedded search box for ORCID
andreishket Apr 27, 2026
653815f
Create README.md for E2E framework
andreishket Apr 27, 2026
d9b223c
refactor: remove duplicate test steps after cursor recording feature
andreishket Apr 27, 2026
64c6b16
feat: test cases for try out links
andreishket Apr 27, 2026
f84a844
Merge branch 'master' into feat/test-framework
andreishket Apr 27, 2026
8bb2e7a
feat: test cases for the more information modal AQUANAVI
andreishket Apr 27, 2026
94afdb3
feat: test cases for the more information modal BASE
andreishket Apr 27, 2026
5c3f935
feat: test cases for the more information modal PubMed
andreishket Apr 28, 2026
0a863ff
refactor: timeouts
andreishket Apr 28, 2026
3639f29
Merge branch 'dev' into feat/test-framework
andreishket Apr 28, 2026
e3ed154
feat: example test that tests keywords enrichment
andreishket Apr 29, 2026
e9957ca
refactor: remove README.md
andreishket Apr 29, 2026
442ba94
Merge remote-tracking branch 'upstream/master'
chreman May 2, 2026
221be8e
devops updates
chreman May 2, 2026
173e5a9
devops updates
chreman May 2, 2026
eef0e71
Merge remote-tracking branch 'upstream/master'
chreman May 11, 2026
86df7aa
first draft of async citation requests
chreman May 21, 2026
56abf36
update of contentprovider.json cache
chreman Jun 1, 2026
9c85c3b
local dev example env cleanup
chreman Jun 1, 2026
669619d
metrics container build update
chreman Jun 1, 2026
b5e1092
pin flask-restx version for compatibility with python 3.9 - bump agai…
chreman Jun 1, 2026
de0852d
Merge branch 'feat/test-framework' into feat/crossref-rate-limit-enha…
chreman Jun 1, 2026
73bc737
fix dependency-ordering issue in renv by forcing sequential install
chreman Jun 1, 2026
42259ef
fix dependency-ordering issue in renv by forcing sequential install
chreman Jun 1, 2026
620ebf1
pin flask-restx dependency for compatibility with python 3.9 - bump a…
chreman Jun 1, 2026
b6b3242
fix lockfile
chreman Jun 1, 2026
4b8462d
update of contentprovider.json cache
chreman Jun 1, 2026
c475be6
bump crossref dependency after bugfix
chreman Jun 1, 2026
f8f4285
bump crossref dependency after bugfix
chreman Jun 1, 2026
fac412d
added benchmarking tests for playwright
chreman Jun 2, 2026
e1105dd
update renv.lock; add crossref batch size to local container env
chreman Jun 11, 2026
d258ad4
update of contentprovider.json cache
chreman Jun 11, 2026
11c1255
update renv lock with new crossref master branch
chreman Jun 12, 2026
0670339
deployment script cleanup
chreman Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ dist/
.cache
coverage/
.vscode/
.phpunit.result.cache

# local deployment files
/deploy.sh
Expand Down Expand Up @@ -74,5 +75,11 @@ local_dev/tools/**/*.csv
local_dev/tools/**/*.json
local_dev/tools/**/*.log

# Playwright
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/

# mac os
.DS_Store
2 changes: 2 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,8 @@ services:
PYTHONIOENCODING: "utf-8"
R_ALTMETRIC_APIKEY: "${R_ALTMETRIC_APIKEY}"
R_CROSSREF_APIMAIL: "${R_CROSSREF_APIMAIL}"
R_CROSSREF_PLUS_TOKEN: "${R_CROSSREF_PLUS_TOKEN}"
R_CROSSREF_BATCH_SIZE: "${R_CROSSREF_BATCH_SIZE}"
restart: unless-stopped
volumes:
- ./local_dev/renv/cache:/renv/cache
Expand Down
27 changes: 27 additions & 0 deletions e2e/basicTests/AQUANAVI.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { test, expect } from "@playwright/test";
import { prepareVisualisation } from "../../vis/js/utils/e2eVisualisationLoader";

test.describe("Basic tests for AQUANAVI integration (Geomap visualisation type)", () => {
test.describe("Using direct dynamic URL / PSVS link", () => {
test("Loads default Geomap visualisation", async ({ page }) => {
const VISUALISATION_DYNAMIC_URL =
"/search?type=get&vis_type=geomap&q=mesocosms&service=aquanavi&custom_title=aquatic+mesocosm+facilities&min_descsize=0";

await prepareVisualisation(page, VISUALISATION_DYNAMIC_URL);

await expect(page.locator("#search-term-unique")).toContainText(
"aquatic mesocosm facilities",
);
await expect(page.locator("#source")).toContainText(
"Data source: AQUANAVI",
);
await page.getByTestId("context").getByText("More information").click();
await expect(page.locator("#info-body")).toContainText(
"This geo map presents you with an overview of aquatic mesocosm facilities.",
);
await expect(page.locator("#info-body")).toContainText(
"This visualization has a custom title and was created using the following query: mesocosms",
);
});
});
});
50 changes: 50 additions & 0 deletions e2e/basicTests/ORCID.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { test, expect } from "@playwright/test";
import { prepareVisualisation } from "../../vis/js/utils/e2eVisualisationLoader";
import { waitForVisualisationCreation } from "../../vis/js/utils/e2eWaitForVisualisationCreation";

test.describe("Basic tests for ORCID integration (Knowledge Map visualisation type)", () => {
test.describe("Using direct dynamic URL / PSVS link", () => {
test("Loads default Knowledge Map visualisation", async ({ page }) => {
const VISUALISATION_DYNAMIC_URL =
"/search?type=get&vis_type=overview&orcid=0000-0001-6011-4382&service=orcid&embed=true";

await prepareVisualisation(page, VISUALISATION_DYNAMIC_URL);

await expect(page.locator("#search-term-unique")).toContainText(
"Sebastian Dennerlein (0000-0001-6011-4382)",
);

await page.getByText("About the map").click();
await expect(page.locator("#info-body")).toContainText(
"This knowledge map presents you with a topical overview of the most recent works of Sebastian Dennerlein (0000-0001-6011-4382).",
);
});
});

test.describe("Using search embedded search box", () => {
test("Loads default Knowledge Map visualisation", async ({ page }) => {
const VISUALISATION_DYNAMIC_URL =
"/embedded_searchbox?service=orcid&embed=true";

await page.goto(VISUALISATION_DYNAMIC_URL);
await page
.getByRole("textbox", { name: "Enter ORCID (e.g. 0000-0002-" })
.click();
await page
.getByRole("textbox", { name: "Enter ORCID (e.g. 0000-0002-" })
.fill("0000-0001-6011-4382");
await page.getByRole("button", { name: "Create Overview" }).click();

await waitForVisualisationCreation(page);

await expect(page.locator("#search-term-unique")).toContainText(
"Sebastian Dennerlein (0000-0001-6011-4382)",
);

await page.getByText("About the map").click();
await expect(page.locator("#info-body")).toContainText(
"This knowledge map presents you with a topical overview of the most recent works of Sebastian Dennerlein (0000-0001-6011-4382).",
);
});
});
});
24 changes: 24 additions & 0 deletions e2e/basicTests/OpenAIRE.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { test, expect } from "@playwright/test";
import { prepareVisualisation } from "../../vis/js/utils/e2eVisualisationLoader";

test.describe("Basic tests for OpenAIRE integration (Knowledge Map visualisation type)", () => {
test.describe("Using direct dynamic URL / PSVS link", () => {
test("Loads default Knowledge Map visualisation", async ({ page }) => {
const VISUALISATION_DYNAMIC_URL =
"/search?type=get&vis_type=&q=&service=openaire&project_id=710722&funder=EC";

await prepareVisualisation(page, VISUALISATION_DYNAMIC_URL);

await expect(page.locator(".truncated-project-title")).toContainText(
"OpenUP - OPENing UP new methods, indicators",
);
await expect(page.locator("#source")).toContainText(
"Data source: OpenAIRE",
);
await page.getByTestId("context").getByText("More information").click();
await expect(page.locator("#info-body")).toContainText(
"This knowledge map presents you with a topical overview of research conducted in the following project:Project DetailsTitleOPENing UP new methods, indicators and tools for peer review, impact measurement and dissemination of research resultsAcronymOpenUPFunderECFunding programCSAH2020CallH2020-GARRI-2015-1Contract (GA) number710722Start Date2016-06-01End Date2018-11-30Open Access mandatetrueOrganizationsUGOE, UvA, PUBLIC POLICY AND MANAGEMENT INSTITUTE, FRONTIERS MEDIA SA, UoA, DZHW, AIT, Know Center, CNROpenAire LinkLinkWe use text similarity to create a knowledge map. The algorithm groups those resources together that have many words in common. Area titles are created from subject keywords of resources that have been assigned to the same area. We select those keywords and phrases that appear frequently in one area, and seldom in other areas.Knowledge maps provide an instant overview of a topic by showing the main areas at a glance, and resources related to them. This makes it possible to easily identify useful, pertinent information.Please read our FAQs to find out more about knowledge maps.Data sourceThe data is taken from OpenAIRE. OpenAIRE is a key infrastructure that enables the European transition to open science. It provides access to 3 million research projects and more than 70 million research outputs from more than 100,000 data sources.Open source softwareThe visualization is created with the award winning open source software Head Start provided by Open Knowledge Maps. Open Knowledge Maps is a non-profit organisation run by a group of dedicated team members and volunteers. In order to improve our free and open service, we need your support. Please send us your feedback to info@openknowledgemaps.org.If you want to support us financially, you can:Make a donationBecome an organisational memberBecome a funder of our roadmapSign-up for our newsletter to receive occasional updates.",
);
});
});
});
112 changes: 112 additions & 0 deletions e2e/basicTests/PubMed.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { test, expect } from "@playwright/test";
import { prepareVisualisation } from "../../vis/js/utils/e2eVisualisationLoader";
import { waitForVisualisationCreation } from "../../vis/js/utils/e2eWaitForVisualisationCreation";

test.describe("Basic tests for PubMed integration (Knowledge Map visualisation type)", () => {
test.describe("Using direct dynamic URL / PSVS link", () => {
test("Loads default Knowledge Map visualisation", async ({ page }) => {
const VISUALISATION_DYNAMIC_URL =
"/search?type=get&vis_type=overview&q=infection&service=pubmed&sorting=most-relevant";

await prepareVisualisation(page, VISUALISATION_DYNAMIC_URL);

await expect(page.locator("#search-term-unique")).toContainText(
"infection",
);
await expect(page.locator("#source")).toContainText(
"Data source: PubMed",
);
await page.getByTestId("context").getByText("More information").click();
await expect(page.locator("#info-body")).toContainText(
"This knowledge map presents you with a topical overview of research on infection based on the 100 most relevant resources matching your search query.",
);
});
});

test.describe("Using search embedded search box", () => {
test("Loads default Knowledge Map visualisation", async ({ page }) => {
const VISUALISATION_DYNAMIC_URL = "/embedded_searchbox?service=pubmed";

await page.goto(VISUALISATION_DYNAMIC_URL);
await page
.getByRole("textbox", { name: "Enter search query (e.g." })
.click();
await page
.getByRole("textbox", { name: "Enter search query (e.g." })
.fill("infection");
await page.getByRole("button", { name: "Create Overview" }).click();
await waitForVisualisationCreation(page);

await expect(page.locator("#search-term-unique")).toContainText(
"infection",
);
await expect(page.locator("#source")).toContainText(
"Data source: PubMed",
);
await page.getByTestId("context").getByText("More information").click();
await expect(page.locator("#info-body")).toContainText(
"This knowledge map presents you with a topical overview of research on infection based on the 100 most relevant resources matching your search query.",
);
});
});

test.describe("Using old search box", () => {
const MAIN_PAGE = "";

test("Loads default Knowledge Map visualisation using the 'covid-19' try out link", async ({
page,
}) => {
await page.goto(MAIN_PAGE);

await page.getByRole("radio", { name: "PubMed (life sciences)" }).check();

const visualisationPagePromise = page.waitForEvent("popup");
await page.getByRole("link", { name: "covid-" }).click();
const visualisationPage = await visualisationPagePromise;

await waitForVisualisationCreation(visualisationPage);

await expect(
visualisationPage.locator("#search-term-unique"),
).toContainText("covid-19");
await expect(visualisationPage.locator("#source")).toContainText(
"Data source: PubMed",
);
await visualisationPage
.getByTestId("context")
.getByText("More information")
.click();
await expect(visualisationPage.locator("#info-body")).toContainText(
"This knowledge map presents you with a topical overview of research on covid-19 based on the 100 most relevant resources matching your search query.We use text similarity to create a knowledge map. The algorithm groups those resources together that have many words in common. Area titles are created from subject keywords of resources that have been assigned to the same area. We select those keywords and phrases that appear frequently in one area, and seldom in other areas.Knowledge maps provide an instant overview of a topic by showing the main areas at a glance, and resources related to them. This makes it possible to easily identify useful, pertinent information.Please read our FAQs to find out more about knowledge maps.Data sourceThe data is taken from PubMed. PubMed comprises more than 38 million citations for biomedical literature from MEDLINE, life science journals, and online books. For more information please visit the PubMed website.Citations are available for resources with a DOI and based on citation data provided by Crossref. Results may be impacted by accuracy and completeness of this data.Open source softwareThe visualization is created with the award winning open source software Head Start provided by Open Knowledge Maps. Open Knowledge Maps is a non-profit organisation run by a group of dedicated team members and volunteers. In order to improve our free and open service, we need your support. Please send us your feedback to info@openknowledgemaps.org.If you want to support us financially, you can:Make a donationBecome an organisational memberBecome a funder of our roadmapSign-up for our newsletter to receive occasional updates.",
);
});

test('Loads default Knowledge Map visualisation using the "climate change" try out link', async ({
page,
}) => {
await page.goto(MAIN_PAGE);

await page.getByRole("radio", { name: "PubMed (life sciences)" }).check();

const visualisationPagePromise = page.waitForEvent("popup");
await page.getByRole("link", { name: '"climate change"' }).click();
const visualisationPage = await visualisationPagePromise;

await waitForVisualisationCreation(visualisationPage);

await expect(
visualisationPage.locator("#search-term-unique"),
).toContainText('"climate change"');
await expect(visualisationPage.locator("#source")).toContainText(
"Data source: PubMed",
);
await visualisationPage
.getByTestId("context")
.getByText("More information")
.click();
await expect(visualisationPage.locator("#info-body")).toContainText(
'This knowledge map presents you with a topical overview of research on "climate change" based on the 100 most relevant resources matching your search query.',
);
});
});
});
Loading
Loading