# Instructions

- Following Playwright test failed.
- Explain why, be concise, respect Playwright best practices.
- Provide a snippet of code with the fix, if possible.

# Test info

- Name: tests/ui/district-delegates.spec.ts >> DC delegate district has a current00 canonical and historical98 redirect
- Location: tests/ui/district-delegates.spec.ts:11:7

# Error details

```
Error: DC:98 must redirect rather than retire or retain an old owner

expect(received).toBe(expected) // Object.is equality

Expected: 301
Received: 410
```

# Page snapshot

```yaml
- generic [active] [ref=f1e1]:
  - banner [ref=f1e2]:
    - heading "District of Columbia At-Large Congressional District" [level=1] [ref=f1e3]
    - paragraph [ref=f1e4]: Congressional District Profile
  - generic [ref=f1e5]:
    - generic [ref=f1e6]:
      - generic [ref=f1e7]: Not signed in
      - generic [ref=f1e9]:
        - link "Log in" [ref=f1e10] [cursor=pointer]:
          - /url: /outpost.goauthentik.io/start?rd=http%3A%2F%2Fpreview-us-elect-info.electinfo.svc.cluster.local%2Fdistricts%2Fdc-00%2F
        - link "Create an account" [ref=f1e11] [cursor=pointer]:
          - /url: /signin/register?rd=http%3A%2F%2Fpreview-us-elect-info.electinfo.svc.cluster.local%2Fdistricts%2Fdc-00%2F
    - toolbar "Member tools" [ref=f1e12]:
      - button "All cycles (Sign in to use the cycle facet)" [disabled] [ref=f1e13] [cursor=pointer]:
        - generic [ref=f1e17]: All cycles
      - button "Graph (Sign in to use Graph)" [disabled] [ref=f1e20] [cursor=pointer]:
        - generic [ref=f1e29]: Graph
  - generic [ref=f1e32]:
    - heading "Overview" [level=2] [ref=f1e33]
    - generic [ref=f1e34]:
      - term [ref=f1e35]: District ID
      - definition [ref=f1e36]: DC-00
      - term [ref=f1e37]: State
      - definition [ref=f1e38]:
        - link "District of Columbia" [ref=f1e39] [cursor=pointer]:
          - /url: https://preview.elect.info/states/district-of-columbia/
      - term [ref=f1e40]: District Number
      - definition [ref=f1e41]: "00"
      - term [ref=f1e42]: Total Candidates
      - definition [ref=f1e43]: "107"
      - term [ref=f1e44]: Election Cycles
      - definition [ref=f1e45]:
        - generic [ref=f1e46]:
          - link "2026" [ref=f1e47] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2026/
          - text: ","
          - link "2024" [ref=f1e48] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2024/
          - text: ","
          - link "2022" [ref=f1e49] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2022/
          - text: ","
          - link "2020" [ref=f1e50] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2020/
          - text: ","
          - link "2018" [ref=f1e51] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2018/
          - text: ","
          - link "2016" [ref=f1e52] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2016/
          - text: ","
          - link "2014" [ref=f1e53] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2014/
          - text: ","
          - link "2012" [ref=f1e54] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2012/
          - text: ","
          - link "2010" [ref=f1e55] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2010/
          - text: ","
          - link "2008" [ref=f1e56] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2008/
          - text: ","
          - link "2006" [ref=f1e57] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2006/
          - text: ","
          - link "2004" [ref=f1e58] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2004/
          - text: ","
          - link "2002" [ref=f1e59] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2002/
          - text: ","
          - link "2000" [ref=f1e60] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/2000/
          - text: ","
          - link "1998" [ref=f1e61] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1998/
          - text: ","
          - link "1996" [ref=f1e62] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1996/
          - text: ","
          - link "1994" [ref=f1e63] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1994/
          - text: ","
          - link "1992" [ref=f1e64] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1992/
          - text: ","
          - link "1990" [ref=f1e65] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1990/
          - text: ","
          - link "1988" [ref=f1e66] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1988/
          - text: ","
          - link "1986" [ref=f1e67] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1986/
          - text: ","
          - link "1984" [ref=f1e68] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1984/
          - text: ","
          - link "1982" [ref=f1e69] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1982/
          - text: ","
          - link "1980" [ref=f1e70] [cursor=pointer]:
            - /url: https://preview.elect.info/elections/1980/
    - paragraph [ref=f1e71]:
      - link "View office details for U.S. Representative - District of Columbia District 00" [ref=f1e72] [cursor=pointer]:
        - /url: https://preview.elect.info/offices/house/dc-00/
  - generic [ref=f1e73]:
    - heading "Candidates" [level=2] [ref=f1e74]
    - generic [ref=f1e76]:
      - generic [ref=f1e77]:
        - generic [ref=f1e78]:
          - combobox "Search entities" [ref=f1e79]
          - status [ref=f1e80]
        - button "Search" [ref=f1e81] [cursor=pointer]
      - generic [ref=f1e82]:
        - heading "Candidates" [level=3] [ref=f1e84]
        - generic [ref=f1e85]:
          - link "NORTON, ELEANOR HOLMES DEM | $2,919,038" [ref=f1e86] [cursor=pointer]:
            - /url: /politicians/cfff9758-6df6-8c74-c31f-e6240c40e64d/
            - generic [ref=f1e87]: NORTON, ELEANOR HOLMES
            - generic [ref=f1e88]: DEM | $2,919,038
          - link "FAUNTROY, WALTER EDWARD DEM | $142,386" [ref=f1e89] [cursor=pointer]:
            - /url: /politicians/18e4b3f1-685d-8849-13f7-472c13f6eafb/
            - generic [ref=f1e90]: FAUNTROY, WALTER EDWARD
            - generic [ref=f1e91]: DEM | $142,386
          - link "WHITE, ROBERT C. JR. DEM | $137,000" [ref=f1e92] [cursor=pointer]:
            - /url: /politicians/d2727c6b-1827-d2b6-49db-14b9b7eb4c89/
            - generic [ref=f1e93]: WHITE, ROBERT C. JR.
            - generic [ref=f1e94]: DEM | $137,000
          - link "KANE, BETTY ANN DEM | $31,525" [ref=f1e95] [cursor=pointer]:
            - /url: /politicians/58ded260-13f0-3f24-5cc7-88efebd23446/
            - generic [ref=f1e96]: KANE, BETTY ANN
            - generic [ref=f1e97]: DEM | $31,525
          - link "SINGLETON, HARRY MICHAEL REP | $16,400" [ref=f1e98] [cursor=pointer]:
            - /url: /politicians/1484dff7-a112-7f88-99a6-a83d8677fee2/
            - generic [ref=f1e99]: SINGLETON, HARRY MICHAEL
            - generic [ref=f1e100]: REP | $16,400
          - link "PINTO, BROOKE DEM | $10,000" [ref=f1e101] [cursor=pointer]:
            - /url: /politicians/bfc9ade4-e104-5518-1d80-a8119ecd9ae3/
            - generic [ref=f1e102]: PINTO, BROOKE
            - generic [ref=f1e103]: DEM | $10,000
          - link "ZALESNE, KINNEY DEM | $7,000" [ref=f1e104] [cursor=pointer]:
            - /url: /politicians/28bcf1ba-14c1-0d35-84be-605c90fa01c3/
            - generic [ref=f1e105]: ZALESNE, KINNEY
            - generic [ref=f1e106]: DEM | $7,000
          - link "EMERSON, SUSAN REP | $5,350" [ref=f1e107] [cursor=pointer]:
            - /url: /politicians/84eb99a9-ff49-3d31-f4ea-b900bfb5843d/
            - generic [ref=f1e108]: EMERSON, SUSAN
            - generic [ref=f1e109]: REP | $5,350
          - link "YELDELL, JOSEPH PHILLIP DEM | $2,750" [ref=f1e110] [cursor=pointer]:
            - /url: /politicians/f379bfc5-a042-d07c-7a10-34384be912da/
            - generic [ref=f1e111]: YELDELL, JOSEPH PHILLIP
            - generic [ref=f1e112]: DEM | $2,750
          - link "TEMPLE, DONALD MELVIN DEM | $2,250" [ref=f1e113] [cursor=pointer]:
            - /url: /politicians/1e3aca14-532a-34a7-5b8e-1029c8b0c6b1/
            - generic [ref=f1e114]: TEMPLE, DONALD MELVIN
            - generic [ref=f1e115]: DEM | $2,250
          - link "TUCKER, STERLING DEM | $1,300" [ref=f1e116] [cursor=pointer]:
            - /url: /politicians/20c711b2-f433-2475-cb40-e6dba0cde93b/
            - generic [ref=f1e117]: TUCKER, STERLING
            - generic [ref=f1e118]: DEM | $1,300
          - link "JACZKO, GREGORY DR. DEM | $1,000" [ref=f1e119] [cursor=pointer]:
            - /url: /politicians/76a79241-cd9a-9dc3-e9f5-735e6d3885ed/
            - generic [ref=f1e120]: JACZKO, GREGORY DR.
            - generic [ref=f1e121]: DEM | $1,000
          - link "HAMILTON, WENDY REV DEM | $1,000" [ref=f1e122] [cursor=pointer]:
            - /url: /politicians/58b2ec3f-ee3a-4927-7cd8-b1e040f6a155/
            - generic [ref=f1e123]: HAMILTON, WENDY REV
            - generic [ref=f1e124]: DEM | $1,000
          - link "HOLBROOK, TRENT WILLIAM DEM | $1,000" [ref=f1e125] [cursor=pointer]:
            - /url: /politicians/a44b3b4c-d8a0-cc59-679a-ccf9aa16a355/
            - generic [ref=f1e126]: HOLBROOK, TRENT WILLIAM
            - generic [ref=f1e127]: DEM | $1,000
          - link "SMITH, MARJORIE (MISSY) REILLY REP | $500" [ref=f1e128] [cursor=pointer]:
            - /url: /politicians/89e23696-f191-457e-73a7-e7fa35bca47d/
            - generic [ref=f1e129]: SMITH, MARJORIE (MISSY) REILLY
            - generic [ref=f1e130]: REP | $500
          - link "MAYE, GREG DEM" [ref=f1e131] [cursor=pointer]:
            - /url: /politicians/90323c2d-2039-8118-0121-90b009a25ec4/
            - generic [ref=f1e132]: MAYE, GREG
            - generic [ref=f1e133]: DEM
          - link "ECHOLS, KEVIN JAMES REP" [ref=f1e134] [cursor=pointer]:
            - /url: /politicians/7f5d4336-5696-b48e-a46c-06c0caac6494/
            - generic [ref=f1e135]: ECHOLS, KEVIN JAMES
            - generic [ref=f1e136]: REP
          - link "WILLIAMS, KELLY DEM" [ref=f1e137] [cursor=pointer]:
            - /url: /politicians/ef05f102-baaa-cd5f-66df-ba38dd11b861/
            - generic [ref=f1e138]: WILLIAMS, KELLY
            - generic [ref=f1e139]: DEM
          - link "PANFIL, SARA JANE LIB" [ref=f1e140] [cursor=pointer]:
            - /url: /politicians/5f82e169-fce7-4a41-ddae-5b1a92dc0f0c/
            - generic [ref=f1e141]: PANFIL, SARA JANE
            - generic [ref=f1e142]: LIB
          - link "MAJORS, BRUCE POWELL MR. LIB" [ref=f1e143] [cursor=pointer]:
            - /url: /politicians/f9e304eb-3626-d8ac-de5e-447515b32d1c/
            - generic [ref=f1e144]: MAJORS, BRUCE POWELL MR.
            - generic [ref=f1e145]: LIB
          - link "DEMARCO, ADAM 1985 DEM" [ref=f1e146] [cursor=pointer]:
            - /url: /politicians/33819722-a62a-5254-9339-f4220459fd66/
            - generic [ref=f1e147]: DEMARCO, ADAM 1985
            - generic [ref=f1e148]: DEM
          - link "ALSTON, DONNA JEAN DEM" [ref=f1e149] [cursor=pointer]:
            - /url: /politicians/c2734015-3f9d-8588-3443-f94ac4f79e94/
            - generic [ref=f1e150]: ALSTON, DONNA JEAN
            - generic [ref=f1e151]: DEM
          - link "SLOAN, DOUGLASS DEM" [ref=f1e152] [cursor=pointer]:
            - /url: /politicians/9032d91b-7180-b8a0-e110-5dd622c44155/
            - generic [ref=f1e153]: SLOAN, DOUGLASS
            - generic [ref=f1e154]: DEM
          - link "STEVENS, SANDI LEE MS DEM" [ref=f1e155] [cursor=pointer]:
            - /url: /politicians/14bcd8d5-1af5-1ac6-b6cb-fc7a2bd09482/
            - generic [ref=f1e156]: STEVENS, SANDI LEE MS
            - generic [ref=f1e157]: DEM
          - link "RANDOLPH, SYLVIA REP" [ref=f1e158] [cursor=pointer]:
            - /url: /politicians/f76f8f0b-b330-379e-c5a4-6427d458e5ea/
            - generic [ref=f1e159]: RANDOLPH, SYLVIA
            - generic [ref=f1e160]: REP
          - link "SALTZ, DONALD A REP" [ref=f1e161] [cursor=pointer]:
            - /url: /politicians/1f4b13f1-2d21-2799-265a-c655aa6886fc/
            - generic [ref=f1e162]: SALTZ, DONALD A
            - generic [ref=f1e163]: REP
          - link "MCCALL, JULIE UNK" [ref=f1e164] [cursor=pointer]:
            - /url: /politicians/36765703-2b40-d7db-055c-93476700f6be/
            - generic [ref=f1e165]: MCCALL, JULIE
            - generic [ref=f1e166]: UNK
          - link "HILLS, MAUDE LOUISE OTH" [ref=f1e167] [cursor=pointer]:
            - /url: /politicians/6ccebd62-2cba-34d2-ce99-c99a53f3273f/
            - generic [ref=f1e168]: HILLS, MAUDE LOUISE
            - generic [ref=f1e169]: OTH
          - link "STRACUZZI, NATALE N. DCG" [ref=f1e170] [cursor=pointer]:
            - /url: /politicians/6faaa4da-90fb-e86c-51f1-3557a5ada4a2/
            - generic [ref=f1e171]: STRACUZZI, NATALE N.
            - generic [ref=f1e172]: DCG
          - link "PERSLEY, ERRAN REP" [ref=f1e173] [cursor=pointer]:
            - /url: /politicians/7303ccc9-8f82-26c7-762c-4ff3c69c1eac/
            - generic [ref=f1e174]: PERSLEY, ERRAN
            - generic [ref=f1e175]: REP
          - link "MUSA, OMARI IND" [ref=f1e176] [cursor=pointer]:
            - /url: /politicians/61a6f5bd-4b71-95d7-e163-cabf1d05b35e/
            - generic [ref=f1e177]: MUSA, OMARI
            - generic [ref=f1e178]: IND
          - link "FRANKLIN, BARBARA WASHINGTON IND" [ref=f1e179] [cursor=pointer]:
            - /url: /politicians/e6047731-a6be-13d9-f3e3-6adea587ace0/
            - generic [ref=f1e180]: FRANKLIN, BARBARA WASHINGTON
            - generic [ref=f1e181]: IND
          - link "SCHWARTZMAN, DAVID OTH" [ref=f1e182] [cursor=pointer]:
            - /url: /politicians/dcc415d0-c63e-0e96-b257-2a21340e45df/
            - generic [ref=f1e183]: SCHWARTZMAN, DAVID
            - generic [ref=f1e184]: OTH
          - link "BUTLER, JOSEPHINE UNK" [ref=f1e185] [cursor=pointer]:
            - /url: /politicians/0c15a0bf-b271-a551-1d0f-0e9a20c52c46/
            - generic [ref=f1e186]: BUTLER, JOSEPHINE
            - generic [ref=f1e187]: UNK
          - link "MAJORS, BRUCE LIB" [ref=f1e188] [cursor=pointer]:
            - /url: /politicians/1859b929-79e0-2ebc-2d5a-2143abf07de3/
            - generic [ref=f1e189]: MAJORS, BRUCE
            - generic [ref=f1e190]: LIB
          - link "KAMPIA, ROBERT D. LIB" [ref=f1e191] [cursor=pointer]:
            - /url: /politicians/d1fb42b8-19bc-6d4f-3c28-6cffc6d1c2e1/
            - generic [ref=f1e192]: KAMPIA, ROBERT D.
            - generic [ref=f1e193]: LIB
          - link "FREEMAN, KYMONE OTH" [ref=f1e194] [cursor=pointer]:
            - /url: /politicians/0993efee-0126-3b8d-4699-9182fcfdf168/
            - generic [ref=f1e195]: FREEMAN, KYMONE
            - generic [ref=f1e196]: OTH
          - link "EDEN, ARTEMUS IND" [ref=f1e197] [cursor=pointer]:
            - /url: /politicians/f48247b2-56a6-6cc9-60da-3c412c836b81/
            - generic [ref=f1e198]: EDEN, ARTEMUS
            - generic [ref=f1e199]: IND
          - link "NOBLE, QUEEN OTH" [ref=f1e200] [cursor=pointer]:
            - /url: /politicians/b656d534-4495-7ba3-2cab-34eabdf034d2/
            - generic [ref=f1e201]: NOBLE, QUEEN
            - generic [ref=f1e202]: OTH
          - link "ROSADO, DENISE MS. REP" [ref=f1e203] [cursor=pointer]:
            - /url: /politicians/13c3cc1f-ab52-d922-7553-5d0092f50f6b/
            - generic [ref=f1e204]: ROSADO, DENISE MS.
            - generic [ref=f1e205]: REP
          - link "CHAMPAGNE, JAMES E REP" [ref=f1e206] [cursor=pointer]:
            - /url: /politicians/278b4b2e-39fb-c15a-4ee5-b22ea28b435a/
            - generic [ref=f1e207]: CHAMPAGNE, JAMES E
            - generic [ref=f1e208]: REP
          - link "A BROWN, MICHAEL IND" [ref=f1e209] [cursor=pointer]:
            - /url: /politicians/3392d835-e509-0a5d-a888-047a5789cf7a/
            - generic [ref=f1e210]: A BROWN, MICHAEL
            - generic [ref=f1e211]: IND
          - link "CARPIO, MONICA DALILA IND" [ref=f1e212] [cursor=pointer]:
            - /url: /politicians/d688f25d-ca73-b802-cb44-904af632c897/
            - generic [ref=f1e213]: CARPIO, MONICA DALILA
            - generic [ref=f1e214]: IND
          - link "MCCLAIRN, JERRY MR JR DEM" [ref=f1e215] [cursor=pointer]:
            - /url: /politicians/7028d381-23cc-1793-fae5-b49b2bc6088b/
            - generic [ref=f1e216]: MCCLAIRN, JERRY MR JR
            - generic [ref=f1e217]: DEM
          - link "READY, BRIAN DEM" [ref=f1e218] [cursor=pointer]:
            - /url: /politicians/d471fb86-d0ff-60b4-b406-f1e2e6cd4f54/
            - generic [ref=f1e219]: READY, BRIAN
            - generic [ref=f1e220]: DEM
          - link "ARCHIE, JAMES JR UNK" [ref=f1e221] [cursor=pointer]:
            - /url: /politicians/8eb034fe-e882-9dcf-88e4-347aadef46ea/
            - generic [ref=f1e222]: ARCHIE, JAMES JR
            - generic [ref=f1e223]: UNK
          - link "KRUCOFF, DAVID IND" [ref=f1e224] [cursor=pointer]:
            - /url: /politicians/a49c4c2e-f562-d48a-db8e-5fbd7d27fbd5/
            - generic [ref=f1e225]: KRUCOFF, DAVID
            - generic [ref=f1e226]: IND
          - link "MCCAULEY, GREGORY HEMPHILL REP" [ref=f1e227] [cursor=pointer]:
            - /url: /politicians/a2207abf-2f64-ebe7-46e5-46b298006b5a/
            - generic [ref=f1e228]: MCCAULEY, GREGORY HEMPHILL
            - generic [ref=f1e229]: REP
          - link "MARTIN, MARY SWP" [ref=f1e230] [cursor=pointer]:
            - /url: /politicians/ace6ff34-e6eb-fe2f-c976-46aa6acbce32/
            - generic [ref=f1e231]: MARTIN, MARY
            - generic [ref=f1e232]: SWP
          - link "GREEN, CLOID J. LBR" [ref=f1e233] [cursor=pointer]:
            - /url: /politicians/b00187e1-bcf8-cbec-f2c3-40b22b6acd0e/
            - generic [ref=f1e234]: GREEN, CLOID J.
            - generic [ref=f1e235]: LBR
        - generic [ref=f1e236]:
          - generic [ref=f1e237]: Showing 1-50
          - generic [ref=f1e238]:
            - button "First" [disabled] [ref=f1e239]
            - button "Prev" [disabled] [ref=f1e240]
            - button "1" [ref=f1e241] [cursor=pointer]
            - button "Next" [ref=f1e242] [cursor=pointer]
  - contentinfo [ref=f1e243]:
    - paragraph [ref=f1e244]:
      - link "elect.info" [ref=f1e245] [cursor=pointer]:
        - /url: https://preview.elect.info/
      - text: "| Data from"
      - link "Federal Election Commission" [ref=f1e246] [cursor=pointer]:
        - /url: https://preview.elect.info/datasources/fec.gov/
      - text: "| Generated 2026-10-23"
```

