Skip to content

e2e tests: collect unstable tests statistics#34227

Draft
EugeniyKiyashko wants to merge 29 commits into
DevExpress:26_1from
EugeniyKiyashko:26_1_run_unstable_with_statistics_
Draft

e2e tests: collect unstable tests statistics#34227
EugeniyKiyashko wants to merge 29 commits into
DevExpress:26_1from
EugeniyKiyashko:26_1_run_unstable_with_statistics_

Conversation

@EugeniyKiyashko

Copy link
Copy Markdown
Contributor

No description provided.

@EugeniyKiyashko EugeniyKiyashko self-assigned this Jul 7, 2026
Copilot AI review requested due to automatic review settings July 7, 2026 18:00
@EugeniyKiyashko EugeniyKiyashko requested review from a team as code owners July 7, 2026 18:00
@EugeniyKiyashko EugeniyKiyashko changed the title 26 1 run unstable with statistics e2e tests: collect unstable tests statistics Jul 7, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds infrastructure to identify, forward, and rerun “unstable” (flaky) TestCafe e2e tests in CI, collecting JSON reports to drive a dedicated “unstable” rerun job and reduce noise in regular test matrix jobs.

Changes:

  • Mark specific e2e tests as unstable via test.meta({ unstable: true }) (and add an “only unstable” execution mode).
  • Extend the TestCafe e2e runner to support: filtering by a report file, configurable retry attempts, and writing JSON reports for failures/unstable-forwarding.
  • Update GitHub workflows to upload unstable reports from regular jobs and add a dedicated testcafe-unstable job that reruns forwarded failures + all meta-unstable tests.

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
e2e/testcafe-devextreme/tests/scheduler/common/dragAndDrop/appointmentCollector.ts Marks a scheduler drag-n-drop test as unstable.
e2e/testcafe-devextreme/tests/editors/dateRangeBox/keyboard.ts Removes disablePageReloads for the fixture; marks one test as unstable.
e2e/testcafe-devextreme/tests/editors/dateRangeBox/focus.ts Marks one focus-related test as unstable.
e2e/testcafe-devextreme/tests/dataGrid/common/selection.ts Marks a selection regression test as unstable.
e2e/testcafe-devextreme/tests/dataGrid/common/keyboardNavigation/keyboardNavigation.functional.ts Marks one parameterized test variant as unstable via meta.
e2e/testcafe-devextreme/tests/common/treeList/stickyColumns/stickyColumns.ts Narrows theme coverage for a screenshot test (genericLight only).
e2e/testcafe-devextreme/runner.ts Adds report writing, filtering by tests file, onlyUnstable, and configurable retry attempts; forwards single failures as unstable.
apps/demos/utils/visual-tests/testcafe-runner.ts Hard-disables TestCafe quarantine mode (env-driven toggle removed).
apps/demos/project.json Removes TCQUARANTINE from the demos test env passthrough list.
.github/workflows/wrapper_tests.yml Adjusts nx cache restore keys to prefer workflow build caches.
.github/workflows/visual-tests-demos.yml Increases timeouts; removes TCQUARANTINE env usage in demos visual tests jobs.
.github/workflows/testcafe_tests.yml Adds unstable-report upload, adds testcafe-unstable job to rerun forwarded + meta-unstable tests, and updates downstream job dependencies.

Comment on lines +157 to +161
const onlyUnstable = `${args.onlyUnstable}` === 'true';
const retryAttempts = Number(args.retryAttempts) || 0;
const testsFromFile = new Set<string>(
args.testsFile ? JSON.parse(fs.readFileSync(args.testsFile, 'utf8')).tests : [],
);
Comment on lines 91 to 95
.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: false,
// @ts-expect-error ts-error
@EugeniyKiyashko EugeniyKiyashko marked this pull request as draft July 7, 2026 21:04
@EugeniyKiyashko EugeniyKiyashko force-pushed the 26_1_run_unstable_with_statistics_ branch from f8e26ec to 359677d Compare July 8, 2026 06:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants