Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,7 @@ We strongly recommend following Cypress's own best practices as well.

### Video

When it comes to dividing test types, selecting and prioritizing test cases, and thus designing tests, things get a bit more complicated. We have generally aligned our test strategy with the test pyramid, although not 100%. The pyramid states that end-to-end tests should be written in a few but well-chosen test cases because end-to-end tests are slow and expensive.

At [Shopware Community Day](https://scd.shopware.com/en-US/) 2020, we gave a talk on how we approach automated testing in Shopware, how far we have come on this journey, and what we have gained so far:

<YoutubeRef video="sxvQoWF4KS0" title="A matter of trust – test - #SCD20 (ENG) - YouTube" target="_blank" />

To sum it up briefly, the end-to-end tests are slow and thus expensive to maintain. That is why we need a way to prioritize our test cases.
When it comes to dividing test types, selecting and prioritizing test cases, and thus designing tests, things get a bit more complicated. We have generally aligned our test strategy with the test pyramid, although not 100%. The pyramid states that end-to-end tests should be written in a few but well-chosen test cases because end-to-end tests are slow and expensive. That is why we need a way to prioritize our test cases.

### When should I write an end-to-end test

Expand Down
8 changes: 7 additions & 1 deletion guides/plugins/plugins/bundle.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,4 +214,10 @@ Also check out these useful videos:

* [Bundle Methods in a plugin](https://www.youtube.com/watch?v=cUXcDwQwmPk)
* [Symfony services in Shopware 6](https://www.youtube.com/watch?v=l5QJ8EtilaY)
* The free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma)

For related Academy background on plugin lifecycle and services, see

- **[Plugin Lifecycle Management](https://hub.shopware.com/learn/unit/plugin-lifecycle-management)**
- **[Dependency Injection and Services](https://hub.shopware.com/learn/unit/dependency-injection-and-services)**

from the free **Shopware Backend Development Intermediate** learning path.
5 changes: 4 additions & 1 deletion guides/plugins/plugins/database/database-migrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ Migrations are PHP classes used to manage incremental database schema changes. S
To add your own database migrations for your plugin, you first need a plugin as a base. Therefore, you can refer to the [Plugin Base Guide](../plugin-base-guide.md).

::: info
Refer to this video on **[Database migrations](https://www.youtube.com/watch?v=__pWwaK6lxw)**. Also, available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
For Academy learning content in the free **Shopware Backend Development Intermediate** learning path, see

- **[Plugin Lifecycle Management](https://hub.shopware.com/learn/unit/plugin-lifecycle-management)** for plugin lifecycle and migration handling,
- **[Creating Entities](https://hub.shopware.com/learn/unit/creating-entities)** for migrations generated from custom entity definitions.
:::

## File structure
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This guide is built upon the [Plugin base guide](../../plugin-base-guide), but a
In order to create data translations you need an existing entity, as this guide is based on the [Adding custom complex data](add-custom-complex-data) guide, you should have a look at it first.

::: info
Refer to this video on **[Translating your entity](https://www.youtube.com/watch?v=FfqxfQl3I4w)** that deals with data translations. Also available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
For Academy learning content on custom entities and translations, see our free learning path **["Shopware 6 Backend Development Intermediate"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate)**.
:::

## Creating the migration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ This guide is built upon the [Plugin base guide](../../plugin-base-guide.md), so
You also might want to have a look at the concept behind the [Data abstraction layer](../../../../../concepts/framework/data-abstraction-layer.md) first to get a better grasp of how it works.

::: info
Refer to this video on **[Using repositories](https://www.youtube.com/watch?v=b3wOs_OWvP0)** that covers the basics of repositories. Also available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
For Academy learning content on events, subscribers, and dependency injection, see the **[Data Abstraction Layer](https://hub.shopware.com/learn/course/data-abstraction-layer)** course in the free **Shopware Backend Development Intermediate** learning path.
:::

## Writing data
Expand Down
2 changes: 1 addition & 1 deletion guides/plugins/plugins/framework/event/add-custom-event.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ In this guide, you will learn how to create your own event. You can read more ab
To create your own event for your plugin, you first need a plugin as base. Therefore, you can refer to the [Plugin Base Guide](../../plugin-base-guide).

::: info
Refer to this video on **[Event dispatching and handling](https://www.youtube.com/watch?v=JBpa5nBoC78)** which is a live coding example on custom events. Also available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
For Academy learning content on events, subscribers, and dependency injection, see the **[Events and DI](https://hub.shopware.com/learn/course/events-and-di)** course in the free **Shopware Backend Development Intermediate** learning path.
:::

## Event interfaces and classes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ To create your own plugin, you can refer to the [Plugin Base Guide](../../plugin

::: info
Refer to this video on **[Live coding example with product.loaded event](https://www.youtube.com/watch?v=cJDaiuyjKJk)**.
Also, available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
Also available on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate).
Comment on lines 28 to +29

@B-Cevik Beytullah (B-Cevik) Aug 10, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Refer to this video on **[Live coding example with product.loaded event](https://www.youtube.com/watch?v=cJDaiuyjKJk)**.
Also, available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
Also available on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate).
For Academy learning content on Shopware events, subscribers, and dependency injection, see the **[Events and DI](https://hub.shopware.com/learn/course/events-and-di)** course in the free **Shopware Backend Development Intermediate** learning path.

:::

## Creating your own subscriber
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ A running plugin. Review the [Plugin Base Guide](../plugin-base-guide.md) for in
## Create your plugin configuration

::: info
This video is part of the free Shopware Academy online training ["Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
For Academy learning content on defining plugin configuration with `config.xml`, see the **[Plugin Configuration](https://hub.shopware.com/learn/unit/plugin-configuration)** in the free **Shopware Backend Development Essentials** learning path.
:::

Create `src/Resources/config/config.xml` inside your plugin. The content of the `config.xml` will be dynamically rendered in the Administration. Start with a simple text field first; the available field types and advanced options are listed below.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Quite often one might want to run any type of code on a regular basis, e.g. to c
This guide builds on the [Plugin Base Guide](../plugin-base-guide.md). Familiarity with `services.php` is helpful — see [Dependency Injection](../services/dependency-injection.md) and [Creating a service](../services/add-custom-service.md).

::: info
Refer to this video on **[Adding scheduled tasks](https://www.youtube.com/watch?v=88S9P3x6wYE)**. Also, available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
Refer to this video on **[Adding scheduled tasks](https://www.youtube.com/watch?v=88S9P3x6wYE)**. Also, available on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate).
:::
Comment on lines 16 to 18

@B-Cevik Beytullah (B-Cevik) Aug 10, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove line 16-18, we do not have a dedicated course or learning unit for that.


## Registering a scheduled task in the DI container
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public function uninstall(UninstallContext $context): void
```

::: info
Refer to this video on **[Uninstalling a plugin](https://www.youtube.com/watch?v=v9OXrUJzC1I)** when dealing with plugin uninstall routines. Also available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
For Academy learning content on plugin lifecycle methods, updates, migrations, and uninstall cleanup, see the **[Plugin Lifecycle Management](https://hub.shopware.com/learn/unit/plugin-lifecycle-management)** in the free **Shopware Backend Development Intermediate** learning path.
:::

## Next steps
Expand Down
2 changes: 1 addition & 1 deletion guides/plugins/plugins/services/adjusting-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ This guide explains how to adjust a service using decoration. For more details,
This guide builds on the [Plugin Base Guide](../plugin-base-guide.md).

::: info
Refer to this video on **[Decorating services](https://www.youtube.com/watch?v=Rgf4c9rd1kw)** explaining service decorations with an easy example. Also available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
For Academy learning content on dependency injection, services, and service decoration, see **[Dependency Injection and Services](https://hub.shopware.com/learn/unit/dependency-injection-and-services)** in the free **Shopware Backend Development Intermediate learning path.
:::

## Decorating the service
Expand Down
2 changes: 1 addition & 1 deletion guides/plugins/plugins/services/dependency-injection.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ This guide builds on the [Plugin Base Guide](../plugin-base-guide.md) and requir

::: info
Refer to this video on **[Injecting services into a command](https://www.youtube.com/watch?v=Z4kyx9J1xaQ)** explaining DI based on the example of a custom CLI command.
It is also available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
It is also available on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/course/events-and-di).
Comment on lines 17 to +18

@B-Cevik Beytullah (B-Cevik) Aug 10, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Refer to this video on **[Injecting services into a command](https://www.youtube.com/watch?v=Z4kyx9J1xaQ)** explaining DI based on the example of a custom CLI command.
It is also available on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
It is also available on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/course/events-and-di).
For current Academy learning content on dependency injection, service registration, constructor injection, and service decoration, see **[Dependency Injection and Services](https://hub.shopware.com/learn/unit/dependency-injection-and-services)** in the free **Shopware Backend Development Intermediate** learning path.

:::

## Injecting another service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Therefore, you can refer to the [Plugin Base Guide](../../plugin-base-guide.md).

::: info
Refer to this video on **[Common Storefront controller tasks](https://www.youtube.com/watch?v=5eXXNh4cQG0)** explaining the basics about Storefront controllers.
Available also on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
Available also on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate).
Comment on lines 20 to +21

@B-Cevik Beytullah (B-Cevik) Aug 10, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Refer to this video on **[Common Storefront controller tasks](https://www.youtube.com/watch?v=5eXXNh4cQG0)** explaining the basics about Storefront controllers.
Available also on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
Available also on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate).
For current Academy learning content on connecting a Storefront controller with routes, service registration, and Twig template output, see **[Storefront Controller: Routes, Services, and Template](https://hub.shopware.com/learn/unit/storefront-controller-routes-services-and-template)** in the free **Shopware Backend Development Essentials** learning path.

:::

## Adding custom Storefront controller
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ For this guide we will use a very simple controller that returns a timestamp wra

::: info
Refer to this video on **[Creating a JSON controller](https://www.youtube.com/watch?v=VzREUDdpZ3E)** dealing with the creation of a controller that returns JSON data.
Available also on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
Available also on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate).
Comment on lines 20 to +21

@B-Cevik Beytullah (B-Cevik) Aug 10, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Refer to this video on **[Creating a JSON controller](https://www.youtube.com/watch?v=VzREUDdpZ3E)** dealing with the creation of a controller that returns JSON data.
Available also on our free online training ["Shopware 6 Backend Development"](https://academy.shopware.com/courses/shopware-6-backend-development-with-jisse-reitsma).
Available also on our free online training ["Shopware 6 Backend Development"](https://hub.shopware.com/learn/path/shopware-backend-development-intermediate).
For related free Academy background, see:
- **[Storefront Controller: Routes, Services, and Template](https://hub.shopware.com/learn/unit/storefront-controller-routes-services-and-template)** in the **Shopware Backend Development Essentials** learnign path.
- **[Custom JavaScript](https://hub.shopware.com/learn/unit/custom-js)** in the **Shopware Frontend Development Essentials** learning path.
- **[Storefront Core Features](https://hub.shopware.com/learn/unit/storefront-core-features)** in the **Shopware Frontend Development Intermediate** learning path.

:::

As mentioned before this guide builds up upon the [adding a custom controller](../controllers/add-custom-controller.md) guide.
Expand Down
4 changes: 3 additions & 1 deletion index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ Whereas **Concepts** convey the ideas, inner workings and architectural consider

These two sections are complemented by the **References**, which contain structured code references, lists of flags, commands, endpoints which are useful for development.

Visit the [academy](https://academy.shopware.com/collections?category=developer-sw6) for video content. If you have any questions left, you can always ask them on [StackOverflow](https://stackoverflow.com/questions/tagged/shopware6?tab=Newest) or join our awesome community on [Discord](https://discord.com/channels/1308047705309708348/1309107911175176217).
Visit the [Academy in the Community Hub](https://hub.shopware.com/learn) for guided learning content.

If you have any questions left, you can always ask them on [StackOverflow](https://stackoverflow.com/questions/tagged/shopware6?tab=Newest) or join our awesome community on [Discord](https://discord.com/channels/1308047705309708348/1309107911175176217).

To begin developing, [start here with our installation guide](guides/installation/index.md).

Expand Down
Loading