Adds support for base64 image strings to image cells (#2769)

This commit is contained in:
Dwayne Forde 2021-03-05 14:37:49 -05:00 committed by GitHub
parent 800d305dab
commit 2dfc8ebf8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 25 deletions

View File

@ -120,6 +120,7 @@
"TableInput": [
{
"id": 2381224,
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg==",
"email": "michael.lawson@reqres.in",
"userName": "Michael Lawson",
"productName": "Chicken Sandwich",
@ -127,6 +128,7 @@
},
{
"id": 2736212,
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg==",
"email": "lindsay.ferguson@reqres.in",
"userName": "Lindsay Ferguson",
"productName": "Tuna Salad",
@ -134,6 +136,7 @@
},
{
"id": 6788734,
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg==",
"email": "tobias.funke@reqres.in",
"userName": "Tobias Funke",
"productName": "Beef steak",
@ -141,6 +144,7 @@
},
{
"id": 7434532,
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg==",
"email": "byron.fields@reqres.in",
"userName": "Byron Fields",
"productName": "Chicken Sandwich",
@ -148,6 +152,7 @@
},
{
"id": 7434532,
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVR4nGNiAAAABgADNjd8qAAAAABJRU5ErkJggg==",
"email": "ryan.holmes@reqres.in",
"userName": "Ryan Holmes",
"productName": "Avocado Panini",

View File

@ -39,18 +39,33 @@ describe("Table Widget Functionality", function() {
cy.get(commonlocators.editPropCrossButton).click();
cy.PublishtheApp();
});
it("Table Widget Functionality To Verify The Data", function() {
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
});
});
it("Table Widget Functionality To Show a Base64 Image", function() {
cy.get(publish.backToEditor).click();
cy.openPropertyPane("tablewidget");
cy.editColumn("image");
cy.changeColumnType("Image");
cy.isSelectRow(1);
const index = 1;
const imageVal = this.data.TableInput[index].image;
cy.readTableLinkPublish(index, "1").then((hrefVal) => {
expect(hrefVal).to.be.equal(imageVal);
});
});
it("Table Widget Functionality To Search The Data", function() {
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
@ -58,7 +73,7 @@ describe("Table Widget Functionality", function() {
.first()
.type(tabData);
cy.wait(500);
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
});
@ -69,7 +84,7 @@ describe("Table Widget Functionality", function() {
.clear()
.type("7434532");
cy.wait(1000);
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("3", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Byron Fields");
});
@ -82,7 +97,7 @@ describe("Table Widget Functionality", function() {
.clear();
cy.wait(1000);
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
@ -100,14 +115,14 @@ describe("Table Widget Functionality", function() {
cy.get(publish.canvas)
.first()
.click();
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
});
cy.get(publish.filterBtn).click();
cy.get(publish.removeFilter).click();
cy.wait(500);
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Michael Lawson");
});
@ -119,7 +134,7 @@ describe("Table Widget Functionality", function() {
it("Table Widget Functionality To Filter The Data using contains", function() {
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
@ -137,14 +152,14 @@ describe("Table Widget Functionality", function() {
cy.get(publish.canvas)
.first()
.click();
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
});
cy.get(publish.filterBtn).click();
cy.get(publish.removeFilter).click();
cy.wait(500);
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Michael Lawson");
});
@ -156,7 +171,7 @@ describe("Table Widget Functionality", function() {
it("Table Widget Functionality To Filter The Data using starts with ", function() {
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
@ -174,14 +189,14 @@ describe("Table Widget Functionality", function() {
cy.get(publish.canvas)
.first()
.click();
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
});
cy.get(publish.filterBtn).click();
cy.get(publish.removeFilter).click();
cy.wait(500);
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Michael Lawson");
});
@ -193,7 +208,7 @@ describe("Table Widget Functionality", function() {
it("Table Widget Functionality To Filter The Data using ends with ", function() {
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
@ -211,14 +226,14 @@ describe("Table Widget Functionality", function() {
cy.get(publish.canvas)
.first()
.click();
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
});
cy.get(publish.filterBtn).click();
cy.get(publish.removeFilter).click();
cy.wait(500);
cy.readTabledataPublish("0", "2").then((tabData) => {
cy.readTabledataPublish("0", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Michael Lawson");
});
@ -230,7 +245,7 @@ describe("Table Widget Functionality", function() {
it("Table Widget Functionality To Check Compact Mode", function() {
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then((tabData) => {
cy.readTabledataPublish("1", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
@ -238,7 +253,7 @@ describe("Table Widget Functionality", function() {
cy.get(publish.compactOpt)
.contains("Tall")
.click();
cy.scrollTabledataPublish("3", "2").then((tabData) => {
cy.scrollTabledataPublish("3", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Byron Fields");
});
@ -246,7 +261,7 @@ describe("Table Widget Functionality", function() {
cy.get(publish.compactOpt)
.contains("Short")
.click();
cy.readTabledataPublish("4", "2").then((tabData) => {
cy.readTabledataPublish("4", "3").then((tabData) => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Ryan Holmes");
});
@ -261,7 +276,7 @@ describe("Table Widget Functionality", function() {
.first()
.click();
cy.isSelectRow(1);
cy.readTabledataPublish("1", "2").then(tabData => {
cy.readTabledataPublish("1", "3").then(tabData => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
cy.log("the value is" + tabValue);
@ -270,7 +285,7 @@ describe("Table Widget Functionality", function() {
.contains("userName")
.click();
cy.get(publish.containerWidget).click();
cy.readTabledataPublish("1", "2").then(tabData => {
cy.readTabledataPublish("1", "3").then(tabData => {
const tabValue = tabData;
expect(tabValue).to.not.equal("Lindsay Ferguson");
});
@ -279,7 +294,7 @@ describe("Table Widget Functionality", function() {
.contains("userName")
.click();
cy.get(publish.containerWidget).click();
cy.readTabledataPublish("1", "2").then(tabData => {
cy.readTabledataPublish("1", "3").then(tabData => {
const tabValue = tabData;
expect(tabValue).to.be.equal("Lindsay Ferguson");
});

View File

@ -2098,6 +2098,12 @@ Cypress.Commands.add("scrollTabledataPublish", (rowNum, colNum) => {
return tabVal;
});
Cypress.Commands.add("readTableLinkPublish", (rowNum, colNum) => {
const selector = `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}] a`;
const hrefVal = cy.get(selector).invoke("attr", "href");
return hrefVal;
});
Cypress.Commands.add("assertEvaluatedValuePopup", (expectedType) => {
cy.get(dynamicInputLocators.evaluatedValue)
.should("be.visible")

View File

@ -63,14 +63,16 @@ export const renderCell = (
</CellWrapper>
);
}
const imageRegex = /(http(s?):)([/|.|\w|\s|-])*\.(?:jpeg|jpg|gif|png)??(?:&?[^=&]*=[^=&]*)*/;
const imageSplitRegex = /[^(base64)],/;
const imageUrlRegex = /(http(s?):)([/|.|\w|\s|-])*\.(?:jpeg|jpg|gif|png)??(?:&?[^=&]*=[^=&]*)*/;
const base64ImageRegex = /^data:image\/.*;base64/;
return (
<CellWrapper cellProperties={cellProperties} isHidden={isHidden}>
{value
.toString()
.split(",")
.split(imageSplitRegex)
.map((item: string, index: number) => {
if (imageRegex.test(item)) {
if (imageUrlRegex.test(item) || base64ImageRegex.test(item)) {
return (
<a
onClick={(e) => e.stopPropagation()}