feat(java): :sparkles: adding windows support
Closes: #519
Type of changes?
- [ ] Bug fixes: Non-breaking change which fixes an issue
- [x] New feature: Non-breaking change which adds a new feature
- [ ] Performance improvement: Non-breaking change which improves performance
- [ ] Documentation: Non-breaking change which improves documentation
- [ ] Other: Non-breaking change which does not fit into the above categories
- [ ] Breaking change: A breaking change which requires a new version of the library
Checklist for Java project
- [ ] Change not related to Java project
Following checklists are optional if above checkbox is selected:
- [x] Copyright banner comment added to newly added files, except
*.md,*.yml,*.json?- [x] Proper JavaDoc updated in main and test classes for all public classes and methods?
- [ ] Tests added for changes?
- [ ] Tests are passing locally?
- [x] Check style checks are passing locally?
- [ ] Test coverage is at least 80% for newly added changes?
- [x] There are no SonarCloud issues?
- [x] README updated? (if applicable)
- [ ] Documentation website updated for the PR raised?
Checklist for Website
- [ ] Change not related to Website project
Following is optional if above checkbox is selected:
- [ ] Lint check passes locally?
- [ ] Prettier check passes locally?
- [ ] Build command working fine locally?
Reviewers
@BoykaFramework/boyka-core
[!IMPORTANT] Make sure to check the
Allow edits from maintainersbox below this window
Summary by CodeRabbit
-
New Features
- Added Windows desktop automation support across the framework.
- Expanded app configuration with path, arguments, working directory, top-level window, and launch timeout.
- Added machine options for experimental mode and configurable system port.
- Enhanced locator support for Windows elements.
-
Tests
- Introduced Windows desktop test suite.
- Included Windows results in aggregated test reports.
-
Documentation
- Added autogenerated Nx workspace guidance.
-
Chores
- Upgraded tooling and dependencies (NX, TypeScript, React, ESLint, etc.).
- Enabled editor setting to generate AI agent rules.
- Added Windows desktop tests to CI workflow.
Walkthrough
Adds Windows desktop support across core Java: new WindowsManager, enum/platform additions, Locator update, and configuration fields. Introduces a Windows TestNG suite and GitHub Actions job to run Windows desktop tests and include their reports. Updates VSCode setting, adds Nx guidance doc, and bumps various package versions.
Changes
| Cohort / File(s) | Summary |
|---|---|
Docs: Nx guidance.github/instructions/nx.instructions.md |
Adds auto-generated Nx Console guidance for workspace exploration, generators, and task handling. |
CI: Windows desktop tests.github/workflows/test-core.yml |
Adds test-desktop-windows job using shared workflow; updates report job dependencies and artifact download for Windows reports. |
Editor settings.vscode/settings.json |
Enables nxConsole.generateAiAgentRules; retains TypeScript workspace TSDK. |
Core Java: platform/enumscore-java/src/main/java/io/github/boykaframework/enums/AutomationType.java, .../enums/OS.java, .../enums/PlatformType.java |
Introduces WINDOWS constants and related automation name; minor enum formatting updates. |
Core Java: locators/builderscore-java/src/main/java/io/github/boykaframework/builders/Locator.java |
Adds windows locator field and getter; getLocator() handles WINDOWS platform. |
Core Java: config - application/machinecore-java/src/main/java/io/github/boykaframework/config/ui/desktop/machine/ApplicationSetting.java, .../MachineSetting.java |
Adds application fields (arguments, launchTimeout, path, topLevelWindow, workingDir) and machine fields (experimental, systemPort with default 4724). |
Core Java: driver managementcore-java/src/main/java/io/github/boykaframework/manager/DriverManager.java, .../manager/WindowsManager.java, .../manager/DriverSession.java |
Adds WindowsManager for Windows desktop Appium setup, integrates WINDOWS handling in DriverManager and language settings (returns null). |
Tests: Windows suitecore-java/test-suites/testng-desktop-windows.xml |
Adds TestNG suite config for desktop tests (Windows-targeted file; class references Mac calculator test per file content). |
Tooling versionspackage.json, website/package.json |
Bumps Nx, TypeScript, ESLint ecosystem, React/ReactDOM, pnpm; no script changes. |
Sequence Diagram(s)
sequenceDiagram
autonumber
actor QA as Tester
participant DM as DriverManager
participant WM as WindowsManager
participant SS as Session (Service URL)
participant AD as Appium WindowsDriver
QA->>DM: createDriver(platform=WINDOWS)
DM->>DM: detect platform & start desktop Appium path
DM->>WM: new WindowsManager(session)
DM->>WM: setupDriver()
activate WM
WM->>WM: setCommonOptions(machine settings)
WM->>WM: setApplicationOptions(app settings)
WM->>WM: setTimeoutOptions(timeouts)
WM->>SS: getServiceUrl()
WM->>AD: createDriver(url, WindowsOptions)
alt session not created
WM->>WM: handleAndThrow(SESSION_NOT_STARTED)
else success
WM-->>DM: WindowsDriver
end
deactivate WM
DM-->>QA: Driver instance
note over DM,WM: WINDOWS handled as first-class desktop platform
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~60 minutes
Poem
A rabbit taps the Windows pane,
New drivers hum along the lane.
Enums bloom, locators grow,
Appium starts—off we go!
CI collects the carrot reports,
While Nx leaves trailhead sorts.
Hippity-hop, the tests now flow.
[!TIP]
🔌 Remote MCP (Model Context Protocol) integration is now available!
Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.
✨ Finishing Touches
- [ ] 📝 Generate Docstrings
🧪 Generate unit tests
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
- [ ] Commit unit tests in branch
issue-519
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
🪧 Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
I pushed a fix in commit <commit_id>, please review it.Open a follow-up GitHub issue for this discussion.
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitin a new review comment at the desired location with your query. - PR comments: Tag
@coderabbitin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:@coderabbit gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.@coderabbit read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
Support
Need help? Create a ticket on our support page for assistance with any issues or questions.
CodeRabbit Commands (Invoked using PR/Issue comments)
Type @coderabbit help to get the list of available commands.
Other keywords and placeholders
- Add
@coderabbit ignoreor@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbit summaryor@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitor@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - Please see the configuration documentation for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
Status, Documentation and Community
- Visit our Status Page to check the current availability of CodeRabbit.
- Visit our Documentation for detailed information on how to use CodeRabbit.
- Join our Discord Community to get help, request features, and share feedback.
- Follow us on X/Twitter for updates and announcements.
@coderabbit review
✅ Actions performed
Review triggered.
Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.