2.4.0.1 release notes

2.4.0.1

  • As noted in the previous release notes, starting with 2026.1, free JetBrains IDEs now include first-class language support for JavaScript, TypeScript, and CSS (i.e., without an active JetBrains subscription). Also as stated previously, the main things that are notably missing are the JavaScript debugger and Jest support, but I've addressed those omissions in IC. A demonstration of these features is available here.

    Note that the items described below are only available in free JetBrains 2026.1+ IDEs. All commercial JetBrains IDEs already have their own versions of the same features, and they will not work with earlier free JetBrains IDEs because they build on the 2026.1+ IDEs' free JavaScript and TypeScript support. Users pairing IC with a free JetBrains IDE are strongly encouraged to use 2026.1+ going forward.

    With that preface out of the way, IC now includes first-class support for execution (including continuous feedback via a watch runner), interactive debugging, and coverage analysis of LWC Jest tests. There are several pre-reqs including Node, Jest, and LSP4IJ (for DAP-based interactive debugging), but as usual, IC will help install and configure them as needed. Once installed, these features work pretty much exactly like they would for any other language/framework, with full integration into the IDE's project and editor views.

    There are several new application-level configuration options under Illuminated Cloud | Configure Application | LWC | Unit Tests (again, free JetBrains 2026.1 IDEs only):
    • Integrate Jest (free IDEs 2026.1+) - Allows the entire feature to be enabled or disabled if desired. Defaults to enabled.
    • Enable Jest 'Run' executor - Adds the ability to run Jest tests. Defaults to enabled.
    • Enable Jest 'Watch' executor - Adds the ability to run Jest tests continuously. Defaults to enabled.
      • Watch type - Sets the watch type to be used by the Watch executor as either --watch or --watchAll. Defaults to --watch.
      • Disable deploy-on-save when Jest 'Watch' is running - Automatically disables IC's deploy-on-save feature when a Watch executor is actively running. Defaults to enabled.
    • Enable Jest 'Run with Coverage' executor - Adds the ability to run Jest tests and gather/analyze the associated coverage metrics. Defaults to enabled.
    • Enable Jest 'Debug' executor - Adds the ability to debug individual Jest tests. Defaults to enabled.
      • JavaScript DAP debugger - The path to the JavaScript/TypeScript DAP debugger distribution. The field label is a link to the latest release.

    The new Jest run configuration type includes the following options:
    • Jest config file (optional) - The path to the Jest config file, typically jest.config.js immediately under the project root. If found there, IC will automatically use that as the default.
    • Jest options (optional) - Additional Jest command-line options if desired. Of course, be careful not to create an invalid command-line, either by using incorrect options or by trying to override the options supplied by IC itself.
    • Scope - The scope of Jest tests to be executed for the run configuration as one of:
      • All tests - Executes all LWC Jest tests in the project.
      • Directory - Executes all LWC Jest tests under a specific directory.
      • File - Executes all tests in a specific LWC Jest test file.
      • Suite - Executes all tests in a specific LWC Jest test file/suite.
      • Test - Executes a specific LWC Jest file/test.
    Jest run configurations can be created explicitly or contextually using gutter or context actions on the respective directories, files, test suites, or tests. As with Apex unit test run configurations, Jest context configurations are read-only but can be duplicated as writable run configurations if desired.

    The following executors are available for Jest run configurations:
    • Run - Executes all tests for the run configuration and displays results in the IDE's standard tool window.
    • Watch - Executes tests for the run configuration using Jest's watch feature based on the aforementioned application-level configuration. The respective tests are automically re-run and test results displayed based on local source files changes. Also as described above, you can disable deploy-on-save when a Watch run configuration is active to streamline the local continuous feedback loop.
    • Run with Coverage - Executes all tests for the run configuration, displays results in the IDE's standard tool window, and displays coverage information for the respective JavaScript and TypeScript source files in the IDE's standard coverage view, project view, and editor. Coverage is reported and integrated at the line-, statement-, function-, and logical branch-levels. Partially-covered branching logic is displayed in the editor in yellow (as opposed to green and red), and by clicking on the yellow gutter annotation, you can see the number of hits for each branch.
    • Debug - Executes a single Jest test in the IDE's interactive debugger. This requires LSP4IJ's DAP support and the JavaScript DAP debugger. IC will help install both of these components if not detected.

    With these gaps filled, the combination of IC and a free JetBrains 2026.1+ IDE should provide a very complete Salesforce development feature set. I'd be very interested to know if you find any other missing features given this specific combination.

  • Issue 2944 - Added scheduled paths to Mermaid flow diagrams.
  • Issue 2947 - Fixed a class of errors that could potentially occur with stub virtual files.
  • Issue 2948 - Properly denoted Auth.OauthToken.revokeToken() as static. The OST must be regenerated to see the effect of this change.
  • In the process of implementing Jest support, I also implemented a number of improvements for Apex unit test execution including a test-specific index that should remove the need to enumerate Apex test files exhaustively in the Apex unit test run configuration editor and elsewhere.
  • When bundled docs are shown for an overloaded standard Apex method, all signatures are displayed due to a lack of signature-specific anchors in the source material. To help minimize signature confusion, IC now clearly states this to be the case and cautions the user to consult the appropriate section for the desired signature.
  • Quite a few other fixes and improvements.