From 6e68b7f4857f573eb4f050ae25db0294676b3399 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 13:56:26 +0100 Subject: [PATCH 1/9] make tests more flexible --- tests/e2e/tests/tags.tes.js | 5 ++++- tests/e2e/utils/auto.js | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/e2e/tests/tags.tes.js b/tests/e2e/tests/tags.tes.js index c7026220b888..72d12f2238b8 100644 --- a/tests/e2e/tests/tags.tes.js +++ b/tests/e2e/tests/tags.tes.js @@ -48,7 +48,10 @@ describe('tags testing', () => { await page.goto(url); await auto.register(page, user, pass); // Create new study - await waitAndClick(page, '[osparc-test-id="newPlusBtn"]'); + const uiConfig = await page.evaluate(async () => await osparc.store.Products.getInstance().fetchUiConfig()); + if ("plusButton" in uiConfig) { + await waitAndClick(page, '[osparc-test-id="newPlusBtn"]'); + } await waitAndClick(page, '[osparc-test-id="emptyStudyBtn"]'); // Wait until project is created and Dashboard button is enabled await utils.sleep(4000); diff --git a/tests/e2e/utils/auto.js b/tests/e2e/utils/auto.js index 9af239e3ad9c..f9a723059d5b 100644 --- a/tests/e2e/utils/auto.js +++ b/tests/e2e/utils/auto.js @@ -107,14 +107,24 @@ async function __dashboardServicesBrowser(page) { async function dashboardNewTIPlan(page) { console.log("Creating New Plan"); - await utils.waitAndClick(page, '[osparc-test-id="newPlansBtn"]'); + const uiConfig = await page.evaluate(async () => await osparc.store.Products.getInstance().fetchUiConfig()); + if ("newStudies" in uiConfig) { + await utils.waitAndClick(page, '[osparc-test-id="newPlansBtn"]'); + } else if ("plusButton" in uiConfig) { + await utils.waitAndClick(page, '[osparc-test-id="newPlusBtn"]'); + } + await utils.waitAndClick(page, '[osparc-test-id="newTIPlanButton"]'); } async function dashboardStartSim4LifeLite(page) { - console.log("Start Sim4Lite from + button"); + console.log("Start Sim4Life-Lite from + button"); + + const uiConfig = await page.evaluate(async () => await osparc.store.Products.getInstance().fetchUiConfig()); + if ("plusButton" in uiConfig) { + await utils.waitAndClick(page, '[osparc-test-id="newPlusBtn"]'); + } - await utils.waitAndClick(page, '[osparc-test-id="newPlansBtn"]'); await utils.waitAndClick(page, '[osparc-test-id="startS4LButton"]'); } From 04b9e233bae52c699306773f57cdd052a95684f6 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 14:00:51 +0100 Subject: [PATCH 2/9] unused --- .../client/source/resource/osparc/ui_config.json | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/services/static-webserver/client/source/resource/osparc/ui_config.json b/services/static-webserver/client/source/resource/osparc/ui_config.json index 54be5e1da8c7..826f64cf9a90 100644 --- a/services/static-webserver/client/source/resource/osparc/ui_config.json +++ b/services/static-webserver/client/source/resource/osparc/ui_config.json @@ -21,36 +21,32 @@ "expectedTemplateLabel": "mcTI Planning Tool", "title": "Multichannel TI", "newStudyLabel": "Multichannel TI", - "category": "precomputed", - "idToWidget": "newMTIPlanButton" + "category": "precomputed" }, { "resourceType": "template", "expectedTemplateLabel": "pmTI Planning Tool", "title": "Phase-modulation TI", "newStudyLabel": "Phase-modulation TI", - "category": "precomputed", - "idToWidget": "newPMTIPlanButton" + "category": "precomputed" }, { "resourceType": "template", "expectedTemplateLabel": "personalized TI Planning Tool", "title": "Personalized
Classic TI", "newStudyLabel": "Personalized Classic TI", "category": "personalized", - "idToWidget": "personalizationNewTIPlanButton" + "idToWidget": "newPTIPlanButton" }, { "resourceType": "template", "expectedTemplateLabel": "personalized mcTI Planning Tool", "title": "Personalized
Multichannel TI", "newStudyLabel": "Personalized Multichannel TI", - "category": "personalized", - "idToWidget": "personalizationNewMTIPlanButton" + "category": "personalized" }, { "resourceType": "template", "expectedTemplateLabel": "personalized pmTI Planning Tool", "title": "Personalized
Phase-modulation TI", "newStudyLabel": "Personalized Phase-modulation TI", - "category": "personalized", - "idToWidget": "personalizationNewPMTIPlanButton" + "category": "personalized" }] } }, @@ -86,7 +82,7 @@ "reason": "Not available in ${replace_me_product_name}", "title": "Personalized
Classic TI", "category": "personalized", - "idToWidget": "personalizationNewTIPlanButton" + "idToWidget": "newPTIPlanButton" }, { "showDisabled": true, "reason": "Not available in ${replace_me_product_name}", From f7c95e8798dc3367f1e4f4712e926447d7220c6a Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 14:14:34 +0100 Subject: [PATCH 3/9] minor --- .../client/source/class/osparc/dashboard/GridButtonBase.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js index a04e872c8941..3e4b8363835c 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js @@ -285,8 +285,7 @@ qx.Class.define("osparc.dashboard.GridButtonBase", { _applyThumbnail: function(value, old) { if (value.includes("@FontAwesome5Solid/")) { value += this.self().THUMBNAIL_SIZE; - const image = this.getChildControl("thumbnail").getChildControl("image"); - image.set({ + const image = this.getChildControl("thumbnail").set({ source: value, }); From 543e1746f4f4a62c14e24b41d9e50feac5af3da9 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 14:17:45 +0100 Subject: [PATCH 4/9] setImageSource --- .../client/source/class/osparc/utils/Utils.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/static-webserver/client/source/class/osparc/utils/Utils.js b/services/static-webserver/client/source/class/osparc/utils/Utils.js index 910c4ec3173f..73363d2869d5 100644 --- a/services/static-webserver/client/source/class/osparc/utils/Utils.js +++ b/services/static-webserver/client/source/class/osparc/utils/Utils.js @@ -91,6 +91,14 @@ qx.Class.define("osparc.utils.Utils", { FLOATING_Z_INDEX: 1000001 + 1, + setImageSource: function(image, source) { + fetch(source, { method: "HEAD" }) + .then(() => image.setSource(source)) + .catch(() => { + image.setSource(osparc.product.Utils.getThumbnailUrl()); + }); + }, + addWhiteSpaces: function(integer) { return new Intl.NumberFormat("fr-FR").format(integer); // french will add white spaces every 3 digits }, From 4c65cda01efd27b5f2c0e730cb982db561a9c376 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 14:27:21 +0100 Subject: [PATCH 5/9] catch --- .../source/class/osparc/dashboard/GridButtonBase.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js index 3e4b8363835c..6759e4844aac 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js @@ -296,8 +296,19 @@ qx.Class.define("osparc.dashboard.GridButtonBase", { image.addListener(eventName, () => this.__fitThumbnailHeight(), this); }); } else { + fetch(value, { method: "HEAD" }) + .then(() => { + this.getContentElement().setStyles({ + "background-image": `url(${osparc.product.Utils.getThumbnailUrl()})`, + // "background-image": `url(${value})`, + }) + }) + .catch(() => { + this.getContentElement().setStyles({ + "background-image": `url(${osparc.product.Utils.getThumbnailUrl()})`, + }) + }); this.getContentElement().setStyles({ - "background-image": `url(${value})`, "background-repeat": "no-repeat", "background-size": "cover", // auto width, 85% height "background-position": "center center", From be529b5b14aadad4dff5028b86e04ec3a2c009b2 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 15:36:19 +0100 Subject: [PATCH 6/9] minor --- .../class/osparc/dashboard/GridButtonBase.js | 27 +++++++++---------- .../client/source/class/osparc/utils/Utils.js | 15 ++++++----- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js index 6759e4844aac..e795732696c4 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js @@ -296,24 +296,23 @@ qx.Class.define("osparc.dashboard.GridButtonBase", { image.addListener(eventName, () => this.__fitThumbnailHeight(), this); }); } else { + let source = osparc.product.Utils.getThumbnailUrl(); fetch(value, { method: "HEAD" }) - .then(() => { - this.getContentElement().setStyles({ - "background-image": `url(${osparc.product.Utils.getThumbnailUrl()})`, - // "background-image": `url(${value})`, - }) + .then(response => { + if (!response.ok) { + throw new Error(); + } + source = value }) - .catch(() => { + .finally(() => { this.getContentElement().setStyles({ - "background-image": `url(${osparc.product.Utils.getThumbnailUrl()})`, - }) + "background-image": `url(${source})`, + "background-repeat": "no-repeat", + "background-size": "cover", // auto width, 85% height + "background-position": "center center", + "background-origin": "border-box" + }); }); - this.getContentElement().setStyles({ - "background-repeat": "no-repeat", - "background-size": "cover", // auto width, 85% height - "background-position": "center center", - "background-origin": "border-box" - }); } }, diff --git a/services/static-webserver/client/source/class/osparc/utils/Utils.js b/services/static-webserver/client/source/class/osparc/utils/Utils.js index 73363d2869d5..4cfb342f8bcf 100644 --- a/services/static-webserver/client/source/class/osparc/utils/Utils.js +++ b/services/static-webserver/client/source/class/osparc/utils/Utils.js @@ -91,12 +91,15 @@ qx.Class.define("osparc.utils.Utils", { FLOATING_Z_INDEX: 1000001 + 1, - setImageSource: function(image, source) { - fetch(source, { method: "HEAD" }) - .then(() => image.setSource(source)) - .catch(() => { - image.setSource(osparc.product.Utils.getThumbnailUrl()); - }); + setImageSource: function(image, imgSrc) { + let source = osparc.product.Utils.getThumbnailUrl(); + fetch(imgSrc, { method: "HEAD" }) + .then(response => { + if (response.ok) { + source = imgSrc; + } + }) + .finally(() => image.setSource(source)); }, addWhiteSpaces: function(integer) { From 7f070d0436b1121df62f092070dd7bfa771beb8e Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 15:37:36 +0100 Subject: [PATCH 7/9] simpler --- .../client/source/class/osparc/dashboard/GridButtonBase.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js index e795732696c4..b6f2b211bda4 100644 --- a/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js +++ b/services/static-webserver/client/source/class/osparc/dashboard/GridButtonBase.js @@ -299,10 +299,9 @@ qx.Class.define("osparc.dashboard.GridButtonBase", { let source = osparc.product.Utils.getThumbnailUrl(); fetch(value, { method: "HEAD" }) .then(response => { - if (!response.ok) { - throw new Error(); + if (response.ok) { + source = value; } - source = value }) .finally(() => { this.getContentElement().setStyles({ From ac8752f0d28bf1475157c47b949f59cd8a147338 Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 15:38:17 +0100 Subject: [PATCH 8/9] apply to all thumbnails --- .../client/source/class/osparc/ui/basic/Thumbnail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js b/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js index 9ea14dff313e..1cf41c0ae59e 100644 --- a/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js +++ b/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js @@ -83,7 +83,7 @@ qx.Class.define("osparc.ui.basic.Thumbnail", { __applySource: function(val) { const image = this.getChildControl("image"); if (val) { - image.setSource(val); + osparc.utils.Utils.setImageSource(image, val); } }, From 604e567eeec120665dda73cb9b5dc78d6af862aa Mon Sep 17 00:00:00 2001 From: odeimaiz Date: Tue, 11 Mar 2025 15:44:22 +0100 Subject: [PATCH 9/9] minor improvements --- .../client/source/class/osparc/ui/basic/Thumbnail.js | 6 +++++- .../client/source/class/osparc/utils/Utils.js | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js b/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js index 1cf41c0ae59e..ff7c6f5d98d2 100644 --- a/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js +++ b/services/static-webserver/client/source/class/osparc/ui/basic/Thumbnail.js @@ -83,7 +83,11 @@ qx.Class.define("osparc.ui.basic.Thumbnail", { __applySource: function(val) { const image = this.getChildControl("image"); if (val) { - osparc.utils.Utils.setImageSource(image, val); + if (osparc.utils.Utils.isValidHttpUrl(val)) { + osparc.utils.Utils.setUrlSourceToImage(image, val); + } else { + image.setSource(val); + } } }, diff --git a/services/static-webserver/client/source/class/osparc/utils/Utils.js b/services/static-webserver/client/source/class/osparc/utils/Utils.js index 4cfb342f8bcf..885a09d4f0c2 100644 --- a/services/static-webserver/client/source/class/osparc/utils/Utils.js +++ b/services/static-webserver/client/source/class/osparc/utils/Utils.js @@ -91,7 +91,7 @@ qx.Class.define("osparc.utils.Utils", { FLOATING_Z_INDEX: 1000001 + 1, - setImageSource: function(image, imgSrc) { + setUrlSourceToImage: function(image, imgSrc) { let source = osparc.product.Utils.getThumbnailUrl(); fetch(imgSrc, { method: "HEAD" }) .then(response => {