diff --git a/.github/workflows/visual-tests-demos.yml b/.github/workflows/visual-tests-demos.yml index 0aae399569f2..f8ca57e344d0 100644 --- a/.github/workflows/visual-tests-demos.yml +++ b/.github/workflows/visual-tests-demos.yml @@ -491,7 +491,7 @@ jobs: check-generated-demos-changed: name: Check generated demos (changed only) runs-on: devextreme-shr2 - timeout-minutes: 10 + timeout-minutes: 20 needs: [check-should-run, get-changes, build-devextreme, determine-framework-tests-scope] if: | always() && @@ -604,7 +604,7 @@ jobs: check-generated-demos-all: name: Check generated demos runs-on: devextreme-shr2 - timeout-minutes: 15 + timeout-minutes: 20 needs: [check-should-run, build-devextreme, determine-framework-tests-scope] if: | always() && @@ -790,7 +790,6 @@ jobs: BROWSERS: ${{ steps.chrome-flags.outputs.flags }} #DEBUG: hammerhead:*,testcafe:* CONCURRENCY: 4 - TCQUARANTINE: true CONSTEL: ${{ matrix.CONSTEL }} THEME: ${{ matrix.THEME }} # DISABLE_DEMO_TEST_SETTINGS: all # Uncomment to ignore all the visualtestrc.json settings @@ -958,7 +957,6 @@ jobs: BROWSERS: chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl=swiftshader --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning # DEBUG: hammerhead:*,testcafe:* CONCURRENCY: ${{ steps.set-concurrency.outputs.concurrency }} - TCQUARANTINE: true CONSTEL: ${{ matrix.CONSTEL }} THEME: ${{ matrix.THEME }} # DISABLE_DEMO_TEST_SETTINGS: all # Uncomment to ignore all the visualtestrc.json settings @@ -1085,7 +1083,6 @@ jobs: BROWSERS: chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl=swiftshader --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning # DEBUG: hammerhead:*,testcafe:* CONCURRENCY: 1 - TCQUARANTINE: true CONSTEL: ${{ matrix.CONSTEL }} THEME: ${{ matrix.THEME }} # DISABLE_DEMO_TEST_SETTINGS: all # Uncomment to ignore all the visualtestrc.json settings diff --git a/.github/workflows/wrapper_tests.yml b/.github/workflows/wrapper_tests.yml index 70a0e865cba2..2738d6641514 100644 --- a/.github/workflows/wrapper_tests.yml +++ b/.github/workflows/wrapper_tests.yml @@ -192,7 +192,7 @@ jobs: ${{ runner.os }}-nx-v2-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}-${{ github.sha }}- ${{ runner.os }}-nx-v2-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}- ${{ runner.os }}-nx-v2-${{ github.workflow }}-${{ github.job }}- - ${{ runner.os }}-nx-v2- + ${{ runner.os }}-nx-v2-${{ github.workflow }}-build- lookup-only: true @@ -227,7 +227,7 @@ jobs: ${{ runner.os }}-nx-v2-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}-${{ github.sha }}- ${{ runner.os }}-nx-v2-${{ github.workflow }}-${{ github.job }}-${{ matrix.framework }}- ${{ runner.os }}-nx-v2-${{ github.workflow }}-${{ github.job }}- - ${{ runner.os }}-nx-v2- + ${{ runner.os }}-nx-v2-${{ github.workflow }}-build- - name: Download Browser if: matrix.framework == 'angular' diff --git a/apps/demos/project.json b/apps/demos/project.json index 283575cf189a..368f6810ae41 100644 --- a/apps/demos/project.json +++ b/apps/demos/project.json @@ -34,7 +34,6 @@ { "env": "CHANGEDFILEINFOSPATH" }, { "env": "BROWSERS" }, { "env": "DEBUG" }, - { "env": "TCQUARANTINE" }, { "env": "CONSTEL" }, { "env": "THEME" }, { "env": "DISABLE_DEMO_TEST_SETTINGS" }, diff --git a/apps/demos/utils/visual-tests/testcafe-runner.ts b/apps/demos/utils/visual-tests/testcafe-runner.ts index 871fe7237300..8481d6b760cd 100644 --- a/apps/demos/utils/visual-tests/testcafe-runner.ts +++ b/apps/demos/utils/visual-tests/testcafe-runner.ts @@ -86,20 +86,12 @@ async function main() { reporters.push(accessibilityTestCafeReporter); } - const getQuarantineMode = () => { - if (process.env.TCQUARANTINE) { - return { successThreshold: 1, attemptLimit: 3 }; - } - - return false; - }; - const failedCount = await retry(() => runner .reporter(reporters) .browsers(process.env.BROWSERS || 'chrome --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl=swiftshader --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning') .concurrency(concurrency || 1) .run({ - quarantineMode: getQuarantineMode(), + quarantineMode: { successThreshold: 1, attemptLimit: 2 }, // @ts-expect-error ts-error hooks: { test: { diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index 30512f87018e..9db32f845c24 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -14,7 +14,7 @@ import { getCurrentTheme } from './helpers/themeUtils'; const LAUNCH_RETRY_ATTEMPTS = 3; const LAUNCH_RETRY_TIMEOUT = 10000; -const FAILED_TESTS_RETRY_ATTEMPTS = 2; +const FAILED_TESTS_RETRY_ATTEMPTS = 0; const wait = async ( timeout: number, @@ -313,10 +313,7 @@ async function main() { // Retry failed tests multiple times if enabled and there are failures if (args.retryFailed && failedTests.size > 0 && failedCount > 0) { const initialFailedCount = failedTests.size; - const noRetryFolders = ['cardView', 'dataGrid', 'common']; - let attemptsLeft = noRetryFolders.some((folder) => componentFolderArg === folder || componentFolderArg.startsWith(`${folder}/`)) - ? 0 - : FAILED_TESTS_RETRY_ATTEMPTS; + let attemptsLeft = FAILED_TESTS_RETRY_ATTEMPTS; while (attemptsLeft > 0 && failedCount > 0) { const attemptNumber = FAILED_TESTS_RETRY_ATTEMPTS - attemptsLeft + 1; diff --git a/e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/etalons/treelist_row_hover_with_fixed_columns (material.blue.light).png b/e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/etalons/treelist_row_hover_with_fixed_columns (material.blue.light).png deleted file mode 100644 index b20515c682cd..000000000000 Binary files a/e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/etalons/treelist_row_hover_with_fixed_columns (material.blue.light).png and /dev/null differ diff --git a/e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/stickyColumns.ts b/e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/stickyColumns.ts index 7e06ef53a097..5fa089a08554 100644 --- a/e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/stickyColumns.ts +++ b/e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/stickyColumns.ts @@ -62,7 +62,7 @@ test.meta({ }); }); -test.meta({ themes: [Themes.materialBlue, Themes.genericLight] })('Row hover should display correctly when there are fixed columns', async (t) => { +test.meta({ themes: [Themes.genericLight] })('Row hover should display correctly when there are fixed columns', async (t) => { const { takeScreenshot, compareResults } = createScreenshotsComparer(t); const treeList = new TreeList(TREE_LIST_SELECTOR); const dataRow = treeList.getDataRow(1); diff --git a/e2e/testcafe-devextreme/tests/dataGrid/common/keyboardNavigation/keyboardNavigation.functional.ts b/e2e/testcafe-devextreme/tests/dataGrid/common/keyboardNavigation/keyboardNavigation.functional.ts index 099752eb961e..c804e123edd0 100644 --- a/e2e/testcafe-devextreme/tests/dataGrid/common/keyboardNavigation/keyboardNavigation.functional.ts +++ b/e2e/testcafe-devextreme/tests/dataGrid/common/keyboardNavigation/keyboardNavigation.functional.ts @@ -6817,7 +6817,7 @@ test('Focus should be set to the grid to allow keyboard navigation when the focu }); [true, false].forEach((focusedRowEnabled) => { - test(`Focus should return to the last active cell when re-entering the rowsview via kbn if focusedRowEnabled=${focusedRowEnabled} (T1308919)`, async (t) => { + test.meta({ unstable: focusedRowEnabled })(`Focus should return to the last active cell when re-entering the rowsview via kbn if focusedRowEnabled=${focusedRowEnabled} (T1308919)`, async (t) => { // arrange const button = new Button('#otherContainer'); const dataGrid = new DataGrid('#container'); diff --git a/e2e/testcafe-devextreme/tests/dataGrid/common/selection.ts b/e2e/testcafe-devextreme/tests/dataGrid/common/selection.ts index 2c2ce3d0dba7..d0148d32532c 100644 --- a/e2e/testcafe-devextreme/tests/dataGrid/common/selection.ts +++ b/e2e/testcafe-devextreme/tests/dataGrid/common/selection.ts @@ -9,7 +9,7 @@ import { testScreenshot } from '../../../helpers/themeUtils'; fixture.disablePageReloads`Selection` .page(url(__dirname, '../../container.html')); -test('selectAll state should be correct after unselect item if refresh(true) is called inside onSelectionChanged (T1048081)', async (t) => { +test.meta({ unstable: true })('selectAll state should be correct after unselect item if refresh(true) is called inside onSelectionChanged (T1048081)', async (t) => { const dataGrid = new DataGrid('#container'); const firstRowSelectionCheckBox = new CheckBox(dataGrid.getDataCell(0, 0).getEditor().element); diff --git a/e2e/testcafe-devextreme/tests/editors/dateRangeBox/focus.ts b/e2e/testcafe-devextreme/tests/editors/dateRangeBox/focus.ts index 24232c27e6af..3be1ec47bd8e 100644 --- a/e2e/testcafe-devextreme/tests/editors/dateRangeBox/focus.ts +++ b/e2e/testcafe-devextreme/tests/editors/dateRangeBox/focus.ts @@ -181,7 +181,7 @@ test('onFocusIn should be called only after first click on drop down button', as })(); }); -test('onFocusIn should be called only on focus of startDate input', async (t) => { +test.meta({ unstable: true })('onFocusIn should be called only on focus of startDate input', async (t) => { const dateRangeBox = new DateRangeBox('#container'); await t diff --git a/e2e/testcafe-devextreme/tests/editors/dateRangeBox/keyboard.ts b/e2e/testcafe-devextreme/tests/editors/dateRangeBox/keyboard.ts index c1afda6dc707..972c4e280576 100644 --- a/e2e/testcafe-devextreme/tests/editors/dateRangeBox/keyboard.ts +++ b/e2e/testcafe-devextreme/tests/editors/dateRangeBox/keyboard.ts @@ -4,7 +4,7 @@ import url from '../../../helpers/getPageUrl'; import { createWidget } from '../../../helpers/createWidget'; import { appendElementTo } from '../../../helpers/domUtils'; -fixture.disablePageReloads`DateRangeBox keyboard navigation` +fixture`DateRangeBox keyboard navigation` .page(url(__dirname, '../../container.html')); const initialValue = [new Date('2021/10/17'), new Date('2021/11/24')]; @@ -424,7 +424,7 @@ test('DateRangeBox should be closed by press esc key when views wrapper in popup applyValueMode: 'useButtons', })); -test('DateRangeBox should not be closed by press tab key on startDate input', async (t) => { +test.meta({ unstable: true })('DateRangeBox should not be closed by press tab key on startDate input', async (t) => { const dateRangeBox = new DateRangeBox('#container'); await t diff --git a/e2e/testcafe-devextreme/tests/scheduler/common/dragAndDrop/appointmentCollector.ts b/e2e/testcafe-devextreme/tests/scheduler/common/dragAndDrop/appointmentCollector.ts index fc8b20430c3a..b222d0cd539a 100644 --- a/e2e/testcafe-devextreme/tests/scheduler/common/dragAndDrop/appointmentCollector.ts +++ b/e2e/testcafe-devextreme/tests/scheduler/common/dragAndDrop/appointmentCollector.ts @@ -43,7 +43,7 @@ test('Drag-n-drop between a scheduler table cell and the appointment tooltip', a width: 1000, })); -test('Drag-n-drop to the cell on the left should work in week view (T1005115)', async (t) => { +test.meta({ unstable: true })('Drag-n-drop to the cell on the left should work in week view (T1005115)', async (t) => { const scheduler = new Scheduler('#container'); const collector = scheduler.collectors.find('1'); const { appointmentTooltip } = scheduler;