# Test source

```ts
  1  | import { test, expect } from '@playwright/test';
  2  | import { canonicalPath, toRelativePath } from './helpers';
  3  | 
  4  | // Release contract after the coordinated graph + PagePaths cutover (#462): all six
  5  | // delegates exist as current00 entities; the index and00 alias serve them, their
  6  | // live UUID pages canonicalize to00, and historical98 aliases redirect to00.
  7  | // This is intentionally red on the old98 graph / stale alias snapshot. The local
  8  | // district-categories fixture still proves98 rows keep safe current-UUID links;
  9  | // neither that fixture nor these inventory assertions may be skipped for missing rows.
  10 | for (const state of ['AS', 'GU', 'MP', 'VI', 'DC', 'PR']) {
  11 |   test(`${state} delegate district has a current00 canonical and historical98 redirect`, async ({ page, request }) => {
  12 |     const dataResponse = page.waitForResponse(response => {
  13 |       if (!response.url().includes('/api/graphql') || response.request().method() !== 'POST') return false;
  14 |       try {
  15 |         const body = response.request().postDataJSON();
  16 |         const variables = body?.variables;
  17 |         const filters = String(variables?.filter).split(',');
  18 |         return /\bbrowseEntities\s*\(/.test(body?.query || '') && variables?.entityType === 'District' &&
  19 |           filters.includes('district_type:cd') && filters.includes(`state:${state}`);
  20 |       } catch { return false; }
  21 |     });
  22 |     await page.goto(`/districts/?state=${state}&tab=congressional`);
  23 |     const payload = await (await dataResponse).json();
  24 |     expect(payload.errors, `${state}: current inventory query must succeed`).toBeUndefined();
  25 |     const inventory = payload.data?.browseEntities;
  26 |     expect(inventory?.total, `${state}: full congressional inventory must contain exactly one delegate`).toBe(1);
  27 |     expect(inventory?.hasMore, `${state}: delegate inventory must not be truncated`).toBe(false);
  28 |     const rows = inventory?.results;
  29 |     expect(rows, `${state}: exactly one delegate must remain in the graph`).toHaveLength(1);
  30 |     const row = rows[0];
  31 |     expect(row.state).toBe(state);
  32 |     expect(row.district).toBe('00');
  33 |     const metadata = JSON.parse(row.metadata || '{}');
  34 |     expect(metadata.district_type).toBe('cd');
  35 |     expect(metadata.district_slug.toLowerCase()).toBe(`${state.toLowerCase()}-00`);
  36 |     expect(row.id).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
  37 | 
  38 |     await expect(page.locator('#district-state-select')).toHaveValue(state);
  39 |     const result = page.locator('.entity-search-result');
  40 |     await expect(result).toHaveCount(1, { timeout: 15000 });
  41 |     await expect(result).toContainText(`${state}-00`);
  42 |     const canonical = `/districts/${state.toLowerCase()}-00/`;
  43 |     await expect(result).toHaveAttribute('href', canonical);
  44 |     const response = await page.goto(canonical);
  45 |     expect(response?.status(), `${state}:00 must serve, not redirect or miss`).toBe(200);
  46 |     await expect(page.locator('h1')).toBeVisible();
  47 |     expect(canonicalPath(await page.content())).toBe(canonical);
  48 | 
  49 |     const storage = await request.get(`/districts/${row.id}/`, { maxRedirects: 0 });
  50 |     expect(storage.status(), `${state}: graph-current UUID page must serve`).toBe(200);
  51 |     expect(canonicalPath(await storage.text()), `${state}: current UUID must share00 canonical`).toBe(canonical);
  52 |     const historical = await request.get(`/districts/${state.toLowerCase()}-98/`, { maxRedirects: 0 });
> 53 |     expect(historical.status(), `${state}:98 must redirect rather than retire or retain an old owner`).toBe(301);
     |                                                                                                        ^ Error: DC:98 must redirect rather than retire or retain an old owner
  54 |     expect(toRelativePath(historical.headers()['location'] || '')).toBe(canonical);
  55 |   });
  56 | }
  57 | 
```