Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
f810dfc
Scheduler - mock date in demo for screenshots testing (#35054)
dmlvr Sep 4, 2026
49d66d6
Tooltip: ESC key does not close both the Tooltip and its parent overl…
pharret31 Sep 4, 2026
90beeb9
chore(security): bump fast-uri, qs and fflate overrides to patched ve…
bit-byte0 Sep 4, 2026
674e0aa
CI: fail a hung TestCafe test after 3 minutes instead of waiting for …
EugeniyKiyashko Sep 5, 2026
ea9296e
Grids - DataController: Extract row type knowledge to extenders (#35031)
Alyar666 Sep 6, 2026
064edf9
CardView - flaky tests in 26.1 (#35051)
bit-byte0 Sep 7, 2026
c4768c3
Grids - DataController: Extract editing state knowledge to extenders …
Alyar666 Sep 7, 2026
0712ad3
TreeList - DataSourceAdapter - Extract tree building utils (#35053)
Tucchhaa Sep 7, 2026
9ad4252
chore(security): override fast-uri and qs in sbom package (GHSA-5jgf-…
bit-byte0 Sep 7, 2026
d860df8
Grids: create dataSourceController (#35040)
anna-shakhova Sep 7, 2026
35f2b92
CI: Always run full test matrix in visual-test-demos workflow (#35020)
alexslavr Sep 7, 2026
d2dd8ad
Overlay: SpeedDialAction has no right offset when a vertical scrollba…
EugeniyKiyashko Sep 7, 2026
dc890c7
Styles: lint theme variables for branch duplicates, missing !default …
EugeniyKiyashko Sep 7, 2026
5a13cc5
fix (demos): Workaround the broken pivotgrid demo (#35044)
ajivanyandev Sep 7, 2026
63b1929
Core(Data): remove m_ prefix from files
pharret31 Sep 4, 2026
b88332b
Core(Data): fix typing and eslint issues
pharret31 Sep 4, 2026
8c9dd6e
chore(deps): bump axe to v4.13.0 (#34935)
EugeniyKiyashko Sep 7, 2026
2035e3c
Grids: retarget `dataController._dataSource` readers (#35076)
anna-shakhova Sep 8, 2026
4083ca6
Lookup - Screen readers do not pick up NoDataText when Lookup is empt…
dmlvr Sep 8, 2026
d89ef0a
fix (demos): Revert the ResolveTimeConflicts date hardcode and mask t…
aleksei-semikozov Sep 8, 2026
d96abb4
Grids - DataController: Extract user state knowledge to extenders (#3…
Alyar666 Sep 8, 2026
a65d008
Legacy themes: remove the dead pull-down raster and the duplicated co…
EugeniyKiyashko Sep 8, 2026
9e6dd03
refactor(ci): store flaky candidates in an artifact (#35083)
IlyaKhD Sep 8, 2026
b37a475
chore: fix demos render signal origin (#35078)
vorobey Sep 8, 2026
2dc7b76
Grids: retarget `dataController.dataSource()` method (#35093)
anna-shakhova Sep 8, 2026
742b7d4
T1334644: Themebuilder swatch fix (#35075)
vorobey Sep 8, 2026
fde2943
Grids - FilterController: Move the filter build into FilterController…
Alyar666 Sep 9, 2026
5b08774
feat(ci): build flaky test report for the repository monitor (#35100)
IlyaKhD Sep 9, 2026
378a677
Core(Events): fix dxclick nodes disposing unsubscribe (#35014)
dmlvr Sep 9, 2026
a702623
Grids - FilterController: Cover the current filter behavior with test…
Alyar666 Sep 9, 2026
8cedccf
Grids: retarget store, getDataSource, getCachedStoreData, loadingOper…
anna-shakhova Sep 9, 2026
8cae709
Grids - FilterController: Move `isFilterSyncActive` into FilterContro…
Alyar666 Sep 9, 2026
56d91f1
chore(deps): fix deps alerts (#35110)
dmlvr Sep 9, 2026
da52969
Nx: remove the dead lint-css and test-styles targets of the devextrem…
EugeniyKiyashko Sep 9, 2026
17aba21
Grids: retarget `key` and `keyOf` methods (#35115)
anna-shakhova Sep 9, 2026
38da153
Grids - DataController: Extract summary loadAll knowledge to extender…
bit-byte0 Sep 9, 2026
0e7bae2
Rename files: remove m_ prefix
Raushen Aug 14, 2026
f5efe48
NumberBox: refactor and improve typing
Raushen Sep 8, 2026
475c227
fix(env): restore minimumReleaseAge (#35133)
IlyaKhD Sep 9, 2026
e4054af
Tabs: label icon-only tabs after their icon, as Button does (#5077) (…
EugeniyKiyashko Sep 9, 2026
452d172
Grids - DataController: Extract scrolling knowledge to extenders (#35…
bit-byte0 Sep 10, 2026
ed2e328
CI: Extend on-demand runners usage (#35141)
alexslavr Sep 10, 2026
bdc81f4
HtmlEditor - AI Text Editing demo: fix typo in Angular import path (#…
artem-kurchenko Sep 10, 2026
92883d8
Grids - DataController: Extract getRowIndicesForExpand into master de…
bit-byte0 Sep 10, 2026
2045c33
chore: partial revert for demo-render-signal origins (#35124)
vorobey Sep 10, 2026
8c46836
Merge branch 'main' of github.com:DevExpress/DevExtreme into feature/…
vorobey Sep 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/qunit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ jobs:

qunit-tests:
needs: build
runs-on: devextreme-shr2
runs-on: ${{ github.event_name == 'merge_group' && 'devextreme-shr2-ondemand' || 'devextreme-shr2' }}
name: Constel ${{ matrix.CONSTEL }}${{ matrix.TIMEZONE != '' && format('-{0}', matrix.TIMEZONE) || '' }}${{ matrix.CSP == 'false' && '-no-csp' || '' }}
timeout-minutes: 25
strategy:
Expand Down
89 changes: 89 additions & 0 deletions .github/workflows/repository-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,95 @@ on:
branches:
- main

permissions: {}

jobs:
collect-flaky-reports:
name: Collect flaky reports
runs-on: ubuntu-slim
permissions:
contents: read # checkout
actions: read # list workflow runs and download their artifacts
# Flaky collection must never break the repository check it feeds.
continue-on-error: true
outputs:
details: ${{ steps.collect.outputs.details }}

steps:
- name: Get sources
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0

- name: Use Node.js
uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version-file: '.node-version'

- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
with:
run_install: false

- name: Install dependencies
run: pnpm install --frozen-lockfile --filter flaky-test-reporter...

- name: Collect flaky test candidates
id: collect
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WINDOW_HOURS: 72
run: |
# tee opens the log before the tool runs, so the directory must already exist.
mkdir -p "$GITHUB_WORKSPACE/artifacts"
report="$GITHUB_WORKSPACE/artifacts/flaky-tests-report.json"
markdown="$GITHUB_WORKSPACE/artifacts/flaky-tests-report.md"
log="$GITHUB_WORKSPACE/artifacts/collect.log"

# --silent keeps pnpm's own banner out of the summary; 2>&1 keeps the tool's warnings in.
# tee stores the plain text for the summary, then sed turns the tool's warnings into
# GitHub annotations so they surface on the run page.
pnpm --silent --filter flaky-test-reporter run collect -- \
--repo "${{ github.repository }}" \
--workflow testcafe_tests.yml \
--artifact flaky-candidates \
--branch "${{ github.ref_name }}" \
--window-hours "$WINDOW_HOURS" \
--out-json "$report" \
--out-markdown "$markdown" 2>&1 \
| tee "$log" \
| sed -e 's/^warning: /::warning::/' -e 's/^Collection failed: /::error::/'

{
echo "## Flaky test candidates"
echo ""
echo '```'
cat "$log"
echo '```'
} >> "$GITHUB_STEP_SUMMARY"

# Multiline output form, so the markdown crosses the job boundary as-is. The delimiter
# must not occur in the content, which markdown headings and tables never produce.
{
echo 'details<<FLAKY_DETAILS_EOF'
cat "$markdown"
echo 'FLAKY_DETAILS_EOF'
} >> "$GITHUB_OUTPUT"

- name: Upload flaky test report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: flaky-tests-report
path: |
${{ github.workspace }}/artifacts/flaky-tests-report.json
${{ github.workspace }}/artifacts/collect.log
retention-days: 7
if-no-files-found: ignore

invoke:
name: Invoke
needs: [collect-flaky-reports]
permissions:
contents: read # the reusable workflow checks this repository out
if: ${{ !cancelled() }}
uses: DevExpress/github-actions/.github/workflows/repository-check.yml@repository-check
with:
config: |
Expand All @@ -20,3 +106,6 @@ jobs:
'GHSA-848j-6mx2-7j84', // elliptic
]
}
# Markdown appended to this repo's monitor issue body. Empty when the collect job
# produced nothing, which makes the shared workflow skip publishing it.
extraDetails: ${{ needs.collect-flaky-reports.outputs.details }}
27 changes: 27 additions & 0 deletions .github/workflows/testcafe_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -470,8 +470,15 @@ jobs:
quarantined_failed=0
result=./artifacts/quarantine-run-result.json
new_flakes_summary=./artifacts/new-flakes-summary.txt
new_flakes=./artifacts/flaky-candidates.jsonl
report_json=./artifacts/flaky-candidates.json
# base_ref is empty for push and merge_group, which carry the target elsewhere.
base_branch="${{ github.base_ref || github.event.merge_group.base_ref || github.ref_name }}"
base_branch="${base_branch#refs/heads/}"
mkdir -p ./artifacts
: > "$new_flakes_summary"
: > "$new_flakes"
rm -f "$report_json"

# Every test gets up to 3 attempts (initial run + 2 retries) and passes
# if at least one attempt succeeds. A reported failure means all attempts failed.
Expand Down Expand Up @@ -549,12 +556,23 @@ jobs:
while IFS= read -r name; do
if jq -e --arg n "$name" '.tests | index($n)' "$result" > /dev/null; then
echo "FAILED | $name | $job_name" >> "$new_flakes_summary"
verdict=failed
else
echo "passed | $name | $job_name" >> "$new_flakes_summary"
verdict=passed
fi
jq -cn --arg test "$name" --arg sourceJob "$job_name" --arg theme "$theme" \
--arg componentFolder "$componentFolder" --arg timezone "$timezone" \
--arg platform "$platform" --arg verdict "$verdict" --arg baseBranch "$base_branch" \
'{ test: $test, sourceJob: $sourceJob, theme: $theme, componentFolder: $componentFolder, timezone: $timezone, platform: $platform, verdict: $verdict, baseBranch: $baseBranch }' \
>> "$new_flakes"
done < <(jq -r '.tests[]' "$report")
done

if [ -s "$new_flakes" ]; then
jq -s '{ schemaVersion: 1, candidates: . }' "$new_flakes" > "$report_json"
fi

sudo ln -sf /usr/share/zoneinfo/GMT /etc/localtime

echo ""
Expand Down Expand Up @@ -631,6 +649,15 @@ jobs:
path: ${{ github.workspace }}/e2e/testcafe-devextreme/artifacts/failedtests/**/*
if-no-files-found: ignore

- name: Upload flaky candidates report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: flaky-candidates
path: ${{ github.workspace }}/e2e/testcafe-devextreme/artifacts/flaky-candidates.json
retention-days: 7
if-no-files-found: ignore

merge-artifacts:
runs-on: ubuntu-latest
needs: [testcafe, testcafe-quarantine]
Expand Down
Loading
Loading