# 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 >> VI delegate district has a current00 canonical and historical98 redirect
- Location: tests/ui/district-delegates.spec.ts:11:7

# Error details

```
Error: VI: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 "Virgin Islands 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=https%3A%2F%2Fus.elect.info%2Fdistricts%2Fvi-00%2F
        - link "Create an account" [ref=f1e11] [cursor=pointer]:
          - /url: /signin/register?rd=https%3A%2F%2Fus.elect.info%2Fdistricts%2Fvi-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]: VI-00
      - term [ref=f1e37]: State
      - definition [ref=f1e38]:
        - link "Virgin Islands" [ref=f1e39] [cursor=pointer]:
          - /url: https://us.elect.info/states/
      - term [ref=f1e40]: District Number
      - definition [ref=f1e41]: "00"
      - term [ref=f1e42]: Total Candidates
      - definition [ref=f1e43]: "45"
      - term [ref=f1e44]: Election Cycles
      - definition [ref=f1e45]:
        - generic [ref=f1e46]:
          - link "2026" [ref=f1e47] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2026/
          - text: ","
          - link "2024" [ref=f1e48] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2024/
          - text: ","
          - link "2022" [ref=f1e49] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2022/
          - text: ","
          - link "2020" [ref=f1e50] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2020/
          - text: ","
          - link "2018" [ref=f1e51] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2018/
          - text: ","
          - link "2016" [ref=f1e52] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2016/
          - text: ","
          - link "2014" [ref=f1e53] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2014/
          - text: ","
          - link "2012" [ref=f1e54] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2012/
          - text: ","
          - link "2010" [ref=f1e55] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2010/
          - text: ","
          - link "2008" [ref=f1e56] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2008/
          - text: ","
          - link "2006" [ref=f1e57] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2006/
          - text: ","
          - link "2004" [ref=f1e58] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2004/
          - text: ","
          - link "2002" [ref=f1e59] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2002/
          - text: ","
          - link "2000" [ref=f1e60] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2000/
          - text: ","
          - link "1998" [ref=f1e61] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1998/
          - text: ","
          - link "1996" [ref=f1e62] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1996/
          - text: ","
          - link "1994" [ref=f1e63] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1994/
          - text: ","
          - link "1992" [ref=f1e64] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1992/
          - text: ","
          - link "1990" [ref=f1e65] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1990/
          - text: ","
          - link "1988" [ref=f1e66] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1988/
          - text: ","
          - link "1986" [ref=f1e67] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1986/
          - text: ","
          - link "1984" [ref=f1e68] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1984/
          - text: ","
          - link "1982" [ref=f1e69] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1982/
          - text: ","
          - link "1980" [ref=f1e70] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1980/
    - paragraph [ref=f1e71]:
      - link "View office details for U.S. Representative - Virgin Islands District 00" [ref=f1e72] [cursor=pointer]:
        - /url: https://us.elect.info/offices/house/vi-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 "PLASKETT, STACEY DEM | $1,649,965" [ref=f1e86] [cursor=pointer]:
            - /url: /politicians/2d0cdee2-982d-999c-8f8d-3ce8c8806b31/
            - generic [ref=f1e87]: PLASKETT, STACEY
            - generic [ref=f1e88]: DEM | $1,649,965
          - link "CHRISTENSEN, DONNA M DEM | $845,138" [ref=f1e89] [cursor=pointer]:
            - /url: /politicians/9879920c-3096-4215-bbda-909ab4c284ec/
            - generic [ref=f1e90]: CHRISTENSEN, DONNA M
            - generic [ref=f1e91]: DEM | $845,138
          - link "DE LUGO, RON DEM | $92,388" [ref=f1e92] [cursor=pointer]:
            - /url: /politicians/9875d406-f94e-49a2-76da-b730f3a6360d/
            - generic [ref=f1e93]: DE LUGO, RON
            - generic [ref=f1e94]: DEM | $92,388
          - link "PETERSEN, EILEEN R DEM | $21,500" [ref=f1e95] [cursor=pointer]:
            - /url: /politicians/6061921b-c803-8f9f-c3c0-3723bc9eb950/
            - generic [ref=f1e96]: PETERSEN, EILEEN R
            - generic [ref=f1e97]: DEM | $21,500
          - link "EVANS, MELVIN H. REP | $15,993" [ref=f1e98] [cursor=pointer]:
            - /url: /politicians/5acf80fb-c0bb-bca5-f685-314d685d90bb/
            - generic [ref=f1e99]: EVANS, MELVIN H.
            - generic [ref=f1e100]: REP | $15,993
          - link "MALONE, SHAWN-MICHAEL DEM | $13,500" [ref=f1e101] [cursor=pointer]:
            - /url: /politicians/40ed4fc5-b409-1955-2265-56bc223fbd36/
            - generic [ref=f1e102]: MALONE, SHAWN-MICHAEL
            - generic [ref=f1e103]: DEM | $13,500
          - link "REDFIELD, HOLLAND II REP | $10,000" [ref=f1e104] [cursor=pointer]:
            - /url: /politicians/78a68162-fc1e-b17f-8271-1dc10a0c1bbc/
            - generic [ref=f1e105]: REDFIELD, HOLLAND II
            - generic [ref=f1e106]: REP | $10,000
          - link "BRADY, JULIO ANTHONY DEM | $5,585" [ref=f1e107] [cursor=pointer]:
            - /url: /politicians/bcd071ce-4587-bc2f-122d-660820245b89/
            - generic [ref=f1e108]: BRADY, JULIO ANTHONY
            - generic [ref=f1e109]: DEM | $5,585
          - link "WATLINGTON, JANET BERECIA IND | $3,500" [ref=f1e110] [cursor=pointer]:
            - /url: /politicians/736c4a1f-90da-04cc-d1a9-8032619f6d3b/
            - generic [ref=f1e111]: WATLINGTON, JANET BERECIA
            - generic [ref=f1e112]: IND | $3,500
          - link "MAPP, KENNETH E REP | $3,000" [ref=f1e113] [cursor=pointer]:
            - /url: /politicians/b3eb2b63-95d5-6ddf-f98f-5407a77d8557/
            - generic [ref=f1e114]: MAPP, KENNETH E
            - generic [ref=f1e115]: REP | $3,000
          - link "HELENESE, NICOLE TERI ANN DEM | $3,000" [ref=f1e116] [cursor=pointer]:
            - /url: /politicians/b0e44b00-4943-90f8-6d62-a28a20493243/
            - generic [ref=f1e117]: HELENESE, NICOLE TERI ANN
            - generic [ref=f1e118]: DEM | $3,000
          - link "PICKARD, RONALD REP | $1,198" [ref=f1e119] [cursor=pointer]:
            - /url: /politicians/586a52bc-9aa2-1dde-0dca-cb59e3213707/
            - generic [ref=f1e120]: PICKARD, RONALD
            - generic [ref=f1e121]: REP | $1,198
          - link "ROSS, EDGAR DE L'ISLE REP | $1,014" [ref=f1e122] [cursor=pointer]:
            - /url: /politicians/f680c7d2-5fc1-e14a-5bcc-67ad592076fe/
            - generic [ref=f1e123]: ROSS, EDGAR DE L'ISLE
            - generic [ref=f1e124]: REP | $1,014
          - link "RUSSELL, RONALD E MR DEM | $1,000" [ref=f1e125] [cursor=pointer]:
            - /url: /politicians/b8258bc5-9289-ecd4-6405-f57f4b61033b/
            - generic [ref=f1e126]: RUSSELL, RONALD E MR
            - generic [ref=f1e127]: DEM | $1,000
          - link "PRINCE, FRANK REP | $1,000" [ref=f1e128] [cursor=pointer]:
            - /url: /politicians/31ac67b5-0fc1-2e95-33f8-e2fa53bc1b86/
            - generic [ref=f1e129]: PRINCE, FRANK
            - generic [ref=f1e130]: REP | $1,000
          - link "FRAZER, VICTOR O DEM | $600" [ref=f1e131] [cursor=pointer]:
            - /url: /politicians/9c2756d2-fce1-704a-f02a-96b76c388d40/
            - generic [ref=f1e132]: FRAZER, VICTOR O
            - generic [ref=f1e133]: DEM | $600
          - link "RICHARDSON, BINGLEY GERALDO SR DEM | $250" [ref=f1e134] [cursor=pointer]:
            - /url: /politicians/a657141c-b1c6-f10f-6f9c-48965217edfe/
            - generic [ref=f1e135]: RICHARDSON, BINGLEY GERALDO SR
            - generic [ref=f1e136]: DEM | $250
          - link "SMITH, DELIA LAVERNE MRS. DEM" [ref=f1e137] [cursor=pointer]:
            - /url: /politicians/10518a9f-4211-ba1c-7bb8-df0a0415c619/
            - generic [ref=f1e138]: SMITH, DELIA LAVERNE MRS.
            - generic [ref=f1e139]: DEM
          - link "SMITH, IDA IND" [ref=f1e140] [cursor=pointer]:
            - /url: /politicians/5674ff07-87e1-19fc-da58-3845599c76cd/
            - generic [ref=f1e141]: SMITH, IDA
            - generic [ref=f1e142]: IND
          - link "GEORGE, SHEKEMA IND" [ref=f1e143] [cursor=pointer]:
            - /url: /politicians/3b8fe72e-1b68-7e2d-6e89-91280d4eef77/
            - generic [ref=f1e144]: GEORGE, SHEKEMA
            - generic [ref=f1e145]: IND
          - link "ESTEMAC, JORGE J. OTH" [ref=f1e146] [cursor=pointer]:
            - /url: /politicians/5a1efd97-d1c6-b0ac-b5fd-9ec0a54662fe/
            - generic [ref=f1e147]: ESTEMAC, JORGE J.
            - generic [ref=f1e148]: OTH
          - link "OTTLEY, BASIL C JR DEM" [ref=f1e149] [cursor=pointer]:
            - /url: /politicians/66586141-703e-0eab-3318-b116198b78d7/
            - generic [ref=f1e150]: OTTLEY, BASIL C JR
            - generic [ref=f1e151]: DEM
          - link "HENDRICKS, OLAF DEM" [ref=f1e152] [cursor=pointer]:
            - /url: /politicians/81cd7d13-2fcd-5890-f2b4-0c814b53794d/
            - generic [ref=f1e153]: HENDRICKS, OLAF
            - generic [ref=f1e154]: DEM
          - link "GOODWIN, PETER DEM" [ref=f1e155] [cursor=pointer]:
            - /url: /politicians/b707e363-b071-2f4a-38a3-af2e40e1c326/
            - generic [ref=f1e156]: GOODWIN, PETER
            - generic [ref=f1e157]: DEM
          - link "MOORHEAD, ALEXANDER A. JR. IND" [ref=f1e158] [cursor=pointer]:
            - /url: /politicians/9783e8c2-3d94-d313-56aa-617e6c62db31/
            - generic [ref=f1e159]: MOORHEAD, ALEXANDER A. JR.
            - generic [ref=f1e160]: IND
          - link "PAIEWONSKY, MICHAEL ALBERT DEM" [ref=f1e161] [cursor=pointer]:
            - /url: /politicians/0c9bf819-ca56-231c-c35b-71ec62ed4821/
            - generic [ref=f1e162]: PAIEWONSKY, MICHAEL ALBERT
            - generic [ref=f1e163]: DEM
          - link "GIUSTO, ANDREW REP" [ref=f1e164] [cursor=pointer]:
            - /url: /politicians/9f6dacf0-e064-24a6-b768-a12ff3cbe5bd/
            - generic [ref=f1e165]: GIUSTO, ANDREW
            - generic [ref=f1e166]: REP
          - link "O'BRYAN, JAMES A JR DEM" [ref=f1e167] [cursor=pointer]:
            - /url: /politicians/0ff2390d-ece4-5509-8fff-c1431135f0d1/
            - generic [ref=f1e168]: O'BRYAN, JAMES A JR
            - generic [ref=f1e169]: DEM
          - link "DANET, VINCENT EMILE REP" [ref=f1e170] [cursor=pointer]:
            - /url: /politicians/dacc02b5-ddfa-c7c4-9e98-181c4fb28140/
            - generic [ref=f1e171]: DANET, VINCENT EMILE
            - generic [ref=f1e172]: REP
          - link "BROWN, VIRDIN C. OTH" [ref=f1e173] [cursor=pointer]:
            - /url: /politicians/b08111a7-1336-efec-2395-1f07fe48505f/
            - generic [ref=f1e174]: BROWN, VIRDIN C.
            - generic [ref=f1e175]: OTH
          - link "HANSEN, EMMETT II DEM" [ref=f1e176] [cursor=pointer]:
            - /url: /politicians/c730faa8-86f0-73d2-1075-a68332a81bc5/
            - generic [ref=f1e177]: HANSEN, EMMETT II
            - generic [ref=f1e178]: DEM
          - link "WILLIAMS, HERNANDO IKE REP" [ref=f1e179] [cursor=pointer]:
            - /url: /politicians/fd435ed7-ad1c-8ea3-e2bd-0482f7ea9a94/
            - generic [ref=f1e180]: WILLIAMS, HERNANDO IKE
            - generic [ref=f1e181]: REP
          - link "MOORHEAD, SHELLEY A.H. IND" [ref=f1e182] [cursor=pointer]:
            - /url: /politicians/dac505b3-a812-38d3-a94c-219131c4276c/
            - generic [ref=f1e183]: MOORHEAD, SHELLEY A.H.
            - generic [ref=f1e184]: IND
          - link "MOSLER, WARREN BRUCE IND" [ref=f1e185] [cursor=pointer]:
            - /url: /politicians/e364f52d-e078-b975-ed26-bafb981fcfea/
            - generic [ref=f1e186]: MOSLER, WARREN BRUCE
            - generic [ref=f1e187]: IND
          - link "HODGE, GEORGE HENRY JR DEM" [ref=f1e188] [cursor=pointer]:
            - /url: /politicians/7a251416-b9e6-1fc2-22f7-6e79712991b9/
            - generic [ref=f1e189]: HODGE, GEORGE HENRY JR
            - generic [ref=f1e190]: DEM
          - link "ACKLEY, GORDON P REP" [ref=f1e191] [cursor=pointer]:
            - /url: /politicians/9f2a413e-4b03-9725-81a8-872424cb86c3/
            - generic [ref=f1e192]: ACKLEY, GORDON P
            - generic [ref=f1e193]: REP
          - link "MIMOUN, GUILLAUME IND" [ref=f1e194] [cursor=pointer]:
            - /url: /politicians/2f644c14-fd44-3191-3be3-d42591a47495/
            - generic [ref=f1e195]: MIMOUN, GUILLAUME
            - generic [ref=f1e196]: IND
          - link "SAMUEL, NORMA PICKARD IND" [ref=f1e197] [cursor=pointer]:
            - /url: /politicians/feb298b9-92a3-5627-1112-c9e1e65bd137/
            - generic [ref=f1e198]: SAMUEL, NORMA PICKARD
            - generic [ref=f1e199]: IND
          - link "SPRAUVE, GARRY A. IND" [ref=f1e200] [cursor=pointer]:
            - /url: /politicians/50a40799-bd35-1864-1bd6-bc7f1766e0ff/
            - generic [ref=f1e201]: SPRAUVE, GARRY A.
            - generic [ref=f1e202]: IND
          - link "O'NEAL, LILLIANA BELARDO DE REP" [ref=f1e203] [cursor=pointer]:
            - /url: /politicians/5d65da55-5847-feff-3ffd-8eeac8c9454c/
            - generic [ref=f1e204]: O'NEAL, LILLIANA BELARDO DE
            - generic [ref=f1e205]: REP
          - link "FRANCIS, RASHIDA DEM" [ref=f1e206] [cursor=pointer]:
            - /url: /politicians/68e2509f-0f6c-be73-840b-6f6866f452d6/
            - generic [ref=f1e207]: FRANCIS, RASHIDA
            - generic [ref=f1e208]: DEM
          - link "MOORHEAD, JEFFREY B.C. NNE" [ref=f1e209] [cursor=pointer]:
            - /url: /politicians/802cb8ea-e4ff-0bc9-f392-21d9ac78bff6/
            - generic [ref=f1e210]: MOORHEAD, JEFFREY B.C.
            - generic [ref=f1e211]: NNE
          - link "SMALLS, ERIC IND" [ref=f1e212] [cursor=pointer]:
            - /url: /politicians/f053292b-14f5-94e0-5e83-48188a8db458/
            - generic [ref=f1e213]: SMALLS, ERIC
            - generic [ref=f1e214]: IND
          - link "SARAUW, JANELLE KAREN IND" [ref=f1e215] [cursor=pointer]:
            - /url: /politicians/f650e675-3e62-5892-9fd9-a64151fb668a/
            - generic [ref=f1e216]: SARAUW, JANELLE KAREN
            - generic [ref=f1e217]: IND
          - link "BALLENTINE, KRIM MENELIK REP" [ref=f1e218] [cursor=pointer]:
            - /url: /politicians/3ea917d9-335c-9d95-5b5d-f565b16b5c3b/
            - generic [ref=f1e219]: BALLENTINE, KRIM MENELIK
            - generic [ref=f1e220]: REP
        - generic [ref=f1e221]: Showing all 45 results
  - contentinfo [ref=f1e223]:
    - paragraph [ref=f1e224]:
      - link "elect.info" [ref=f1e225] [cursor=pointer]:
        - /url: https://us.elect.info/
      - text: "| Data from"
      - link "Federal Election Commission" [ref=f1e226] [cursor=pointer]:
        - /url: https://us.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: VI:98 must redirect rather than retire or retain an old owner
  54 |     expect(toRelativePath(historical.headers()['location'] || '')).toBe(canonical);
  55 |   });
  56 | }
  57 | 
```