31dd19d6395d10ee6632bb2afcf1947f33eff3dd braney Sat Sep 12 16:03:40 2026 -0700 docent: ten regression tests for hgTrackUi, refs #38252 Four scripts here already touched hgTrackUi in passing (rm37389, rm37489, rm38126, rm38272). These are about the page itself: the superTrack configuration page, composite and subtrack configuration, filters, the color override, the parent link, and two bad-input paths. rm20460 the color override is offered on a genePred track and not on a chain track, which is the type restriction 6d78a8e2d72 added rm32263 a composite child's page names its container, and the link reaches the container's own configuration page rm34651 the density-graph options div is densGraphOptions<track> and the old shared id is gone rm35906 Clear filters survives a submit: the cart comes back on All, which is what the button only appeared to do before rm36484 the filterComposite select has no stray <br> inside it rm36668 both the rearrangement and density-graph checkboxes on, submitted together, does not crash hgTracks rm36917 the superTrack page's Hide all / Show all / Apply to all controls, and Show all leaving no child hidden rm37130 under noParentConfig both filters are on the jaspar child page and neither is on the parent rm37282 Hide all greys the superTrack's own dropdown, and a child's Hide does not force the container back to show rm37743 a dup_1_refGene request with nothing in the cart errAborts with a message naming it, instead of taking a SIGSEGV All ten are assertion-only. make test is 67 of 67 green: the suite went from 57 scripts to 67 for 14 extra seconds, 10m32s in total, because hgTrackUi draws no image and most of these never leave it. README.txt gains the four things the batch settled. No track image means rows: is unavailable and a positive text: is mandatory, since a crash hands the browser an empty document where every noText: passes. Most hgTrackUi bugs ARE the markup, so naming the id or class the commit changed is the right check here, unlike on hgTracks. A cart round trip is the only way to tell a control that works from one that looks right. And Docent cannot pick an option from a select, so a visibility goes in through the URL and a button is clicked wherever one exists. Two candidates were rejected: #38192's missing-track message is live but the ticket is still Reviewing, and #37840's "add db= to links" is not true of every link on the page today, so a blanket assertion would fail for a reason that is not a bug. diff --git src/hg/utils/docent/tests/regress/rm37282.docent.yaml src/hg/utils/docent/tests/regress/rm37282.docent.yaml new file mode 100644 index 00000000000..0f38fcd3afd --- /dev/null +++ src/hg/utils/docent/tests/regress/rm37282.docent.yaml @@ -0,0 +1,48 @@ +# #37282 -- "Hide/Show hgTrackUi visibility for superTracks". The superTrack settings page +# drove its buttons by setting the dropdown's value and nothing else, so three things were +# wrong at once: hiding every child left the container itself showing, the container's own +# dropdown never greyed out when set to hide, and clicking Hide on one child forced the +# container to show. +# +# 1b1a0aa39ff routes the clicks through the dropdown's change event instead +# (`dropdown.val(buttonText).trigger('change')`), so superT.selChanged() runs and does all +# three, and adds a change handler that swaps normalText for hiddenText on the container's +# own dropdown. The commit says the fix made the code simpler, which is usually a sign the +# first version was working around the event it should have been using. +# +# So this drives the buttons and reads the classes, which is where the behavior is. There +# is no submit and nothing is saved: the assertions are about what the page does as the +# user clicks, which is the whole of this bug. +# +# The third symptom is the last step and it is the one that is easy to lose: a Hide click +# must leave a hidden container hidden. A fix that simply stopped touching the container +# would pass the first two steps and fail nothing else here, so it is stated separately. +proof: + - "assertion-only 2026-09-12 -- written from the ticket and from 1b1a0aa39ff, after the fix shipped" + +target: genome-test +db: hg38 +position: chr1:11102837-11267747 +reset: true +fast: true +steps: + # Start with the container showing and one child on, which is what a user who came from + # the browser image has. + - goto: "/cgi-bin/hgTrackUi?db=hg38&g=wgEncodeReg&wgEncodeReg=show&wgEncodeRegTxn=full" + - expect: + has: 'select.superDropdown.normalText' + noHas: 'select.superDropdown.hiddenText' + + # Hiding every child auto-hides the container, and the container's dropdown greys. + - click: '#superVizHideAllButton' + - sleep: 600 + - expect: + has: 'select.superDropdown.hiddenText' + noHas: 'select.superDropdown.normalText' + + # And a Hide click on a single child does not force the container back to show. + - click: 'div.seg-btn-group[data-trackname="wgEncodeRegTxn"] > button:has-text("Hide")' + - sleep: 600 + - expect: + has: 'select.superDropdown.hiddenText' + noHas: 'select.superDropdown.normalText'