Quality Guidelines for Apps & Themes based on APP-System in the Shopware Store

Changelog

06/08/21: Added Useful links and tutorials for creating an app
08/06/21: Added URL and infos rearding our docker envirnoment we use for testing SW6 apps.
07/06/21: Template Tests: Now using Scheme.org Structured Data Testing Tool. instead of Google Structered Testing Tool.
07/06/21: Account app description: Subprocesseor and/or Further subprocessors informations maybe required four your app.
17/04/21: Restructure of the quality guidelines. No new content added.
12/05/20: Add app Checklist for your Quality assurance.
22/04/20: Menu entries in the main menu of the administration are not allowed anymore because of Look & Feel.

Checklist for app-testing

Please note that this checklist may be edited at any time. Be sure you are using the most recent testing checklist from Shopware, and not from any other provider. We also ask that you pay attention to every single point in the Quality Guide for apps based on the app system these will be reviewed by us in order to release your app.

The way we test apps based on the extension system

It's always a good idea to review the process of how we conduct tests prior to submitting your app for review - this ensures the quickest way for your app to be published.

Start Testing: If successfull we test the app once again with the most current Shopware version. The Shopware installation is located in a subfolder and has a language subshop with a virtual URL as well as an independent subsshop with its own URL, which is also located in a subfolder. E.g. myshop.com/subfolder/backend oder myshop.com/pulic/admin.
The app must not produce any error messages - neither in the backend nor in the frontend.

The app is tested with the latest official Shopware 6 CE Version.
Our testing environment are built of following components: Nginx Webserver, PHP 7.4 as FPM, MariaDB latest, Shopware installed in Subfolder /shop/public, Default Shopware Language Netherland.
The environment is built using Docker and is published on Docker Hub. You can use the following command to run it on your system:


docker run --rm -p 80:80 -e VIRTUAL_HOST=localhost shopware/testenv:6.4.0

The shop will be accessible at http://localhost/shop/public
Admin-User and Admin-Password: demo

