feat(search): phases in the order a child meets them
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m13s
PR Checks / Backend Smoke (pull_request) Successful in 10s
PR Checks / Build Backend (no push) (pull_request) Successful in 17s
PR Checks / Build Frontend (no push) (pull_request) Successful in 1m18s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 11s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 16s
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m13s
PR Checks / Backend Smoke (pull_request) Successful in 10s
PR Checks / Build Backend (no push) (pull_request) Successful in 17s
PR Checks / Build Frontend (no push) (pull_request) Successful in 1m18s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 11s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 16s
The phase filter listed GIAS phases alphabetically, so "16 plus" and "All-through" came before Nursery. /api/filters (and the result-scoped list) now order them Nursery, Primary, Middle deemed primary, Middle deemed secondary, Secondary, 16 plus, then All-through, which spans the whole path. A phase GIAS adds later follows the known ones, A-Z. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9b765125ad
commit
a88139a539
4 files changed
+58
-4
No files matched your search
@@ -286,6 +286,19 @@ test('the phase filter switches straight from secondary to primary', async ({ pa
|
||||
await expect(phase).toHaveValue('primary');
|
||||
});
|
||||
|
||||
test('the phase filter lists phases in the order a child meets them', async ({ page }) => {
|
||||
// They were alphabetical, so "16 plus" and "All-through" came before Nursery.
|
||||
const childPath = ['Nursery', 'Primary', 'Middle deemed primary',
|
||||
'Middle deemed secondary', 'Secondary', '16 plus', 'All-through'];
|
||||
await page.goto('/?search=school');
|
||||
const phase = page.getByRole('combobox', { name: 'Phase' });
|
||||
await expect(phase).toBeVisible({ timeout: 15_000 });
|
||||
const offered = (await phase.locator('option').allTextContents())
|
||||
.filter((o) => childPath.includes(o));
|
||||
expect(offered, 'no phase on offer').toContain('Primary');
|
||||
expect(offered).toEqual(childPath.filter((p) => offered.includes(p)));
|
||||
});
|
||||
|
||||
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.
|
||||
|
||||
Reference in new issue
Block a user