test: make main green again after the schema change route moved to the pool - #2628
Merged
Conversation
… test cannot raise a modal alert Claude-Session: https://claude.ai/code/session_01NdXqgRevM8nxhW8HXhN7aU
…nnection the save now runs on Claude-Session: https://claude.ai/code/session_01NdXqgRevM8nxhW8HXhN7aU
…us bar cannot swallow the click Claude-Session: https://claude.ai/code/session_01NdXqgRevM8nxhW8HXhN7aU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Main has been red since #2616. Run 33734073855 failed the unit job and one UI shard, and the unit job did not fail so much as stop: it ran for its full 30 minute timeout and was killed.
Three separate problems, one per commit.
The save runs on a pooled connection now, and one test still watched the session driver
#2616 moved
executeSchemaChangesfromexecutionRoutetoschemaChangeRoute, which is the metadata route. It updatedDatabaseManagerSchemaChangeRoutingTeststo seed the pool and leftStructureEditingSessionTestsbehind, soA session applies its staged edits with no view mountedasked the pool to open a connection of its own. No plugin loads under XCTest, so it came back with "MySQL driver plugin not loaded" after ten seconds and every one of the five expectations failed.The test now seeds a pooled driver on the session's own scope, the same way the routing suite does, and asserts the ALTER landed there with the session driver untouched. That is the behaviour #2616 shipped.
The trigger test raised an alert nobody could answer
Apply and drop run on the pooled connectionis the first test to callTriggerEditing.dropend to end. A drop is a.destructiveQuery, soDefaultExecutionGatealways confirms it, andAlertOperationConfirmingruns anNSAlert. With no window to hang a sheet on,AlertHelper.presentfalls through toalert.runModal(), which is a nested modal run loop on the main thread. On a headless runner nothing dismisses it. That is where the job stopped: the last test to report was 23 minutes before the timeout killed it.TriggerEditing.applyanddropnow take their gate, defaulting toExecutionGateProvider.shared, the same shapeCompareSyncExecutoralready uses.AlwaysAllowGateandAlwaysDenyGatemove out ofCompareSyncExecutorTestsintoTableProTests/Helpersso both suites share one.The Structure segment is under the sidebar on the runner
StructureColumnMoveUITestsandStructureTabIdentityUITestsboth failed twice with the result still on Data. The element tree the failure captured says why: the mode picker reportsDataselected with value 1 after the click, and the detail pane's content is laid out 710pt wide starting at x=199 inside a pane that starts at x=354. The runner's screen is 1024x768, and at that width the sidebar, the detail pane and the row inspector do not fit, so the detail content keeps its own width and is drawn under the sidebar. TheStructuresegment's accessibility frame is where the layout says it is, so XCUITest reports it as hittable and posts the click at (314, 691), which lands on the object browser. Nothing fails there, so the suites went on to read the data grid as though it were the structure grid.Four suites carried a byte-identical
showStructurehelper. It moves toUITestCaseand drives View > Result View > Structure instead, which has no geometry to be occluded, then waits for the structure tab picker so the switch is observed rather than assumed. The two suites that right-click inside the grid take their point through a newgridPoint(in:of:dy:)that starts from whichever is further right, the grid's leading edge or the object browser's trailing edge.The underlying layout defect is not fixed here: at 1024pt with the sidebar and inspector open, the detail pane's content overflows both of its neighbours instead of compressing. It is worth its own issue.
Verification
TableProTests: StructureEditingSessionTests, TriggerApplyExecutionTests, DatabaseManagerSchemaChangeRoutingTests, CompareSyncExecutorTests: 30 executed, 30 passed. No hang.TableProUITests: StructureColumnMoveUITests, StructureTabIdentityUITests, StructureConstraintsTabUITests, StructureRowMenuParityUITests: 8 executed, 8 passed. This machine's display is larger than the runner's, so it proves the menu route works, not that the occlusion is gone.https://claude.ai/code/session_01NdXqgRevM8nxhW8HXhN7aU