Platform logo

JetBrains Platform

Plugin and extension development for JetBrains products.

IntelliJ Livestreams Marketplace News

Webinar Recording: Busy Plugin Developers – Episode 1

The recording of the latest episode of the “Busy Plugin Developers” webinar is now available on JetBrains TV. In this webinar, we covered a key plugin development tool – the Gradle IntelliJ Plugin. We explained the key features,  the recent changes that we’ve introduced, and how the plugin signing mechanism works in JetBrains Marketplace. We also featured a special guest from VirtusLab, Paweł Lipski, who gave a demo of plugin UI testing and shared some tips on how to run your tests headlessly on a Continuous Integration (CI) server.

Webinar Summary

Based on the webinar, we created a short summary in the form of Q&A:

Gradle IntelliJ Plugin

Q: How do I get started with the Gradle IntelliJ Plugin?
A: Creating a new Gradle-based IntelliJ Platform plugin can be handled with the New Project wizard or the IntelliJ Platform Plugin Template

Q: What are the most significant new changes to the Gradle IntelliJ Plugin, and how do I upgrade? 
A: Here are some of the key changes in the latest release:

  • The plugin has been completely rewritten in Kotlin, improving the development experience. 
  • There is now Lazy Configuration support, which delays a property’s value calculation until it’s actually needed.
  • The Integrated Plugin Signing feature has been added, meaning the signPlugin task is available as a part of the plugin.

Discover more about the updates and get information on how to upgrade on the Gradle IntelliJ Plugin page. You can ask us about anything in the #gradle-intellij-plugin channel in Slack.

Plugin Signing

Q: How does signing work in JetBrains Marketplace?
A: The Marketplace signing mechanism is designed to ensure that plugins are not modified over the course of the publishing and delivery pipeline. Each plugin should be signed twice, by JetBrains Marketplace and by the plugin author, using a certificate chain. If the plugin is not signed by the author or if a certificate has been revoked, a warning dialog will appear during installation. 

Q: How to sign your plugin?
A: Plugin authors can sign their plugins using a custom certificate. There are 3 ways to sign your plugin:

  • Using the Gradle IntelliJ Plugin
  • Using the Java command line interface
  • Using the Java library

You can learn more about the plugin signing process in this article.

UI Testing

Q: What tools can be used for plugin UI testing?
A: The UI testing tools presented in the webinar were:

  • intellij-ui-test-robot library by JetBrains
    This library allows you to write and execute UI tests, such as inspecting the hierarchy of UI components, locating components by XPath, and executing JavaScript (Rhino) code against a running IDE.
  • ide-probe library by VirtusLab
    This library makes it possible to run the IDE under test programmatically, directly from test code. This functionality is similar to how Testcontainers help manage the lifecycle of Docker containers.

Q: How can I run UI tests headlessly in a CI environment?
A:
You can use Xvfb (X Virtual Frame buffer), which is a display server that can be used on machines with no graphical interface or display output (for example, a CI server). It imitates a display by means of virtual memory. Use xvfb-run to launch the tests. Please note that the support for xvfb-run is also included in ide-probe, with the use of the IDEPROBE_DISPLAY=xvfb environment variable.

Because we have received so many questions about plugin UI testing, we’ve created a separate Slack channel for questions and discussions about it. You can join the channel here: #intellij-platform-ui-testing.

Host:

Yann Cébron

 IntelliJ SDK Developer Advocate, JetBrains

Yann Cébron has been developing plugins for IntelliJ IDEA since 2004. He’s a Developer Advocate for JetBrains and responsible for helping people building on the IntelliJ Platform.

Speakers:

Jakub Chrzanowski

IntelliJ SDK Developer Advocate and Marketplace Team Lead, JetBrains

Former developer of third-party plugins who became a Developer Advocate responsible for the IntelliJ Platform SDK and Marketplace. Jakub tries to build useful stuff, but is known to suffer from severe cases of yak shaving.

Semyon Atamas

Software Developer in Marketplace and Space, JetBrains

Semyon is a part-time physicist and physics lab teacher who specializes in cosmophysics. He is also the maintainer of the Fortran language plugin.

Paweł Lipski

Scala Developer/DevOps, VirtusLab

Former Google intern, professionally interested in automating development flows. Paweł is currently involved in open-source projects such as VirtusLab/git-machete (CLI, Python) and VirtusLab/git-machete-intellij-plugin.

Have an idea for the next webinar? Share it with us here in comments or on JetBrains Platform Slack. Stay tuned and follow us on Twitter!

image description