@@ -86,14 +86,14 @@ Beyond migrating to a new framework, this will be an opportunity to rethink and
8686 2 . Likelihood: Medium
8787 3 . Mitigation:
8888 1 . Id resolution feedback for in UI.
89- 2 . Implemented as experimental feature to be able to view old and new animal history results side-by-side.
89+ 2 . Implemented as admin feature initially to be able to view old and new animal history results side-by-side.
9090 3 . Manual testing with test data.
9191 4 . Regression test coverage.
92922 . Risk: Incorrect data sent to reports
9393 1 . Impact: High
9494 2 . Likelihood: Medium
9595 3 . Mitigation:
96- 1 . Implemented as experimental feature to be able to view old and new animal history reports side-by-side.
96+ 1 . Implemented as admin feature initially to be able to view old and new animal history reports side-by-side.
9797 2 . Manual testing with test data.
9898 3 . Regression test coverage across all reports for each center.
9999
@@ -1362,38 +1362,80 @@ Add tracking for:
13621362 - Verify resolution finds ID regardless of stored casing
13631363 - Enter same ID in uppercase, verify same result
13641364
1365+ 12 . ** Very Long IDs**
1366+ - Enter a single ID with 500+ characters
1367+ - Click "Search By Ids"
1368+ - Verify ID is processed without truncation or error
1369+ - Verify ID appears in "Not Found" section (assuming no match)
1370+ - Enter a single ID with 2000+ characters
1371+ - Verify no browser/UI freeze or crash
1372+ - Verify appropriate handling (either processed or reasonable error)
1373+ - Enter 50 IDs where each ID is 100 characters long
1374+ - Verify all IDs are parsed and processed correctly
1375+ - Verify URL hash doesn't exceed browser limits when bookmarking
1376+
1377+ 13 . ** Special Characters in IDs (Beyond Separators)**
1378+ - ** URL-sensitive characters:** Enter IDs containing ` & ` , ` = ` , ` ? ` , ` # ` , ` % ` , ` + `
1379+ - Example: "ID&123", "ID=456", "ID?789", "ID#ABC", "ID%20DEF", "ID+GHI"
1380+ - Verify characters are preserved literally, not interpreted as URL parameters
1381+ - Verify URL hash encoding works correctly when bookmarking
1382+ - ** Quote characters:** Enter IDs containing single quotes, double quotes, backticks
1383+ - Example: "ID'123", "ID\" 456", "ID\` 789"
1384+ - Verify no JavaScript errors or injection issues
1385+ - Verify IDs appear in "Not Found" section (assuming no match)
1386+ - ** HTML/XSS characters:** Enter IDs containing ` < ` , ` > ` , ` & ` , script tags
1387+ - Example: "ID<123>", "ID& ; 456", "<script >alert(1)</script >"
1388+ - Verify characters are escaped in display, no XSS execution
1389+ - Verify feedback section renders safely
1390+ - ** Regex metacharacters:** Enter IDs containing ` * ` , ` . ` , ` [ ` , ` ] ` , ` ^ ` , ` $ ` , ` ( ` , ` ) ` , ` { ` , ` } ` , ` | ` , ` \ `
1391+ - Example: "ID* 123", "ID.456", "ID[ 789] ", "ID^ABC", "ID$DEF", "ID(GHI)", "ID\\ JKL"
1392+ - Verify characters are treated literally, not as regex patterns
1393+ - Verify no regex evaluation errors
1394+ - ** Unicode and international characters:** Enter IDs with accented letters, CJK characters, emoji
1395+ - Example: "IDéàü123", "ID中文456", "ID🐒789"
1396+ - Verify characters are preserved and displayed correctly
1397+ - Verify encoding works in URL hash
1398+ - ** Whitespace variations:** Enter IDs with leading/trailing spaces, multiple spaces, non-breaking spaces
1399+ - Example: " ID123 ", "ID 456", "ID\u00A0789" (non-breaking space)
1400+ - Verify trimming behavior is consistent
1401+ - Verify non-breaking spaces are handled appropriately
1402+ - ** Null and control characters:** Enter IDs with embedded null bytes or control characters
1403+ - Example: "ID\x00123", "ID\x01456"
1404+ - Verify no crash or security issue
1405+ - Verify sanitization removes or escapes dangerous characters
1406+
13651407### All Animals Mode
13661408
1367- 12 . ** View All Animals**
1409+ 14 . ** View All Animals**
13681410 - Click "All Animals" button
13691411 - Verify ID input textarea is cleared and hidden
13701412 - Verify reports display data for all animals in database
13711413 - Verify no ID filters applied
13721414 - Test with multiple report tabs
13731415
1374- 13 . ** URL Bookmarking - All Animals**
1416+ 15 . ** URL Bookmarking - All Animals**
13751417 - While in All Animals mode, copy URL
13761418 - Open URL in new browser tab
13771419 - Verify All Animals mode is active
13781420 - Verify all animals shown
13791421
13801422### All Alive at Center Mode
13811423
1382- 14 . ** View Alive Animals (Supported Report)**
1424+ 16 . ** View Alive Animals (Supported Report)**
13831425 - Navigate to report with ` supportsNonIdFilters = true `
13841426 - Verify "All Alive at Center" button is enabled
13851427 - Click "All Alive at Center"
13861428 - Verify reports show only animals with ` Id/Demographics/calculated_status = 'Alive' `
13871429 - Verify ID input is cleared/hidden
13881430
1389- 15 . ** Disabled for Unsupported Reports**
1431+ 17 . ** Disabled for Unsupported Reports**
13901432 - Navigate to report with ` supportsNonIdFilters = false `
13911433 - Verify "All Alive at Center" button is disabled/grayed out
13921434 - Hover over button, verify tooltip explains why disabled
13931435 - Switch to another report with ` supportsNonIdFilters = true `
13941436 - Verify button becomes enabled
13951437
1396- 16 . ** Report Tab Switching**
1438+ 18 . ** Report Tab Switching**
13971439 - Start in All Alive at Center mode on supported report
13981440 - Switch to report tab with ` supportsNonIdFilters = false `
13991441 - Verify "All Alive at Center" button becomes disabled
@@ -1407,15 +1449,15 @@ Add tracking for:
14071449
14081450### URL Params Mode (Read-Only)
14091451
1410- 17 . ** Shared Link with Subjects**
1452+ 19 . ** Shared Link with Subjects**
14111453 - Perform ID search for 3 animals, get results
14121454 - Generate shareable URL with ` readOnly=true ` parameter
14131455 - Open URL in incognito/private browser window
14141456 - Verify SearchByIdPanel is completely hidden (no filter buttons, no textarea, no summary)
14151457 - Verify reports display data for the 3 animals immediately
14161458 - Verify clean presentation suitable for sharing
14171459
1418- 18 . ** Exit ReadOnly Mode via URL Edit**
1460+ 20 . ** Exit ReadOnly Mode via URL Edit**
14191461 - From URL Params mode (shared link with readOnly=true)
14201462 - Manually edit URL to remove ` readOnly:true ` from hash
14211463 - Verify SearchByIdPanel now visible
@@ -1424,15 +1466,15 @@ Add tracking for:
14241466 - Modify ID list, click "Search By Ids"
14251467 - Verify new IDs resolve and reports update
14261468
1427- 19 . ** Bookmark with Many Subjects**
1469+ 21 . ** Bookmark with Many Subjects**
14281470 - Create URL Params mode link with 50 animal IDs
14291471 - Bookmark the URL
14301472 - Close browser, reopen bookmark
14311473 - Verify exactly 50 animals display correctly
14321474 - Verify no ID limit validation (URL Params mode bypasses 100 limit)
14331475 - Verify URL hash length doesn't cause browser issues
14341476
1435- 20 . ** URL with Subjects but No readOnly Flag**
1477+ 22 . ** URL with Subjects but No readOnly Flag**
14361478 - Build URL with subjects in hash but without ` readOnly=true ` parameter
14371479 - Navigate to URL
14381480 - Verify ID Search mode active (not URL Params mode)
@@ -1441,31 +1483,31 @@ Add tracking for:
14411483
14421484### Filter Mode Switching
14431485
1444- 21 . ** ID Search → All Animals**
1486+ 23 . ** ID Search → All Animals**
14451487 - Enter 5 animal IDs, click "Search By Ids"
14461488 - Verify reports show 5 animals
14471489 - Click "All Animals" button
14481490 - Verify ID textarea is cleared
14491491 - Verify reports now show all animals
14501492
1451- 22 . ** All Animals → ID Search**
1493+ 24 . ** All Animals → ID Search**
14521494 - While in All Animals mode showing all animals
14531495 - Enter animal IDs in textarea and click "Search By Ids"
14541496 - Verify ID resolution occurs
14551497 - Verify reports update to show only entered animals
14561498
1457- 23 . ** ID Search → All Alive at Center**
1499+ 25 . ** ID Search → All Alive at Center**
14581500 - From ID Search with 5 animals
14591501 - Click "All Alive at Center" button (on supported report)
14601502 - Verify ID textarea cleared
14611503 - Verify reports now show only alive animals (not just the 5)
14621504
1463- 24 . ** All Alive at Center → ID Search**
1505+ 26 . ** All Alive at Center → ID Search**
14641506 - From All Alive at Center mode
14651507 - Enter animal IDs in textarea and click "Search By Ids"
14661508 - Verify can return to ID search with specified animals
14671509
1468- 25 . ** Browser Back/Forward Navigation**
1510+ 27 . ** Browser Back/Forward Navigation**
14691511 - Perform ID search for 3 animals
14701512 - Click "All Animals"
14711513 - Click browser back button
@@ -1476,13 +1518,13 @@ Add tracking for:
14761518
14771519### Cross-Report Consistency
14781520
1479- 26 . ** Data Consistency Across Report Types**
1521+ 28 . ** Data Consistency Across Report Types**
14801522 - Search for 3 animals
14811523 - Navigate through all report tabs (Demographics, Weight, Housing, etc.)
14821524 - Verify all reports show same 3 animals
14831525 - Verify filter is maintained across tabs
14841526
1485- 27 . ** Single vs Multi-Animal Report Variants**
1527+ 29 . ** Single vs Multi-Animal Report Variants**
14861528 - Search for 1 animal
14871529 - Verify reports using single-animal view layout
14881530 - Search for 10 animals
0 commit comments