Skip to content
Snippets Groups Projects
Unverified Commit acd7c31f authored by Ryan Laurie's avatar Ryan Laurie Committed by GitHub
Browse files

Combine embedding e2e specs (#43843)

parent cbda131e
No related branches found
No related tags found
No related merge requests found
Showing
with 947 additions and 1008 deletions
import {
describeEE,
filterWidget,
openStaticEmbeddingModal,
popover,
restore,
setTokenFeatures,
visitEmbeddedPage,
visitIframe,
visitQuestion,
} from "e2e/support/helpers";
const questionDetails = {
name: "Simple SQL Query for Embedding",
native: {
query: "select {{text}} as WYSIWYG",
"template-tags": {
text: {
id: "fake-uuid",
name: "text",
"display-name": "Text",
type: "text",
default: null,
},
},
},
};
describeEE("scenarios > embedding > questions > downloads", () => {
beforeEach(() => {
cy.intercept("PUT", "/api/card/*").as("publishChanges");
cy.intercept("GET", "/api/embed/card/**/query").as("dl");
restore();
cy.signInAsAdmin();
cy.createNativeQuestion(questionDetails, {
wrapId: true,
});
});
context("without token", () => {
it("should not be possible to disable downloads", () => {
cy.get("@questionId").then(questionId => {
visitQuestion(questionId);
openStaticEmbeddingModal({ activeTab: "appearance" });
cy.log(
"Embedding settings page should not show option to disable downloads",
);
cy.findByLabelText("Playing with appearance options")
.should("not.contain", "Download data")
.and("not.contain", "Enable users to download data from this embed");
cy.log('Use API to "publish" this question and to enable its filter');
cy.request("PUT", `/api/card/${questionId}`, {
enable_embedding: true,
embedding_params: {
text: "enabled",
},
});
const payload = {
resource: { question: questionId },
params: {},
};
cy.log(
"Visit embedded question and set its filter through query parameters",
);
visitEmbeddedPage(payload, {
setFilters: { text: "Foo" },
});
cy.get("[data-testid=cell-data]").should("have.text", "Foo");
cy.findByRole("contentinfo").icon("download").click();
popover().within(() => {
cy.findByText("Download full results");
cy.findByText(".csv");
cy.findByText(".xlsx");
cy.findByText(".json");
});
cy.log(
"Trying to prevent downloads via query params doesn't have any effect",
);
cy.url().then(url => {
cy.visit(url + "&hide_download_button=true");
});
cy.get("[data-testid=cell-data]").should("have.text", "Foo");
cy.findByRole("contentinfo").icon("download");
});
});
});
context("premium token with paid features", () => {
beforeEach(() => setTokenFeatures("all"));
it("should be possible to disable downloads", () => {
cy.get("@questionId").then(questionId => {
visitQuestion(questionId);
openStaticEmbeddingModal({
activeTab: "appearance",
acceptTerms: false,
});
cy.log("Disable downloads");
cy.findByLabelText("Download data")
.as("allow-download-toggle")
.should("be.checked");
cy.findByText("Enable users to download data from this embed").click();
cy.get("@allow-download-toggle").should("not.be.checked");
cy.log('Use API to "publish" this question and to enable its filter');
cy.request("PUT", `/api/card/${questionId}`, {
enable_embedding: true,
embedding_params: {
text: "enabled",
},
});
visitIframe();
filterWidget().type("Foo{enter}");
cy.get("[data-testid=cell-data]").should("have.text", "Foo");
cy.location("search").should("eq", "?text=Foo");
cy.location("hash").should("match", /&hide_download_button=true$/);
cy.log("We don't even show the footer if it's empty");
cy.findByRole("contentinfo").should("not.exist");
cy.icon("download").should("not.exist");
});
});
});
});
......@@ -9,6 +9,10 @@ import {
echartsContainer,
cartesianChartCircle,
testPairedTooltipValues,
describeEE,
filterWidget,
visitEmbeddedPage,
setTokenFeatures,
} from "e2e/support/helpers";
import {
......@@ -225,3 +229,132 @@ function assertOnXYAxisLabels({ xLabel, yLabel } = {}) {
echartsContainer().get("text").contains(yLabel);
}
describeEE("scenarios > embedding > questions > downloads", () => {
const questionDetails = {
name: "Simple SQL Query for Embedding",
native: {
query: "select {{text}} as WYSIWYG",
"template-tags": {
text: {
id: "fake-uuid",
name: "text",
"display-name": "Text",
type: "text",
default: null,
},
},
},
};
beforeEach(() => {
cy.intercept("PUT", "/api/card/*").as("publishChanges");
cy.intercept("GET", "/api/embed/card/**/query").as("dl");
restore();
cy.signInAsAdmin();
cy.createNativeQuestion(questionDetails, {
wrapId: true,
});
});
context("without token", () => {
it("should not be possible to disable downloads", () => {
cy.get("@questionId").then(questionId => {
visitQuestion(questionId);
openStaticEmbeddingModal({ activeTab: "appearance" });
cy.log(
"Embedding settings page should not show option to disable downloads",
);
cy.findByLabelText("Playing with appearance options")
.should("not.contain", "Download data")
.and("not.contain", "Enable users to download data from this embed");
cy.log('Use API to "publish" this question and to enable its filter');
cy.request("PUT", `/api/card/${questionId}`, {
enable_embedding: true,
embedding_params: {
text: "enabled",
},
});
const payload = {
resource: { question: questionId },
params: {},
};
cy.log(
"Visit embedded question and set its filter through query parameters",
);
visitEmbeddedPage(payload, {
setFilters: { text: "Foo" },
});
cy.get("[data-testid=cell-data]").should("have.text", "Foo");
cy.findByRole("contentinfo").icon("download").click();
popover().within(() => {
cy.findByText("Download full results");
cy.findByText(".csv");
cy.findByText(".xlsx");
cy.findByText(".json");
});
cy.log(
"Trying to prevent downloads via query params doesn't have any effect",
);
cy.url().then(url => {
cy.visit(url + "&hide_download_button=true");
});
cy.get("[data-testid=cell-data]").should("have.text", "Foo");
cy.findByRole("contentinfo").icon("download");
});
});
});
context("premium token with paid features", () => {
beforeEach(() => setTokenFeatures("all"));
it("should be possible to disable downloads", () => {
cy.get("@questionId").then(questionId => {
visitQuestion(questionId);
openStaticEmbeddingModal({
activeTab: "appearance",
acceptTerms: false,
});
cy.log("Disable downloads");
cy.findByLabelText("Download data")
.as("allow-download-toggle")
.should("be.checked");
cy.findByText("Enable users to download data from this embed").click();
cy.get("@allow-download-toggle").should("not.be.checked");
cy.log('Use API to "publish" this question and to enable its filter');
cy.request("PUT", `/api/card/${questionId}`, {
enable_embedding: true,
embedding_params: {
text: "enabled",
},
});
visitIframe();
filterWidget().type("Foo{enter}");
cy.get("[data-testid=cell-data]").should("have.text", "Foo");
cy.location("search").should("eq", "?text=Foo");
cy.location("hash").should("match", /&hide_download_button=true$/);
cy.log("We don't even show the footer if it's empty");
cy.findByRole("contentinfo").should("not.exist");
cy.icon("download").should("not.exist");
});
});
});
});
This diff is collapsed.
import { SAMPLE_DATABASE } from "e2e/support/cypress_sample_database";
import {
restore,
popover,
visitDashboard,
visitIframe,
updateDashboardCards,
} from "e2e/support/helpers";
const { PRODUCTS, PRODUCTS_ID } = SAMPLE_DATABASE;
const q1IdFilter = {
name: "Q1 ID",
slug: "q1_id",
id: "fde6db8b",
type: "id",
sectionId: "id",
default: [1],
};
const q1CategoryFilter = {
name: "Q1 Category",
slug: "q1_category",
id: "e8ff3175",
type: "string/=",
sectionId: "string",
filteringParameters: [q1IdFilter.id],
};
const q2IdFilter = {
name: "Q2 ID",
slug: "q2_id",
id: "t3e6hb7b",
type: "id",
sectionId: "id",
default: [3],
};
const q2CategoryFilter = {
name: "Q2 Category",
slug: "q2_category",
id: "ca1n357o",
type: "string/=",
sectionId: "string",
filteringParameters: [q2IdFilter.id],
};
describe.skip("issue 15860", () => {
beforeEach(() => {
restore();
cy.signInAsAdmin();
cy.createQuestionAndDashboard({
questionDetails: {
name: "Q1",
query: { "source-table": PRODUCTS_ID },
},
dashboardDetails: {
embedding_params: {
q1_id: "locked",
q1_category: "enabled",
q2_id: "locked",
q2_category: "enabled",
},
enable_embedding: true,
parameters: [
q1IdFilter,
q1CategoryFilter,
q2IdFilter,
q2CategoryFilter,
],
},
cardDetails: {
size_x: 11,
size_y: 6,
},
}).then(({ body: { card_id: q1, dashboard_id } }) => {
// Create a second question with the same source table
cy.createQuestion({
name: "Q2",
query: { "source-table": PRODUCTS_ID },
}).then(({ body: { id: q2 } }) => {
updateDashboardCards({
dashboard_id,
cards: [
// Add card for second question with parameter mappings
{
card_id: q2,
row: 0,
col: 8,
size_x: 13,
size_y: 6,
parameter_mappings: [
{
parameter_id: q2IdFilter.id,
card_id: q2,
target: ["dimension", ["field", PRODUCTS.ID, null]],
},
{
parameter_id: q2CategoryFilter.id,
card_id: q2,
target: ["dimension", ["field", PRODUCTS.CATEGORY, null]],
},
],
},
// Add parameter mappings to first question's card
{
card_id: q1,
parameter_mappings: [
{
parameter_id: q1IdFilter.id,
card_id: q1,
target: ["dimension", ["field", PRODUCTS.ID, null]],
},
{
parameter_id: q1CategoryFilter.id,
card_id: q1,
target: ["dimension", ["field", PRODUCTS.CATEGORY, null]],
},
],
},
],
});
});
cy.request("PUT", `/api/dashboard/${dashboard_id}`, {
embedding_params: {
q1_id: "locked",
q1_category: "enabled",
q2_id: "locked",
q2_category: "enabled",
},
enable_embedding: true,
});
visitDashboard(dashboard_id);
});
});
it("should work for locked linked filters connected to different cards with the same source table (metabase#15860)", () => {
cy.icon("share").click();
// eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage
cy.findByText("Embed in your application").click();
setDefaultValueForLockedFilter("Q1 ID", 1);
setDefaultValueForLockedFilter("Q2 ID", 3);
visitIframe();
// eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage
cy.findByText("Q1 Category").click();
popover().within(() => {
cy.findByRole("listitem")
.should("have.length", 1)
.and("contain", "Gizmo");
});
// eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage
cy.findByText("Q2 Category").click();
popover().within(() => {
cy.findByRole("listitem")
.should("have.length", 1)
.and("contain", "Doohickey");
});
});
});
function setDefaultValueForLockedFilter(filter, value) {
cy.findByText("Previewing locked parameters")
.parent()
.within(() => {
cy.findByText(filter).click({ force: true });
});
cy.findByPlaceholderText("Enter an ID").type(`${value}{enter}`);
cy.button("Add filter").click();
}
import { SAMPLE_DATABASE } from "e2e/support/cypress_sample_database";
import {
restore,
filterWidget,
popover,
visitDashboard,
visitIframe,
openStaticEmbeddingModal,
} from "e2e/support/helpers";
const { PRODUCTS } = SAMPLE_DATABASE;
const questionDetails = {
name: "20438",
native: {
query:
"SELECT * FROM PRODUCTS\nWHERE true\n [[AND {{CATEGORY}}]]\n limit 30",
"template-tags": {
CATEGORY: {
id: "24f69111-29f8-135f-9321-1ff94bbb31ad",
name: "CATEGORY",
"display-name": "Category",
type: "dimension",
dimension: ["field", PRODUCTS.CATEGORY, null],
"widget-type": "string/=",
default: null,
},
},
},
};
const filter = {
name: "Text",
slug: "text",
id: "b555d25b",
type: "string/=",
sectionId: "string",
};
const dashboardDetails = {
parameters: [filter],
};
describe("issue 20438", () => {
beforeEach(() => {
cy.intercept("GET", "/api/embed/dashboard/**").as("getEmbed");
restore();
cy.signInAsAdmin();
cy.createNativeQuestionAndDashboard({
questionDetails,
dashboardDetails,
}).then(({ body: { id, card_id, dashboard_id } }) => {
// Connect filter to the card
cy.request("PUT", `/api/dashboard/${dashboard_id}`, {
dashcards: [
{
id,
card_id,
row: 0,
col: 0,
size_x: 24,
size_y: 8,
parameter_mappings: [
{
parameter_id: filter.id,
card_id,
target: ["dimension", ["template-tag", "CATEGORY"]],
},
],
},
],
});
// Enable embedding and enable the "Text" filter
cy.request("PUT", `/api/dashboard/${dashboard_id}`, {
enable_embedding: true,
embedding_params: { [filter.slug]: "enabled" },
});
visitDashboard(dashboard_id);
});
});
it("dashboard filter connected to the field filter should work with a single value in embedded dashboards (metabase#20438)", () => {
openStaticEmbeddingModal({ activeTab: "parameters" });
visitIframe();
cy.wait("@getEmbed");
filterWidget().click();
cy.wait("@getEmbed");
popover().contains("Doohickey").click();
cy.wait("@getEmbed");
cy.button("Add filter").click();
cy.wait("@getEmbed");
cy.findAllByTestId("cell-data")
// One of product titles for Doohickey
.should("contain", "Small Marble Shoes")
// One of product titles for Gizmo
.and("not.contain", "Rustic Paper Wallet");
});
});
import {
modal,
openStaticEmbeddingModal,
restore,
visitIframe,
} from "e2e/support/helpers";
describe("locked parameters in embedded question (metabase#20634)", () => {
beforeEach(() => {
cy.intercept("PUT", "/api/card/*").as("publishChanges");
restore();
cy.signInAsAdmin();
cy.createNativeQuestion(
{
name: "20634",
native: {
query: "select {{text}}",
"template-tags": {
text: {
id: "abc-123",
name: "text",
"display-name": "Text",
type: "text",
default: null,
},
},
},
},
{ visitQuestion: true },
);
});
it("should let the user lock parameters to specific values", () => {
openStaticEmbeddingModal({ activeTab: "parameters" });
modal().within(() => {
// select the dropdown next to the Text parameter so that we can set the value to "Locked"
cy.findByText("Text")
.parent()
.within(() => {
cy.findByText("Disabled").click();
});
});
// eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage
cy.findByText("Locked").click();
modal().within(() => {
// set a parameter value
cy.findByPlaceholderText("Text").type("foo{enter}");
// publish the embedded question so that we can directly navigate to its url
cy.findByText("Publish").click();
cy.wait("@publishChanges");
});
// directly navigate to the embedded question
visitIframe();
// verify that the Text parameter doesn't show up but that its value is reflected in the dashcard
// eslint-disable-next-line no-unscoped-text-selectors -- deprecated usage
cy.findByText("Text").should("not.exist");
cy.get(".CardVisualization").within(() => {
cy.contains("foo");
});
});
});
import {
restore,
visitEmbeddedPage,
visitDashboard,
visitQuestion,
} from "e2e/support/helpers";
const dashboardFilter = {
name: "Equal to",
slug: "equal_to",
id: "c269ebe1",
type: "number/=",
sectionId: "number",
};
const dashboardDetails = {
name: "25031",
parameters: [dashboardFilter],
};
const defaultFilterValues = [undefined, "10"];
defaultFilterValues.forEach(value => {
const conditionalPartOfTestTitle = value
? "and the required filter with the default value"
: "";
describe("issues 20845, 25031", () => {
beforeEach(() => {
cy.intercept("PUT", "/api/card/*").as("publishChanges");
restore();
cy.signInAsAdmin();
const questionDetails = getQuestionDetails(value);
cy.createNativeQuestionAndDashboard({
questionDetails,
dashboardDetails,
}).then(({ body: { id, dashboard_id, card_id } }) => {
cy.wrap(card_id).as("questionId");
cy.wrap(dashboard_id).as("dashboardId");
visitQuestion(card_id);
// Connect dashbaord filter to the card
cy.request("PUT", `/api/dashboard/${dashboard_id}`, {
dashcards: [
{
card_id,
id,
row: 0,
col: 0,
size_x: 16,
size_y: 10,
parameter_mappings: [
{
parameter_id: dashboardFilter.id,
card_id,
target: ["variable", ["template-tag", "qty_locked"]],
},
],
},
],
});
});
});
it(`QUESTION: locked parameter should work with numeric values ${conditionalPartOfTestTitle} (metabase#20845)`, () => {
cy.get("@questionId").then(questionId => {
cy.request("PUT", `/api/card/${questionId}`, {
enable_embedding: true,
embedding_params: {
qty_locked: "locked",
},
});
// This issue is not possible to reproduce using UI from this point on.
// We have to manually send the payload in order to make sure it works for both strings and integers.
["string", "integer"].forEach(type => {
cy.log(
`Make sure it works with ${type.toUpperCase()} in the payload`,
);
visitEmbeddedPage({
resource: { question: questionId },
params: {
qty_locked: type === "string" ? "15" : 15, // IMPORTANT: integer
},
});
});
cy.findByTestId("column-header").should("contain", "COUNT(*)");
cy.findByTestId("cell-data").should("contain", "5");
});
});
it(`DASHBOARD: locked parameter should work with numeric values ${conditionalPartOfTestTitle} (metabase#25031)`, () => {
cy.get("@dashboardId").then(dashboardId => {
visitDashboard(dashboardId);
cy.request("PUT", `/api/dashboard/${dashboardId}`, {
enable_embedding: true,
embedding_params: {
[dashboardFilter.slug]: "locked",
},
});
// This issue is not possible to reproduce using UI from this point on.
// We have to manually send the payload in order to make sure it works for both strings and integers.
["string", "integer"].forEach(type => {
cy.log(
`Make sure it works with ${type.toUpperCase()} in the payload`,
);
const payload = {
resource: { dashboard: dashboardId },
params: {
[dashboardFilter.slug]: type === "string" ? "15" : 15, // IMPORTANT: integer
},
};
visitEmbeddedPage(payload);
// wait for the results to load
cy.contains(dashboardDetails.name);
cy.get(".CardVisualization")
.should("contain", "COUNT(*)")
.and("contain", "5");
});
});
});
});
});
/**
* @param {string} defaultValue - The default value for the defined filter
* @returns object
*/
function getQuestionDetails(defaultValue = undefined) {
return {
name: "20845",
native: {
"template-tags": {
qty_locked: {
id: "6bd8d7be-bd5b-382c-cfa2-683461891663",
name: "qty_locked",
"display-name": "Qty locked",
type: "number",
required: defaultValue ? true : false,
default: defaultValue,
},
},
query:
"select count(*) from orders where true [[AND quantity={{qty_locked}}]]",
},
};
}
import { SAMPLE_DATABASE } from "e2e/support/cypress_sample_database";
import {
restore,
visitQuestion,
describeEE,
setTokenFeatures,
openStaticEmbeddingModal,
} from "e2e/support/helpers";
const { PRODUCTS, PRODUCTS_ID } = SAMPLE_DATABASE;
const questionDetails = {
name: "3035",
query: {
"source-table": PRODUCTS_ID,
limit: 10,
},
};
describeEE("issue 30535", () => {
beforeEach(() => {
restore();
cy.signInAsAdmin();
setTokenFeatures("all");
cy.sandboxTable({
table_id: PRODUCTS_ID,
attribute_remappings: {
attr_cat: ["dimension", ["field", PRODUCTS.CATEGORY, null]],
},
});
cy.createQuestion(questionDetails).then(({ body: { id } }) => {
cy.request("PUT", `/api/card/${id}`, { enable_embedding: true });
visitQuestion(id);
});
});
it("user session should not apply sandboxing to a signed embedded question (metabase#30535)", () => {
openStaticEmbeddingModal({
activeTab: "parameters",
previewMode: "preview",
acceptTerms: false,
});
cy.document().then(doc => {
const iframe = doc.querySelector("iframe");
cy.signOut();
cy.signInAsSandboxedUser();
cy.visit(iframe.src);
});
cy.findByRole("table").within(() => {
// The sandboxed user has an attribute cat="Widget"
cy.findAllByText("Widget");
// Sandboxing shouldn't affect results so we should see other product categories as well
cy.findAllByText("Gizmo");
});
});
});
import { SAMPLE_DATABASE } from "e2e/support/cypress_sample_database";
import {
addOrUpdateDashboardCard,
getIframeBody,
modal,
openStaticEmbeddingModal,
popover,
restore,
visitDashboard,
} from "e2e/support/helpers";
const { PRODUCTS, PRODUCTS_ID } = SAMPLE_DATABASE;
const questionDetails = {
name: "Products",
query: { "source-table": PRODUCTS_ID },
};
const filter3 = {
name: "Text 2",
slug: "text_2",
id: "b0665b6a",
type: "string/=",
sectionId: "string",
};
const filter2 = {
name: "Text 1",
slug: "text_1",
id: "d4c9f2e5",
type: "string/=",
sectionId: "string",
};
const filter = {
filteringParameters: [filter2.id],
name: "Text",
slug: "text",
id: "d1b69627",
type: "string/=",
sectionId: "string",
};
describe("dashboard preview", () => {
beforeEach(() => {
cy.intercept("GET", "/api/preview_embed/dashboard/**").as(
"previewDashboard",
);
cy.intercept("GET", "/api/preview_embed/dashboard/**/params/**/values").as(
"previewValues",
);
restore();
cy.signInAsAdmin();
});
it("dashboard linked filters values don't work in static embed preview (metabase#37914)", () => {
const dashboardDetails = {
parameters: [filter, filter2, filter3],
enable_embedding: true,
embedding_params: {
[filter.slug]: "enabled",
[filter2.slug]: "enabled",
[filter3.slug]: "enabled",
},
};
cy.createQuestionAndDashboard({
questionDetails,
dashboardDetails,
}).then(({ body: { card_id, dashboard_id } }) => {
addOrUpdateDashboardCard({
dashboard_id,
card_id,
card: {
parameter_mappings: [
{
card_id,
parameter_id: filter.id,
target: [
"dimension",
["field", PRODUCTS.CATEGORY, { "base-type": "type/Text" }],
],
},
{
card_id,
parameter_id: filter2.id,
target: [
"dimension",
["field", PRODUCTS.CATEGORY, { "base-type": "type/Text" }],
],
},
{
card_id,
parameter_id: filter3.id,
target: [
"dimension",
["field", PRODUCTS.CATEGORY, { "base-type": "type/Text" }],
],
},
],
},
});
visitDashboard(dashboard_id);
});
openStaticEmbeddingModal({
activeTab: "parameters",
previewMode: "preview",
});
modal().within(() => {
// Makes it less likely to flake.
cy.wait("@previewDashboard");
getIframeBody().within(() => {
cy.log(
"Set filter 2 value, so filter 1 should be filtered by filter 2",
);
cy.button(filter2.name).click();
cy.wait("@previewValues");
popover().within(() => {
cy.findByText("Gadget").should("be.visible");
cy.findByText("Gizmo").should("be.visible");
cy.findByText("Widget").should("be.visible");
cy.findByText("Doohickey").click();
cy.button("Add filter").click();
});
cy.log("Assert filter 1");
cy.button(filter.name).click();
popover().within(() => {
cy.findByText("Gadget").should("not.exist");
cy.findByText("Gizmo").should("not.exist");
cy.findByText("Widget").should("not.exist");
cy.findByText("Doohickey").should("be.visible");
});
});
});
});
it("dashboard linked filters values in embed preview don't behave like embedding (metabase#41635)", () => {
const dashboardDetails = {
parameters: [filter, filter2, filter3],
enable_embedding: true,
embedding_params: {
[filter.slug]: "enabled",
[filter2.slug]: "locked",
[filter3.slug]: "locked",
},
};
cy.createQuestionAndDashboard({
questionDetails,
dashboardDetails,
}).then(({ body: { card_id, dashboard_id } }) => {
addOrUpdateDashboardCard({
dashboard_id,
card_id,
card: {
parameter_mappings: [
{
card_id,
parameter_id: filter.id,
target: [
"dimension",
["field", PRODUCTS.CATEGORY, { "base-type": "type/Text" }],
],
},
{
card_id,
parameter_id: filter2.id,
target: [
"dimension",
["field", PRODUCTS.CATEGORY, { "base-type": "type/Text" }],
],
},
{
card_id,
parameter_id: filter3.id,
target: [
"dimension",
["field", PRODUCTS.CATEGORY, { "base-type": "type/Text" }],
],
},
],
},
});
visitDashboard(dashboard_id);
});
openStaticEmbeddingModal({
activeTab: "parameters",
previewMode: "preview",
});
// Makes it less likely to flake.
cy.wait("@previewDashboard");
cy.log("Set the first locked parameter values");
modal()
.findByRole("generic", { name: "Previewing locked parameters" })
.findByText("Text 1")
.click();
popover().within(() => {
cy.findByText("Doohickey").click();
cy.button("Add filter").click();
});
cy.log("Set the second locked parameter values");
modal()
.findByRole("generic", { name: "Previewing locked parameters" })
.findByText("Text 2")
.click();
popover().within(() => {
cy.findByText("Doohickey").click();
cy.findByText("Gizmo").click();
cy.findByText("Gadget").click();
cy.button("Add filter").click();
});
getIframeBody().within(() => {
cy.log("Assert filter 1");
cy.button(filter.name).click();
popover().within(() => {
cy.findByText("Gadget").should("not.exist");
cy.findByText("Gizmo").should("not.exist");
cy.findByText("Widget").should("not.exist");
cy.findByText("Doohickey").should("be.visible");
});
});
});
});
import { SAMPLE_DATABASE } from "e2e/support/cypress_sample_database";
import {
getIframeBody,
openStaticEmbeddingModal,
restore,
updateDashboardCards,
visitDashboard,
} from "e2e/support/helpers";
const { PRODUCTS_ID } = SAMPLE_DATABASE;
const questionDetails = {
name: "Products",
query: { "source-table": PRODUCTS_ID, limit: 2 },
};
const dashboardDetails = {
name: "long dashboard",
enable_embedding: true,
};
describe("issue 40660", () => {
beforeEach(() => {
cy.intercept("GET", "/api/preview_embed/dashboard/**").as(
"previewDashboard",
);
restore();
cy.signInAsAdmin();
cy.createQuestionAndDashboard({
questionDetails,
dashboardDetails,
}).then(({ body: { id, card_id, dashboard_id } }) => {
updateDashboardCards({
dashboard_id,
cards: [{ card_id }, { card_id }, { card_id }],
});
visitDashboard(dashboard_id);
});
});
it("static dashboard content shouldn't overflow its container (metabase#40660)", () => {
openStaticEmbeddingModal({
activeTab: "parameters",
previewMode: "preview",
});
getIframeBody().within(() => {
cy.findByTestId("embed-frame").scrollTo("bottom");
cy.findByRole("link", { name: "Powered by Metabase" }).should(
"be.visible",
);
});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment