fix(search): offer every filter option, not only those in the results
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m17s
PR Checks / Backend Smoke (pull_request) Successful in 9s
PR Checks / Build Backend (no push) (pull_request) Successful in 19s
PR Checks / Build Frontend (no push) (pull_request) Successful in 1m22s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 11s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 15s
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m17s
PR Checks / Backend Smoke (pull_request) Successful in 9s
PR Checks / Build Backend (no push) (pull_request) Successful in 19s
PR Checks / Build Frontend (no push) (pull_request) Successful in 1m22s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 11s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 15s
School type, gender and admissions took their options from the result set, which the filter had already narrowed: choose "Girls" and only "Girls" was offered, so switching to "Boys" meant clearing first. They now offer the full lists from /api/filters, as phase already did. Local authority stays scoped to the results, so a postcode search offers the councils nearby rather than all 153. Whether gender, sixth form and admissions show was also decided by the results (any secondary school in them). It is now decided by the phase alone: hidden for Primary, Nursery and Middle deemed primary, shown otherwise. Choosing one of those phases clears the three filters, which would otherwise stay applied with no control showing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
eb13ab0b5e
commit
0cc4f52816
4 files changed
+168
-16
No files matched your search
@@ -286,6 +286,23 @@ test('the phase filter switches straight from secondary to primary', async ({ pa
|
||||
await expect(phase).toHaveValue('primary');
|
||||
});
|
||||
|
||||
test('school type and gender switch straight to another value', async ({ page }) => {
|
||||
// Their options came from the result set, which the filter had already
|
||||
// narrowed, so with one value chosen it was the only one on offer.
|
||||
await page.goto('/?search=school&gender=girls');
|
||||
// An applied gender filter opens More filters by itself.
|
||||
const gender = page.getByRole('combobox', { name: 'Gender', exact: true });
|
||||
await expect(gender).toHaveValue('girls', { timeout: 15_000 });
|
||||
await gender.selectOption('boys');
|
||||
await expect(page).toHaveURL(/[?&]gender=boys(&|$)/);
|
||||
|
||||
const type = page.getByRole('combobox', { name: 'School type', exact: true });
|
||||
const [first] = (await type.locator('option').allTextContents()).slice(1);
|
||||
await type.selectOption(first);
|
||||
await expect(page).toHaveURL(/[?&]school_type=/);
|
||||
await expect.poll(() => type.locator('option').count()).toBeGreaterThan(2);
|
||||
});
|
||||
|
||||
test('a phase outside primary/secondary filters to that phase, not to everything', async ({ page }) => {
|
||||
// The search page offers every GIAS phase, but the API only knew the grouped
|
||||
// ones and silently dropped the rest — so "Nursery" returned primaries.
|
||||
|
||||
Reference in new issue
Block a user