Update parsing of ScrollContainer and TabControl#219
Update parsing of ScrollContainer and TabControl#219NikolaSimsic wants to merge 1 commit intomendixlabs:mainfrom
Conversation
AI Code ReviewCritical IssuesNone Moderate IssuesNone Minor Issues
What Looks Good
RecommendationApprove the PR. The fix correctly resolves the described issue with minimal, focused changes. While adding a test case would be ideal, the bug fix itself is correct and addresses a clear gap in the existing functionality. The changes are consistent with the codebase patterns and don't introduce any risks. Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
ReviewThe Go code changes are legitimate bug fixes, but the motivation and framing are for an external tool, not for mxcli itself. What's correct
Concerns
VerdictThe parser fix is correct and valuable — mxcli genuinely couldn't see inside these containers. Approve after (2) a test is added and (3) tab-page structure is preserved or explicitly noted as a follow-up. The PR description should be reframed around the mxcli bug, not the external Python script. |
The problem:
When mxcli runs DESCRIBE PAGE, it walks the widget tree in the .mpr BSON and outputs every widget with its ID. The Python extractor (extract_mendix_artifacts.py) then parses that output to build the artifact map. But two container widget types were not traversing their children:
ScrollContainer — Mendix stores its children in CenterRegion.Widgets, not in Widgets directly (like most other containers). So mxcli saw the ScrollContainer itself but never recursed into it — every widget nested inside a ScrollContainer was invisible.
TabControl — Mendix stores children in TabPages[].Widgets (an array of tab pages, each with its own Widgets array). Same problem — mxcli saw the TabControl but not the widgets on each tab.
The impact on test impact analysis:
Without this fix, the extractor was missing 115 widget IDs (509 → 624 after the fix). Those missing IDs meant the linkage map couldn't connect certain test tags to their Mendix project artifacts. Any test that asserted on a widget inside a ScrollContainer or TabControl had a broken linkage — the system wouldn't know which page (and therefore which appdev code) that test exercises.
In short: mxcli couldn't see inside these two container types → extractor missed widgets → linkage map had gaps → test impact analysis would have blind spots for those areas.