62132f503d586f5172a397772c6ca6af3e8eccfb
braney
  Sun Sep 6 13:16:05 2026 -0700
docent: four more regression scripts, three of them watched to fail

29 scripts now, 28 of the 36 tickets that can have one.  All green against
genome-test.

The suite's standing weakness is that almost nothing in it was ever seen to fail
on a build that still had its bug, so the whole weight sits on assertion
tightness.  Three of these four do not have that problem.  hgwbeta is running
v503 and two of these fixes ship in v504, so the broken behavior was still there
to be read this morning and each assertion was checked against it:

rm38185  empty CGI pair.  hgwbeta lands on chr7:155,799,529-155,812,871,
hg38's default, because the position= after the && is silently lost;
the same pair at the end returns "Mangled CGI input string &".  The
assertion is the position itself, since losing a variable produces no
error to look for.

rm38126  hub description filtering.  The fixture hub is ours and deliberately
malformed.  Every structural check flips: on hgwbeta the chosen id,
the script element and the form input are all still in the DOM, and
on genome-test the id carries the descPage- prefix and the other two
are gone.  has:/noHas: rather than text:, because a script element's
contents are not in innerText on either build -- a noText: there would
have passed everywhere and asserted nothing.  The two text checks
deliberately do not flip: they are what stops the run passing on a
page where the description simply failed to load.

rm36836  a GenArk assembly and an assembly hub opened by URL.  This one was
only ever broken on hgwdev, so genome-test is the only server it could
have been caught on.  It was fixed by reverting #36835, so what the
script guards is a second attempt at that work.

rm38108  the caller-supplied upload address.  No server left to watch it fail
on: the fix is in v503_branch so hgwbeta has it, and the RR is still
on v502 and so still vulnerable -- deliberately not driven there,
since the reproducer's whole effect is to kill the CGI serving it.
hgSession shares the fix but answers the crafted GET with the sign-in
page, so it is not in the script.

New fixture ~braney/docentFixtures/descFilterHub, for rm38126 only.  hubCheck
reports its script and form on purpose: that reporting is the other half of
#38126, and the hub is not to be tidied up.

refs #38252

diff --git src/hg/utils/docent/tests/regress/rm36836.docent.yaml src/hg/utils/docent/tests/regress/rm36836.docent.yaml
new file mode 100644
index 00000000000..411a565e27f
--- /dev/null
+++ src/hg/utils/docent/tests/regress/rm36836.docent.yaml
@@ -0,0 +1,40 @@
+# #36836 -- a GenArk assembly and an assembly hub both crashed when opened by URL, and on
+# hgwdev only.
+#
+# Reported with four URLs: two on hgwdev that crashed and the same two on hgwbeta and hgw0
+# that were fine. That shape is the whole point of the ticket. The code that broke it was
+# only ever on hgwdev, so a release-branch build could not show it and the RR was never
+# affected. genome-test IS hgwdev's build, which is why this test belongs here and would
+# have been worthless anywhere else.
+#
+# It was not fixed so much as withdrawn: Galt reverted the two commits from #36835
+# (0542bdef848 and 289c4a361a8) at Brian's request, over a speed concern that had not been
+# measured. So the behavior asserted here is the behavior from before #36835, and what the
+# script guards against is a second attempt at that work landing the same way.
+#
+# No `db:` at the top on purpose -- neither step uses one. Each URL names its own assembly,
+# which is exactly the gesture the ticket reported, so both are driven with goto: rather
+# than with the hub: verb.
+#
+# The daph hub is a public UCSC example hub on GitHub, not a colleague's public_html, so it
+# is about as durable as an outside fixture gets. preflight reads the hubUrl out of the
+# goto below, so if GitHub ever moves it the nightly says a fixture is missing rather than
+# reporting a browser regression.
+#
+# Both assertions name a real data row, not just the ruler. A crash left no track image at
+# all, so the ruler alone would already fail on it -- but a page that draws the ruler and
+# nothing else is also what an assembly whose tracks did not resolve looks like, and that
+# is the half of this bug that was about hub loading rather than about the CGI staying up.
+# gc5Base is in every GenArk hub, and myTrack is the daph hub's only track. Row names are
+# matched by suffix, so the per-run hub_<n>_ prefix on both does not have to be known.
+target: genome-test
+reset: true
+fast: true
+steps:
+  # The GenArk assembly, by accession, with no hub URL of its own.
+  - goto: "/cgi-bin/hgTracks?db=GCF_000003625.3&pix=1100"
+  - expect: {rows: [ruler, gc5Base], noText: "Warning/Error"}
+
+  # The assembly hub, by genome= plus hubUrl=, at the position the ticket gave.
+  - goto: "/cgi-bin/hgTracks?genome=daph&hubUrl=https://raw.githubusercontent.com/ucsc-browser/assemblyHubEx/master/Daphnia/hubExamples/hubAssembly/daph/hub.txt&position=scaffold_1%3A35591-35626&pix=1100"
+  - expect: {rows: [ruler, myTrack], noText: "Warning/Error"}