The clean task was invalidating the Gradle cache on each build,
making the caching feature ineffective.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The relative paths .gradle/caches and .gradle/wrapper don't exist in the
checkout directory - Gradle stores caches in ~/.gradle/ by default.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add --build-cache and --configuration-cache flags to all gradle steps
in ReleaseDev and ReleaseEap builds to match other build configurations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add disk space cleanup and reduce video recording size for Linux runners:
- Add "Free up disk space" step to remove .NET, Android SDK, GHC, CodeQL
- Reduce Xvfb resolution from 1920x1080 to 1280x720
- Optimize ffmpeg: 15fps, ultrafast preset, crf 28
This aligns with the existing Rider Linux workflow settings.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace UNCLEAR annotations with a properly documented reason explaining why backspace and other special keys fail in Neovim RPC testing. This makes the limitation clear for future developers and consolidates 8 tests under a single, well-explained reason.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace Thread.sleep() with proper waitFor() conditions and explicitly
dismiss notifications to prevent test timeouts.
The testTrackActionId test was failing because the IdeaVim notification
balloon remained visible after clicking "Stop Tracking", causing a 5-second
timeout when waiting for "Copy Action Id" text to disappear.
Changes:
- Replace Thread.sleep(1000) after clicking "Copy Action Id" with waitFor
condition that checks for "Stop Tracking" button to appear
- Remove Thread.sleep(1000) after clicking "Stop Tracking"
- Add explicit notification dismissal using Escape key
- Increase timeout for final waitFor to 3 seconds to allow dismissal
This follows the cause-effect principle for UI tests by waiting for
specific UI conditions rather than arbitrary timeouts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
PyCharm now opens with a project directly instead of showing the Welcome Frame. Removed the project creation logic and unused imports.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add explicit cache-read-only: false to ensure Gradle cache
is properly written and read on macOS builds, matching the
configuration used in the unified IntelliJ workflow.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The RiderUiTest was failing because it didn't handle the .NET SDK
installation dialog that appears when creating a new Rider project
in a fresh environment.
Root cause:
- When the "New Solution" dialog opens, Rider detects that no .NET SDK
is installed and shows an "Install" button
- The "Create" button remains disabled until the SDK is installed
- The test was trying to click the disabled "Create" button, which
failed silently, leaving the dialog open
- The test then timed out waiting for the main IDE frame to appear
Changes:
1. Added SDK installation handling in startNewProject():
- Detects and clicks the "Install" button if present
- Waits 10 seconds for SDK installation to complete
- Waits additional 2 seconds before clicking Create
2. Made license frame handling optional:
- Wrapped manageLicensesFrame in try-catch
- Prevents failure if license is already activated
3. Increased timeouts for project creation:
- Extended IDE frame lookup timeout from 10s to 60s
- Added 5-second wait after clicking Create button
- These changes accommodate the time needed for project creation
Test results:
- Test now passes successfully (100% pass rate)
- Duration: ~1 minute (previously timed out at ~20 seconds)
- All test assertions pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The test was failing because both the "Activation code" radio button
and the text input field share the same accessiblename attribute.
The XPath selector "//div[@accessiblename='Activation code']" was
matching both elements, causing the test to fail when trying to set
text on the first match (the radio button, which is not a JTextComponent).
Solution: Add a classhierarchy filter to the XPath to ensure we only
match the text input field component (JTextComponent), not the radio button.
This fix makes the selector more specific and prevents the ambiguity
that was causing the test failure.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The UI test was failing because it relied on an obfuscated class name 'W'
to locate the activation code text field. The class name changed to 'Y' in
a recent version of JetBrains Rider, causing the test to fail with
NoSuchElementException.
This change uses the stable 'accessiblename' attribute instead, which:
- Is more stable across UI updates
- Is semantically meaningful and self-documenting
- Follows accessibility best practices
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>