From 47eab6798e9b17d218def1fbca34acd311876042 Mon Sep 17 00:00:00 2001 From: mi6-286 <165915357+MI6-286@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:21:19 +0000 Subject: [PATCH] test(canary-react): updating visual regression test thresholds updating visual regression test thresholds --- ...izontal.cy.tsx-clickable-high-contrast.png | Bin 7938 -> 5369 bytes ...al.cy.tsx-clickable-link-high-contrast.png | Bin 6985 -> 4426 bytes ...orizontal.cy.tsx-default-high-contrast.png | Bin ...rizontal.cy.tsx-disabled-high-contrast.png | Bin 9440 -> 6826 bytes .../IcDataTable.cy.tsx-dark-mode-icons.png | Bin .../IcDataTable.cy.tsx-dark-mode-sortable.png | Bin ...IcDataTable.cy.tsx-dark-mode-title-bar.png | Bin .../IcDataTable.cy.tsx-dark-mode-updating.png | Bin ...taTable.cy.tsx-tooltip-truncation-sort.png | Bin 0 -> 53384 bytes .../IcCardHorizontal/IcCardHorizontal.cy.tsx | 123 ++++---- .../IcDataTable/IcDataTable.cy.tsx | 277 +++++++++--------- .../IcDataTableTitleBar.cy.tsx | 12 +- .../IcDateInput/IcDateInput.cy.tsx | 40 +-- .../IcDatePicker/IcDatePicker.cy.tsx | 80 ++--- .../IcPaginationBar/IcPaginationBar.cy.tsx | 16 +- .../IcTreeView/IcTreeView.cy.tsx | 45 ++- 16 files changed, 304 insertions(+), 289 deletions(-) mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcCardHorizontal.cy.tsx-clickable-high-contrast.png mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcCardHorizontal.cy.tsx-clickable-link-high-contrast.png mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcCardHorizontal.cy.tsx-default-high-contrast.png mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcCardHorizontal.cy.tsx-disabled-high-contrast.png mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcDataTable.cy.tsx-dark-mode-icons.png mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcDataTable.cy.tsx-dark-mode-sortable.png mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcDataTable.cy.tsx-dark-mode-title-bar.png mode change 100644 => 100755 packages/canary-react/cypress-image-diff-screenshots/baseline/IcDataTable.cy.tsx-dark-mode-updating.png create mode 100644 packages/canary-react/cypress-image-diff-screenshots/baseline/IcDataTable.cy.tsx-tooltip-truncation-sort.png diff --git a/packages/canary-react/cypress-image-diff-screenshots/baseline/IcCardHorizontal.cy.tsx-clickable-high-contrast.png b/packages/canary-react/cypress-image-diff-screenshots/baseline/IcCardHorizontal.cy.tsx-clickable-high-contrast.png old mode 100644 new mode 100755 index 43eff13f50e5401889262ce9282166aac19879e1..44f938548dbf8040397440eb1a6a6df9901664e6 GIT binary patch literal 5369 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 B3u^!X literal 7938 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 Qjf7IVpZ~G__s7ot7qOviYybcN literal 6985 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 literal 9440 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 _*PdPSkO6 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 { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.014), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), }); }); @@ -136,7 +136,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-icon", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.015), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), }); }); @@ -152,7 +152,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "clickable", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.002), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.004), }); }); @@ -164,7 +164,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "clickable-link", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.005), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.004), }); }); @@ -181,7 +181,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-image-small", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.018), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.017), }); }); @@ -198,7 +198,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-image-default", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.027), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.025), }); }); @@ -215,7 +215,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-image-large", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.03), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.026), }); }); @@ -232,7 +232,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-image-extra-large", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.038), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.031), }); }); @@ -244,7 +244,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "disabled", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.002), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), }); }); @@ -288,7 +288,7 @@ describe("IcCardHorizontal", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-truncated-text", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.039), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.032), }); }); @@ -299,7 +299,7 @@ describe("IcCardHorizontal", () => { cy.compareSnapshot({ name: "theme", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.037), }); }); @@ -310,7 +310,7 @@ describe("IcCardHorizontal", () => { cy.compareSnapshot({ name: "theme-clickable", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.035), }); }); @@ -321,72 +321,75 @@ describe("IcCardHorizontal", () => { cy.compareSnapshot({ name: "theme-disabled", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.018), }); }); +}); - describe("IcCardHorizontal visual regression tests in high contrast mode", () => { - before(() => { - cy.enableForcedColors(); - cy.viewport(1024, 768); - }); +describe("IcCardHorizontal visual regression tests in high contrast mode", () => { + before(() => { + cy.enableForcedColors(); + }); - after(() => { - cy.disableForcedColors(); - }); + before(() => { + cy.viewport(1024, 768); + }); - afterEach(() => { - cy.task("generateReport"); - }); + afterEach(() => { + cy.task("generateReport"); + }); + + after(() => { + cy.disableForcedColors(); + }); - it("should render", () => { - mount(); + it("should render", () => { + mount(); - cy.checkHydrated(CARD_SELECTOR); + cy.checkHydrated(CARD_SELECTOR); - cy.checkA11yWithWait(); - cy.compareSnapshot({ - name: "default-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.008), - }); + cy.checkA11yWithWait(); + cy.compareSnapshot({ + name: "default-high-contrast", + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.009), }); + }); - it("should render clickable", () => { - mount( -

- -
- ); + it("should render clickable", () => { + mount( +
+ +
+ ); - cy.get(CARD_SELECTOR).click("topLeft").should(HAVE_FOCUS); + cy.get(CARD_SELECTOR).click("topLeft").should(HAVE_FOCUS); - cy.checkA11yWithWait(); - cy.compareSnapshot({ - name: "clickable-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.008), - }); + cy.checkA11yWithWait(); + cy.compareSnapshot({ + name: "clickable-high-contrast", + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.02), }); + }); - it("should render clickable as a link", () => { - mount(); + it("should render clickable as a link", () => { + mount(); - cy.get('[href="#"]').should(BE_VISIBLE); + cy.get('[href="#"]').should(BE_VISIBLE); - // cy.checkA11yWithWait(); - cy.compareSnapshot({ - name: "clickable-link-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.005), - }); + // cy.checkA11yWithWait(); + cy.compareSnapshot({ + name: "clickable-link-high-contrast", + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.015), }); + }); - it("should render disabled", () => { - mount(); + it("should render disabled", () => { + mount(); - cy.checkA11yWithWait(); - cy.compareSnapshot({ - name: "disabled-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), - }); + cy.checkA11yWithWait(); + cy.compareSnapshot({ + name: "disabled-high-contrast", + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), }); }); }); diff --git a/packages/canary-react/src/component-tests/IcDataTable/IcDataTable.cy.tsx b/packages/canary-react/src/component-tests/IcDataTable/IcDataTable.cy.tsx index 188a762244..3769dc094a 100644 --- a/packages/canary-react/src/component-tests/IcDataTable/IcDataTable.cy.tsx +++ b/packages/canary-react/src/component-tests/IcDataTable/IcDataTable.cy.tsx @@ -15,7 +15,7 @@ import { IcLink, } from "@ukic/react"; import { IcPaginationBarOptions } from "@ukic/canary-web-components/src/utils/types"; -import { mdiAccountGroup, mdiDelete, mdiImage, mdiPlus } from "@mdi/js"; +import { mdiAccountGroup, mdiImage, mdiPlus } from "@mdi/js"; import { COLS, @@ -72,7 +72,7 @@ import { } from "./IcDataTableTestData"; const DATA_TABLE_SELECTOR = "ic-data-table"; -const DEFAULT_THRESHOLD = 0.04; +const DEFAULT_THRESHOLD = 0.022; const LOADING_INDICATOR_SELECTOR = "ic-loading-indicator"; const SORT_BUTTON_SELECTOR = ".sort-button"; const TOOLTIP_BUTTON_SELECTOR = "ic-tooltip button"; @@ -158,7 +158,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "default", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), cypressScreenshotOptions: { capture: "viewport", }, @@ -172,7 +172,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "section-container", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.093), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.114), cypressSCreenshotOptions: { capture: "viewport", }, @@ -189,7 +189,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "highlighted-row", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), cypressScreenshotOptions: { capture: "viewport", }, @@ -212,7 +212,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "with-row-headers", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.049), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.047), cypressScreenshotOptions: { capture: "viewport", }, @@ -226,7 +226,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "embedded", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.046), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.041), cypressScreenshotOptions: { capture: "viewport", }, @@ -246,7 +246,7 @@ describe("IcDataTables", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "column-header-truncation", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), cypressScreenshotOptions: { capture: "viewport", }, @@ -271,7 +271,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "sortable-first-sort", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.047), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), cypressScreenshotOptions: { capture: "viewport", }, @@ -283,7 +283,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "sortable-second-sort", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), cypressScreenshotOptions: { capture: "viewport", }, @@ -399,7 +399,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "column-overrides", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.049), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.047), cypressScreenshotOptions: { capture: "viewport", }, @@ -420,7 +420,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "row-overrides", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.049), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.048), cypressScreenshotOptions: { capture: "viewport", }, @@ -441,7 +441,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "cell-overrides", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), cypressScreenshotOptions: { capture: "viewport", }, @@ -457,7 +457,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "custom-icons", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.036), cypressScreenshotOptions: { capture: "viewport", }, @@ -481,7 +481,7 @@ describe("IcDataTables", () => { cy.checkHydrated(DATA_TABLE_SELECTOR); cy.compareSnapshot({ name: "slotted-icon", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.036), cypressScreenshotOptions: { capture: "viewport", }, @@ -495,7 +495,7 @@ describe("IcDataTables", () => { cy.checkHydrated(DATA_TABLE_SELECTOR); cy.compareSnapshot({ name: "null-data", - testThreshold: setThresholdBasedOnEnv(0.027), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), }); cy.checkA11yWithWait(); }); @@ -511,7 +511,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "no-data", - testThreshold: setThresholdBasedOnEnv(0.027), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), }); }); @@ -546,7 +546,7 @@ describe("IcDataTables", () => { cy.checkHydrated(DATA_TABLE_SELECTOR); cy.compareSnapshot({ name: "empty-state", - testThreshold: setThresholdBasedOnEnv(0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.003), cypressScreenshotOptions: { capture: "viewport", }, @@ -560,7 +560,7 @@ describe("IcDataTables", () => { cy.checkHydrated(DATA_TABLE_SELECTOR); cy.compareSnapshot({ name: "updating", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.015), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), cypressScreenshotOptions: { capture: "viewport", }, @@ -585,7 +585,7 @@ describe("IcDataTables", () => { cy.checkHydrated(DATA_TABLE_SELECTOR); cy.wait(350).compareSnapshot({ name: "loading-options", - testThreshold: setThresholdBasedOnEnv(0.029), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), cypressScreenshotOptions: { capture: "viewport", }, @@ -620,7 +620,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "loading-indicator-background", - testThreshold: setThresholdBasedOnEnv(0.028), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), cypressScreenshotOptions: { capture: "viewport", }, @@ -642,7 +642,7 @@ describe("IcDataTables", () => { cy.checkHydrated(DATA_TABLE_SELECTOR); cy.compareSnapshot({ name: "updating-options", - testThreshold: setThresholdBasedOnEnv(0.027), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), cypressScreenshotOptions: { capture: "viewport", }, @@ -701,7 +701,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "specified-row-height", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.091), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.11), cypressScreenshotOptions: { capture: "viewport", }, @@ -721,7 +721,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "auto-set-row-height", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), cypressScreenshotOptions: { capture: "viewport", }, @@ -779,7 +779,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "slotted-title-bar", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.049), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), cypressScreenshotOptions: { capture: "viewport", }, @@ -807,7 +807,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "on-all-cells-except-cells-with-custom-icon", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.036), cypressScreenshotOptions: { capture: "viewport", }, @@ -870,7 +870,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "density-dense", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.04), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.041), }); cy.get(DATA_TABLE_SELECTOR).invoke("prop", "density", "spacious"); @@ -879,7 +879,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "density-spacious", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), cypressScreenshotOptions: { capture: "viewport", }, @@ -900,7 +900,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "globalRowHeight-set-to-auto", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), cypressScreenshotOptions: { capture: "viewport", }, @@ -924,7 +924,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "sticky-header", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.089), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.113), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -943,7 +943,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "sticky-header-removed", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.086), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.11), cypressScreenshotOptions: { capture: "viewport", }, @@ -973,7 +973,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "density-default-dropdown", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.05), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), cypressScreenshotOptions: { capture: "viewport", }, @@ -999,7 +999,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "density-dense-dropdown", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.047), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), cypressScreenshotOptions: { capture: "viewport", }, @@ -1044,7 +1044,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "slotted-icon-in-cell", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.032), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.035), cypressScreenshotOptions: { capture: "viewport", }, @@ -1113,7 +1113,7 @@ describe("IcDataTables", () => { cy.compareSnapshot({ name: "action-elements", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.038), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.039), cypressScreenshotOptions: { capture: "viewport", }, @@ -1174,7 +1174,7 @@ describe("IcDataTables", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "empty-data-values", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.018), cypressScreenshotOptions: { capture: "viewport", }, @@ -1309,7 +1309,7 @@ describe("IcDataTables with IcPaginationBar", () => { cy.compareSnapshot({ name: "pagination", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.129), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.151), cypressScreenshotOptions: { capture: "viewport", }, @@ -1379,7 +1379,7 @@ describe("IcDataTables with IcPaginationBar", () => { cy.compareSnapshot({ name: "pagination-uncontrolled", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.129), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.151), cypressScreenshotOptions: { capture: "viewport", }, @@ -1639,7 +1639,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "tooltip-truncation-rowheight", // cspell:disable-line - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), }); }); @@ -1780,7 +1780,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "tooltip-truncation-wide-table", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.029), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.032), }); }); @@ -1838,7 +1838,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "tooltip-truncation-spacious", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.034), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.037), }); }); @@ -2052,7 +2052,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "tooltip-truncation-custom-icon", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.023), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.028), cypressScreenshotOptions: { capture: "viewport", }, @@ -2142,7 +2142,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-hide", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.039), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.038), cypressScreenshotOptions: { capture: "viewport", }, @@ -2164,7 +2164,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-show", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.04), cypressScreenshotOptions: { capture: "viewport", }, @@ -2193,7 +2193,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-focus-hover-state", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.04), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.038), cypressScreenshotOptions: { capture: "viewport", }, @@ -2263,7 +2263,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-row-height", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.045), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), }); }); @@ -2420,7 +2420,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-data-update", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.027), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.028), cypressScreenshotOptions: { capture: "viewport", }, @@ -2460,7 +2460,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-scroll", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.087), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.111), cypressScreenshotOptions: { capture: "viewport", }, @@ -2601,7 +2601,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-spacious", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.039), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), cypressScreenshotOptions: { capture: "viewport", }, @@ -2753,6 +2753,7 @@ describe("IcDataTable with truncation", () => { .should("have.text", "See more"); }); }); + it("should render truncation correctly with custom icon", () => { mount( { cy.compareSnapshot({ name: "show-hide-truncation-custom-icon", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.02), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.024), cypressScreenshotOptions: { capture: "viewport", }, }); }); + it("should render show / hide on multiple lines for small tables", () => { cy.viewport(300, 750); @@ -2791,7 +2793,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-link-multiline", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.086), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.07), cypressScreenshotOptions: { capture: "viewport", }, @@ -2996,7 +2998,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "show-hide-truncation-toggle", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.09), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.05), cypressScreenshotOptions: { capture: "viewport", }, @@ -3253,7 +3255,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "text-wrap-tooltip-truncation-column", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.053), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.049), cypressScreenshotOptions: { capture: "viewport", }, @@ -3275,7 +3277,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "text-wrap-show-hide-truncation-column", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.054), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.05), cypressScreenshotOptions: { capture: "viewport", }, @@ -3296,7 +3298,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "text-wrap-tooltip-truncation-rows", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.055), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.05), cypressScreenshotOptions: { capture: "viewport", }, @@ -3318,7 +3320,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "text-wrap-show-hide-truncation-rows", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.04), cypressScreenshotOptions: { capture: "viewport", }, @@ -3342,7 +3344,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "text-wrap-tooltip-truncation-table-cell", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.039), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.037), cypressScreenshotOptions: { capture: "viewport", }, @@ -3364,7 +3366,7 @@ describe("IcDataTable with truncation", () => { cy.compareSnapshot({ name: "text-wrap-show-hide-truncation-table-cell", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.04), cypressScreenshotOptions: { capture: "viewport", }, @@ -3401,6 +3403,7 @@ describe("IcDataTable table sizing and column width", () => { .should("equal", 200); }); }); + it("should set the column width to the correct % when table width is 100%", () => { mount( { .should("equal", 256); }); }); + it("should set the column width to the correct rem when table width is 100%", () => { mount( { .should("equal", 200); }); }); + it("should set the column width to the correct % when table width is 500px", () => { mount( { .should("equal", 125); }); }); + it("should set the column width to the correct rem when table width is 500px", () => { mount( { .should("equal", 100); }); }); + it("should set 2 column width to the correct % when table width is 100%", () => { mount( { .should("equal", 102.390625); }); }); + it("should set 2 column width to the correct rem when table width is 100%", () => { mount( { .should("equal", 100); }); }); + it("should set 2 column width to the correct % when table width is 500px", () => { mount( { .should("equal", 50); }); }); + it("should set 2 column width to the correct rem when table width is 500px", () => { mount( { .find(".table-cell:nth-child(2) ic-tooltip") .should("exist"); }); + it("should display show-hide truncation on truncation column set with px", () => { mount( { .find(".table-cell:nth-child(2) ic-tooltip") .should("exist"); }); + it("should display show-hide truncation on column when first column width set with px and table width set to 500px", () => { mount( { .find("button") .should("have.text", "See more"); }); + it("should set column width to correct px when data table includes pagination and navigating to different pages", () => { const nextData = (rows: number) => { const newData: { firstName: string; lastName: string; age: number }[] = @@ -4318,7 +4331,7 @@ describe("IcDataTable row deletion", () => { cy.compareSnapshot({ name: "slotted-custom-element-in-cell", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.064), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), cypressScreenshotOptions: { capture: "viewport", }, @@ -4376,7 +4389,7 @@ describe("IcDataTable row deletion", () => { cy.compareSnapshot({ name: "tooltip-in-final-row", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.041), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), cypressScreenshotOptions: { capture: "viewport", }, @@ -4417,7 +4430,7 @@ describe("IcDataTable row deletion", () => { cy.compareSnapshot({ name: "icons-only-in-some-rows", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.038), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.041), cypressScreenshotOptions: { capture: "viewport", }, @@ -4445,7 +4458,7 @@ describe("IcDataTable row selection", () => { cy.compareSnapshot({ name: "selected-row-highlight", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.041), cypressScreenshotOptions: { capture: "viewport", }, @@ -4461,7 +4474,7 @@ describe("IcDataTable row selection", () => { cy.compareSnapshot({ name: "selected-row-highlight-turned-off", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.043), cypressScreenshotOptions: { capture: "viewport", }, @@ -4524,7 +4537,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "default-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.056), cypressScreenshotOptions: { capture: "viewport", }, @@ -4545,7 +4558,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "with-title-bar-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.05), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.065), cypressScreenshotOptions: { capture: "viewport", }, @@ -4562,7 +4575,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "custom-icons-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.024), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.048), cypressScreenshotOptions: { capture: "viewport", }, @@ -4579,7 +4592,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "highlighted-row-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.056), cypressScreenshotOptions: { capture: "viewport", }, @@ -4614,7 +4627,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "loading-indicator-background-high-contrast", - testThreshold: setThresholdBasedOnEnv(0.026), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.006), cypressScreenshotOptions: { capture: "viewport", }, @@ -4632,7 +4645,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "no-data-high-contrast", - testThreshold: setThresholdBasedOnEnv(0.026), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.006), }); }); @@ -4652,7 +4665,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "show-hide-truncation-dense-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.055), cypressScreenshotOptions: { capture: "viewport", }, @@ -4684,7 +4697,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "tooltip-truncation-spacious-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.022), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.046), }); }); @@ -4710,7 +4723,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "show-hide-truncation-focus-hover-state-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.031), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.054), cypressScreenshotOptions: { capture: "viewport", }, @@ -4734,7 +4747,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.checkHydrated(DATA_TABLE_SELECTOR); cy.compareSnapshot({ name: "slotted-icon-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.024), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.047), cypressScreenshotOptions: { capture: "viewport", }, @@ -4747,7 +4760,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.wait(300).compareSnapshot({ name: "sortable-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.056), cypressScreenshotOptions: { capture: "viewport", }, @@ -4768,7 +4781,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "row-overrides-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.062), cypressScreenshotOptions: { capture: "viewport", }, @@ -4818,7 +4831,7 @@ describe("IcDataTable visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "slotted-custom-element-in-cell-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.038), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.054), cypressScreenshotOptions: { capture: "viewport", }, @@ -4844,6 +4857,56 @@ describe("Dark mode", () => { cy.viewport(1024, 768); }); + afterEach(() => { + cy.task("generateReport"); + }); + + it("should render a custom title bar in dark mode", () => { + mount( + + + Primary + + + + + + + + + + +

+ This is some text and{" "} + + this is an inline link + {" "} + within the text. +

+
+
+
+ ); + + // cy.checkA11yWithWait(); + cy.compareSnapshot({ + name: "dark-mode-title-bar", + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.052), + cypressScreenshotOptions: { + capture: "viewport", + }, + }); + }); + it("should render rows, columns and cells in dark mode", () => { mount(); @@ -4852,7 +4915,7 @@ describe("Dark mode", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "dark-mode-default", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.046), cypressScreenshotOptions: { capture: "viewport", }, @@ -4889,7 +4952,7 @@ describe("Dark mode", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "dark-mode-row-headers", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.051), cypressScreenshotOptions: { capture: "viewport", }, @@ -4912,7 +4975,7 @@ describe("Dark mode", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "dark-mode-sortable", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.047), cypressScreenshotOptions: { capture: "viewport", }, @@ -4944,7 +5007,7 @@ describe("Dark mode", () => { // cy.checkA11yWithWait(); cy.compareSnapshot({ name: "dark-mode-pagination", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.048), cypressScreenshotOptions: { capture: "viewport", }, @@ -4966,7 +5029,7 @@ describe("Dark mode", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "dark-mode-emphasis", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.042), cypressScreenshotOptions: { capture: "viewport", }, @@ -4992,7 +5055,7 @@ describe("Dark mode", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "dark-mode-empty-state", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.008), cypressScreenshotOptions: { capture: "viewport", }, @@ -5016,7 +5079,7 @@ describe("Dark mode", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "dark-mode-loading", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.002), cypressScreenshotOptions: { capture: "viewport", }, @@ -5069,52 +5132,4 @@ describe("Dark mode", () => { }, }); }); - - it("should render a custom title bar in dark mode", () => { - mount( -
- - - Primary - - - - - - - - - - -

- This is some text and{" "} - - this is an inline link - {" "} - within the text. -

-
-
-
-
- ); - - // cy.checkA11yWithWait(); - cy.compareSnapshot({ - name: "dark-mode-title-bar", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.044), - cypressScreenshotOptions: { - capture: "viewport", - }, - }); - }); }); diff --git a/packages/canary-react/src/component-tests/IcDataTableTitleBar/IcDataTableTitleBar.cy.tsx b/packages/canary-react/src/component-tests/IcDataTableTitleBar/IcDataTableTitleBar.cy.tsx index 1508ebef35..c013947210 100644 --- a/packages/canary-react/src/component-tests/IcDataTableTitleBar/IcDataTableTitleBar.cy.tsx +++ b/packages/canary-react/src/component-tests/IcDataTableTitleBar/IcDataTableTitleBar.cy.tsx @@ -9,7 +9,7 @@ import { IcLink, IcTypography } from "@ukic/react"; import { HAVE_LENGTH } from "@ukic/react/src/component-tests/utils/constants"; const TITLE_BAR = "ic-data-table-title-bar"; -const DEFAULT_THRESHOLD = 0.04; +const DEFAULT_THRESHOLD = 0.014; describe("IcDataTableTitleBar", () => { beforeEach(() => { @@ -72,7 +72,7 @@ describe("IcDataTableTitleBar", () => { cy.compareSnapshot({ name: "slotted-header-and-description", - testThreshold: setThresholdBasedOnEnv(0), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.002), }); }); @@ -91,7 +91,7 @@ describe("IcDataTableTitleBar", () => { cy.compareSnapshot({ name: "metadata-and-description", - testThreshold: setThresholdBasedOnEnv(0), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.005), }); }); }); @@ -122,7 +122,7 @@ describe("IcDataTableTitleBar visual regression tests in high contrast mode", () cy.compareSnapshot({ name: "default-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.003), }); }); @@ -143,7 +143,7 @@ describe("IcDataTableTitleBar visual regression tests in high contrast mode", () cy.compareSnapshot({ name: "slotted-header-and-description-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.016), }); }); @@ -160,7 +160,7 @@ describe("IcDataTableTitleBar visual regression tests in high contrast mode", () cy.compareSnapshot({ name: "metadata-and-description-high-contrast", - testThreshold: setThresholdBasedOnEnv(0), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.025), }); }); }); diff --git a/packages/canary-react/src/component-tests/IcDateInput/IcDateInput.cy.tsx b/packages/canary-react/src/component-tests/IcDateInput/IcDateInput.cy.tsx index ae5d7dcaf8..8f0a82d748 100644 --- a/packages/canary-react/src/component-tests/IcDateInput/IcDateInput.cy.tsx +++ b/packages/canary-react/src/component-tests/IcDateInput/IcDateInput.cy.tsx @@ -32,7 +32,7 @@ const LONG_CUSTOM_DISABLE_DAY_MESSAGE = "This is a very long message to test the validation message"; const STATUS_TEXT_SPAN = ".statustext"; const DEFAULT_HELPER_TEXT = "Use format DD/MM/YYYY"; -const DEFAULT_THRESHOLD = 0.04; +const DEFAULT_THRESHOLD = 0.031; describe("IcDateInput end-to-end, visual regression and a11y tests", () => { beforeEach(() => { @@ -61,7 +61,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "date-input-render", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.004), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD), cypressScreenshotOptions: { capture: "viewport", }, @@ -80,7 +80,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "date-input-dark-mode", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.006), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.011), cypressScreenshotOptions: { capture: "viewport", }, @@ -335,7 +335,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-values", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.004), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -390,7 +390,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-min-validation", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.025), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.022), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -419,7 +419,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-max-validation", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.025), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.023), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -464,7 +464,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-custom-invalid-date-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.018), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.013), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -497,7 +497,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-custom-disable-days-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.02), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.013), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -525,7 +525,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-long-custom-disable-days-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.037), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.036), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -558,7 +558,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-custom-disable-future-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.016), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.013), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -586,7 +586,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-long-custom-disable-future-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.037), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.036), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -619,7 +619,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-custom-disable-past-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.016), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.014), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -647,7 +647,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-long-custom-disable-past-message", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.037), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.036), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -737,7 +737,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-error-validation", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.008), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.004), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -761,7 +761,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-warning-validation", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.015), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.007), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -785,7 +785,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "date-input-with-success-validation", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.0085), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.005), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -822,7 +822,7 @@ describe("IcDateInput end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "date-input-validation-dark-mode", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.046), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.048), cypressScreenshotOptions: { capture: "viewport", }, @@ -948,7 +948,7 @@ describe("IcDateInput visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "date-input-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.006), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.013), cypressScreenshotOptions: { capture: "viewport", }, @@ -979,7 +979,7 @@ describe("IcDateInput visual regression tests in high contrast mode", () => { cy.wait(500).compareSnapshot({ name: "date-input-with-custom-disable-days-message-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.013), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.022), delay: 500, cypressScreenshotOptions: { capture: "viewport", @@ -994,7 +994,7 @@ describe("IcDateInput visual regression tests in high contrast mode", () => { cy.wait(500).compareSnapshot({ name: "date-input-with-validation-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.102), + testThreshold: setThresholdBasedOnEnv(DEFAULT_THRESHOLD + 0.114), delay: 500, cypressScreenshotOptions: { capture: "viewport", diff --git a/packages/canary-react/src/component-tests/IcDatePicker/IcDatePicker.cy.tsx b/packages/canary-react/src/component-tests/IcDatePicker/IcDatePicker.cy.tsx index 33a885abac..444ae05279 100644 --- a/packages/canary-react/src/component-tests/IcDatePicker/IcDatePicker.cy.tsx +++ b/packages/canary-react/src/component-tests/IcDatePicker/IcDatePicker.cy.tsx @@ -61,7 +61,7 @@ const END_KEY = "{End}"; const PAGE_UP_KEY = "{PageUp}"; const PAGE_DOWN_KEY = "{PageDown}"; -const DEFAULT_TEST_THRESHOLD = 0.038; +const DEFAULT_TEST_THRESHOLD = 0.018; const SCREENSHOT_DELAY = 500; const checkDateInputValue = (date: Date | null) => { @@ -127,7 +127,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "default", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.03), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.037), }); }); @@ -154,7 +154,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "default-dark-mode", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.03), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.037), }); }); @@ -178,7 +178,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "default-max-width", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.031), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.038), }); }); @@ -197,7 +197,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "default-month-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.035), }); }); @@ -225,7 +225,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "default-month-view-dark-mode", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.022), }); }); @@ -250,7 +250,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "default-max-width-month-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.036), }); }); @@ -268,7 +268,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, SCREENSHOT_DELAY); cy.compareSnapshot({ name: "default-year-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.024), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.029), }); }); @@ -296,7 +296,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "default-year-view-dark-mode", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.024), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.022), }); }); @@ -320,7 +320,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.checkA11yWithWait(undefined, SCREENSHOT_DELAY); cy.compareSnapshot({ name: "default-max-width-year-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.024), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.029), }); }); @@ -340,7 +340,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "small", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.031), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.035), }); }); @@ -365,7 +365,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "small-max-width", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.031), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.035), }); }); @@ -387,7 +387,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "small-month-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.035), }); }); @@ -414,7 +414,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "small-max-width-month-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.036), }); }); @@ -436,7 +436,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "small-year-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.024), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.029), }); }); @@ -463,7 +463,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "small-max-width-year-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.025), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.029), }); }); @@ -483,7 +483,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "large", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.032), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.053), }); }); @@ -508,7 +508,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "large-max-width", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.032), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.056), }); }); @@ -579,7 +579,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "large-year-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.026), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.03), }); }); @@ -606,7 +606,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "large-max-width-year-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.026), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.03), }); }); @@ -628,7 +628,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "goto-today-hidden", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.027), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), }); }); @@ -650,7 +650,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "clear-hidden", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.028), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.035), }); }); @@ -1123,7 +1123,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "escape-to-close", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.002), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), }); }); @@ -1139,7 +1139,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "escape-pressed-in-input", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.002), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.009), }); }); @@ -1232,7 +1232,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "click-to-close", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.002), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), }); }); @@ -2327,7 +2327,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "open-at-date", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.029), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.035), }); cy.findShadowEl(DATE_PICKER, FOCUSSED_DAY_BTN_CLASS) @@ -2390,7 +2390,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "disabled", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.002), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), }); // check input becomes enabled when prop changed @@ -2450,7 +2450,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "disable-weekends", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.026), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.033), }); }); @@ -2670,7 +2670,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "days-outside-month-hidden", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.026), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), }); cy.get(DATE_PICKER) @@ -2678,7 +2678,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { .then(() => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "start-of-week", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.026), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.046), }); }); }); @@ -2699,7 +2699,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "min-max", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.028), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), }); }); @@ -2720,7 +2720,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "min-max-month-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.017), }); }); @@ -2741,7 +2741,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.compareSnapshot({ name: "min-max-year-view", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.009), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.016), }); }); @@ -2791,7 +2791,7 @@ describe("IcDatePicker end-to-end, visual regression and a11y tests", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "position-above", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.016), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.027), }); }); @@ -2851,7 +2851,7 @@ describe("IcDatePicker visual regression tests in high contrast mode", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "default-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.051), }); }); @@ -2868,7 +2868,7 @@ describe("IcDatePicker visual regression tests in high contrast mode", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "default-month-view-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.04), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.057), }); }); @@ -2878,7 +2878,7 @@ describe("IcDatePicker visual regression tests in high contrast mode", () => { cy.checkHydrated(DATE_PICKER); cy.compareSnapshot({ name: "disabled-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.002), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.02), }); }); @@ -2900,7 +2900,7 @@ describe("IcDatePicker visual regression tests in high contrast mode", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "disable-weekends-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.033), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.049), }); }); @@ -2919,7 +2919,7 @@ describe("IcDatePicker visual regression tests in high contrast mode", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "min-max-month-view-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.028), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.043), }); }); @@ -2938,7 +2938,7 @@ describe("IcDatePicker visual regression tests in high contrast mode", () => { cy.wait(SCREENSHOT_DELAY).compareSnapshot({ name: "calendar-button-focused-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.007), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.029), }); }); }); diff --git a/packages/canary-react/src/component-tests/IcPaginationBar/IcPaginationBar.cy.tsx b/packages/canary-react/src/component-tests/IcPaginationBar/IcPaginationBar.cy.tsx index 0993eb2b78..5831d1365b 100644 --- a/packages/canary-react/src/component-tests/IcPaginationBar/IcPaginationBar.cy.tsx +++ b/packages/canary-react/src/component-tests/IcPaginationBar/IcPaginationBar.cy.tsx @@ -27,7 +27,7 @@ const ARIA_CURRENT = "aria-current"; const ITEM_PAGINATION_LABEL_SELECTOR = ".item-pagination-label"; const TEXT_FIELD = "ic-text-field"; -const DEFAULT_TEST_THRESHOLD = 0.027; +const DEFAULT_TEST_THRESHOLD = 0.022; describe("IcPaginationBar end-to-end tests", () => { beforeEach(() => { @@ -596,7 +596,7 @@ describe("IcPaginationBar visual regression and a11y tests", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "right-alignment", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.001), }); }); @@ -634,7 +634,7 @@ describe("IcPaginationBar visual regression and a11y tests", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "go-to-page", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.02), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.004), }); }); @@ -651,7 +651,7 @@ describe("IcPaginationBar visual regression and a11y tests", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "go-to-page-valid", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.004), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.005), }); }); @@ -676,7 +676,7 @@ describe("IcPaginationBar visual regression and a11y tests", () => { cy.compareSnapshot({ name: "go-to-page-invalid-tooltip", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), }); }); @@ -690,7 +690,7 @@ describe("IcPaginationBar visual regression and a11y tests", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "hide-all-option", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.003), }); }); }); @@ -719,7 +719,7 @@ describe("IcPaginationBar visual regression tests in high contrast mode", () => cy.compareSnapshot({ name: "go-to-page-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.003), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.006), }); }); @@ -744,7 +744,7 @@ describe("IcPaginationBar visual regression tests in high contrast mode", () => cy.compareSnapshot({ name: "go-to-page-invalid-tooltip-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.009), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.015), }); }); }); diff --git a/packages/canary-react/src/component-tests/IcTreeView/IcTreeView.cy.tsx b/packages/canary-react/src/component-tests/IcTreeView/IcTreeView.cy.tsx index 3eb480fe2c..68dde265c2 100644 --- a/packages/canary-react/src/component-tests/IcTreeView/IcTreeView.cy.tsx +++ b/packages/canary-react/src/component-tests/IcTreeView/IcTreeView.cy.tsx @@ -16,7 +16,7 @@ const TREE_VIEW = "ic-tree-view"; const TREE_ITEM = "ic-tree-item"; const TREE_ITEM_CONTENT = ".tree-item-content"; -const DEFAULT_TEST_THRESHOLD = 0.026; +const DEFAULT_TEST_THRESHOLD = 0.025; export const BasicTreeView = ( props?: any, @@ -67,7 +67,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "default", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.007), }); }); @@ -109,7 +109,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "small", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.007), }); }); @@ -121,7 +121,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "large", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.007), }); }); @@ -133,7 +133,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "theme-dark", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.015), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.008), }); }); @@ -144,10 +144,10 @@ describe("IcTreeView", () => { cy.findShadowEl(TREE_ITEM, TREE_ITEM_CONTENT).eq(1).focus(); - cy.checkA11yWithWait(); + cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "focus-inset", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.09), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.007), }); }); @@ -159,7 +159,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "disabled-tree-item", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.006), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.003), }); }); @@ -171,7 +171,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "selected-tree-item", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.006), }); }); @@ -183,7 +183,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "link-tree-item", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.007), }); }); @@ -192,10 +192,10 @@ describe("IcTreeView", () => { cy.findShadowEl(TREE_ITEM, TREE_ITEM_CONTENT).eq(1).click(); - cy.checkA11yWithWait(); + cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "expanded-tree-item", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.016), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.012), }); }); @@ -222,10 +222,10 @@ describe("IcTreeView", () => { cy.findShadowEl(TREE_ITEM, TREE_ITEM_CONTENT).eq(2).click(); - cy.checkA11yWithWait(); + cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "text-wrapping", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.034), }); }); @@ -271,10 +271,10 @@ describe("IcTreeView", () => { .eq(2) .should(HAVE_CSS, TEXT_OVERFLOW, ELLIPSIS); - cy.checkA11yWithWait(); + cy.checkA11yWithWait(undefined, 500); cy.compareSnapshot({ name: "truncated-text", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.032), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.023), }); cy.findShadowEl(TREE_ITEM, TREE_ITEM_CONTENT).eq(0).realHover("mouse"); @@ -282,7 +282,7 @@ describe("IcTreeView", () => { cy.checkA11yWithWait(); cy.compareSnapshot({ name: "truncated-text-hover", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.036), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.037), }); }); @@ -446,7 +446,7 @@ describe("IcTreeView visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "default-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.015), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.011), }); }); @@ -457,7 +457,7 @@ describe("IcTreeView visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "disabled-tree-item-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.015), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.009), }); }); @@ -468,7 +468,7 @@ describe("IcTreeView visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "expanded-tree-item-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.022), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.017), }); }); @@ -479,7 +479,7 @@ describe("IcTreeView visual regression tests in high contrast mode", () => { cy.compareSnapshot({ name: "selected-tree-item-high-contrast", - testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.018), + testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.01), }); }); @@ -506,9 +506,6 @@ describe("IcTreeView visual regression tests in high contrast mode", () => { ); - /* removed for now - unsure why this fails at present - * if only HC tests are run then this test passes */ - // cy.checkA11yWithWait(); cy.compareSnapshot({ name: "with-icons-high-contrast", testThreshold: setThresholdBasedOnEnv(DEFAULT_TEST_THRESHOLD + 0.014),