2daf01cbbc39c63db64caccf4a87f20a7f2f5f97
braney
  Sat Sep 26 17:43:37 2026 -0700
docent regression scripts for the v503 tickets, refs #38252, #37972, #37987, #37990, #38027, #38033, #38035, #38039, #38071, #38072, #38082, #38087, #38120, #38154, #38155, #38231

One script per ticket. Each one passes on genome-test. Twelve also fail on a v502_branch
build for the reason the script exists, and carry a release-ab proof line. rm38072,
rm38120 and rm38231 can never fail on a released build, and their headers say why.

diff --git src/hg/utils/docent/tests/regress/rm38033.docent.yaml src/hg/utils/docent/tests/regress/rm38033.docent.yaml
new file mode 100644
index 00000000000..91f799d254e
--- /dev/null
+++ src/hg/utils/docent/tests/regress/rm38033.docent.yaml
@@ -0,0 +1,53 @@
+# #38033 -- quickLift reported items it could not lift as "filtered out".  Every item that
+# came back NULL from the lift was counted by the same variable the trackDb filters use
+# (hg/hgTracks/bigBedTrack.c), so a lifted view said "(2 items filtered out)" when no
+# filter had removed anything, and sent the reader hunting for a filter that is not there.
+#
+# b53f0365865 is the fix: it counts the two cases apart and gives the lift failure its own
+# words, " (N items could not be lifted)" (labelAsNotLiftedNumber, hg/lib/trackDbCustom.c).
+# It is in origin/v503_branch and not in origin/v502_branch, so v502 is the baseline with
+# the bug.
+#
+# The window is the one from the ticket's 2026-09-03 note and the tour in
+# ~/genecats/docentTours/rm38033.docent.yaml: ClinVar SNVs on hg38 lifted to hs1, then the
+# round hs1 window chr1:99,960,000-99,980,000, where two variants have no clean mapping
+# through the chain and no filter is set.
+#
+# The label is drawn INTO the track image, so `text:` cannot see it.  The one place it is
+# in the page as text is the hgTracks.trackDb JSON in an inline <script>, which a CSS or
+# Playwright text selector skips, so the checks are XPath over the script text.  Each is
+# anchored on the ClinVar SNV longLabel and reads only the parenthesis that follows it, so
+# another track's label cannot satisfy it.
+#
+#   * has "... < 50bp (" + "items could not be lifted" -- the new wording is there.  On the
+#     buggy build it does not exist at all.
+#   * noHas "items filtered out" on the same label -- this is the bug itself.  On v502 the
+#     same row reads "(2 items filtered out)".
+#
+# The count is not asserted.  ClinVar is reloaded weekly by otto, so the number moves with
+# the data, and the ticket is about which words the count carries, not the count.
+proof:
+  - "assertion-only 2026-09-26 -- written from the ticket and from b53f0365865, after the fix shipped"
+  - "release-ab 2026-09-26 -- fails on v502_branch (park 38304, private trash) at the lifted view: the ClinVar SNV entry says \" items filtered out\" and not \" items could not be lifted\"; passes on genome-test"
+
+target: genome-test
+db: hg38
+position: chr1:100111880-100131880
+reset: true
+fast: true
+steps:
+  - go: chr1:100111880-100131880
+  - hide: all
+  - track: {clinvar: pack, clinvarCnv: hide, clinvarSubLolly: hide}
+  - expect: {rows: [ruler, clinvarMain], exact: true}
+
+  - convert: {to: hs1, quicklift: true, hideDefaults: true}
+  - open: lift
+  - go: chr1:99960000-99980000
+
+  - expect:
+      rows: [ruler, quickLiftChain, clinvarMain]
+      exact: true
+      noText: "Warning/Error"
+      has: 'xpath=//script[contains(substring-before(substring-after(., "Short Nucleotide Variants < 50bp ("), ")"), " items could not be lifted")]'
+      noHas: 'xpath=//script[contains(substring-before(substring-after(., "Short Nucleotide Variants < 50bp ("), ")"), " items filtered out")]'