Skip to content

Commit 8816a2c

Browse files
committed
e2e: add form filter legend panel tests (#1551)
1 parent 0ea815c commit 8816a2c

2 files changed

Lines changed: 64 additions & 0 deletions

File tree

CHANGELOG-3.10.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ with some extra keywords: backend, tests, test, translation, funders, important
5050
### Tests
5151

5252
* e2e snap edition: Enhance Snap panel functionalities
53+
* e2e: form filter - test deactivate-all button and per-layer unfilter icon in legend panel (#1551)
5354

5455
### Backend
5556

tests/end2end/playwright/form-filter.spec.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ import { test, expect } from '@playwright/test';
33
import { ProjectPage } from './pages/project';
44
import { getEchoRequestParams } from './globals';
55

6+
/**
7+
* Layer name as used in the treeview data-testid attribute
8+
* @type {string}
9+
*/
10+
const LAYER_NAME = 'form filter (à)';
11+
612
test.describe('Form filter', () => {
713
test.beforeEach(async ({ page }) => {
814
const project = new ProjectPage(page, 'form_filter');
@@ -100,3 +106,60 @@ test.describe('Form filter', () => {
100106
await expect(page.locator('#ui-id-2 .ui-menu-item div')).toHaveText('monuments');
101107
});
102108
});
109+
110+
test.describe('Form filter - Legend panel interactions', () => {
111+
test.beforeEach(async ({ page }) => {
112+
const project = new ProjectPage(page, 'form_filter');
113+
await project.open();
114+
// Open the form filter panel
115+
await page.locator('#button-filter').click();
116+
});
117+
118+
test('Deactivate all filters button in legend panel clears the active filter', async ({ page }) => {
119+
// Apply a filter via the form filter panel
120+
const getMapPromise = page.waitForRequest(/GetMap/);
121+
await page.locator('#liz-filter-field-test_filter').selectOption('_uvres_d_art_et_monuments_de_l_espace_urbain');
122+
await getMapPromise;
123+
124+
// Switch to the layer panel (switcher) — opening the filter panel hid it
125+
await page.locator('#button-switcher').click();
126+
127+
// The "deactivate all filters" button in the layer legend panel must be visible
128+
await expect(page.locator('#layerActionUnfilter')).toBeVisible();
129+
130+
// The layer node in the treeview must have the 'filtered' class
131+
await expect(page.getByTestId(LAYER_NAME).locator('.node')).toContainClass('filtered');
132+
133+
// Click the deactivate-all button in the legend panel
134+
const getMapAfterUnfilter = page.waitForRequest(/GetMap/);
135+
await page.locator('#layerActionUnfilter').click();
136+
await getMapAfterUnfilter;
137+
138+
// The button must be hidden and the 'filtered' class must be removed
139+
await expect(page.locator('#layerActionUnfilter')).not.toBeVisible();
140+
await expect(page.getByTestId(LAYER_NAME).locator('.node')).not.toContainClass('filtered');
141+
});
142+
143+
test('Per-layer filter icon in legend removes the filter for that layer', async ({ page }) => {
144+
// Apply a filter via the form filter panel
145+
const getMapPromise = page.waitForRequest(/GetMap/);
146+
await page.locator('#liz-filter-field-test_filter').selectOption('_uvres_d_art_et_monuments_de_l_espace_urbain');
147+
await getMapPromise;
148+
149+
// Switch to the layer panel (switcher) — opening the filter panel hid it
150+
await page.locator('#button-switcher').click();
151+
152+
// The per-layer icon-filter button must be visible inside the treeview node
153+
await expect(page.getByTestId(LAYER_NAME).locator('.icon-filter')).toBeVisible();
154+
155+
// Click the per-layer icon-filter to remove the filter for that layer only
156+
const getMapAfterUnfilter = page.waitForRequest(/GetMap/);
157+
await page.getByTestId(LAYER_NAME).locator('.icon-filter').click();
158+
await getMapAfterUnfilter;
159+
160+
// Filter must be gone: 'filtered' class removed, icon hidden, global button hidden
161+
await expect(page.getByTestId(LAYER_NAME).locator('.node')).not.toContainClass('filtered');
162+
await expect(page.getByTestId(LAYER_NAME).locator('.icon-filter')).not.toBeVisible();
163+
await expect(page.locator('#layerActionUnfilter')).not.toBeVisible();
164+
});
165+
});

0 commit comments

Comments
 (0)