7aba31f14aed7f2620e4746b54f9569a5c93e1ad
braney
  Sat Sep 12 15:07:34 2026 -0700
docent: ten regression tests for quickLift, on hgTracks and on hgc, refs #38252

Fourteen scripts here already lift something -- they are the ones that call
`convert: {quicklift: true}` -- so these take the parts of the lift that had no
test.  Five read the lifted image and five read a details page:

rm38032  the target keeps the source's track order.  First use of `ordered:`,
which was added to expect: for this bug
rm38042  a ClinVar CNV running past the chains quickLift loads is clipped
rather than dropped, so the spanned-item merge still has it
rm37646  a lolly composite subtrack lifts, and its map boxes still carry its
own track name -- the string the stale pop pointer clobbered
rm36048  the spanned-item merge still works on a lifted DECIPHER track
rm37815  "Hide all default tracks on the target" hides all six of hs1's own
tracks and keeps the lifted one
rm36059  a lifted GENCODE Versions item gives the real details page, in
destination coordinates, with no "Can't start query"
rm36370  a lifted knownGene click renders GeneReviews and Methods, the two
sections the ticket says were missing
rm36125  a lifted RefSeq item's page, and its Predicted Protein link
returning SHH's peptide instead of a blank page
rm36942  the Alignment Differences description, reached from a difference
item: the four colors and the figure
rm38146  the same page with a GenArk assembly as the SOURCE, down to the base
alignment that reads query bases out of a two bit file

All ten are assertion-only: every fix shipped long ago.  make test is 57 of 57
green in 10m18s, up from 7m34s -- each script costs a convert, about 17 seconds,
because no URL builds a quickLift hub.

README.txt gains what the batch cost.  A lifted row and map box carry a per-run
hub_<n>_ prefix, so rows: matches by suffix and a has: selector must use a
substring.  Never assert a count an otto reload can move: rm38042 and rm36048
both read the merged-item box and leave its count (45 for ClinVar today) to a
comment.  And a details page prints the track's own labels whether or not it
worked, so each hgc assertion names something only the fixed page has.

Three candidates were rejected: #38033's "(N items could not be lifted)" label
is only in the drawn image and the page JSON, where no expect: check reaches it;
#37970 needs a broadPeak track and hg38 has none; #37974's center-label drag is
pixels.

diff --git src/hg/utils/docent/tests/regress/rm36048.docent.yaml src/hg/utils/docent/tests/regress/rm36048.docent.yaml
new file mode 100644
index 00000000000..1d104a1a82f
--- /dev/null
+++ src/hg/utils/docent/tests/regress/rm36048.docent.yaml
@@ -0,0 +1,42 @@
+# #36048 -- the mergeSpannedItems setting stopped working on a quickLifted track.  Gerardo
+# reported that DECIPHER CNVs merge on hg38 when you zoom in, and after a QuickLift to hs1
+# they do not merge at any zoom, down to a single base.
+#
+# mergeSpannedItems collapses every item that spans the whole window into one synthetic
+# "mergedItem" (hg/hgTracks/bigBedTrack.c, MERGESPAN_TDB_SETTING).  The lifted track lost
+# that, so a window inside a large CNV drew one line per variant instead of one merged box.
+# Fixed in 802ca99f5f0 / a8f3e257363.
+#
+# The merged box is what the assertion reads, on the source and then on the target, and the
+# COUNT in its tooltip is deliberately not asserted: DECIPHER is reloaded by an otto cron,
+# so the number moves with the data and a nightly red would be news about DECIPHER rather
+# than about quickLift.
+#
+# rm38042 reads the same box for a different reason -- there the items were dropped by the
+# lift before they could reach the merge.  Here they lift and the merge itself is what went
+# missing.  Read the two together before changing either.
+#
+# `data-tooltip` and not `title`: hgTracks writes both on a map box and the page's own
+# tooltip code moves the title out of the DOM once its JavaScript has run.
+proof:
+  - "assertion-only 2026-09-12 -- written from the ticket after the fix shipped"
+
+target: genome-test
+db: hg38
+position: chr7:155799529-155812871
+reset: true
+fast: true
+steps:
+  - go: chr7:155799529-155812871
+  - hide: all
+  - track: {decipherContainer: show, decipher: pack}
+  - expect:
+      rows: [decipher]
+      has: 'area[data-tooltip^="Merged "]'
+
+  - convert: {to: hs1, quicklift: true, hideDefaults: true}
+  - open: lift
+  - expect:
+      rows: [decipher]
+      has: 'area[data-tooltip^="Merged "]'
+      noText: "Warning/Error"