Note: We always test with the actual SW6 version. So set 6.x.x. in docker run --rm -p 80:80 -e VIRTUAL_HOST=localhost shopware/testenv:6.x.x always to the actual SW6 version. E.g. shopware/testenv:6.4.1.
When start testing we always test with the app`s highest supported shopware version.

Example: https://github.com/shopwareLabs/AppExample
Base guide: https://developer.shopware.com/docs/guides/plugins/apps/app-base-guide
Storefront: https://developer.shopware.com/docs/guides/plugins/apps/storefront
Admin: https://developer.shopware.com/docs/guides/plugins/apps/administration


Every app based on the app system

  1. If using external fonts (e.g. from Google Fonts) or external services, the app store description must contain this information, and please be aware that you might have to edit your "data protection information". This info could be otherwise placed as a tooltip near to the font settings of the app configuration.
  2. App store description: Mandatory number of characters set in short and long description. No blank spaces as filler are allowed (EN/DE).
  3. App store description: Does the description makes sense, and does it include step-by-step instructions on how to use and test your app?
  4. App store description: Did you include enough screenshots showing the app in action in the storefront AND administration (please add a screenshot of the app in the app manager settings).
  5. We pay attention to the automatic code review and look for security issues.
  6. Cookie check in the browser console: If the app sets cookies in any way in the checkout, these cookies must be registered to the cookie configuration box in the frontend.
  7. Every external link in the adminstration or storefront must be marked as rel="noopener" AND target="_blank".
  8. We check for styling errors on every viewport.
  9. We check the complete functionality of the app (including deinstallation & reinstallation procedure)
  10. We want to improve the quality in the Shopware Community Store and offer as many different apps as possible. We check for a functional comparison with other apps already present in the Shopware Community Store: If there is an app with exactly the same function, the app can be rejected if your app does not provide any added value, such as a function that the other apps does not contain. For further information write an Email to ecosystem@shopware.com.

App Descriptions in your Shopware Account

  • The app short description must have at least 150 characters.
  • The app description must contain at least 200 characters and should clearly represent the app functions in detail.
  • Include several screenshots from the storefront and the admin. They must show the app "in action" and show its configuration options and how to use the app.
  • Be sure that the app is assigned to the appropriate categories.
  • If you provide a demo shop, the link must be valid (the URL cannot contain http: or https:).
  • The description must be a 1:1 translation.
  • App store description: If necessary, personal data protection information had to bet. If personal data of the customers (store operator and/or his customers) are processed with this extension according to Art. 28 DSGVO, the following information of the data processing company must be stored in te field "Subprocessor". If other companies are involved in the data processing of the personal data, the same information must be stored accordingly for them in the field "Further subprocessors".
  • Your manufacturer profile must contain accurate English and German descriptions as well as a manufacturer logo.

Note: iframes, external scripts or tracking pixels are not allowed in the source code of the descriptions, profiles, and instructions. Custom styles may not overwrite the original Shopware styles. External sources must be included via https.

Short description: Min. 150 - max. 185 characters.

  • Tip: Use the short description wisely as the text will be used to tease your app in the overview along with the "Customers also bought" and "Customers also viewed" recommendations. The short description is also published as the meta-description. This description should be a minimum of 155 characters long and unique.

Description: Min. 200 characters.

Inline styles will be stripped.The following HTML tags are allowed:


<a> <p> <br> <b> <strong> <i> <ul> <ol> <li> <h2> <h3> <h4> <h5>
  • Tip: When it comes to increasing your app sales, it's important that potential customers feel completely informed about your products and services. To this end, you should provide a description that is meaningful, detailed and easy to understand - when possible, even make it understandable for people with very little technical knowledge. Explain step by step how your app works and how to use it to achieve the desired result. Of course, your app description should be accompanied by clean HTML source code.
  • Tip: Video content increases awareness, trust, and has proven to convert potential customers better than other content types. Help your customers better understand your app or service with explainer videos, product demos, tutorials, etc. You can embed max. 2 YouTube videos in your app description.

In addition, you should include descriptive images that represent the app functionality. Show the app "in action" in both the storefront and admin.

Note: You are no longer able to advertise your Shopware certificates within the app description, in your app images, or in your manufacturer profile. The manufacturer/partner certificates are dynamically loaded at the end of each app description and published by us.

As an app is to be released in both stores (German and International), the content must be accurately translated 1:1 from/to German/English.​​​

A complete manufacturer profile in German and English is mandatory. The English or German text must be translated 1:1. You can find the manufacturer profile in your account under Shopware Account > Extension Administration > Manufacturer profile.

Template tests

  • Tests with Scheme.org's Structured Data Testing Tool: We test categories and product pages (available products, unavailable products, available products plus reviews, and products to be released in future). Testing tools: Schema Markup Validator of schema.org and Google Lighthouse

Theme apps

  1. There must be a preview image available in the Theme Manager.
  2. Links must include a title-tag and images must have an alt-tag.
  3. Use Google's Structured Data Testing Tool to check the homepage, categories, and various product detail pages (incl. products with no review, 1 review, 9 reviews with various ratings, out of stock products, or any other kind of product configuration). We check for any new bugs.
  4. We do a Lighthouse Audit to check the performance and quality of your frontend app. There should not be any drastic change in performance or accessibility values when activating the app.
  5. The price and shopping cart button may not be covered by customizations as for example "badges". Furthermore, the shopping cart button must always be clickable. 
 

Shopping Worlds/Storytelling elements

  1. Links must include a title-tag and images must have an alt-tag.
  2. We test the frontend and the checkout with the Debug Console – we also pay attention to new JavaScript errors.
  3. Use Google's Structured Data Testing Tool to check the homepage, categories, and various product detail pages (incl. products with no review, 1 review, 9 reviews with various ratings, out of stock products, or any other kind of product configuration). We check for any new bugs.
  4. We do a Lighthouse Audit to check the performance and quality of your frontend app. There should not be any drastic change in performance or accessibility values when activating the app.

Frontend apps

  1. Links must include a title-tag and images must have an alt-tag.
  2. If you create custom controller URLs in the sales channel, please note that we check for SEO and a valid canonical-tag.
  3. Use Google's Structured Data Testing Tool to check the homepage, categories, and various product detail pages (incl. products with no review, 1 review, 9 reviews with various ratings, out of stock products, or any other kind of product configuration). We check for any new bugs.
  4. We check for new errors throughout the entire storefront using the Browser Debug Console. We also pay attention to new JavaScript errors.
  5. We do a Lighthouse Audit to check the performance and quality of your frontend app. There should not be any drastic change in performance or accessibility values when activating the app.

Admin apps

  1. We check the complete functionality of the app and test wherever the administration is impacted by the app.

API/Payment apps

  1. The functionality of an app will be tested together with the app developer in a live session!

Quality Guidelines for Shopware 6 Apps based on the extension/app System

Extension master data / license

Please enter the valid license you set in your shopware account. You have to identify this license in the manifest.xml as well.

Note: The choosen license can not be changed after adding your app to your account. If you want to change the licence afterwards, you have to add a new apps based on the extension system (with a new technical name) and upload the extension again with the new technical name.

App dependencies

If your app requires other apps to run properly, you have to check that these apps are installed. For example: If your app only works with an activated base app, you have to check the installation of the base app.

Info:Requiring apps

Fallback language

The installation is not always in English or German.So make sure that your app works in other languages as well.
An example: The customer has his installation in Spanish, your app is not yet available in this language.
So you should use the English translation as fallback. Our Test-Environment includes Netherland as Standard language.

Translations

If your app is available in more than one language (e.g. English and German), these can be defined using the option "Translations into the following languages are available" (located in the “Description & images” section of your Extension management). 

Valid app favicon for the Shopware Administration

You have to upload a valid favicon named plugin.png (png / 40 x 40 px) for the app. This favicon will make it easier to identify your app in the Extension Manager module in the backend. The favicon has to be stored under src/Resources/config/

Error messages must be entered in the event log

Error/informational messages can only be recorded in the event-log of Shopware's log folder ( /var/log/ ). You have to develop you own logging-service / app-specific logger. Never write app exceptions into the Shopware-Default-log or outside the Shopware System-Log folder. This ensures that the log file can never be accessed via URL

Avoid 400/500 errors at any time!

Untrusted content should not be included

See Untrusted content should not be included in SonarQube Rules.

Extension Manager

The Debug Console controls the reinstallation, uninstallation, installation and deletion of the app. No 400 errors or exceptions are allowed to appear.

Reloading of files not allowed

Apps may not load other files during and after the installation in the Extension Manager.

App pages with their own URL must appear in the sitemap.xml

If the app creates its own pages that are set to "index,follow" and the URLs are accessible via the frontend, then these "app URLs" must also appear in the sitemap.xml. In addition, these pages must include their own "Meta description" and "Title tag", which can be entered individually via the backend or as a text snippet.

We expect that every cookie set from the store-URL is registered in our Cookie Consent Manager. We differentiate between "Technically required", "Comfort functions" and "Statistics & Tracking". All cookies have to appear in cookie configuration box in the frontend.

Info:Registering cookies in the Cookie Consent Manager for Shopware 6

Shopping Worlds / Shopping Experiences

Shopping Worlds elements must include an element icon. If the app is deleted, Shopping Worlds should continue to work flawlessly in the frontend.

Menu entries in the main menu of the administration are not allowed because of Look & Feel.

Automatic code reviews with PhpStan and SonarQube

Our most current code review configurations that we use when uploading apps via the Shopware Acccount can be found on GitHub.

Automated code tests with Cypress

There are Cypress tests for 6 on GitHub. The project is driven by the Friends of Shopware group. You can contribute at any time:

Helpful tools for app developers

Automatic code review - Errors

Make sure this cross-domain message is being sent to the intended domain."

No bootstrapping file found. Expecting bootstrapping in...

The bootstrap cannot be found. Either the folder structure in the ZIP file is incorrect or there is a typo/case sensitive error in the app source (e.g. in the technical name).

Be sure you set cookies as secure. Don`t forget to register your to Cookie to the Coookie Consent Manager.

Unauthorized file formats or folders detected in the app. Please remove the following files/folders:

Not allowed folders and files:


.gitignore,.DS_Store, Thumbs.db, .git, __MACOSX, .zip, .tar, .tar.gz, .phar

Note on Shopware Technology Partner contract for interfaces

You have now read the complete list of requirements for developing and releasing apps based on our extension system in the Shopware Community Store.

If your app is a software app/interface with downstream costs, transaction fees, or service fees for the customer, we need to complete a technology partner agreement in order activate your apps.

If you have any questions regarding the technology partner agreement, please contact our sales team by writing an email to ecosystem@shopware.com or calling +44 (0) 203 095 2445 (UK) / 00 800 746 7626 0 (worldwide) / +49 (0) 25 55 / 928 85-0 (Germany).

Was this article helpful?