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/rm36340.docent.yaml src/hg/utils/docent/tests/regress/rm36340.docent.yaml
index 6de79bbeb3d..1581ce0a8d3 100644
--- src/hg/utils/docent/tests/regress/rm36340.docent.yaml
+++ src/hg/utils/docent/tests/regress/rm36340.docent.yaml
@@ -1,53 +1,64 @@
 # #36340 -- a search-result click after a quickLift could not find the source coordinate.
 #
 # Gerardo's steps: load his session, QuickLift to human HG02257.pat 2021, search "brca2" on
 # the lifted view, and click the BRCA2 hit under "MANE Select Plus Clinical". The result was
 #
 #     Sorry, couldn't locate chr13:32315508-32400268 in HG02257.alt.pat.f1_v2 May 2021
 #     human (HG02257.pat 2021)
 #
 # -- the hit carried the SOURCE assembly's coordinate and the target could not resolve it.
 # Same error from the "NCBI Gene Orthologs" hit.
 #
 # The target is named by ACCESSION, not by label, and that is not cosmetic here. GenArk
 # carries two releases whose labels differ only in punctuation, and for this sample they
 # swap haplotype between them: GCA_018466835.1 is HG02257 PAT (2021) while
 # GCA_018466835.2 is HG02257 MAT (2024). A label fragment like "HG02257.pat" would be one
 # hub update away from matching the wrong assembly.
 #
 # The session is Gerardo's own, kept because what it holds -- a custom track plus a hub on
-# hg38 -- is what made the search return several kinds of hit.
+# hg38 -- is what made the search return several kinds of hit.  It is the text file
+# sessionFiles/quickLift_CT_hub.txt now, so the script runs on any server.  The saved
+# session held its 43 custom tracks as a file and a customTrash table on genome-test; the
+# text file loads them from sessionFiles/quickLift_CT_hub.ct.txt through hgt.customText
+# instead.  That is Gerardo's track suite without two commented-out tracks whose URLs carry
+# a password.
 proof:
   - "assertion-only 2026-09-05 -- written from the ticket after the fix had shipped"
 
 target: genome-test
 db: hg38
 reset: true
 fast: true
 steps:
-  - loadSession: {user: Gerardo, name: quickLift_CT_hub}
-  - expect: {noText: "Could not find session"}
+  - loadSession: "https://raw.githubusercontent.com/ucscGenomeBrowser/kent/master/src/hg/utils/docent/tests/regress/sessionFiles/quickLift_CT_hub.txt"
+  # What says the session really loaded: its custom tracks and its hub are drawn.  A custom
+  # track's row name ends in a number that changes with every load, and a hub's number is
+  # assigned by each server, so both are matched by the part that does not change.
+  - expect:
+      has:
+        - 'tr[id^="tr_hub_"][id$="_brcaVariants"]'
+        - 'tr[id^="tr_ct_1bed3"]'
 
   - convert: {to: GCA_018466835.1, quicklift: true}
   - open: lift
   - expect: {noText: "Sorry, couldn't locate"}
 
   - goShow: "brca2"
   - expect: {url: "/hgSearch", noText: "Sorry, couldn't locate"}
 
   # The first BRCA2 hit on the results page. Which of the several hits it is does not
   # matter much -- they all resolve to the same gene span -- but where it LANDS matters a
   # great deal, and that is what the next step reads.
   - click: 'a:has-text("BRCA2")'
 
   # This is the assertion the script exists for, and noText: is the weaker half of it.
   # The bug sent the click at the SOURCE coordinate, chr13:32,315,508-32,400,268, which the
   # target cannot resolve. Fixed, the click lands on the target's own contig:
   # JAGYVI010000002.1:12,922,586-13,007,328, measured 2026-09-05, and 84,742 bases wide
   # against BRCA2's 84,760 on hg38. Naming the source coordinate in noUrl: is what makes
   # this fail on the buggy build rather than merely pass on the fixed one.
   - expect:
       url: "position=JAGYVI010000002.1%3A12922586"
       noUrl: "chr13%3A32315508"
       noText: "Sorry, couldn't locate"
       rows: [mane, knownGene]