Skip to content

Commit b0b6b05

Browse files
authored
test: add e2e tests for conditional format (#1324)
Closes #1316
1 parent 6a60422 commit b0b6b05

52 files changed

Lines changed: 128 additions & 3 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/iris-grid/src/sidebar/conditional-formatting/ConditionEditor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ function ConditionEditor(props: ConditionEditorProps): JSX.Element {
431431
<div className="condition-editor mb-2">
432432
<select
433433
value={selectedCondition}
434-
id="condition-select"
434+
data-testid="condition-select"
435435
className="custom-select mb-2"
436436
onChange={handleConditionChange}
437437
>
-758 Bytes

tests/table.spec.ts

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,75 @@ async function waitForLoadingDone(page: Page) {
3131
).toHaveCount(0);
3232
}
3333

34+
async function changeCondFormatComparison(
35+
page: Page,
36+
condition: string,
37+
column: string = ''
38+
) {
39+
const formattingRule = page.locator('.formatting-item');
40+
const conditionSelect = page.locator('data-testid=condition-select');
41+
const highlightCell = page.getByRole('button', { name: 'Conditional' });
42+
const doneButton = page.getByRole('button', { name: 'Done' });
43+
const columnSelect = page
44+
.locator('.conditional-rule-editor')
45+
.getByRole('button')
46+
.first();
47+
48+
await expect(formattingRule).toHaveCount(1);
49+
await expect(conditionSelect).toHaveCount(0);
50+
await expect(highlightCell).toHaveCount(0);
51+
52+
await formattingRule.click();
53+
54+
await expect(formattingRule).toHaveCount(0);
55+
await expect(conditionSelect).toHaveCount(1);
56+
await expect(highlightCell).toHaveCount(1);
57+
await expect(columnSelect).toHaveCount(1);
58+
59+
await highlightCell.click();
60+
if (column !== '') {
61+
await columnSelect.click();
62+
await page.getByRole('button', { name: column, exact: true }).click();
63+
64+
await page.locator('.style-editor').click();
65+
await page
66+
.locator('.style-options')
67+
.getByRole('button', { name: 'Positive' })
68+
.click();
69+
}
70+
await conditionSelect.selectOption(condition);
71+
await doneButton.click();
72+
73+
await expect(formattingRule).toHaveCount(1);
74+
await expect(conditionSelect).toHaveCount(0);
75+
await expect(highlightCell).toHaveCount(0);
76+
await expect(columnSelect).toHaveCount(0);
77+
await waitForLoadingDone(page);
78+
}
79+
80+
async function changeCondFormatHighlight(page: Page) {
81+
const formattingRule = page.locator('.formatting-item');
82+
const highlightRow = page.getByRole('button', { name: 'Rows' });
83+
const doneButton = page.getByRole('button', { name: 'Done' });
84+
85+
await expect(formattingRule).toHaveCount(1);
86+
await expect(highlightRow).toHaveCount(0);
87+
await expect(doneButton).toHaveCount(0);
88+
89+
await formattingRule.click();
90+
91+
await expect(highlightRow).toHaveCount(1);
92+
await expect(doneButton).toHaveCount(1);
93+
94+
await highlightRow.click();
95+
await doneButton.click();
96+
97+
await expect(formattingRule).toHaveCount(1);
98+
await expect(highlightRow).toHaveCount(0);
99+
await expect(doneButton).toHaveCount(0);
100+
await waitForLoadingDone(page);
101+
}
102+
34103
test('can open a simple table', async ({ page }) => {
35104
await page.goto('');
36105
await openSimpleTable(page);
@@ -172,6 +241,62 @@ test.describe('tests complex table operations', () => {
172241
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
173242
});
174243

244+
test('can conditional format', async () => {
245+
await page.locator('data-testid=menu-item-Conditional Formatting').click();
246+
247+
await test.step(' Setup new formatting rule', async () => {
248+
await page.getByRole('button', { name: 'Add New Rule' }).click();
249+
await page.locator('.style-editor').click();
250+
await page.getByRole('button', { name: 'Positive' }).click();
251+
await page.getByRole('button', { name: 'Done' }).click();
252+
});
253+
254+
await test.step('Is null', async () => {
255+
await changeCondFormatComparison(page, 'is-null');
256+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
257+
258+
await changeCondFormatHighlight(page);
259+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
260+
});
261+
262+
await test.step('Is not null', async () => {
263+
await changeCondFormatComparison(page, 'is-not-null');
264+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
265+
266+
await changeCondFormatHighlight(page);
267+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
268+
});
269+
270+
await test.step('Change column', async () => {
271+
await changeCondFormatComparison(page, 'is-not-null', 'Int');
272+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
273+
274+
await changeCondFormatHighlight(page);
275+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
276+
});
277+
278+
await test.step('Cancel', async () => {
279+
const formattingRule = page.locator('.formatting-item');
280+
const conditionSelect = page.locator('data-testid=condition-select');
281+
282+
await expect(conditionSelect).toHaveCount(0);
283+
284+
await formattingRule.click();
285+
await conditionSelect.selectOption('is-null');
286+
await page.getByRole('button', { name: 'Cancel' }).first().click();
287+
288+
await waitForLoadingDone(page);
289+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
290+
});
291+
292+
await test.step('Delete', async () => {
293+
await page.getByRole('button', { name: 'Delete rule' }).click();
294+
295+
await waitForLoadingDone(page);
296+
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
297+
});
298+
});
299+
175300
test('can organize columns', async () => {
176301
await page.locator('data-testid=menu-item-Organize Columns').click();
177302

@@ -247,7 +372,7 @@ test.describe('tests complex table operations', () => {
247372
);
248373
await dragColumnButton.hover();
249374
await page.mouse.down();
250-
await page.mouse.move(x, y, { steps: 500 });
375+
await page.mouse.move(x, y, { steps: 50 });
251376
await page.mouse.up();
252377

253378
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
@@ -274,7 +399,7 @@ test.describe('tests complex table operations', () => {
274399
);
275400
await dragColumnButton.hover();
276401
await page.mouse.down();
277-
await page.mouse.move(x, y, { steps: 500 });
402+
await page.mouse.move(x, y, { steps: 50 });
278403
await page.mouse.up();
279404

280405
await expect(page.locator('.iris-grid-column')).toHaveScreenshot();
84.8 KB
51.9 KB
90.1 KB
86.6 KB
206 KB
49 KB
84.2 KB

0 commit comments

Comments
 (0)