The following checklist will help you organize your work testing your extension before submitting it for publishing.

Testing Extension’s Functionality

  1. Make sure the extension can be correctly installed, upgraded and uninstalled. For a new extension, upgrading can be tested by uploading it one more time.
  2. Make sure that the extension checks whether the operating system used is supported by it. In case it is not, the extension must explicitly inform the administrator with a human-readable message.
  3. Check that all extension’s functions work as expected, the extension does not hang or crash.
  4. If the extension is using Plesk Key-Value Storage to store data, make sure it is doing so correctly and efficiently.
  5. If the extension is using an SQLite database, check that it correctly works with Plesk objects, that it is secured against SQL injections, and correctly handles an extension upgrade.
  6. If you are using Javascript and CSS to adjust the Plesk and/or extension’s pages, pay attention to the resulting impact to performance and avoid naming collisions.
  7. If the extension uses panel.ini to store certain configuration settings, make sure those settings are working correctly, and check that uninstalling the extension does not break the rest of the panel.ini contents.
  8. If your extension is using long tasks, make sure they do not interfere with other long tasks’ execution, the extension must handle stopping long tasks correctly. Check that the long task execution does not degrade the server performance.
  9. If the extension allows for installing additional packages, make sure the corresponding long tasks are started and function properly, only a single installation process is running at any time, the dependencies are installed, and any additional repositories are added correctly. When the extension is uninstalled, it must also correctly remove the installed packages and repositories.
  10. Extension’s integration with an external service must be checked thoroughly, namely: all the relevant objects and data must be correctly provisioned from Plesk to the external service, all the relevant changes on the service side must be correctly propagated to Plesk, the extension must correctly handle the external service unavailability.

Testing UX and UI

  1. Make sure the custom buttons your extension adds to Plesk UI are placed correctly and are accessible only when appropriate.
  2. If the extension implements custom UI, check that works correctly, that it integrates with Plesk UI without breaking layout, navigation, styles, etc. Rendering time of the custom UI should be optimized.
  3. Promotional info blocks contents should be displayed correctly, including icons, localized texts, the links must work.
  4. Make sure the extension’s UI provides sufficient information to assist the user when necessary. It may include descriptions, tooltips, links to help files, instructions for contacting customer support, etc.

Testing Extension’s Functionality Support for Different Types of Domains

  1. Create the different types of domains and test the extension’s functionality.
  2. Test the extension’s functionality on different types of domains: subscriptions (main domains), addon domains, subdomains with own DNS zone, subdomains with parent DNS zone, wildcard subdomains, domain aliases, domain forwarding, no hosting domains.
  3. Test the extension on domains in their different statuses: active, disabled, suspended.
  4. Test the extension on domains with special characteristics, such as: domains with IDN, domains using IPv6, domains with names containing mixed case characters, domains that contain web applications installed in directories other than in the doc root or multiple web applications.
  5. Check that the extension’s custom buttons are not acessible for the types of domains not supported by extension.
  6. Make sure all operations on domains are correctly supported by the extension and the external service it integrates with, in particular: adding and removing a domain, disabling and activating, suspending and activating, editing domain’s hosting settings.

Testing Users’ Access to Extension’s Functionality

  1. Make sure users with different roles (admin, reseller, client) have access to those and only those functions and data that they should.
  2. Make sure clients and resellers cannot access admin’s functions and data by typing in page URLs directly.
  3. Make sure resellers have access to domains that belong to them and their customers but not to those belonging to other reseller’s clients.
  4. The extension must check and work correctly when the admin is impersonating a reseller or a customer. For example, if the admin logs in as a reseller, they should exercise the reseller’s (not admin’s) privileges over the given reseller’s subscriptions, domains, etc.
  5. When a user’s account is removed, all relevant settings and data stored by the extension must be removed as well. This is necessary to avoid possible security issues, should a user account with the same name be created again.

Testing Licensing Implementation

The following instructions are applicable when the extension is using Plesk licensing infrastructure. They can also apply for custom licensing implementation with some adjustments.

  1. Make sure the license purchase button or link is available and accessible for the admin, and only admin, in the extension UI.
  2. Check that the store URL is correctly entered in meta.xml, and that the appropriate SDK methods are used to retrieve the URLs for purchasing and upgrading a license.
  3. Request and install a test license key.
  4. Check that the data and functions restricted by license are not accessible without an installed license. Check that the data and functions restricted by license are accessible with a license installed.
  5. If the extension implements a trial period, check that it works during the trial period and that it stops working when the trial period is over. Make sure there is an appropriate message explaining the trial period.
  6. An extension may provide varying combinations of functions and data forming different products, which are enabled by the different licenses. Check that the different licenses enable the corresponding products correctly.