4bf8479a43a493e2899953b7358c9464abbc3959
braney
  Wed Sep 23 17:15:55 2026 -0700
docent: regression scripts load sessions from text files, not from one machine's hgcentral, refs #38252

A named session runs only on the machine whose hgcentral holds it, so hgwbeta and the RR
answered "Could not find session".  The sessions are now text files in
regress/sessionFiles, saved with hgSession's own save to file, and the scripts load them
by raw GitHub URL.  rm36805, rm35580 and rm36340 pass on genome-test and hgwbeta.

rm36340's session held its custom tracks as a customTrash table on genome-test.  The
track source is a file of its own now, loaded through hgt.customText, without two
commented-out tracks whose URLs carry a password.  Its first check now asks for a custom
track row and the hub's row, and fails when the session file does not load.

A lifted session cannot be a file: it names its quickLift hub by a path on the server
that made it, and re-pointing it does not work (#38046).  rm37388, rm37389 and rm38272
build that lift in steps instead, the GenArk GCA_018466835.2 mitochondrion lifted to hg38,
and pass on genome-test and hgwbeta.  rm38272 also fails on genome.ucsc.edu (v503) at its
settings page, with the bug's own error, so it gains a release-ab proof line.

diff --git src/hg/utils/docent/tests/regress/rm37389.docent.yaml src/hg/utils/docent/tests/regress/rm37389.docent.yaml
index 00c2ce748b1..85637739f88 100644
--- src/hg/utils/docent/tests/regress/rm37389.docent.yaml
+++ src/hg/utils/docent/tests/regress/rm37389.docent.yaml
@@ -1,53 +1,59 @@
 # #37389 -- the track description was missing from a quickLifted hgc page when the source
 # assembly is a GenArk hub.
 #
 # It was broken twice and by different causes, which is why the comment is long.
 #
 # The v498 fix (5aed2d465f1) filled in a TODO branch in getTrackHtml() (hg/lib/hui.c) that
 # had done nothing whenever quickLiftDb named a hub assembly. That fix works.
 #
 # Then 1258d7f65e7 ("trackHub: keep a description a track inherited from its parent", refs
 # #38126) broke it again on master, and only on master: measured 2026-09-05, v502 and v503
 # both drew the description and the tip did not. It made trackHubAddOneDescription return
 # early rather than assign a failed fetch, so tdb->html keeps a non-NULL value; hgc's
 # getHtmlFromSelfOrParent asked `tdb->html == NULL` before falling back to the source hub,
 # that test stopped holding, and getTrackHtml was never called. Filed as #38275 and fixed
 # in 4be6477ebcb by asking isEmpty() instead.
 #
 # So this script has now watched the behaviour break and come back, which is more than the
 # rest of the suite can say. It was an .xfail between the two.
 #
-# The session is braney/crash1, the same one rm37388 uses, because it pins a state that is
-# awkward to build in steps: hg38 with a quickLift hub active whose source is the GenArk
-# GCA_018466835.2, and an xenoRefGene track from that hub. rm38272 uses it too, so preflight
-# covers it for all three.
+# The state is the one rm37388 builds: hg38 with a quickLift hub active whose source is the
+# GenArk GCA_018466835.2, and an xenoRefGene track from that hub.  It used to come from the
+# saved session braney/crash1, which only genome-test could load; it is built in steps now.
 #
 # A separate from-scratch reproduction, which needs no session at all and can be pointed at
 # any server, is kept at
 # /hive/groups/browser/redmineNotes/38252/claude/repro_37388_hgTrackUi.js -- it was written
 # for #38272 but walks the same ground. There is also a Docent tour of this bug at
 # ~/docentTours/bugs/rm37389.docent.yaml, recorded while it was broken.
 proof:
   - "caught-regression 2026-09-05 -- 1258d7f65e7 broke the description again on the tip only, v502 and v503 still drew it; filed as #38275, fixed in 4be6477ebcb and green again"
 
 target: genome-test
 db: hg38
 reset: true
 fast: true
 steps:
-  - loadSession: {user: braney, name: crash1}
-  - expect: {noText: "Could not find session"}
+  # The lifted view is built in steps, not loaded from a session.  A quickLift session names
+  # its hub by a path on the server that made it, and re-pointing it does not work (#38046),
+  # so braney/crash1 ran only on genome-test.  These steps run on any server.  They lift the
+  # mitochondrion of GenArk GCA_018466835.2 to hg38, the state crash1 held.
+  - goto: "/cgi-bin/hgTracks?db=GCA_018466835.2&position=chrMT_JAGYVI020000079v1_random:1-16566&pix=1100"
+  - expect: {rows: [xenoRefGene]}
+  - goto: "/cgi-bin/hgConvert?db=GCA_018466835.2&position=chrMT_JAGYVI020000079v1_random:1-16566&hglft_toOrg=Human&hglft_toDb=hg38&doQuickLift=on&hglft_doConvert=submit"
+  - click: 'a[href*="hgTracks?"][href*="quickLift."]'
+  - expect: {rows: [xenoRefGene], text: "chrM"}
 
   - click: {track: xenoRefGene, item: "NM_126741.2"}
 
   # The page itself is fine -- that is #37388, which is fixed and has its own script. What
   # is missing is only the description block.
   - expect: {noText: "Couldn't set connection database", text: "Item: NM_126741.2"}
 
   # The assertion this script exists for. "RefSeq mRNAs mapped to this assembly" is the
   # longLabel and is on the page whether or not the description rendered, so neither half of
   # this is that: "Description" is the heading printTrackHtml writes above the block, and the
   # second is a phrase out of the hub's own description file, which is the only thing that
   # can only be there if the file was really fetched from the GenArk hub.
   - expect: {text: "Description"}
   - expect: {text: "translated blat alignments"}