From b0e26a3aa89fbd968ac904ab4e38691ab20b35e3 Mon Sep 17 00:00:00 2001 From: Aleksandr Lesnenko Date: Fri, 22 Jul 2022 18:53:20 +0400 Subject: [PATCH] fix percy flakiness (#23837) * fix percy flakiness * run e2e * fix percy flakiness * update docs, remove timeout config that did not help --- .github/workflows/percy-issue-comment.yml | 3 ++- .github/workflows/percy-visual-label.yml | 2 ++ .percy.yml | 1 + docs/developers-guide/visual-tests.md | 5 +++-- .../components/ArchiveModal/ArchiveModal.jsx | 2 +- .../NotificationCard/NotificationCard.jsx | 2 +- .../collections/components/BaseTableItem.jsx | 2 +- .../components/EventCard/EventCard.tsx | 2 +- .../questions/components/EventCard/EventCard.tsx | 2 +- frontend/test/__support__/e2e/commands.js | 2 ++ .../e2e/commands/percy/createPercySnapshot.js | 10 ++++++++++ .../account/notifications.cy.spec.js | 2 +- .../test/metabase-visual/admin/colors.cy.spec.js | 12 ++++++------ .../test/metabase-visual/admin/fonts.cy.spec.js | 4 ++-- .../metabase-visual/admin/permissions.cy.spec.js | 12 ++++++------ .../collections/bookmarks.cy.spec.js | 2 +- .../collections/timelines.cy.spec.js | 8 ++++---- .../dashboard/fullscreen.cy.spec.js | 4 ++-- .../dashboard/parameters-widget.cy.spec.js | 16 ++++++++-------- .../metabase-visual/models/editor.cy.spec.js | 8 ++++---- .../metabase-visual/notebook/notebook.cy.spec.js | 8 ++++---- .../metabase-visual/onboarding/urls.cy.spec.js | 8 ++++---- .../static-visualizations/funnel.cy.spec.js | 2 +- .../line-area-bar-combo.cy.spec.js | 2 +- .../progress-bar.cy.spec.js | 2 +- .../static-visualizations/waterfall.cy.spec.js | 2 +- .../visualizations/bar.cy.spec.js | 4 ++-- .../visualizations/funnel.cy.spec.js | 4 ++-- .../visualizations/line.cy.spec.js | 10 +++++----- .../visualizations/row.cy.spec.js | 2 +- .../visualizations/scatter.cy.spec.js | 6 +++--- .../visualizations/table.cy.spec.js | 6 +++--- .../visualizations/waterfall.cy.spec.js | 2 +- 33 files changed, 88 insertions(+), 71 deletions(-) create mode 100644 frontend/test/__support__/e2e/commands/percy/createPercySnapshot.js diff --git a/.github/workflows/percy-issue-comment.yml b/.github/workflows/percy-issue-comment.yml index 7ac676dcb5be9..d8c3939c79afb 100644 --- a/.github/workflows/percy-issue-comment.yml +++ b/.github/workflows/percy-issue-comment.yml @@ -48,7 +48,8 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - + MB_EDITION: ee + ENTERPRISE_TOKEN: ${{ secrets.ENTERPRISE_TOKEN }} steps: - uses: actions/checkout@v3 with: diff --git a/.github/workflows/percy-visual-label.yml b/.github/workflows/percy-visual-label.yml index f3984953e9942..ee85cd9bcd891 100644 --- a/.github/workflows/percy-visual-label.yml +++ b/.github/workflows/percy-visual-label.yml @@ -13,6 +13,8 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + MB_EDITION: ee + ENTERPRISE_TOKEN: ${{ secrets.ENTERPRISE_TOKEN }} steps: - uses: actions/checkout@v3 - name: Prepare front-end environment diff --git a/.percy.yml b/.percy.yml index b09920de5a83d..92cf30e1156f4 100644 --- a/.percy.yml +++ b/.percy.yml @@ -3,5 +3,6 @@ snapshot: widths: - 1280 min-height: 800 + discovery: disable-cache: true diff --git a/docs/developers-guide/visual-tests.md b/docs/developers-guide/visual-tests.md index ce83178930301..f47fbdc4c72dd 100644 --- a/docs/developers-guide/visual-tests.md +++ b/docs/developers-guide/visual-tests.md @@ -27,7 +27,7 @@ In addition to that, we need to ensure that underlying Cypress tests are valid, We use Cypress to write Percy tests so we can fully use all existing helpers and custom commands. -Visual regression tests live inside the `frontend/test/metabase-visual` directory. Writing a Percy test consists of creating a desired page state and executing `cy.percySnapshot()` command. +Visual regression tests live inside the `frontend/test/metabase-visual` directory. Writing a Percy test consists of creating a desired page state and executing `cy.createPercySnapshot()` command. ### Goal @@ -49,4 +49,5 @@ Consider the page state at `percyHealthCheck` step as the one that will be captu - You don't need to export `PERCY_TOKEN` for running tests. If a token is exported Percy will send snapshots from your local machine to their servers so that you will be able to see your local run in their interface. - When the application code uses `Date.now()`, you can [freeze](https://docs.percy.io/docs/freezing-dynamic-data#freezing-datetime-in-cypress) date/time in Cypress. -- [Stub](https://github.com/metabase/metabase/pull/17380/files#diff-4e8ebaf75969143a5eee6bfb8adcd4b72d4330d18d77319e3434d11cf6c75e40R15) `Math.random` when to deal with randomization. \ No newline at end of file +- [Stub](https://github.com/metabase/metabase/pull/17380/files#diff-4e8ebaf75969143a5eee6bfb8adcd4b72d4330d18d77319e3434d11cf6c75e40R15) `Math.random` when you deal with randomization. +- When testing a page that renders any dates coming from the server, in order to avoid unwanted visual changes, add `data-server-date` attribute to all DOM nodes that render dates. The custom `createPercySnapshot` command replaces content with a constant placeholder before capturing a snapshot. diff --git a/frontend/src/metabase/account/notifications/components/ArchiveModal/ArchiveModal.jsx b/frontend/src/metabase/account/notifications/components/ArchiveModal/ArchiveModal.jsx index 2bfdd9f1b3dc4..ea02c1cb965e1 100644 --- a/frontend/src/metabase/account/notifications/components/ArchiveModal/ArchiveModal.jsx +++ b/frontend/src/metabase/account/notifications/components/ArchiveModal/ArchiveModal.jsx @@ -52,7 +52,7 @@ const ArchiveModal = ({ onClose={onClose} > {isCreator(item, user) && hasUnsubscribed && ( - + {getCreatorMessage(type, user)} {t`As the creator you can also choose to delete this if it’s no longer relevant to others as well.`} diff --git a/frontend/src/metabase/account/notifications/components/NotificationCard/NotificationCard.jsx b/frontend/src/metabase/account/notifications/components/NotificationCard/NotificationCard.jsx index 8cc09258117f9..be0e604f7dc2c 100644 --- a/frontend/src/metabase/account/notifications/components/NotificationCard/NotificationCard.jsx +++ b/frontend/src/metabase/account/notifications/components/NotificationCard/NotificationCard.jsx @@ -57,7 +57,7 @@ const NotificationCard = ({ {getChannelMessage(channel)} ))} - + {getCreatorMessage(item, user)} diff --git a/frontend/src/metabase/collections/components/BaseTableItem.jsx b/frontend/src/metabase/collections/components/BaseTableItem.jsx index 7a6368da2f5ca..873bfcad6f72e 100644 --- a/frontend/src/metabase/collections/components/BaseTableItem.jsx +++ b/frontend/src/metabase/collections/components/BaseTableItem.jsx @@ -133,7 +133,7 @@ export function BaseTableItem({ {lastEditedBy} - + {lastEditInfo && ( }> {lastEditedAt} diff --git a/frontend/src/metabase/timelines/collections/components/EventCard/EventCard.tsx b/frontend/src/metabase/timelines/collections/components/EventCard/EventCard.tsx index 9542ccc67d784..df97d34fc84f0 100644 --- a/frontend/src/metabase/timelines/collections/components/EventCard/EventCard.tsx +++ b/frontend/src/metabase/timelines/collections/components/EventCard/EventCard.tsx @@ -60,7 +60,7 @@ const EventCard = ({ {event.description && ( {event.description} )} - {creatorMessage} + {creatorMessage} {menuItems.length > 0 && ( diff --git a/frontend/src/metabase/timelines/questions/components/EventCard/EventCard.tsx b/frontend/src/metabase/timelines/questions/components/EventCard/EventCard.tsx index 21665a5b68346..cd28621711d7d 100644 --- a/frontend/src/metabase/timelines/questions/components/EventCard/EventCard.tsx +++ b/frontend/src/metabase/timelines/questions/components/EventCard/EventCard.tsx @@ -65,7 +65,7 @@ const EventCard = ({ {event.description && ( {event.description} )} - {creatorMessage} + {creatorMessage} {menuItems.length > 0 && ( diff --git a/frontend/test/__support__/e2e/commands.js b/frontend/test/__support__/e2e/commands.js index 8c019985ed9f4..5ee491fdd5b8a 100644 --- a/frontend/test/__support__/e2e/commands.js +++ b/frontend/test/__support__/e2e/commands.js @@ -31,3 +31,5 @@ import "./commands/visibility/findByTextEnsureVisible"; import "./commands/visibility/isRenderedWithinViewport"; import "./commands/overwrites/log"; + +import "./commands/percy/createPercySnapshot"; diff --git a/frontend/test/__support__/e2e/commands/percy/createPercySnapshot.js b/frontend/test/__support__/e2e/commands/percy/createPercySnapshot.js new file mode 100644 index 0000000000000..b0bcf030e38a8 --- /dev/null +++ b/frontend/test/__support__/e2e/commands/percy/createPercySnapshot.js @@ -0,0 +1,10 @@ +Cypress.Commands.add("createPercySnapshot", (name, options) => { + cy.window().then(win => { + // Replace dates that came from server + win.document + .querySelectorAll("[data-server-date]") + .forEach(el => (el.innerHTML = "server-side date")); + }); + + cy.percySnapshot(name, options); +}); diff --git a/frontend/test/metabase-visual/account/notifications.cy.spec.js b/frontend/test/metabase-visual/account/notifications.cy.spec.js index 29d546061a39a..f1839a32ed7c2 100644 --- a/frontend/test/metabase-visual/account/notifications.cy.spec.js +++ b/frontend/test/metabase-visual/account/notifications.cy.spec.js @@ -66,6 +66,6 @@ describe("visual tests > account > notifications", () => { it("renders notifications", () => { cy.visit("/account/notifications"); cy.findByText("Question"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/admin/colors.cy.spec.js b/frontend/test/metabase-visual/admin/colors.cy.spec.js index 3ee7b047cc96b..29b826ffd8665 100644 --- a/frontend/test/metabase-visual/admin/colors.cy.spec.js +++ b/frontend/test/metabase-visual/admin/colors.cy.spec.js @@ -45,14 +45,14 @@ describeEE("visual tests > admin > colors", () => { }); visitQuestionAdhoc(questionDetails); - cy.percySnapshot("chart"); + cy.createPercySnapshot("chart"); cy.icon("notebook").click(); - cy.percySnapshot("filters"); + cy.createPercySnapshot("filters"); cy.icon("notebook").click(); cy.findByText("Summarize").click(); - cy.percySnapshot("summarize"); + cy.createPercySnapshot("summarize"); }); it("should use custom chart colors", () => { @@ -65,13 +65,13 @@ describeEE("visual tests > admin > colors", () => { }); visitQuestionAdhoc(questionDetails); - cy.percySnapshot("chart"); + cy.createPercySnapshot("chart"); cy.icon("notebook").click(); - cy.percySnapshot("filters"); + cy.createPercySnapshot("filters"); cy.icon("notebook").click(); cy.findByText("Summarize").click(); - cy.percySnapshot("summarize"); + cy.createPercySnapshot("summarize"); }); }); diff --git a/frontend/test/metabase-visual/admin/fonts.cy.spec.js b/frontend/test/metabase-visual/admin/fonts.cy.spec.js index 0009616ade9d4..e57198f60f026 100644 --- a/frontend/test/metabase-visual/admin/fonts.cy.spec.js +++ b/frontend/test/metabase-visual/admin/fonts.cy.spec.js @@ -21,7 +21,7 @@ describeEE("visual tests > admin > fonts", () => { cy.findByText("Roboto Mono").click(); waitForFont("Roboto Mono"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("should set a custom font", () => { @@ -32,7 +32,7 @@ describeEE("visual tests > admin > fonts", () => { typeAndBlurUsingLabel("Regular", CUSTOM_FONT_URL); waitForFont("Custom"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/admin/permissions.cy.spec.js b/frontend/test/metabase-visual/admin/permissions.cy.spec.js index a71baed42c281..366381bebdbc5 100644 --- a/frontend/test/metabase-visual/admin/permissions.cy.spec.js +++ b/frontend/test/metabase-visual/admin/permissions.cy.spec.js @@ -10,26 +10,26 @@ describe("visual tests > admin > permissions", () => { it("database focused view", () => { cy.visit("/admin/permissions/data/database/1"); cy.findByPlaceholderText("Search for a group"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("database focused view > table", () => { cy.visit("/admin/permissions/data/database/1/schema/PUBLIC/table/1"); cy.findByPlaceholderText("Search for a group"); cy.findByPlaceholderText("Search for a table"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("group focused view", () => { cy.visit("/admin/permissions/data/group/1"); cy.findByPlaceholderText("Search for a database"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("group focused view > database", () => { cy.visit("/admin/permissions/data/group/1/database/1"); cy.findByPlaceholderText("Search for a table"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); @@ -37,14 +37,14 @@ describe("visual tests > admin > permissions", () => { it("editor", () => { cy.visit("/admin/permissions/collections/11"); cy.findByPlaceholderText("Search for a group"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); // This revealed the infinite loop which resulted in metabase#21026 it.skip("modal", () => { cy.visit("/collection/root/permissions"); cy.findByText("Group name"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); }); diff --git a/frontend/test/metabase-visual/collections/bookmarks.cy.spec.js b/frontend/test/metabase-visual/collections/bookmarks.cy.spec.js index 8e2f39f1527d3..7f6a533807d8b 100644 --- a/frontend/test/metabase-visual/collections/bookmarks.cy.spec.js +++ b/frontend/test/metabase-visual/collections/bookmarks.cy.spec.js @@ -17,7 +17,7 @@ describe("Bookmarks in a collection page", () => { getSectionTitle(/Bookmarks/); }); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/collections/timelines.cy.spec.js b/frontend/test/metabase-visual/collections/timelines.cy.spec.js index c32f4357bb1ba..35e039a178468 100644 --- a/frontend/test/metabase-visual/collections/timelines.cy.spec.js +++ b/frontend/test/metabase-visual/collections/timelines.cy.spec.js @@ -20,7 +20,7 @@ describe("timelines", () => { cy.visit("/collection/root/timelines"); cy.findByText("Our analytics events").should("be.visible"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("should display timeline events in collections", () => { @@ -28,7 +28,7 @@ describe("timelines", () => { cy.visit(`/collection/root/timelines/${timeline.id}`); cy.findByText("Timeline").should("be.visible"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); @@ -65,7 +65,7 @@ describe("timelines", () => { cy.findByLabelText("star icon").realHover(); cy.findByText("RC1"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("should display timeline events with a native question", () => { @@ -96,6 +96,6 @@ describe("timelines", () => { cy.findByLabelText("star icon").realHover(); cy.findByText("RC1"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/dashboard/fullscreen.cy.spec.js b/frontend/test/metabase-visual/dashboard/fullscreen.cy.spec.js index 8fedf7a61ed2e..f52bdadc3fb84 100644 --- a/frontend/test/metabase-visual/dashboard/fullscreen.cy.spec.js +++ b/frontend/test/metabase-visual/dashboard/fullscreen.cy.spec.js @@ -59,13 +59,13 @@ describe("visual tests > dashboard > fullscreen", () => { cy.icon("moon"); - cy.percySnapshot("day"); + cy.createPercySnapshot("day"); cy.icon("moon").click(); cy.icon("sun"); - cy.percySnapshot("night"); + cy.createPercySnapshot("night"); cy.icon("contract").click(); }); diff --git a/frontend/test/metabase-visual/dashboard/parameters-widget.cy.spec.js b/frontend/test/metabase-visual/dashboard/parameters-widget.cy.spec.js index 82a977119435b..173bc2107b78e 100644 --- a/frontend/test/metabase-visual/dashboard/parameters-widget.cy.spec.js +++ b/frontend/test/metabase-visual/dashboard/parameters-widget.cy.spec.js @@ -53,7 +53,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.get("main") .scrollTo(0, 264) .then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); cy.findByTestId("dashboard-parameters-widget-container").should( @@ -69,7 +69,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.findByTestId("dashboard-parameters-and-cards") .scrollTo(0, 464) .then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); cy.findByTestId("edit-dashboard-parameters-widget-container").should( @@ -87,7 +87,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.get("main") .scrollTo(0, 264) .then(() => { - cy.percySnapshot(null, { widths: [MOBILE_WIDTH] }); + cy.createPercySnapshot(null, { widths: [MOBILE_WIDTH] }); }); cy.findByTestId("dashboard-parameters-widget-container").should( @@ -105,7 +105,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.findByTestId("dashboard-parameters-and-cards") .scrollTo(0, 464) .then(() => { - cy.percySnapshot(null, { widths: [MOBILE_WIDTH] }); + cy.createPercySnapshot(null, { widths: [MOBILE_WIDTH] }); }); cy.findByTestId("edit-dashboard-parameters-widget-container").should( @@ -149,7 +149,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.get("main") .scrollTo(0, 264) .then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); cy.findByTestId("dashboard-parameters-widget-container").should( @@ -167,7 +167,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.findByTestId("dashboard-parameters-and-cards") .scrollTo(0, 464) .then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); cy.findByTestId("edit-dashboard-parameters-widget-container").should( @@ -185,7 +185,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.get("main") .scrollTo(0, 264) .then(() => { - cy.percySnapshot(null, { widths: [MOBILE_WIDTH] }); + cy.createPercySnapshot(null, { widths: [MOBILE_WIDTH] }); }); cy.findByTestId("dashboard-parameters-widget-container").should( @@ -203,7 +203,7 @@ describe(`visual tests > dashboard > parameters widget`, () => { cy.findByTestId("dashboard-parameters-and-cards") .scrollTo(0, 464) .then(() => { - cy.percySnapshot(null, { widths: [MOBILE_WIDTH] }); + cy.createPercySnapshot(null, { widths: [MOBILE_WIDTH] }); }); cy.findByTestId("edit-dashboard-parameters-widget-container").should( diff --git a/frontend/test/metabase-visual/models/editor.cy.spec.js b/frontend/test/metabase-visual/models/editor.cy.spec.js index 0e98424e94c29..bbf3c1bbd9dfc 100644 --- a/frontend/test/metabase-visual/models/editor.cy.spec.js +++ b/frontend/test/metabase-visual/models/editor.cy.spec.js @@ -21,7 +21,7 @@ describe("visual tests > models > editor", () => { cy.wait("@cardQuery"); cy.findByText(/Doing science/).should("not.exist"); cy.wait(100); // waits for the colums widths calculation - cy.percySnapshot( + cy.createPercySnapshot( "visual tests > models > editor > GUI query > renders query editor correctly", ); }); @@ -37,7 +37,7 @@ describe("visual tests > models > editor", () => { cy.wait("@cardQuery"); cy.findByText(/Doing science/).should("not.exist"); cy.wait(100); // waits for the colums widths calculation - cy.percySnapshot( + cy.createPercySnapshot( "visual tests > models > editor > GUI query > renders metadata editor correctly", ); }); @@ -56,7 +56,7 @@ describe("visual tests > models > editor", () => { cy.visit(`/model/${MODEL_ID}/query`); cy.wait("@cardQuery"); cy.findByText(/Doing science/).should("not.exist"); - cy.percySnapshot( + cy.createPercySnapshot( "visual tests > models > editor > native query > renders query editor correctly", ); }); @@ -74,7 +74,7 @@ describe("visual tests > models > editor", () => { cy.wait("@cardQuery"); cy.findByText(/Doing science/).should("not.exist"); cy.wait(100); // waits for the colums widths calculation - cy.percySnapshot( + cy.createPercySnapshot( "visual tests > models > editor > native query > renders metadata editor correctly", ); }); diff --git a/frontend/test/metabase-visual/notebook/notebook.cy.spec.js b/frontend/test/metabase-visual/notebook/notebook.cy.spec.js index 8daafb0e7855e..5bc2e3521fd29 100644 --- a/frontend/test/metabase-visual/notebook/notebook.cy.spec.js +++ b/frontend/test/metabase-visual/notebook/notebook.cy.spec.js @@ -45,7 +45,7 @@ describe("visual tests > notebook > major UI elements", () => { addSorting({ field: "Average of Quantity" }); setRowLimit(500); - cy.percySnapshot( + cy.createPercySnapshot( "visual tests > notebook > major UI elements renders correctly", { minHeight: VIEWPORT_HEIGHT, @@ -76,7 +76,7 @@ describe("visual tests > notebook > Run buttons", () => { cy.wait(1000); // Check that we're on the blank question page cy.findByText("Here's where your results will appear"); - cy.percySnapshot( + cy.createPercySnapshot( "visual tests > notebook > Run buttons in Custom Question render correctly", { minHeight: VIEWPORT_HEIGHT, @@ -93,7 +93,7 @@ describe("visual tests > notebook > Run buttons", () => { // Check that we're on the blank question page cy.findByText("Here's where your results will appear").click(); - cy.percySnapshot( + cy.createPercySnapshot( "visual tests > notebook > Run buttons in Native Query render correctly", { minHeight: VIEWPORT_HEIGHT, @@ -121,7 +121,7 @@ describe("visual tests > notebook", () => { it("data picker", () => { startNewQuestion(); cy.findByText("Sample Database"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/onboarding/urls.cy.spec.js b/frontend/test/metabase-visual/onboarding/urls.cy.spec.js index fe60a7ed7ae8b..b5a05b1237f35 100644 --- a/frontend/test/metabase-visual/onboarding/urls.cy.spec.js +++ b/frontend/test/metabase-visual/onboarding/urls.cy.spec.js @@ -23,7 +23,7 @@ describe("visual tests > onboarding > URLs", () => { cy.findByText("Reviews"); cy.findByText("First collection"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("root collection", () => { @@ -38,7 +38,7 @@ describe("visual tests > onboarding > URLs", () => { cy.findByText("Your personal collection"); cy.findByText("Orders"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("browse", () => { @@ -48,7 +48,7 @@ describe("visual tests > onboarding > URLs", () => { cy.wait("@database"); cy.findByText("Sample Database"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("browse/1 (Sample Database)", () => { @@ -59,6 +59,6 @@ describe("visual tests > onboarding > URLs", () => { cy.findByText("Sample Database"); cy.findByText("Reviews"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/static-visualizations/funnel.cy.spec.js b/frontend/test/metabase-visual/static-visualizations/funnel.cy.spec.js index eda585fb550e8..3da2e9dab14b2 100644 --- a/frontend/test/metabase-visual/static-visualizations/funnel.cy.spec.js +++ b/frontend/test/metabase-visual/static-visualizations/funnel.cy.spec.js @@ -28,7 +28,7 @@ describe("static visualizations", () => { sendSubscriptionsEmail(`${admin.first_name} ${admin.last_name}`); openEmailPage(dashboardName).then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); }); diff --git a/frontend/test/metabase-visual/static-visualizations/line-area-bar-combo.cy.spec.js b/frontend/test/metabase-visual/static-visualizations/line-area-bar-combo.cy.spec.js index 4445a653798f9..ba031cb62d5a2 100644 --- a/frontend/test/metabase-visual/static-visualizations/line-area-bar-combo.cy.spec.js +++ b/frontend/test/metabase-visual/static-visualizations/line-area-bar-combo.cy.spec.js @@ -37,7 +37,7 @@ describe("static visualizations", () => { sendSubscriptionsEmail(`${admin.first_name} ${admin.last_name}`); openEmailPage(dashboardName).then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); }); diff --git a/frontend/test/metabase-visual/static-visualizations/progress-bar.cy.spec.js b/frontend/test/metabase-visual/static-visualizations/progress-bar.cy.spec.js index 4bf995e0f6048..e08f7b6117bfd 100644 --- a/frontend/test/metabase-visual/static-visualizations/progress-bar.cy.spec.js +++ b/frontend/test/metabase-visual/static-visualizations/progress-bar.cy.spec.js @@ -33,7 +33,7 @@ describe("static visualizations", () => { sendSubscriptionsEmail(`${admin.first_name} ${admin.last_name}`); openEmailPage(dashboardName).then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); }); diff --git a/frontend/test/metabase-visual/static-visualizations/waterfall.cy.spec.js b/frontend/test/metabase-visual/static-visualizations/waterfall.cy.spec.js index 0aae8846d3860..c46c2b9089477 100644 --- a/frontend/test/metabase-visual/static-visualizations/waterfall.cy.spec.js +++ b/frontend/test/metabase-visual/static-visualizations/waterfall.cy.spec.js @@ -32,7 +32,7 @@ describe("static visualizations", () => { sendSubscriptionsEmail(`${admin.first_name} ${admin.last_name}`); openEmailPage(dashboardName).then(() => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); }); diff --git a/frontend/test/metabase-visual/visualizations/bar.cy.spec.js b/frontend/test/metabase-visual/visualizations/bar.cy.spec.js index 2ea0853474dba..0ff4d820860b1 100644 --- a/frontend/test/metabase-visual/visualizations/bar.cy.spec.js +++ b/frontend/test/metabase-visual/visualizations/bar.cy.spec.js @@ -33,7 +33,7 @@ describe("visual tests > visualizations > bar", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("with an invalid SQL query and a long error message", () => { @@ -57,6 +57,6 @@ describe("visual tests > visualizations > bar", () => { }, }); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/visualizations/funnel.cy.spec.js b/frontend/test/metabase-visual/visualizations/funnel.cy.spec.js index 5486704d2d8c3..566024e787e14 100644 --- a/frontend/test/metabase-visual/visualizations/funnel.cy.spec.js +++ b/frontend/test/metabase-visual/visualizations/funnel.cy.spec.js @@ -28,7 +28,7 @@ describe("visual tests > visualizations > funnel", () => { }); cy.findByTestId("funnel-chart"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("normal", () => { @@ -54,6 +54,6 @@ describe("visual tests > visualizations > funnel", () => { }); cy.findByTestId("funnel-chart"); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/visualizations/line.cy.spec.js b/frontend/test/metabase-visual/visualizations/line.cy.spec.js index b94f69dd8c615..96e46d2f81a41 100644 --- a/frontend/test/metabase-visual/visualizations/line.cy.spec.js +++ b/frontend/test/metabase-visual/visualizations/line.cy.spec.js @@ -43,7 +43,7 @@ describe("visual tests > visualizations > line", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("with vertical legends", () => { @@ -80,7 +80,7 @@ describe("visual tests > visualizations > line", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("with vertical legends", () => { @@ -117,7 +117,7 @@ describe("visual tests > visualizations > line", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("with multiple series and different display types (metabase#11216)", () => { @@ -157,7 +157,7 @@ describe("visual tests > visualizations > line", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("with missing values and duplicate x (metabase#11076)", () => { @@ -198,6 +198,6 @@ describe("visual tests > visualizations > line", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/visualizations/row.cy.spec.js b/frontend/test/metabase-visual/visualizations/row.cy.spec.js index bc4cd9f7a7b8d..ae4c00653ea83 100644 --- a/frontend/test/metabase-visual/visualizations/row.cy.spec.js +++ b/frontend/test/metabase-visual/visualizations/row.cy.spec.js @@ -38,6 +38,6 @@ describe("visual tests > visualizations > row", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/visualizations/scatter.cy.spec.js b/frontend/test/metabase-visual/visualizations/scatter.cy.spec.js index 19f2032b5a300..dca2957e80df0 100644 --- a/frontend/test/metabase-visual/visualizations/scatter.cy.spec.js +++ b/frontend/test/metabase-visual/visualizations/scatter.cy.spec.js @@ -42,7 +42,7 @@ describe("visual tests > visualizations > scatter", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("with log axes", () => { @@ -70,7 +70,7 @@ describe("visual tests > visualizations > scatter", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("with negative values and various bubble sizes", () => { @@ -97,6 +97,6 @@ union all select 5, -20, 70`, }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/visualizations/table.cy.spec.js b/frontend/test/metabase-visual/visualizations/table.cy.spec.js index 0210ae3720123..92ec88510e17f 100644 --- a/frontend/test/metabase-visual/visualizations/table.cy.spec.js +++ b/frontend/test/metabase-visual/visualizations/table.cy.spec.js @@ -12,18 +12,18 @@ describe("visual tests > visualizations > table", () => { }); it("ad-hoc with long column trimmed", () => { - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("ad-hoc with long column expanded", () => { cy.findAllByTestId("expand-column").eq(0).click({ force: true }); - cy.percySnapshot(); + cy.createPercySnapshot(); }); it("saved", () => { saveQuestion(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); }); diff --git a/frontend/test/metabase-visual/visualizations/waterfall.cy.spec.js b/frontend/test/metabase-visual/visualizations/waterfall.cy.spec.js index 4266f074da0ad..738e8c6c86236 100644 --- a/frontend/test/metabase-visual/visualizations/waterfall.cy.spec.js +++ b/frontend/test/metabase-visual/visualizations/waterfall.cy.spec.js @@ -45,6 +45,6 @@ describe("visual tests > visualizations > waterfall", () => { }); ensureDcChartVisibility(); - cy.percySnapshot(); + cy.createPercySnapshot(); }); });