2b8d9275548bcc9bd161b68f24848b545e1069ef braney Sun Sep 6 14:00:28 2026 -0700 docent: click raw:, and the first two scripts that do anything twice Every one of the 29 scripts in the suite was a straight line: fresh cart, a few steps, assert once. A bug that only exists on the repeat was invisible to that shape, and the closed-bug pool holds several. These are the first two that repeat a gesture. rm36805 click a TOGA item, dismiss the pop-up, click the same item again. One click passes on the broken build as happily as on the fixed one, so the second click is the test. rm27113 three clicks on the centre of the base-position ruler. A single click zooms 3x about the base under the cursor, and the bug drifted that centre one base left each time. Both needed a gesture the language could not express. click: {track, item} follows the item's own map-box href, which is right when the assertion is about the hgc PAGE, but hgTracks answers a real click with an ajax DIALOG (popUpHgcOrHgGene.hgc) and following the href never opens one. raw: true presses the mouse where a user presses it and lets the page answer -- a navigation, a dialog, or a new image in place, whichever arrives, waited for rather than slept through. With no item name it is a bare point on the row, which is the only way to click the ruler at all: the ruler carries no hgc map boxes for areaXY to snap to. Two things measured while writing these, both in the script comments. jQuery UI HIDES a dialog on close rather than removing it, so the assertion has to be has: "#hgcDialog:visible" -- without :visible the second half of rm36805 passes whether or not the pop-up ever comes back. And one base is invisible at the 13kb windows the rest of the suite uses, where a pixel is fourteen bases, so rm27113 starts at 100 bases and its three expected windows are arithmetic rather than three observed strings: every one of them is centred on base 155,806,200. #37014 is the other repeat-click bug in the pool and is deliberately NOT written. Its reproducer no longer reaches the code it was about: 9e9ee32a4c8 (#37878) later excluded crossTissue* tracks from the pop-up path altogether, and the session's track is crossTissueMapsTissueCellType, so the click now navigates and no dialog is involved. Writing it against a different bar chart track would be pinning the ticket to something it was never about. refs #38252 diff --git src/hg/utils/docent/tests/regress/rm36805.docent.yaml src/hg/utils/docent/tests/regress/rm36805.docent.yaml new file mode 100644 index 00000000000..f61db2b4bd0 --- /dev/null +++ src/hg/utils/docent/tests/regress/rm36805.docent.yaml @@ -0,0 +1,48 @@ +# #36805 -- clicking a TOGA item a SECOND time hung the display. +# +# Reported by Hiram on mm10: turn on only "TOGA vs hg38", click an item to get the details +# pop-up, dismiss it, click any item again, and the display hangs. Gerardo's recipe on the +# ticket is exact and is what this follows: load the session, click +# ENST00000518529.SFTA3.1, click the x on the pop-up, click the same item again. +# +# This is the first script here that does anything TWICE. Everything else in the suite is a +# straight line from a fresh cart: reset, a few steps, assert. A bug that only exists on the +# repeat is invisible to that shape, and there are at least two of them in the pool (#36805 +# and #37014). One click of this item passes on the broken build as happily as on the fixed +# one, so the second click is not a flourish, it IS the test. +# +# raw: true on the click is the other half. Docent's ordinary item click follows the item's +# own map-box href straight to hgc, which is the right thing when the assertion is about the +# details PAGE. Here the bug is in the DIALOG: hgTracks answers a real click with an ajax +# pop-up (popUpHgcOrHgGene.hgc in hg/js/hgTracks.js), and following the href never opens one, +# so it could never see this. raw: presses the mouse where a user presses it and lets the +# page do what it does. +# +# :visible matters on both checks. jQuery UI HIDES #hgcDialog on close, it does not remove +# it, so a bare has: "#hgcDialog" would match the closed dialog and the second assertion +# would pass without the pop-up ever coming back. +# +# No build left to watch this fail on: fixed for v492 in December 2025, so hgwbeta and the +# RR have had it for months. +target: genome-test +db: mm10 +reset: true +fast: true +steps: + - loadSession: {user: Gerardo, name: RM_36805_TOGA_hangs} + + # A session that has gone away is not an error -- hgTracks serves a 200 with no image and + # every noText on it passes -- so the row check is what says the session really loaded. + - expect: {noText: "Could not find session", rows: [HLTOGAannotvHg38v1]} + + - click: {track: HLTOGAannotvHg38v1, item: "ENST00000518529.SFTA3.1", raw: true} + - expect: {has: "#hgcDialog:visible"} + + # The x button, which is the gesture the ticket names. Scoped to the visible dialog: the + # page carries more than one jQuery UI dialog in its DOM. + - click: '.ui-dialog:visible .ui-dialog-titlebar-close' + - expect: {noHas: "#hgcDialog:visible"} + + # The whole point. Same item, same gesture, second time. + - click: {track: HLTOGAannotvHg38v1, item: "ENST00000518529.SFTA3.1", raw: true} + - expect: {has: "#hgcDialog:visible"}