Brifing

Junie CLI Introduces /demo Mode for Automated UI Testing

Automate app testing with Junie's new /demo feature for seamless UI interaction checks.

The JetBrains Blog3 min

1Automated UI testing with Junie

Junie CLI's new /demo mode automates UI testing by building and launching your app, interacting with its UI, and recording the results. It generates an HTML report, screenshots, and a video for review. This feature is designed to delegate routine testing tasks while keeping results inspectable. Developers can describe what they want to check, and Junie handles the interaction, allowing them to focus on deciding whether the change is ready to ship.

2Setting up /demo mode

To use Junie /demo, start Docker and let Junie analyze your project to propose a build and launch plan. Once confirmed, Junie fills in the configuration automatically. Users can then run /demo and choose changes from their branch, session, working tree, or last commit. For specific checks, enter a detailed request in the prompt field, such as verifying UI changes after a reload. The setup process is streamlined to minimize manual configuration.

3Detailed test scenarios

Junie /demo allows for precise test scenarios by accepting detailed prompts. For example, you can request Junie to reset sample data, select specific issues, mark them as 'Done', and verify counter changes. The tool checks if the update survives a reload, ensuring robustness. Clear prompts with expected results provide a target for the run, reducing ambiguity compared to vague instructions like 'check the feature'.

4Video reports with explanations

Each demo video starts with an introductory slide explaining the demonstration. If the run covers multiple scenarios, each gets its own slide. A final slide summarizes the results. Junie uses a model to prepare this structure during post-processing, examining screenshots and writing explanatory slides. The video includes subtitles, and future updates may add voice-over. This makes reviews easier by providing context.

5HTML report integration

The HTML report consolidates the request, result, video, and screenshots. Users can inspect steps, see which checks passed or failed, and review incomplete actions. This is valuable for reviewers, QA engineers, or teammates needing to understand a feature. Junie Live, the Slack agent, is experimenting with using these demos to answer feature questions, enhancing communication and clarity.

6GitHub Actions integration

Junie /demo integrates with GitHub Actions to automate PR checks. A workflow detects PRs with behavior worth demonstrating, runs the demo, and adds a comment linking to artifacts. Prompts are embedded in YAML for easy adaptation. This is particularly useful for frontend changes but can also demonstrate backend changes via tools like Swagger UI. Over 1,500 unique PRs have used this feature, generating 2,100+ demo videos.

7Release smoke tests

Junie /demo is also used for release smoke tests. An internal workflow runs 22 scenarios on release branches, keeping results and videos for each. Over 1,300 smoke tests have been conducted. A sample workflow includes two independent scenarios triggered by pushes or manual runs. The tool writes explicit verdicts (PASS, FAIL, PARTIAL) and uploads evidence to GitHub Artifacts, eliminating the need for separate video hosting.

8Under the hood

Junie /demo runs in a Docker container with Chromium, Node.js, and tools for screenshots and video recording. A model with Computer Use support drives the app via clicks and keystrokes. Complex repos can use multiple VM templates, each with its own Dockerfile and launch settings. Junie selects the best available model (GPT-5.6 SOL preferred) with High reasoning effort. Runs take minutes but save hours of manual testing.

Original article: The JetBrains Blog — Junie CLI Introduces /demo Mode for Automated UI Testing