# 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/geo-map.spec.ts >> /districts/ny-16/: boundary map, no missing scripts or shapes
- Location: tests/ui/geo-map.spec.ts:18:7

# Error details

```
Error: expect(locator).toHaveCount(expected) failed

Locator:  locator('script[src="/js/geo-map.js"][data-geo-shape]')
Expected: 1
Received: 0
Timeout:  5000ms

Call log:
  - Expect "toHaveCount" locator('script[src="/js/geo-map.js"][data-geo-shape]') with timeout 5000ms
  - waiting for locator('script[src="/js/geo-map.js"][data-geo-shape]')
    14 × locator resolved to 0 elements
       - unexpected value "0"

```

# Page snapshot

```yaml
- generic [active] [ref=e1]:
  - banner [ref=e2]:
    - heading "New York Congressional District 16" [level=1] [ref=e3]
    - paragraph [ref=e4]: Congressional District Profile
  - generic [ref=e5]:
    - generic [ref=e6]:
      - generic [ref=e7]: Not signed in
      - generic [ref=e9]:
        - link "Log in" [ref=e10] [cursor=pointer]:
          - /url: /outpost.goauthentik.io/start?rd=https%3A%2F%2Fus.elect.info%2Fdistricts%2Fny-16%2F
        - link "Create an account" [ref=e11] [cursor=pointer]:
          - /url: /signin/register?rd=https%3A%2F%2Fus.elect.info%2Fdistricts%2Fny-16%2F
    - toolbar "Member tools" [ref=e12]:
      - button "All cycles (Sign in to use the cycle facet)" [disabled] [ref=e13] [cursor=pointer]:
        - generic [ref=e17]: All cycles
      - button "Graph (Sign in to use Graph)" [disabled] [ref=e20] [cursor=pointer]:
        - generic [ref=e29]: Graph
  - generic [ref=e32]:
    - heading "Overview" [level=2] [ref=e33]
    - generic [ref=e34]:
      - term [ref=e35]: District ID
      - definition [ref=e36]: NY-16
      - term [ref=e37]: State
      - definition [ref=e38]:
        - link "New York" [ref=e39] [cursor=pointer]:
          - /url: https://us.elect.info/states/new-york/
      - term [ref=e40]: District Number
      - definition [ref=e41]: "16"
      - term [ref=e42]: Total Candidates
      - definition [ref=e43]: "64"
      - term [ref=e44]: Election Cycles
      - definition [ref=e45]:
        - generic [ref=e46]:
          - link "2026" [ref=e47] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2026/
          - text: ","
          - link "2024" [ref=e48] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2024/
          - text: ","
          - link "2022" [ref=e49] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2022/
          - text: ","
          - link "2020" [ref=e50] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2020/
          - text: ","
          - link "2018" [ref=e51] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2018/
          - text: ","
          - link "2016" [ref=e52] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2016/
          - text: ","
          - link "2014" [ref=e53] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2014/
          - text: ","
          - link "2012" [ref=e54] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2012/
          - text: ","
          - link "2010" [ref=e55] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2010/
          - text: ","
          - link "2008" [ref=e56] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2008/
          - text: ","
          - link "2006" [ref=e57] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2006/
          - text: ","
          - link "2004" [ref=e58] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2004/
          - text: ","
          - link "2002" [ref=e59] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2002/
          - text: ","
          - link "2000" [ref=e60] [cursor=pointer]:
            - /url: https://us.elect.info/elections/2000/
          - text: ","
          - link "1998" [ref=e61] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1998/
          - text: ","
          - link "1996" [ref=e62] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1996/
          - text: ","
          - link "1994" [ref=e63] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1994/
          - text: ","
          - link "1992" [ref=e64] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1992/
          - text: ","
          - link "1990" [ref=e65] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1990/
          - text: ","
          - link "1988" [ref=e66] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1988/
          - text: ","
          - link "1986" [ref=e67] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1986/
          - text: ","
          - link "1984" [ref=e68] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1984/
          - text: ","
          - link "1982" [ref=e69] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1982/
          - text: ","
          - link "1980" [ref=e70] [cursor=pointer]:
            - /url: https://us.elect.info/elections/1980/
    - paragraph [ref=e71]:
      - link "View office details for U.S. Representative - New York District 16" [ref=e72] [cursor=pointer]:
        - /url: https://us.elect.info/offices/house/ny-16/
  - generic [ref=e73]:
    - heading "Demographics" [level=2] [ref=e74]
    - generic [ref=e75]:
      - term [ref=e76]: Total Citizen Population
      - definition [ref=e77]: 688,157
      - term [ref=e78]: Citizen Voting Age Population (CVAP)
      - definition [ref=e79]: 530,240
    - heading "Citizen Population by Race/Ethnicity" [level=3] [ref=e80]
    - table [ref=e81]:
      - rowgroup [ref=e82]:
        - row [ref=e83]:
          - columnheader "Group" [ref=e84]
          - columnheader "Citizens" [ref=e85]
          - columnheader "Share" [ref=e86]
      - rowgroup [ref=e87]:
        - row [ref=e88]:
          - cell "Non-Hispanic" [ref=e89]
          - cell "505,065" [ref=e90]
          - cell "73.4%" [ref=e91]
        - row [ref=e92]:
          - cell "Hispanic" [ref=e93]
          - cell "183,091" [ref=e94]
          - cell "26.6%" [ref=e95]
        - row [ref=e96]:
          - cell "White" [ref=e97]
          - cell "301,755" [ref=e98]
          - cell "43.8%" [ref=e99]
        - row [ref=e100]:
          - cell "Black" [ref=e101]
          - cell "147,280" [ref=e102]
          - cell "21.4%" [ref=e103]
        - row [ref=e104]:
          - cell "Asian" [ref=e105]
          - cell "38,188" [ref=e106]
          - cell "5.5%" [ref=e107]
        - row [ref=e108]:
          - cell "American Indian / Alaska Native" [ref=e109]
          - cell "858" [ref=e110]
          - cell "0.1%" [ref=e111]
        - row [ref=e112]:
          - cell "Native Hawaiian / Pacific Islander" [ref=e113]
          - cell "104" [ref=e114]
          - cell "0.0%" [ref=e115]
        - row [ref=e116]:
          - cell "Two or More Races" [ref=e117]
          - cell "2,864" [ref=e118]
          - cell "0.4%" [ref=e119]
    - heading "Citizen Voting Age Population by Race/Ethnicity" [level=3] [ref=e120]
    - table [ref=e121]:
      - rowgroup [ref=e122]:
        - row [ref=e123]:
          - columnheader "Group" [ref=e124]
          - columnheader "CVAP" [ref=e125]
          - columnheader "Share" [ref=e126]
      - rowgroup [ref=e127]:
        - row [ref=e128]:
          - cell "Non-Hispanic" [ref=e129]
          - cell "402,713" [ref=e130]
          - cell "75.9%" [ref=e131]
        - row [ref=e132]:
          - cell "Hispanic" [ref=e133]
          - cell "127,527" [ref=e134]
          - cell "24.1%" [ref=e135]
        - row [ref=e136]:
          - cell "White" [ref=e137]
          - cell "245,913" [ref=e138]
          - cell "46.4%" [ref=e139]
        - row [ref=e140]:
          - cell "Black" [ref=e141]
          - cell "121,296" [ref=e142]
          - cell "22.9%" [ref=e143]
        - row [ref=e144]:
          - cell "Asian" [ref=e145]
          - cell "32,146" [ref=e146]
          - cell "6.1%" [ref=e147]
        - row [ref=e148]:
          - cell "American Indian / Alaska Native" [ref=e149]
          - cell "2,308" [ref=e150]
          - cell "0.4%" [ref=e151]
        - row [ref=e152]:
          - cell "Native Hawaiian / Pacific Islander" [ref=e153]
          - cell "101" [ref=e154]
          - cell "0.0%" [ref=e155]
        - row [ref=e156]:
          - cell "Two or More Races" [ref=e157]
          - cell "1,828" [ref=e158]
          - cell "0.3%" [ref=e159]
    - paragraph [ref=e160]: "Source: Redistricting Data Hub / U.S. Census Bureau CVAP Special Tabulation."
  - generic [ref=e161]:
    - heading "Candidates" [level=2] [ref=e162]
    - generic [ref=e164]:
      - generic [ref=e165]:
        - generic [ref=e166]:
          - combobox "Search entities" [ref=e167]
          - status [ref=e168]
        - button "Search" [ref=e169] [cursor=pointer]
      - generic [ref=e170]:
        - heading "Candidates" [level=3] [ref=e172]
        - generic [ref=e173]:
          - link "ENGEL, ELIOT L. DEM | $6,653,691" [ref=e174] [cursor=pointer]:
            - /url: /politicians/5d63a758-373b-5d91-1c6a-f9869d5eb05c/
            - generic [ref=e175]: ENGEL, ELIOT L.
            - generic [ref=e176]: DEM | $6,653,691
          - link "BOWMAN, JAMAAL DEM | $701,593" [ref=e177] [cursor=pointer]:
            - /url: /politicians/1a392e7c-338a-4c35-1421-50800fe15e91/
            - generic [ref=e178]: BOWMAN, JAMAAL
            - generic [ref=e179]: DEM | $701,593
          - link "LATIMER, GEORGE DEM | $659,464" [ref=e180] [cursor=pointer]:
            - /url: /politicians/d32bc357-fe51-ba51-0f02-8d86b4eeb937/
            - generic [ref=e181]: LATIMER, GEORGE
            - generic [ref=e182]: DEM | $659,464
          - link "GHEBREGHIORGIS, ANDOM A. DEM | $11,998" [ref=e183] [cursor=pointer]:
            - /url: /politicians/408b3258-b49d-a354-27fc-18af2b500c88/
            - generic [ref=e184]: GHEBREGHIORGIS, ANDOM A.
            - generic [ref=e185]: DEM | $11,998
          - link "GASHI, VEDAT DEM | $11,500" [ref=e186] [cursor=pointer]:
            - /url: /politicians/f32d6a2d-57bf-e8c9-bfec-d0e8001cf6db/
            - generic [ref=e187]: GASHI, VEDAT
            - generic [ref=e188]: DEM | $11,500
          - link "LAWRENCE, DERICKSON K DEM | $11,447" [ref=e189] [cursor=pointer]:
            - /url: /politicians/ac7be4c3-19c9-26a5-2885-ece4f7638a1a/
            - generic [ref=e190]: LAWRENCE, DERICKSON K
            - generic [ref=e191]: DEM | $11,447
          - link "SILVERMAN, THEODORE DEM | $4,881" [ref=e192] [cursor=pointer]:
            - /url: /politicians/2576a3b3-2004-dd02-55da-af82ea65bc4f/
            - generic [ref=e193]: SILVERMAN, THEODORE
            - generic [ref=e194]: DEM | $4,881
          - link "FINK, CHRIS DEM | $1,500" [ref=e195] [cursor=pointer]:
            - /url: /politicians/ab00034a-1deb-f8c6-7b9a-8cd3d064115e/
            - generic [ref=e196]: FINK, CHRIS
            - generic [ref=e197]: DEM | $1,500
          - link "HOLTZMAN, ELIZABETH DEM | $959" [ref=e198] [cursor=pointer]:
            - /url: /politicians/17c0fa03-c3f4-e293-b7bb-5ae4cde04d5d/
            - generic [ref=e199]: HOLTZMAN, ELIZABETH
            - generic [ref=e200]: DEM | $959
          - link "DIAFERIA, JOSEPH P GRE | $180" [ref=e201] [cursor=pointer]:
            - /url: /politicians/215456de-8f7e-4d43-3a09-dd32d54c5259/
            - generic [ref=e202]: DIAFERIA, JOSEPH P
            - generic [ref=e203]: GRE | $180
          - link "BRAME, MADELINE REP | $10" [ref=e204] [cursor=pointer]:
            - /url: /politicians/abb518fd-8754-f051-5afe-cf45559d92d7/
            - generic [ref=e205]: BRAME, MADELINE
            - generic [ref=e206]: REP | $10
          - link "CINQUEMANI, JOSEPH REP" [ref=e207] [cursor=pointer]:
            - /url: /politicians/59a517ed-b8cb-8a8f-489a-7f3e407ad3ca/
            - generic [ref=e208]: CINQUEMANI, JOSEPH
            - generic [ref=e209]: REP
          - link "BAYLEY JR., THOMAS W. REP" [ref=e210] [cursor=pointer]:
            - /url: /politicians/307b48b2-3db1-adc3-b48a-81bc6064a1c4/
            - generic [ref=e211]: BAYLEY JR., THOMAS W.
            - generic [ref=e212]: REP
          - link "COLE, DARREN DEM" [ref=e213] [cursor=pointer]:
            - /url: /politicians/5f8a8d19-d5de-ac4f-338d-784482b93ad3/
            - generic [ref=e214]: COLE, DARREN
            - generic [ref=e215]: DEM
          - link "RIVERS, ERIC DEM" [ref=e216] [cursor=pointer]:
            - /url: /politicians/4cfa612b-bd60-b47d-f7e1-58d4cb2d2068/
            - generic [ref=e217]: RIVERS, ERIC
            - generic [ref=e218]: DEM
          - link "LEWIS, JONATHAN DEM" [ref=e219] [cursor=pointer]:
            - /url: /politicians/3a521e52-7527-0adc-95a6-899cbd9c7b52/
            - generic [ref=e220]: LEWIS, JONATHAN
            - generic [ref=e221]: DEM
          - link "TAYLOR, BARBARA R IND" [ref=e222] [cursor=pointer]:
            - /url: /politicians/00948c71-714a-85c4-df23-45f2c009f35d/
            - generic [ref=e223]: TAYLOR, BARBARA R
            - generic [ref=e224]: IND
          - link "CRUZ, VERONICA SWP" [ref=e225] [cursor=pointer]:
            - /url: /politicians/249d1b61-21dd-8dd2-8694-b1b316dfbe87/
            - generic [ref=e226]: CRUZ, VERONICA
            - generic [ref=e227]: SWP
          - link "GRIMALDI, ANIELLO A.M. DEM" [ref=e228] [cursor=pointer]:
            - /url: /politicians/9c6c9d3f-b997-3f8b-c888-40c9bae06655/
            - generic [ref=e229]: GRIMALDI, ANIELLO A.M.
            - generic [ref=e230]: DEM
          - link "SHERRILL, DR PETER W REP" [ref=e231] [cursor=pointer]:
            - /url: /politicians/6321c764-4e66-f88f-90a5-c97bbeb490f7/
            - generic [ref=e232]: SHERRILL, DR PETER W
            - generic [ref=e233]: REP
          - link "RAVELO, SAMUEL DEM" [ref=e234] [cursor=pointer]:
            - /url: /politicians/ccefea3f-5094-c2c7-af95-39336c0f8ffc/
            - generic [ref=e235]: RAVELO, SAMUEL
            - generic [ref=e236]: DEM
          - link "CAMP, OWEN CRV" [ref=e237] [cursor=pointer]:
            - /url: /politicians/1521dc74-3214-17af-79ec-e4c8d3640aa9/
            - generic [ref=e238]: CAMP, OWEN
            - generic [ref=e239]: CRV
          - link "DELICES, PATRICK REP" [ref=e240] [cursor=pointer]:
            - /url: /politicians/166128c2-5fd1-cd45-9ccb-e644b91789cb/
            - generic [ref=e241]: DELICES, PATRICK
            - generic [ref=e242]: REP
          - link "ROSADO, DAVID DEM" [ref=e243] [cursor=pointer]:
            - /url: /politicians/df60b09d-ce03-7a54-4882-1e1f0990b827/
            - generic [ref=e244]: ROSADO, DAVID
            - generic [ref=e245]: DEM
          - link "BURNS, MICHAEL CRV" [ref=e246] [cursor=pointer]:
            - /url: /politicians/189b676e-5477-0f5c-063b-47e5eaedde55/
            - generic [ref=e247]: BURNS, MICHAEL
            - generic [ref=e248]: CRV
          - link "LICCIONE, MICHAEL CRV" [ref=e249] [cursor=pointer]:
            - /url: /politicians/db50f251-3e6f-dc9a-b499-7a37c42c3176/
            - generic [ref=e250]: LICCIONE, MICHAEL
            - generic [ref=e251]: CRV
          - link "TORRES, RODNEY REP" [ref=e252] [cursor=pointer]:
            - /url: /politicians/05006126-eda4-46c5-5dd0-c0a23e6cf54c/
            - generic [ref=e253]: TORRES, RODNEY
            - generic [ref=e254]: REP
          - link "FRAZIER, ALVAADER UNK" [ref=e255] [cursor=pointer]:
            - /url: /politicians/31891977-b275-7138-5a4e-809b472390dc/
            - generic [ref=e256]: FRAZIER, ALVAADER
            - generic [ref=e257]: UNK
          - link "BROOKS, CURTIS DEM" [ref=e258] [cursor=pointer]:
            - /url: /politicians/acb1e09d-2d4d-eea2-aaeb-e3e6c41c743a/
            - generic [ref=e259]: BROOKS, CURTIS
            - generic [ref=e260]: DEM
          - link "SPAULDING, MARY B (UNREG) RTL" [ref=e261] [cursor=pointer]:
            - /url: /politicians/c52fcaf7-1db8-18a1-fa5f-0f438a66b153/
            - generic [ref=e262]: SPAULDING, MARY B (UNREG)
            - generic [ref=e263]: RTL
          - link "RETCHO, RICHARD CRV" [ref=e264] [cursor=pointer]:
            - /url: /politicians/2a65cbd8-6fa9-6ef7-a82b-ff63be07c732/
            - generic [ref=e265]: RETCHO, RICHARD
            - generic [ref=e266]: CRV
          - link "LOUBREIL, JOSEPH DEM" [ref=e267] [cursor=pointer]:
            - /url: /politicians/301a280a-59d3-31e4-51a6-3a0b7fe692bd/
            - generic [ref=e268]: LOUBREIL, JOSEPH
            - generic [ref=e269]: DEM
          - link "JAFFE, MARK DEM" [ref=e270] [cursor=pointer]:
            - /url: /politicians/99afc6ad-39c6-b569-a5be-ee5f7f82e251/
            - generic [ref=e271]: JAFFE, MARK
            - generic [ref=e272]: DEM
          - link "VALLE, FRANK DELLA REP" [ref=e273] [cursor=pointer]:
            - /url: /politicians/e64da7bf-33fb-1a24-7dfd-55adab413509/
            - generic [ref=e274]: VALLE, FRANK DELLA
            - generic [ref=e275]: REP
          - link "HAYES, EDWARD A DEM" [ref=e276] [cursor=pointer]:
            - /url: /politicians/b9dba73f-03eb-34ae-52e8-7f567c949159/
            - generic [ref=e277]: HAYES, EDWARD A
            - generic [ref=e278]: DEM
          - link "CIAMPOLI, JOHN REP" [ref=e279] [cursor=pointer]:
            - /url: /politicians/92170cc9-2776-e8cc-36a4-4edb15d158cb/
            - generic [ref=e280]: CIAMPOLI, JOHN
            - generic [ref=e281]: REP
          - link "DELLAVALLI, FRANK REP" [ref=e282] [cursor=pointer]:
            - /url: /politicians/03eb72ee-2b21-54f1-e1f8-d8ea4a974f9e/
            - generic [ref=e283]: DELLAVALLI, FRANK
            - generic [ref=e284]: REP
          - link "MOHAMED, ALI REP" [ref=e285] [cursor=pointer]:
            - /url: /politicians/a0c080b8-cb38-c3dc-4814-453ee3a48244/
            - generic [ref=e286]: MOHAMED, ALI
            - generic [ref=e287]: REP
          - link "BERNS, MICHAEL R DEM" [ref=e288] [cursor=pointer]:
            - /url: /politicians/3cd4e337-e507-ad3f-a6e7-ab1d272785ba/
            - generic [ref=e289]: BERNS, MICHAEL R
            - generic [ref=e290]: DEM
          - link "MCLAUGHLIN, JOSEPH REP" [ref=e291] [cursor=pointer]:
            - /url: /politicians/8edc0095-7a1e-1fe6-bfca-f24550f663c9/
            - generic [ref=e292]: MCLAUGHLIN, JOSEPH
            - generic [ref=e293]: REP
          - link "MCMANUS, PATRICK OTH" [ref=e294] [cursor=pointer]:
            - /url: /politicians/beeed207-16f5-11c9-bf73-dff47a115467/
            - generic [ref=e295]: MCMANUS, PATRICK
            - generic [ref=e296]: OTH
          - link "BRISCOE, JOYCE N. DEM" [ref=e297] [cursor=pointer]:
            - /url: /politicians/c286e633-2027-0f72-f992-0a24dac89043/
            - generic [ref=e298]: BRISCOE, JOYCE N.
            - generic [ref=e299]: DEM
          - link "BELVIN, KENNETH LEWIS III DEM" [ref=e300] [cursor=pointer]:
            - /url: /politicians/07c62d7f-edfe-5c4f-62dc-f3d50925dcb8/
            - generic [ref=e301]: BELVIN, KENNETH LEWIS III
            - generic [ref=e302]: DEM
          - link "JUSTICE, AARON REP" [ref=e303] [cursor=pointer]:
            - /url: /politicians/d1d6dfeb-3f50-9982-2622-5e91d0a099a6/
            - generic [ref=e304]: JUSTICE, AARON
            - generic [ref=e305]: REP
          - link "FAULKNER, WILLIAM REP" [ref=e306] [cursor=pointer]:
            - /url: /politicians/4db212ce-5c71-70a6-b27c-8f4e8116e15a/
            - generic [ref=e307]: FAULKNER, WILLIAM
            - generic [ref=e308]: REP
          - link "WALTERS, MICHAEL CRV" [ref=e309] [cursor=pointer]:
            - /url: /politicians/1b6ddd42-45ce-5a93-725a-ff19c13365d6/
            - generic [ref=e310]: WALTERS, MICHAEL
            - generic [ref=e311]: CRV
          - link "WILSON, JOHN FRANKLIN MR IV IND" [ref=e312] [cursor=pointer]:
            - /url: /politicians/22ffb4f0-d267-5a2a-ed6f-590ca589aaa8/
            - generic [ref=e313]: WILSON, JOHN FRANKLIN MR IV
            - generic [ref=e314]: IND
          - link "BAILEY, NAN SWP" [ref=e315] [cursor=pointer]:
            - /url: /politicians/279df17f-8150-8401-0674-be25847f520c/
            - generic [ref=e316]: BAILEY, NAN
            - generic [ref=e317]: SWP
          - link "CASANOVA DOMINGUEZ, MANUEL IGNACIO DEM" [ref=e318] [cursor=pointer]:
            - /url: /politicians/22fedb52-d15b-319e-4cbb-00cd7ae746fa/
            - generic [ref=e319]: CASANOVA DOMINGUEZ, MANUEL IGNACIO
            - generic [ref=e320]: DEM
          - link "PARKER, CATHERINE F DEM" [ref=e321] [cursor=pointer]:
            - /url: /politicians/756a87bc-b664-6fb2-84ce-edb35a4b44bc/
            - generic [ref=e322]: PARKER, CATHERINE F
            - generic [ref=e323]: DEM
        - generic [ref=e324]:
          - generic [ref=e325]: Showing 1-50
          - generic [ref=e326]:
            - button "First" [disabled] [ref=e327]
            - button "Prev" [disabled] [ref=e328]
            - button "1" [ref=e329] [cursor=pointer]
            - button "Next" [ref=e330] [cursor=pointer]
  - contentinfo [ref=e331]:
    - paragraph [ref=e332]:
      - link "elect.info" [ref=e333] [cursor=pointer]:
        - /url: https://us.elect.info/
      - text: "| Data from"
      - link "Federal Election Commission" [ref=e334] [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  | 
  3  | /*
  4  |  * /js/geo-map.js boundary maps (sites#470). Congressional District, County, Place and ZIP Code pages loaded a script
  5  |  * that never existed (a console 404 on every page). The renderer's tag now names the entity's GeoJSON; the script
  6  |  * adds a Boundary section with a Leaflet map. Missing shapes (territory delegate districts) add nothing.
  7  |  */
  8  | 
  9  | const PAGES: Array<[string, string]> = [
  10 |   ['/districts/ny-16/', 'overview'],
  11 |   ['/districts/ak-00/', 'overview'],
  12 |   ['/counties/kerr-county-tx/', 'geography'],
  13 |   ['/places/megargel-cdp-al/', 'geography'],
  14 |   ['/postalcodes/73762/', 'overview'],
  15 | ];
  16 | 
  17 | for (const [path, after] of PAGES) {
  18 |   test(`${path}: boundary map, no missing scripts or shapes`, async ({ page }) => {
  19 |     test.setTimeout(60000);
  20 |     const failures: string[] = [];
  21 |     page.on('response', r => {
  22 |       const url = r.url();
  23 |       if (r.status() >= 400 && /\/(js|geo)\//.test(url)) failures.push(`${r.status()} ${url}`);
  24 |     });
  25 |     page.on('pageerror', e => failures.push(e.message));
  26 |     const res = await page.goto(path);
  27 |     expect(res?.status(), `${path} should answer 200`).toBe(200);
  28 |     const tag = page.locator('script[src="/js/geo-map.js"][data-geo-shape]');
> 29 |     await expect(tag).toHaveCount(1);
     |                       ^ Error: expect(locator).toHaveCount(expected) failed
  30 |     expect(await tag.getAttribute('data-geo-shape')).toMatch(/^\/geo\/(districts|counties|places|zcta)\/.+\.geojson$/);
  31 |     await expect(page.locator('section#boundary[data-loaded="true"] .leaflet-container')).toBeVisible({ timeout: 30000 });
  32 |     expect(await page.locator('section#boundary').evaluate(s => s.previousElementSibling?.id)).toBe(after);
  33 |     await expect(page.locator('section#boundary a', { hasText: 'Boundary as GeoJSON' })).toHaveAttribute('href', /\.geojson$/);
  34 |     expect(failures).toEqual([]);
  35 |   });
  36 | }
  37 | 
```