Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
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/actions/run-qunit-tests/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ runs:
- name: Setup Chrome
uses: ./.github/actions/setup-chrome-headless-shell
with:
chrome-version: '133.0.6943.53'
chrome-version: '141.0.7390.122'

- name: Use Node.js
uses: actions/setup-node@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/playgrounds_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:
- name: Setup Chrome
uses: ./.github/actions/setup-chrome
with:
chrome-version: '133.0.6943.53'
chrome-version: '141.0.7390.122'

- name: Use Node.js
uses: actions/setup-node@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/run-testcafe-on-gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
- name: Setup Chrome
uses: ./devextreme/.github/actions/setup-chrome
with:
chrome-version: '133.0.6943.53'
chrome-version: '141.0.7390.122'

- uses: pnpm/action-setup@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/testcafe_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ jobs:
- name: Setup Chrome
uses: ./.github/actions/setup-chrome
with:
chrome-version: '133.0.6943.53'
chrome-version: '141.0.7390.122'

- name: Use Node.js
uses: actions/setup-node@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/wrapper_tests_e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ jobs:
- name: Setup Chrome
uses: ./.github/actions/setup-chrome
with:
chrome-version: '133.0.6943.53'
chrome-version: '141.0.7390.122'

- name: Use Node.js
uses: actions/setup-node@v4
Expand Down
2 changes: 1 addition & 1 deletion e2e/testcafe-devextreme/runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ createTestCafe(TESTCAFE_CONFIG)
}

const runOptions: RunOptions = {
quarantineMode: { successThreshold: 1, attemptLimit: 5 },
quarantineMode: { successThreshold: 1, attemptLimit: 2 },
disableNativeAutomation: true,
// @ts-expect-error ts-error
hooks: {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import CardView from 'devextreme-testcafe-models/cardView';
import url from '../../../helpers/getPageUrl';
import { createWidget } from '../../../helpers/createWidget';

fixture.disablePageReloads`CardView - ColumnChooser.Functional`
fixture`CardView - ColumnChooser.Functional`
.page(url(__dirname, '../../container.html'));

function testsFactory(testModel: {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const apiRequestMock = RequestMock()
{ 'access-control-allow-origin': '*' },
);

test('Should sort without DataSource reload if scrolling mode isn\'t virtual', async (t) => {
test.meta({ unstable: true })('Should sort without DataSource reload if scrolling mode isn\'t virtual', async (t) => {
const pivotGrid = new PivotGrid('#container');
await t.addRequestHooks(requestLogger);
const initialRequestCount = await requestLogger.count(() => true);
Expand Down Expand Up @@ -89,7 +89,7 @@ test('Should sort without DataSource reload if scrolling mode isn\'t virtual', a
await t.removeRequestHooks(apiRequestMock);
});

test.meta({ unstable: true })('Should sort with DataSource reload if scrolling mode is virtual', async (t) => {
test('Should sort with DataSource reload if scrolling mode is virtual', async (t) => {
const pivotGrid = new PivotGrid('#container');
await t.addRequestHooks(requestLogger);
const initialRequestCount = await requestLogger.count(() => true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ test('Should change usual columns to band columns without error in React (T12136
const { takeScreenshot, compareResults } = createScreenshotsComparer(t);
const dataGrid = new DataGrid(GRID_CONTAINER);

await t.expect(dataGrid.isReady()).ok();

await takeScreenshot('band-columns_before-runtime-update.png', dataGrid.element);

await changeDataGridColumnsReactWay();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ fixture.disablePageReloads`Column resizing`
test('column separator should starts from the parent', async (t) => {
const { takeScreenshot, compareResults } = createScreenshotsComparer(t);
const dataGrid = new DataGrid('#container');

await t.expect(dataGrid.isReady()).ok();

async function makeColumnSeparatorScreenshot(index: number) {
await dataGrid.resizeHeader(index, 0, false);
await t.expect(await takeScreenshot(`column-separator-${index}.png`)).ok();
Expand Down
251 changes: 127 additions & 124 deletions e2e/testcafe-devextreme/tests/dataGrid/common/editing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2114,130 +2114,6 @@ test('The "Cannot read property "brokenRules" of undefined" error occurs T978286
}));
});

test('Cells should be focused correctly on click when cell editing mode is used with enabled showEditorAlways (T1037019)', async (t) => {
const dataGrid = new DataGrid('#container');

// act
await t
.click(dataGrid.getDataCell(0, 0).getEditor().element);

// assert
await t
.expect(dataGrid.getDataCell(0, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(0, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(0, 0).getEditor().element, '1')
.click(dataGrid.getDataCell(1, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(0, 0))
.eql('Name 11')
.expect(dataGrid.getDataCell(1, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(1, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(1, 0).getEditor().element, '2')
.click(dataGrid.getDataCell(2, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(1, 0))
.eql('Name 22')
.expect(dataGrid.getDataCell(2, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(2, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(2, 0).getEditor().element, '3')
.click(dataGrid.getDataCell(1, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(2, 0))
.eql('Name 33')
.expect(dataGrid.getDataCell(1, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(1, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(1, 0).getEditor().element, '2')
.click(dataGrid.getDataCell(0, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(1, 0))
.eql('Name 222')
.expect(dataGrid.getDataCell(0, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(0, 0).getEditor().element.focused)
.ok();
}).before(async () => {
const initStore = ClientFunction(() => {
(window as any).myStore = new (window as any).DevExpress.data.ArrayStore({
key: 'ID',
data: [
{ ID: 1, Name: 'Name 1' },
{ ID: 2, Name: 'Name 2' },
{ ID: 3, Name: 'Name 3' },
],
});
});

await initStore();

return createWidget('dxDataGrid', {
dataSource: {
key: 'ID',
load(loadOptions) {
return new Promise((resolve) => {
setTimeout(() => {
(window as any).myStore.load(loadOptions).done((data) => {
resolve(data);
});
}, 100);
});
},
update(key, values) {
return new Promise((resolve) => {
setTimeout(() => {
(window as any).myStore.update(key, values).done(() => {
resolve(key);
});
}, 100);
});
},
totalCount(loadOptions) {
return (window as any).myStore.totalCount(loadOptions);
},
} as any, // todo check
keyExpr: 'ID',
editing: {
mode: 'cell',
allowUpdating: true,
},
columns: [{
dataField: 'Name',
showEditorAlways: true,
}],
});
}).after(async () => {
await ClientFunction(() => {
delete (window as any).myStore;
})();
});

// T1130497
([
['first', 0, 'standard', 0],
Expand Down Expand Up @@ -2932,3 +2808,130 @@ test('The onEditorPreparing event should be called once after clicking on a cell
delete (window as any).onEditorPreparingCallArgs;
})();
});

fixture`Editing - ShowEditorAlways`
.page(url(__dirname, '../../container.html'));

test('Cells should be focused correctly on click when cell editing mode is used with enabled showEditorAlways (T1037019)', async (t) => {
const dataGrid = new DataGrid('#container');

// act
await t
.click(dataGrid.getDataCell(0, 0).getEditor().element);

// assert
await t
.expect(dataGrid.getDataCell(0, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(0, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(0, 0).getEditor().element, '1')
.click(dataGrid.getDataCell(1, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(0, 0))
.eql('Name 11')
.expect(dataGrid.getDataCell(1, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(1, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(1, 0).getEditor().element, '2')
.click(dataGrid.getDataCell(2, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(1, 0))
.eql('Name 22')
.expect(dataGrid.getDataCell(2, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(2, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(2, 0).getEditor().element, '3')
.click(dataGrid.getDataCell(1, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(2, 0))
.eql('Name 33')
.expect(dataGrid.getDataCell(1, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(1, 0).getEditor().element.focused)
.ok();

// act
await t
.typeText(dataGrid.getDataCell(1, 0).getEditor().element, '2')
.click(dataGrid.getDataCell(0, 0).getEditor().element);

// assert
await t
.expect(dataGrid.apiGetCellValue(1, 0))
.eql('Name 222')
.expect(dataGrid.getDataCell(0, 0).isFocused)
.ok()
.expect(dataGrid.getDataCell(0, 0).getEditor().element.focused)
.ok();
}).before(async () => {
const initStore = ClientFunction(() => {
(window as any).myStore = new (window as any).DevExpress.data.ArrayStore({
key: 'ID',
data: [
{ ID: 1, Name: 'Name 1' },
{ ID: 2, Name: 'Name 2' },
{ ID: 3, Name: 'Name 3' },
],
});
});

await initStore();

return createWidget('dxDataGrid', {
dataSource: {
key: 'ID',
load(loadOptions) {
return new Promise((resolve) => {
setTimeout(() => {
(window as any).myStore.load(loadOptions).done((data) => {
resolve(data);
});
}, 100);
});
},
update(key, values) {
return new Promise((resolve) => {
setTimeout(() => {
(window as any).myStore.update(key, values).done(() => {
resolve(key);
});
}, 100);
});
},
totalCount(loadOptions) {
return (window as any).myStore.totalCount(loadOptions);
},
} as any, // todo check
keyExpr: 'ID',
editing: {
mode: 'cell',
allowUpdating: true,
},
columns: [{
dataField: 'Name',
showEditorAlways: true,
}],
});
}).after(async () => {
await ClientFunction(() => {
delete (window as any).myStore;
})();
});
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ test('DataGrid - The `between` filter dropdown sticks to the viewport edge durin
.click(filterEditor.menuButton)
.click(filterEditor.menu.getItemByText('Between'));

await dataGrid.scrollBy({ x: 999 });
await dataGrid.scrollBy(t, { x: 999 });
await t
.expect(await takeScreenshot('filter-row-filter-range-hide-on-scroll.png', dataGrid.element))
.ok()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ safeSizeTest('Fixed to the right columns should appear when any column has undef
const dataGrid = new DataGrid('#container');
const { takeScreenshot, compareResults } = createScreenshotsComparer(t);

await t.expect(dataGrid.isReady()).ok();

// act
await takeScreenshot('T1177143-right-fixed-column-with-no-width-columns-1.png', dataGrid.element);

Expand Down
Loading